Compare commits

..

188 Commits

Author SHA1 Message Date
Uwe Steinmann
a825bb43fb Merge branch 'seeddms-6.0.x' 2025-05-22 17:50:22 +02:00
Uwe Steinmann
00c3a63ff1 Merge branch 'seeddms-5.1.x' into seeddms-6.0.x 2025-05-22 10:39:00 +02:00
Uwe Steinmann
396fd6a4fe allow attriutes for globalNavigationBar 2025-05-22 10:38:50 +02:00
Uwe Steinmann
4972929258 Merge branch 'seeddms-5.1.x' into seeddms-6.0.x 2025-05-21 17:02:51 +02:00
Uwe Steinmann
776f19d501 add changes for 5.1.40 2025-05-21 17:02:34 +02:00
Uwe Steinmann
c014749676 use quoted printable encoding for email subject 2025-05-21 17:01:19 +02:00
Uwe Steinmann
2ec29e3336 Merge branch 'seeddms-5.1.x' into seeddms-6.0.x 2025-05-20 20:24:22 +02:00
Uwe Steinmann
9a826b88e9 fix error in Search class 2025-05-20 20:24:01 +02:00
Uwe Steinmann
c638258a10 Merge branch 'seeddms-5.1.x' into seeddms-6.0.x 2025-05-19 18:05:58 +02:00
Uwe Steinmann
d7c1e4b103 make database search work 2025-05-19 18:01:04 +02:00
Uwe Steinmann
637fd66210 Merge branch 'seeddms-5.1.x' into seeddms-6.0.x 2025-05-16 19:12:34 +02:00
Uwe Steinmann
964495b9b6 run authenticator only if user is still not known 2025-05-16 19:12:05 +02:00
Uwe Steinmann
7fe2a12af3 actually run postRun hook 2025-05-16 19:11:42 +02:00
Uwe Steinmann
e1f976e646 Merge branch 'seeddms-5.1.x' into seeddms-6.0.x 2025-05-16 08:08:01 +02:00
Uwe Steinmann
ba18e89cda varios minor changes in preparation to moving search functionality into own class 2025-05-16 07:48:30 +02:00
Uwe Steinmann
4c6d047bb8 copy most of the search functions into own class 2025-05-16 07:46:49 +02:00
Uwe Steinmann
e687474d19 pass $fulltextservice to view 2025-05-15 19:54:23 +02:00
Uwe Steinmann
31aa18606f Merge branch 'seeddms-5.1.x' into seeddms-6.0.x 2025-05-14 15:10:13 +02:00
Uwe Steinmann
0fd6ed5381 initial search class 2025-05-14 15:07:35 +02:00
Uwe Steinmann
a74229eb14 cleanup code 2025-05-14 15:07:07 +02:00
Uwe Steinmann
04e9402094 Merge branch 'seeddms-5.1.x' into seeddms-6.0.x 2025-05-13 18:54:21 +02:00
Uwe Steinmann
e9388dc3ec use translation of documents_user_rejected in list of menu tasks 2025-05-13 18:53:46 +02:00
Uwe Steinmann
fb5bf43990 better translation for documents_user_rejected 2025-05-13 18:53:15 +02:00
Uwe Steinmann
abc8df5939 Merge branch 'seeddms-5.1.x' into seeddms-6.0.x 2025-05-12 12:49:11 +02:00
Uwe Steinmann
72245fabe0 add missing phrase 'extension_config' 2025-05-12 11:15:30 +02:00
Uwe Steinmann
cd6afd07fe add missing phrases 2025-05-12 11:06:50 +02:00
Uwe Steinmann
69f4d9a194 add missing phrases 2025-05-12 11:03:38 +02:00
Uwe Steinmann
00d5d8b334 Merge branch 'seeddms-5.1.x' into seeddms-6.0.x 2025-05-08 19:34:53 +02:00
Uwe Steinmann
6610647ddf add changes for 5.1.40 2025-05-08 19:34:33 +02:00
Uwe Steinmann
3fb3434c61 expired documents can be filtered by user 2025-05-08 19:33:42 +02:00
Uwe Steinmann
4ed83488ba log number of documents which will expired 2025-05-08 19:15:04 +02:00
Uwe Steinmann
2288be497c Merge branch 'seeddms-5.1.x' into seeddms-6.0.x 2025-04-29 12:38:22 +02:00
Uwe Steinmann
d377bd81ab rename methode and class for inline editiing of document name 2025-04-29 10:34:16 +02:00
Uwe Steinmann
e069f784b4 add hooks for addtional tabs 2025-04-29 10:33:13 +02:00
Uwe Steinmann
181482a1a7 set text for no-result in selection of mimetype 2025-04-29 10:32:20 +02:00
Uwe Steinmann
b2cfde85ca contentOffsetDir may be a string 2025-04-29 10:30:42 +02:00
Uwe Steinmann
f46ae01386 add changes of 5.1.40 2025-04-24 16:31:44 +02:00
Uwe Steinmann
ae66ec223c add searching for mime types 2025-04-24 16:31:27 +02:00
Uwe Steinmann
a5edba86ae fix search url, add search for mime types 2025-04-24 16:30:48 +02:00
Uwe Steinmann
8b0d8e85c2 add changes for 5.1.40 2025-04-24 14:52:06 +02:00
Uwe Steinmann
4184cd4f1d add hook for creating preview image (like preview images in lists) 2025-04-24 14:50:32 +02:00
Uwe Steinmann
d50247ba09 Merge branch 'seeddms-5.1.x' into seeddms-6.0.x 2025-04-23 14:24:45 +02:00
Uwe Steinmann
6a39584dcc add search link in tables 2025-04-23 14:24:31 +02:00
Uwe Steinmann
e8c0ebbf4f add option 'Draft' to select box for status 2025-04-23 14:23:07 +02:00
Uwe Steinmann
67a2afc626 add changes for 5.1.40 2025-04-13 14:30:22 +02:00
Uwe Steinmann
133fc5d570 Merge branch 'seeddms-5.1.x' into seeddms-6.0.x 2025-04-13 14:29:29 +02:00
Uwe Steinmann
92bee67638 fix update of postgres database 2025-04-13 14:28:02 +02:00
Uwe Steinmann
5fdd83de3c Merge branch 'seeddms-5.1.x' into seeddms-6.0.x 2025-04-02 09:30:03 +02:00
Uwe Steinmann
cd4743d917 check if attribute 'remote' is set 2025-04-02 09:29:37 +02:00
Uwe Steinmann
904e4b8657 Merge branch 'seeddms-5.1.x' into seeddms-6.0.x 2025-04-02 09:28:59 +02:00
Uwe Steinmann
de4fae18d0 set title of modal box for extension config to title of extension 2025-04-02 09:16:37 +02:00
Uwe Steinmann
f1859da68b remove aria-hidden from some buttons 2025-04-02 08:14:11 +02:00
Uwe Steinmann
c8a7dad7d6 run initMost() after modal box has been opened 2025-04-02 08:13:38 +02:00
Uwe Steinmann
3bed5b0d68 extension config can edited from extension mgr 2025-04-02 08:10:44 +02:00
Uwe Steinmann
1bff379d84 allow to set config of extension only 2025-04-02 08:09:57 +02:00
Uwe Steinmann
073948d4c3 add hidden field without value to checkboxes 2025-04-02 08:08:37 +02:00
Uwe Steinmann
4f3e6cadf5 remove aria-hidden from some buttons 2025-04-02 08:06:38 +02:00
Uwe Steinmann
692318dcc1 pass extension name to view 2025-04-02 08:05:37 +02:00
Uwe Steinmann
c2d8b383c3 support saving via ajax 2025-04-02 08:04:56 +02:00
Uwe Steinmann
f8ceb0d56a do not set bool/array value if not exist in post data 2025-04-02 08:03:52 +02:00
Uwe Steinmann
e578e2a206 remove old function getBoolValue() 2025-04-02 08:02:53 +02:00
Uwe Steinmann
22f23c71f0 fix indenting 2025-04-02 08:02:09 +02:00
Uwe Steinmann
42a38984f7 add method showConfigFolder() (currently not used) 2025-04-01 12:55:35 +02:00
Uwe Steinmann
fb59582a56 Merge branch 'seeddms-5.1.x' into seeddms-6.0.x 2025-04-01 12:51:57 +02:00
Uwe Steinmann
8f2f15bb80 add new method extension() for showing config of extension 2025-04-01 12:50:01 +02:00
Uwe Steinmann
7f2d12e299 output timezone and current date/time on server 2025-04-01 10:39:48 +02:00
Uwe Steinmann
fc555555d2 allow CheckOut for users 2025-03-27 14:14:18 +01:00
Uwe Steinmann
28ba7b59b9 fix possible xss attack 2025-03-26 09:36:38 +01:00
Uwe Steinmann
b7e075cdba Merge branch 'seeddms-5.1.x' into seeddms-6.0.x 2025-03-26 09:30:49 +01:00
Uwe Steinmann
0ad6416d65 fix typo 2025-03-26 09:30:33 +01:00
Uwe Steinmann
d1dfc924b5 fix possible xss attack when document name contains malicious code 2025-03-26 08:39:58 +01:00
Uwe Steinmann
5a40423836 set id of some select fields for extension config 2025-03-26 08:39:30 +01:00
Uwe Steinmann
53133fc824 add changes for 5.1.40 2025-03-26 07:55:50 +01:00
Uwe Steinmann
7529c68c80 include all conf.php files and var_export() them instead of concating them 2025-03-26 07:54:33 +01:00
Uwe Steinmann
edb91d3299 fix possible xss attack 2025-03-25 18:09:41 +01:00
Uwe Steinmann
5ce55216ad add changes for 5.1.40 2025-03-24 15:55:57 +01:00
Uwe Steinmann
f3fa653eee replace file_exists() with exists() function of object 2025-03-21 13:25:13 +01:00
Uwe Steinmann
37fd1ac969 replace functions directly accessing file system if documents or attachments are involved 2025-03-21 13:23:07 +01:00
Uwe Steinmann
54c3ec54fc seperate seeddms info from extension list, output storage driver 2025-03-21 13:20:52 +01:00
Uwe Steinmann
a4899a52ad $settings must be passed into route function 2025-03-21 13:20:04 +01:00
Uwe Steinmann
0e6f14dbaf add odt2txt for converting libreoffice documents to txt 2025-03-21 13:19:26 +01:00
Uwe Steinmann
c4c37becf6 Merge branch 'seeddms-5.1.x' into seeddms-6.0.x 2025-03-19 15:41:14 +01:00
Uwe Steinmann
9d400a808e use httpRoot when redirecting to out.ViewFolder.php 2025-03-19 15:40:41 +01:00
Uwe Steinmann
287753b7bc Merge branch 'seeddms-5.1.x' into seeddms-6.0.x 2025-03-18 15:25:49 +01:00
Uwe Steinmann
54832e3727 fix saving user data when language selection is turned of (Closes: #568) 2025-03-18 14:19:37 +01:00
Uwe Steinmann
52401dce05 Merge branch 'seeddms-5.1.x' into seeddms-6.0.x 2025-03-18 11:02:03 +01:00
Uwe Steinmann
597e9c89b3 start new version 5.1.40 2025-03-18 11:00:52 +01:00
Uwe Steinmann
bfe17bcc46 Merge branch 'seeddms-5.1.x' into seeddms-6.0.x 2025-03-18 10:41:42 +01:00
Uwe Steinmann
df8d6edcff add changes for 5.1.39 2025-03-18 09:58:49 +01:00
Uwe Steinmann
9b2c120b5f call hooks for show document and folder row 2025-03-18 09:57:45 +01:00
Uwe Steinmann
757e95ab86 set previewConverters and convertToPdf 2025-03-18 09:57:28 +01:00
Uwe Steinmann
2e6d25873c Merge branch 'seeddms-5.1.x' into seeddms-6.0.x 2025-03-17 16:16:17 +01:00
Uwe Steinmann
38b3abc50e add new phrases 2025-03-17 16:16:03 +01:00
Uwe Steinmann
3bbdf680de Merge branch 'seeddms-5.1.x' into seeddms-6.0.x 2025-03-17 15:59:24 +01:00
Uwe Steinmann
2ecef66355 add changes for 5.1.39 2025-03-17 15:58:19 +01:00
Uwe Steinmann
9abbf6a1e5 objects can be removed from clipboard 2025-03-17 15:57:51 +01:00
Uwe Steinmann
9a3f217e45 add method isOnClipboard() 2025-03-17 12:50:01 +01:00
Uwe Steinmann
d7f1e899ba fix nasty error when validating attribute in a hook 2025-03-14 17:32:36 +01:00
Uwe Steinmann
1d62de5213 add changes for 6.0.32 2025-03-14 17:22:28 +01:00
Uwe Steinmann
ddab6e2b57 Merge branch 'seeddms-5.1.x' into seeddms-6.0.x 2025-03-14 17:21:30 +01:00
Uwe Steinmann
dee29cb64f add changes for 5.1.39 2025-03-14 17:21:09 +01:00
Uwe Steinmann
128a57a9c5 fix setting attributes (user, group, document, folder) 2025-03-14 17:20:05 +01:00
Uwe Steinmann
5ed5476106 Merge branch 'seeddms-5.1.x' into seeddms-6.0.x 2025-03-14 17:16:47 +01:00
Uwe Steinmann
70c63afd10 fix setting attributes (user, group, folder, document) 2025-03-14 17:16:06 +01:00
Uwe Steinmann
789b5daaf8 add checking for revision date 2025-03-14 16:51:34 +01:00
Uwe Steinmann
2eb19048ab add checking for revision date 2025-03-14 16:51:15 +01:00
Uwe Steinmann
b30c4a7a66 fix wrong position of text in progress bar 2025-03-06 19:29:17 +01:00
Uwe Steinmann
b5d32f3d53 do not add standard footer to mails send by scheduler 2025-03-06 07:15:46 +01:00
Uwe Steinmann
304db26698 Merge branch 'seeddms-5.1.x' into seeddms-6.0.x 2025-03-05 09:41:53 +01:00
Uwe Steinmann
444af0831b use add_log_line() 2025-03-05 07:56:55 +01:00
Uwe Steinmann
3197f25ce8 log password forgotten request 2025-03-05 07:29:56 +01:00
Uwe Steinmann
71d5154945 Merge branch 'seeddms-5.1.x' into seeddms-6.0.x 2025-03-04 12:37:30 +01:00
Uwe Steinmann
056736ecc5 add changes for 5.1.39 2025-03-03 21:44:33 +01:00
Uwe Steinmann
329b54d00f encrypt referer to prevent malicious manipulation 2025-03-03 21:42:54 +01:00
Uwe Steinmann
157c033f2a Merge branch 'seeddms-5.1.x' into seeddms-6.0.x 2025-02-28 17:58:30 +01:00
Uwe Steinmann
d66f12ae21 do not tread each field of search form as multivalued 2025-02-28 17:54:52 +01:00
Uwe Steinmann
4ba5099569 getAttributeEditField() handels arrays of attr values propperly 2025-02-28 17:53:54 +01:00
Uwe Steinmann
86362c5284 fix output of attributes 2025-02-28 08:40:06 +01:00
Uwe Steinmann
9f39b639c6 Merge branch 'seeddms-5.1.x' into seeddms-6.0.x 2025-02-27 11:19:40 +01:00
Uwe Steinmann
0999808364 add new phrases, updates 2025-02-27 09:26:44 +01:00
Uwe Steinmann
6c0b1691c3 add changes of 5.1.39 2025-02-27 09:08:34 +01:00
Uwe Steinmann
985aa5cc28 check im memcached is turned on in configuration 2025-02-27 09:07:19 +01:00
Uwe Steinmann
e714e361a9 add checkbox for enabling memcached 2025-02-27 09:07:06 +01:00
Uwe Steinmann
9f5390e560 add checkbox for enabling memcached 2025-02-27 09:06:19 +01:00
Uwe Steinmann
f281376ac2 fix setting group approvers from previous version 2025-02-27 09:05:49 +01:00
Uwe Steinmann
6731882ae0 do not add group manager as mandatory reviewer/approver if logged in user is the manager itself 2025-02-27 09:04:55 +01:00
Uwe Steinmann
3538fd2616 add slim error middleware and catch all route 2025-02-21 07:34:55 +01:00
Uwe Steinmann
a44ddc0b94 remove old code, add error middleware and catch all route 2025-02-21 07:34:24 +01:00
Uwe Steinmann
879855536f new flag to skip exporting default columns 2025-02-18 21:22:27 +01:00
Uwe Steinmann
4352f95818 new export flag to skip default columns 2025-02-18 21:22:01 +01:00
Uwe Steinmann
0fe367820f turn off legend for chart sizepermonth 2025-02-18 21:20:59 +01:00
Uwe Steinmann
3fec498ce5 Merge branch 'seeddms-5.1.x' into seeddms-6.0.x 2025-02-18 13:35:53 +01:00
Uwe Steinmann
d9a2ea5303 show quota on chart page when listing total document size per user 2025-02-18 13:27:20 +01:00
Uwe Steinmann
ae34e29fed Merge branch 'seeddms-5.1.x' into seeddms-6.0.x 2025-02-14 08:23:47 +01:00
Uwe Steinmann
d4bfb539b7 eval parameter 'order' in config settings for select menus 2025-02-14 08:22:40 +01:00
Uwe Steinmann
b2cc1a122e support for skipping default columns 2025-02-14 08:22:12 +01:00
Uwe Steinmann
0eff90974e Merge branch 'seeddms-5.1.x' into seeddms-6.0.x 2025-02-13 09:40:33 +01:00
Uwe Steinmann
b75bcb5725 new version 5.1.39 2025-02-13 09:39:16 +01:00
Uwe Steinmann
327d65c7e0 Merge branch 'seeddms-5.1.x' into seeddms-6.0.x 2025-02-13 09:38:03 +01:00
Uwe Steinmann
d3d08e5b15 requires php 8.2 2025-02-13 09:37:36 +01:00
Uwe Steinmann
a2a39ce946 Merge branch 'seeddms-6.0.x' 2024-11-08 06:45:24 +01:00
Uwe Steinmann
b9abff5c55 Merge branch 'seeddms-6.0.x' 2024-11-07 07:08:11 +01:00
Uwe Steinmann
24595a234d Merge branch 'master' of ssh://git.code.sf.net/p/seeddms/code 2023-05-04 14:29:51 +02:00
Uwe Steinmann
199fd57151 Merge branch 'seeddms-6.0.x' 2023-05-04 14:24:04 +02:00
Uwe Steinmann
9dfc6e8b1e Merge branch 'seeddms-6.0.x' 2023-02-07 13:16:15 +01:00
Uwe Steinmann
cfc23e0ddf Merge branch 'seeddms-5.1.x' 2022-11-21 15:10:31 +01:00
Uwe Steinmann
7012580476 Merge branch 'seeddms-5.1.x' 2022-09-22 16:52:06 +02:00
Uwe Steinmann
40bd123fe3 Merge branch 'seeddms-5.1.x' 2022-06-27 17:01:18 +02:00
Uwe Steinmann
6c3ecaf9a1 Merge branch 'seeddms-5.1.x' 2022-04-22 13:14:19 +02:00
Uwe Steinmann
40ce4a74e1 Merge branch 'seeddms-5.1.x' 2021-08-19 15:54:46 +02:00
Uwe Steinmann
8fcfd70bd6 Merge branch 'seeddms-5.1.x' 2021-04-13 07:43:43 +02:00
Uwe Steinmann
6f0803e698 Merge branch 'seeddms-5.1.x' 2020-12-29 09:15:13 +01:00
Uwe Steinmann
5d28744758 Merge branch 'seeddms-5.1.x' into master 2020-09-29 14:25:14 +02:00
Uwe Steinmann
a17220d373 Merge branch 'seeddms-5.1.x' into master 2020-09-02 21:25:53 +02:00
Uwe Steinmann
54dea818f7 Merge branch 'seeddms-5.1.x' into master 2020-07-27 20:29:54 +02:00
Uwe Steinmann
a446f45e43 Merge branch 'seeddms-5.1.x' 2020-05-28 11:37:04 +02:00
Uwe Steinmann
6139c781d0 Merge branch 'seeddms-5.1.x' 2020-03-02 12:03:38 +01:00
Uwe Steinmann
0602fad397 Merge branch 'seeddms-5.1.x' 2020-02-17 10:21:29 +01:00
Uwe Steinmann
44bf03c557 Merge branch 'seeddms-5.1.x' 2019-07-19 15:29:20 +02:00
Uwe Steinmann
4bcb5f8e4c Merge branch 'seeddms-5.1.x' 2019-06-20 08:27:24 +02:00
Uwe Steinmann
4fe696f18b Merge branch 'seeddms-5.1.x' 2019-06-14 08:53:26 +02:00
Uwe Steinmann
023c2c58f1 Merge branch 'seeddms-5.1.x' 2019-06-13 11:23:19 +02:00
Uwe Steinmann
1a002c9d18 Merge branch 'seeddms-5.1.x' 2019-04-04 19:18:44 +02:00
Uwe Steinmann
3321b097e6 Merge branch 'seeddms-5.1.x' 2018-11-13 08:55:38 +01:00
Uwe Steinmann
dc2cadc6d8 Merge branch 'seeddms-5.1.x' 2018-07-03 11:42:39 +02:00
Uwe Steinmann
20e9157d01 Merge branch 'seeddms-5.1.x' 2018-01-03 09:23:05 +01:00
Sebastian Bartus-Kunz
02e7066749 Fixed wrong return object in getDocumentLink() 2017-12-20 15:40:20 +01:00
Uwe Steinmann
18c34ce29d Merge branch 'seeddms-5.1.x' 2017-11-02 08:53:59 +01:00
Uwe Steinmann
b7014a6b21 Merge branch 'seeddms-5.1.x' 2017-09-05 09:02:05 +02:00
Uwe Steinmann
fdf14b2a1f Merge branch 'seeddms-5.1.x' 2017-07-19 08:30:53 +02:00
Uwe Steinmann
e79a0015f9 Merge tag '5.1.2' 2017-07-11 18:05:39 +02:00
Uwe Steinmann
0c4103ce34 Merge branch 'seeddms-5.0.x' 2017-03-20 15:46:04 +01:00
Uwe Steinmann
ff3dd800e4 Merge branch 'seeddms-5.0.x' 2017-02-27 20:18:46 +01:00
Uwe Steinmann
211a3bc6bc Merge branch 'seeddms-5.0.x' 2017-01-26 15:51:47 +01:00
Uwe Steinmann
e49c9e1c98 Merge branch 'seeddms-5.0.x' 2016-12-12 10:32:27 +01:00
Uwe Steinmann
e3002fce0b Merge branch 'seeddms-5.0.x' 2016-09-23 09:07:18 +02:00
Uwe Steinmann
2a45854818 Merge tag '5.0.5' 2016-08-29 09:56:36 +02:00
Uwe Steinmann
cb059d53eb Merge branch 'seeddms-5.0.x' 2016-07-06 12:52:35 +02:00
Uwe Steinmann
44bd7fda79 Merge branch 'seeddms-5.0.x' 2016-04-22 17:24:34 +02:00
Uwe Steinmann
5f54964d69 Merge branch 'seeddms-5.0.x' 2016-03-25 17:13:27 +01:00
Uwe Steinmann
3dc3b6f0d2 Merge branch 'seeddms-5.0.x' 2016-02-22 15:20:24 +01:00
Uwe Steinmann
468b146a64 Merge branch 'seeddms-5.0.x' 2016-01-25 09:40:01 +01:00
Uwe Steinmann
d81f946446 Merge branch 'seeddms-5.0.x' 2016-01-22 09:51:45 +01:00
Uwe Steinmann
097aae895f Merge branch 'seeddms-4.3.x' 2016-01-21 08:39:21 +01:00
Uwe Steinmann
a55662ea1b Merge branch 'seeddms-4.3.x' 2015-11-19 17:43:24 +01:00
Uwe Steinmann
8d35bb6a9b Merge branch 'seeddms-4.3.x' 2015-09-28 14:47:29 +02:00
Uwe Steinmann
7826d487cc Merge branch 'seeddms-4.3.x' 2015-08-25 21:31:53 +02:00
Uwe Steinmann
ddbc3839a5 Merge branch 'seeddms-4.3.x' 2015-06-26 16:51:06 +02:00
74 changed files with 3055 additions and 1757 deletions

View File

@ -1,3 +1,16 @@
--------------------------------------------------------------------------------
Changes in version 6.0.33
--------------------------------------------------------------------------------
- merge changes up to 5.1.40
--------------------------------------------------------------------------------
Changes in version 6.0.32
--------------------------------------------------------------------------------
- merge changes up to 5.1.39
- fix setting attributes (user, group, document, folder) when checking in
a new document version
- validate setting revision date
--------------------------------------------------------------------------------
Changes in version 6.0.31
--------------------------------------------------------------------------------
@ -308,6 +321,35 @@
- add document list which can be exported as an archive
- search results can be exported
--------------------------------------------------------------------------------
Changes in version 5.1.40
--------------------------------------------------------------------------------
- fix saving user data when language selection is turned of (Closes: #568)
- add much better support for new storage drivers
- fix possible xss attacks
- saver way to collect plugin configuration
- fix update of postgres database
- add hook displayPreviewThumb
- add searching for mimetype in database
- list of expired documents can be filtered by user
- use quoted printable encoding instead of base64 for email subjects
--------------------------------------------------------------------------------
Changes in version 5.1.39
--------------------------------------------------------------------------------
- show quota on chart page when listing total document size per user
- turn off legend for chart sizepermonth
- do not add group manager as mandatory approver/reviewer if logged in
user is the manager itself
- fixed setting group approvers from previous document version
- very experimental support of memcached for accelerating some database
operations (do not use in production)
- prevent malicious manipulation of referer when setting language
- fix setting attributes of type user, group, document, folder when updating
a document
- objects can be removed from clipboard
- call hooks for document/folder list in attribute manager
--------------------------------------------------------------------------------
Changes in version 5.1.38
--------------------------------------------------------------------------------

View File

@ -232,7 +232,8 @@ class SeedDMS_Controller_Login extends SeedDMS_Controller_Common {
}
}
$user = $authenticator->authenticate($login, $pwd);
if(!is_object($user))
$user = $authenticator->authenticate($login, $pwd);
if(0) {
/* Authenticate against LDAP server {{{ */

View File

@ -49,6 +49,9 @@ application/vnd.openxmlformats-officedocument.wordprocessingml.document
application/msword
catdoc %s
application/vnd.oasis.opendocument.text
odt2txt %s
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
xlsx2csv -d tab %s

View File

@ -8,13 +8,13 @@ SeedDMS is a web-based application written in PHP. It uses MySQL,
SQLite3 or PostgreSQL to manage the documents that were uploaded into
the application. Be aware that PostgreSQL is not very well tested.
Make sure you have PHP >= 7.4 and MySQL 5 or higher installed. SeedDMS
Make sure you have PHP >= 8.2 and MySQL 5 or higher installed. SeedDMS
will work with PHP running in CGI-mode as well as running as a module under
apache.
Here is a detailed list of requirements:
1. A web server with at least php 7.4
1. A web server with at least php 8.2
2. A mysql database, unless you use SQLite
3. The php installation must have support for `pdo_mysql`, `pdo_pgsql` or `pdo_sqlite`,
`php_gd2`, `php_mbstring`, `php_xml`

View File

@ -81,6 +81,7 @@ class SeedDMS_AccessOperation {
'CategoryChooser',
'ChangePassword',
'CheckInDocument',
'CheckOutDocument',
'Clipboard',
'Dashboard',
'DocumentAccess',

View File

@ -75,7 +75,7 @@ class SeedDMS_Controller_Common {
if(method_exists($this, $action)) {
$refl = new ReflectionMethod($this, $action);
if($refl->isPublic())
return $this->{$action}();
$ret = $this->{$action}();
else {
echo "Action '".$action."' not public";
return false;
@ -85,11 +85,12 @@ class SeedDMS_Controller_Common {
return false;
}
} else
return $this->run();
$ret = $this->run();
} else {
return false;
}
$this->callHook('postRun', get_class($this), $action ? $action : 'run');
return $ret;
}
public function setParams($params) {

View File

@ -93,11 +93,25 @@ class SeedDMS_Download_Mgr {
*/
protected $filenames;
/**
* @var boolean $skipdefaultcols skip default columns, will only export extracols
* @access protected
*/
protected $skipdefaultcols;
function __construct($tmpdir = '') {
$this->tmpdir = $tmpdir;
$this->items = array();
$this->folder_items = array();
$this->header = array(getMLText('download_header_document_no'), getMLText('download_header_document_name'), getMLText('download_header_filename'), getMLText('download_header_state'), getMLText('download_header_internal_version'), getMLText('download_header_reviewer'), getMLText('download_header_review_date'), getMLText('download_header_review_comment'), getMLText('download_header_review_state'), getMLText('download_header_approver'), getMLText('download_header_approval_date'), getMLText('download_header_approval_comment'), getMLText('download_header_approval_state'));
$this->header = array(getMLText('download_header_document_no'), getMLText('download_header_document_name'), getMLText('download_header_filename'), getMLText('download_header_state'), getMLText('download_header_internal_version'));
$this->header[] = getMLText('download_header_reviewer');
$this->header[] = getMLText('download_header_review_date');
$this->header[] = getMLText('download_header_review_comment');
$this->header[] = getMLText('download_header_review_state');
$this->header[] = getMLText('download_header_approver');
$this->header[] = getMLText('download_header_approval_date');
$this->header[] = getMLText('download_header_approval_comment');
$this->header[] = getMLText('download_header_approval_state');
$this->folder_header = array(getMLText('download_header_folder_no'), getMLText('download_header_folder_name'));
$this->extracols = array();
$this->folder_extracols = array();
@ -105,8 +119,14 @@ class SeedDMS_Download_Mgr {
$this->extraheader = array();
$this->folder_extraheader = array();
$this->filenames = array();
$this->includereviewers = false;
$this->includeapprovers = false;
}
public function skipDefaultCols($v) { /* {{{ */
$this->skipdefaultcols = (bool) $v;
} /* }}} */
public function addHeader($extraheader) { /* {{{ */
$this->extraheader = $extraheader;
} /* }}} */
@ -137,8 +157,9 @@ class SeedDMS_Download_Mgr {
$i = 1;
$col = 1;
foreach($this->header as $h)
$sheet->setCellValue([$col++, $i], $h);
if(!$this->skipdefaultcols)
foreach($this->header as $h)
$sheet->setCellValue([$col++, $i], $h);
foreach($this->extraheader as $h)
$sheet->setCellValue([$col++, $i], $h);
$i++;
@ -151,13 +172,14 @@ class SeedDMS_Download_Mgr {
$approvalStatus = $item->getApprovalStatus();
$col = 1;
$l = $i; // Number of reviewers
$k = $i; // Number of approvers
if(!$this->skipdefaultcols) {
$sheet->setCellValue([$col++, $i], $document->getID());
$sheet->setCellValue([$col++, $i], $document->getName());
$sheet->setCellValue([$col++, $i], $document->getID()."-".$item->getOriginalFileName());
$sheet->setCellValue([$col++, $i], getOverallStatusText($status['status']));
$sheet->setCellValue([$col++, $i], $item->getVersion());
$l = $i;
$k = $i;
if($reviewStatus) {
foreach ($reviewStatus as $r) {
switch ($r["type"]) {
@ -181,7 +203,7 @@ class SeedDMS_Download_Mgr {
$tcol = $col;
$sheet->setCellValue([$tcol++, $l], $reqName);
$sheet->setCellValue([$tcol, $l], ($r['status']==1 || $r['status']==-1) ? \PhpOffice\PhpSpreadsheet\Shared\Date::PHPToExcel(new DateTime($r['date'])) : null);
$sheet->getStyleByColumnAndRow($tcol++, $l)->getNumberFormat()->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_DATE_DATETIME);
$sheet->getStyle([$tcol++, $l])->getNumberFormat()->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_DATE_DATETIME);
$sheet->setCellValue([$tcol++, $l], $r['comment']);
$sheet->setCellValue([$tcol++, $l], getReviewStatusText($r["status"]));
$l++;
@ -212,7 +234,7 @@ class SeedDMS_Download_Mgr {
$tcol = $col;
$sheet->setCellValue([$tcol++, $k], $reqName);
$sheet->setCellValue([$tcol, $k], ($r['status']==1 || $r['status']==-1) ? \PhpOffice\PhpSpreadsheet\Shared\Date::PHPToExcel(new DateTime($r['date'])) : null);
$sheet->getStyleByColumnAndRow($tcol++, $k)->getNumberFormat()->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_DATE_DATETIME);
$sheet->getStyle([$tcol++, $k])->getNumberFormat()->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_DATE_DATETIME);
$sheet->setCellValue([$tcol++, $k], $r['comment']);
$sheet->setCellValue([$tcol++, $k], getApprovalStatusText($r["status"]));
$k++;
@ -220,6 +242,7 @@ class SeedDMS_Download_Mgr {
$k--;
}
$col += 4;
}
if(isset($this->extracols[$item->getID()]) && $this->extracols[$item->getID()]) {
foreach($this->extracols[$item->getID()] as $column)
$sheet->setCellValue([$col++, $i], is_array($column) ? implode("\n", $column) : $column );
@ -239,8 +262,9 @@ class SeedDMS_Download_Mgr {
$i = 1;
$col = 1;
foreach($this->folder_header as $h)
$sheet->setCellValue([$col++, $i], $h);
if(!$this->skipdefaultcols)
foreach($this->folder_header as $h)
$sheet->setCellValue([$col++, $i], $h);
foreach($this->folder_extraheader as $h)
$sheet->setCellValue([$col++, $i], $h);
$i++;
@ -251,8 +275,10 @@ class SeedDMS_Download_Mgr {
$dms = $folder->_dms;
$col = 1;
$sheet->setCellValue([$col++, $i], $folder->getID());
$sheet->setCellValue([$col++, $i], $folder->getName());
if(!$this->skipdefaultcols) {
$sheet->setCellValue([$col++, $i], $folder->getID());
$sheet->setCellValue([$col++, $i], $folder->getName());
}
if(isset($this->folder_extracols[$item->getID()]) && $this->folder_extracols[$item->getID()]) {
foreach($this->folder_extracols[$item->getID()] as $column)
$sheet->setCellValue([$col++, $i], is_array($column) ? implode("\n", $column) : $column );

View File

@ -205,7 +205,7 @@ class SeedDMS_EmailNotify extends SeedDMS_Notify {
if($returnpath)
$headers['Return-Path'] = $returnpath;
$headers['To'] = $to;
$preferences = array("input-charset" => "UTF-8", "output-charset" => "UTF-8");
$preferences = array("input-charset" => "UTF-8", "output-charset" => "UTF-8", "scheme"=>"Q");
$encoded_subject = iconv_mime_encode("Subject", getMLText($subject, $params, null, $lang), $preferences);
$headers['Subject'] = substr($encoded_subject, strlen('Subject: '));
$headers['Date'] = date('r', time());

View File

@ -210,13 +210,19 @@ class SeedDMS_Extension_Mgr {
$fp = @fopen(self::getExtensionsConfFile(), "w");
if($fp) {
if($extensions) {
$EXT_CONF = [];
foreach($extensions as $_ext) {
if(file_exists($this->extdir . "/" . $_ext . "/conf.php")) {
$content = file_get_contents($this->extdir . "/" . $_ext . "/conf.php");
fwrite($fp, $content);
include $this->extdir . "/" . $_ext . "/conf.php";
// $content = file_get_contents($this->extdir . "/" . $_ext . "/conf.php");
// fwrite($fp, $content);
}
}
}
// fclose($fp);
// $fp = @fopen(self::getExtensionsConfFile(), "w");
fwrite($fp, '<?php
$EXT_CONF = '.var_export($EXT_CONF, true).';');
fclose($fp);
return true;
} else {

View File

@ -286,6 +286,24 @@ class SeedDMS_Session {
return (array) $this->data['clipboard'];
} /* }}} */
/**
* Check if object is on clipboard
*
* @param object $object Document or folder
*/
function isOnClipboard($object) { /* {{{ */
/* id is only set if load() was called before */
if($this->id) {
$dms = $object->getDMS();
if($object->isType('document')) {
return in_array($object->getID(), $this->data['clipboard']['docs']);
} elseif($object->isType('folder')) {
return in_array($object->getID(), $this->data['clipboard']['folders']);
}
}
return false;
} /* }}} */
/**
* Add to clipboard of session
*

View File

@ -152,6 +152,8 @@ class Settings { /* {{{ */
var $_batchOperations = array(); // or 'all', 'change_owner', etc.
// jump straight to the document if it is the only hit of a search
var $_showSingleSearchHit = true;
// enable/disable use of memcached
var $_enableMemcached = false;
// contentOffsetDirTo
var $_contentOffsetDir = "1048576";
// Maximum number of sub-directories per parent directory
@ -706,6 +708,7 @@ class Settings { /* {{{ */
$this->_partitionSize = strval($tab["partitionSize"]);
$this->_maxUploadSize = strval($tab["maxUploadSize"]);
$this->_enableXsendfile = Settings::boolVal($tab["enableXsendfile"]);
$this->_enableMemcached = Settings::boolVal($tab["enableMemcached"]);
// XML Path: /configuration/system/authentication
$node = $xml->xpath('/configuration/system/authentication');
@ -1011,6 +1014,8 @@ class Settings { /* {{{ */
if (is_null($configFilePath))
$configFilePath = $this->_configFilePath;
// copy($configFilePath, $configFilePath.'.'.time());
// Load
$xml = simplexml_load_string(file_get_contents($configFilePath));
$this->getXMLNode($xml, '/', 'configuration');
@ -1124,6 +1129,7 @@ class Settings { /* {{{ */
$this->setXMLAttributValue($node, "partitionSize", $this->_partitionSize);
$this->setXMLAttributValue($node, "maxUploadSize", $this->_maxUploadSize);
$this->setXMLAttributValue($node, "enableXsendfile", $this->_enableXsendfile);
$this->setXMLAttributValue($node, "enableMemcached", $this->_enableMemcached);
// XML Path: /configuration/system/authentication
$node = $this->getXMLNode($xml, '/configuration/system', 'authentication');
@ -1350,9 +1356,9 @@ class Settings { /* {{{ */
*/
foreach($extension as $fieldname=>$confvalue) {
if($fieldname != '___disable__' && $confvalue) {
$parameter = $extnode->addChild('parameter');
$parameter[0] = isset($extension[$fieldname]) ? (is_array($extension[$fieldname]) ? implode(',', $extension[$fieldname]) : $extension[$fieldname]) : '';
$this->setXMLAttributValue($parameter, 'name', $fieldname);
$parameter = $extnode->addChild('parameter');
$parameter[0] = isset($extension[$fieldname]) ? (is_array($extension[$fieldname]) ? implode(',', $extension[$fieldname]) : $extension[$fieldname]) : '';
$this->setXMLAttributValue($parameter, 'name', $fieldname);
}
}
/* Old code saves those parameters listed in the configuration

View File

@ -46,7 +46,7 @@ class UI extends UI_Default {
* @return object an object of a class implementing the view
*/
static public function factory($theme, $class='', $params=array()) { /* {{{ */
global $settings, $dms, $user, $session, $extMgr, $request, $logger, $notifier;
global $settings, $dms, $user, $session, $extMgr, $request, $logger, $notifier, $fulltextservice;
if(!$class) {
$class = 'Bootstrap';
$class = 'Style';
@ -138,6 +138,7 @@ class UI extends UI_Default {
$view->setParam('request', $request);
$view->setParam('logger', $logger);
$view->setParam('notifier', $notifier);
$view->setParam('fulltextservice', $fulltextservice);
// $view->setParam('settings', $settings);
$view->setParam('sitename', $settings->_siteName);
$view->setParam('rootfolderid', $settings->_rootFolderID);

View File

@ -56,7 +56,7 @@ if(isset($GLOBALS['SEEDDMS_HOOKS']['initStorage'])) {
$dms = new SeedDMS_Core_DMS($db, $storage ? $storage : $settings->_contentDir.$settings->_contentOffsetDir);
if(extension_loaded('memcached')) {
if($settings->_enableMemcached && extension_loaded('memcached')) {
$memcache = new Memcached('seeddms');
$memcache->addServers(array(
array('localhost',11211),

View File

@ -53,11 +53,12 @@ class SeedDMS_ExpiredDocumentsTask extends SeedDMS_SchedulerTaskBase { /* {{{ */
$params['count'] = count($docs);
$params['__body__'] = $body;
$params['__body_html__'] = $bodyhtml;
$params['__skip_footer__'] = true;
$params['sitename'] = $settings->_siteName;
$email->toIndividual('', $u, 'expired_docs_mail_subject', '', $params);
$logger->log('Task \'expired_docs\': Sending reminder \'expired_docs_mail_subject\' to user \''.$u->getLogin().'\'', PEAR_LOG_INFO);
$logger->log('Task \'expired_docs\': Sending reminder \'expired_docs_mail_subject\' to user \''.$u->getLogin().'\' ('.(count($docs)).' documents)', PEAR_LOG_INFO);
} else {
$logger->log('Task \'expired_docs\': Dry run, not sending reminder \'expired_docs_mail_subject\' to user \''.$u->getLogin().'\'', PEAR_LOG_INFO);
$logger->log('Task \'expired_docs\': Dry run, not sending reminder \'expired_docs_mail_subject\' to user \''.$u->getLogin().'\' ('.(count($docs)).' documents)', PEAR_LOG_INFO);
}
}
}
@ -79,12 +80,13 @@ class SeedDMS_ExpiredDocumentsTask extends SeedDMS_SchedulerTaskBase { /* {{{ */
$params['count'] = count($docs);
$params['__body__'] = $body;
$params['__body_html__'] = $bodyhtml;
$params['__skip_footer__'] = true;
$params['sitename'] = $settings->_siteName;
$email->toIndividual('', $taskparams['email'], 'expired_docs_mail_subject', '', $params);
$logger->log('Task \'expired_docs\': Sending reminder \'expired_docs_mail_subject\' to user \''.$taskparams['email'].'\'', PEAR_LOG_INFO);
$logger->log('Task \'expired_docs\': Sending reminder \'expired_docs_mail_subject\' to user \''.$taskparams['email'].'\' ('.(count($docs)).' documents)', PEAR_LOG_INFO);
} else {
$logger->log('Task \'expired_docs\': Dry run, not sending reminder \'expired_docs_mail_subject\' to user \''.$taskparams['email'].'\'', PEAR_LOG_INFO);
$logger->log('Task \'expired_docs\': Dry run, not sending reminder \'expired_docs_mail_subject\' to user \''.$taskparams['email'].'\' ('.(count($docs)).' documents)', PEAR_LOG_INFO);
}
}
} else {
@ -613,6 +615,7 @@ class SeedDMS_CalendarTask extends SeedDMS_SchedulerTaskBase { /* {{{ */
$params['count'] = count($events);
$params['__body__'] = $body;
$params['__body_html__'] = $bodyhtml;
$params['__skip_footer__'] = true;
$params['sitename'] = $settings->_siteName;
$email->toIndividual('', $auser, 'calendar_events_mail_subject', '', $params);
@ -714,6 +717,7 @@ class SeedDMS_StatisticTask extends SeedDMS_SchedulerTaskBase { /* {{{ */
$params = array();
$params['__body__'] = $body;
$params['__body_html__'] = $bodyhtml;
$params['__skip_footer__'] = true;
$params['sitename'] = $settings->_siteName;
$email->toIndividual('', $auser, 'statistics_mail_subject', '', $params);

View File

@ -1100,7 +1100,9 @@ function getMandatoryReviewers($folder, $document, $user) { /* {{{ */
foreach($groups as $group) {
$managers = $group->getManagers();
foreach($managers as $manager) {
$revi[] = $manager->getId();
/* Do not add myself, if I'm the manager of the group */
if($manager->getId() != $user->getId())
$revi[] = $manager->getId();
}
}
}
@ -1195,7 +1197,9 @@ function getMandatoryApprovers($folder, $document, $user) { /* {{{ */
foreach($groups as $group) {
$managers = $group->getManagers();
foreach($managers as $manager) {
$appi[] = $manager->getId();
/* Do not add myself, if I'm the manager of the group */
if($manager->getId() != $user->getId())
$appi[] = $manager->getId();
}
}
}
@ -1416,3 +1420,659 @@ class SeedDMS_FolderTree { /* {{{ */
} /* }}} */
} /* }}} */
class SeedDMS_Search { /* {{{ */
protected $dms;
protected $user;
protected $fulltextservice;
protected $settings;
public $searchparams;
protected $dcount;
protected $fcount;
protected $totalPages;
protected $entries;
protected $terms;
protected $searchTime;
public function __construct($dms, $user, $fulltextservice, $settings) {
$this->dms = $dms;
$this->user = $user;
$this->fulltextservice = $fulltextservice;
$this->settings = $settings;
$this->searchparams = [];
$this->dcount = 0;
$this->fcount = 0;
$this->totalPages = 0;
$this->entries = array();
$this->terms = array();
$this->searchTime = 0;
}
protected function getTime() { /* {{{ */
if (function_exists('microtime')) {
$tm = microtime();
$tm = explode(' ', $tm);
return (float) sprintf('%f', $tm[1] + $tm[0]);
}
return time();
} /* }}} */
public function createSearchFromQuery($get) { /* {{{ */
$dms = $this->dms;
/* Creation date {{{ */
$createstartts = null;
$createstartdate = null;
$createendts = null;
$createenddate = null;
$created['from'] = null;
$created['to'] = null;
if(!empty($get["created"]["from"])) {
$createstartts = makeTsFromDate($get["created"]["from"]);
$createstartdate = array('year'=>(int)date('Y', $createstartts), 'month'=>(int)date('m', $createstartts), 'day'=>(int)date('d', $createstartts), 'hour'=>0, 'minute'=>0, 'second'=>0);
if (!checkdate($createstartdate['month'], $createstartdate['day'], $createstartdate['year'])) {
UI::exitError(getMLText("search"),getMLText("invalid_create_date_end"));
}
$created['from'] = $createstartts;
}
if(!empty($get["created"]["to"])) {
$createendts = makeTsFromDate($get["created"]["to"]);
$createenddate = array('year'=>(int)date('Y', $createendts), 'month'=>(int)date('m', $createendts), 'day'=>(int)date('d', $createendts), 'hour'=>23, 'minute'=>59, 'second'=>59);
if (!checkdate($createenddate['month'], $createenddate['day'], $createenddate['year'])) {
UI::exitError(getMLText("search"),getMLText("invalid_create_date_end"));
}
$created['to'] = $createendts;
}
$this->searchparams['created'] = $created;
/* }}} */
/* Modification date {{{ */
$modifystartts = null;
$modifystartdate = null;
$modifyendts = null;
$modifyenddate = null;
$modified['from'] = null;
$modified['to'] = null;
if(!empty($get["modified"]["from"])) {
$modifystartts = makeTsFromDate($get["modified"]["from"]);
$modifystartdate = array('year'=>(int)date('Y', $modifystartts), 'month'=>(int)date('m', $modifystartts), 'day'=>(int)date('d', $modifystartts), 'hour'=>0, 'minute'=>0, 'second'=>0);
if (!checkdate($modifystartdate['month'], $modifystartdate['day'], $modifystartdate['year'])) {
UI::exitError(getMLText("search"),getMLText("invalid_modification_date_end"));
}
$modified['from'] = $modifystartts;
}
if(!empty($get["modified"]["to"])) {
$modifyendts = makeTsFromDate($get["modified"]["to"]);
$modifyenddate = array('year'=>(int)date('Y', $modifyendts), 'month'=>(int)date('m', $modifyendts), 'day'=>(int)date('d', $modifyendts), 'hour'=>23, 'minute'=>59, 'second'=>59);
if (!checkdate($modifyenddate['month'], $modifyenddate['day'], $modifyenddate['year'])) {
UI::exitError(getMLText("search"),getMLText("invalid_modification_date_end"));
}
$modified['to'] = $modifyendts;
}
$this->searchparams['modified'] = $modified;
/* }}} */
/* Filesize {{{ */
$filesizestart = 0;
$filesizeend = 0;
$filesize['from'] = null;
$filesize['to'] = null;
if(!empty($get["filesize"]["from"])) {
$filesizestart = $get["filesize"]["from"];
$filesize['from'] = $get["filesize"]["from"];
}
if(!empty($get["filesize"]["to"])) {
$filesizeend = $get["filesize"]["to"];
$filesize['to'] = $get["filesize"]["to"];
}
$this->searchparams['filesize'] = $filesize;
/* }}} */
// Check to see if the search has been restricted to a particular
// document owner.
// $get['owner'] can be a name of an array of names or ids {{{
$owner = [];
$ownernames = []; // Needed by fulltext search
$ownerobjs = []; // Needed by database search
if(!empty($get["owner"])) {
$owner = $get['owner'];
if (!is_array($get['owner'])) {
if(is_numeric($get['owner']))
$o = $dms->getUser($get['owner']);
else
$o = $dms->getUserByLogin($get['owner']);
if($o) {
$ownernames[] = $o->getLogin();
$ownerobjs[] = $o;
}
} else {
foreach($get["owner"] as $l) {
if($l) {
if(is_numeric($l))
$o = $dms->getUser($l);
else
$o = $dms->getUserByLogin($l);
if($o) {
$ownernames[] = $o->getLogin();
$ownerobjs[] = $o;
}
}
}
}
}
$this->searchparams['ownernames'] = $ownernames;
$this->searchparams['ownerobjs'] = $ownerobjs;
/* }}} */
// category {{{
$categories = array();
$categorynames = array();
$category = array();
if(isset($get['category']) && $get['category']) {
$category = $get['category'];
foreach($get['category'] as $catid) {
if($catid) {
if(is_numeric($catid)) {
if($cat = $dms->getDocumentCategory($catid)) {
$categories[] = $cat;
$categorynames[] = $cat->getName();
}
} else {
$categorynames[] = $catid;
}
}
}
}
$this->searchparams['categorynames'] = $categorynames;
$this->searchparams['categories'] = $categories;
/* }}} */
if (isset($get["orderby"]) && is_string($get["orderby"])) {
$orderby = $get["orderby"];
} else {
$orderby = "";
}
$this->searchparams['orderby'] = $orderby;
$limit = (isset($get["limit"]) && is_numeric($get["limit"])) ? (int) $get['limit'] : 20;
$this->searchparams['limit'] = $limit;
$fullsearch = ((!isset($get["fullsearch"]) && $this->settings->_defaultSearchMethod == 'fulltext') || !empty($get["fullsearch"])) && $this->settings->_enableFullSearch;
$this->searchparams['fullsearch'] = $fullsearch;
$facetsearch = !empty($get["facetsearch"]) && $this->settings->_enableFullSearch;
$this->searchparams['facetsearch'] = $facetsearch;
if (isset($get["query"]) && is_string($get["query"])) {
$query = $get["query"];
} else {
$query = "";
}
$this->searchparams['query'] = $query;
// Check to see if the search has been restricted to a particular
// mimetype. {{{
$mimetype = [];
if (isset($get["mimetype"])) {
if (!is_array($get['mimetype'])) {
if(!empty($get['mimetype']))
$mimetype[] = $get['mimetype'];
} else {
foreach($get["mimetype"] as $l) {
if($l)
$mimetype[] = $l;
}
}
}
$this->searchparams['mimetype'] = $mimetype;
/* }}} */
// status
$status = isset($get['status']) ? $get['status'] : array();
$this->searchparams['status'] = $status;
// Get the page number to display. If the result set contains more than
// 25 entries, it is displayed across multiple pages.
//
// This requires that a page number variable be used to track which page the
// user is interested in, and an extra clause on the select statement.
//
// Default page to display is always one.
$pageNumber=1;
if (isset($get["pg"])) {
if (is_numeric($get["pg"]) && $get["pg"]>0) {
$pageNumber = (int) $get["pg"];
}
elseif (!strcasecmp($get["pg"], "all")) {
$pageNumber = "all";
}
}
$this->searchparams['pageNumber'] = $pageNumber;
if($fullsearch) {
// Search in Fulltext {{{
// record_type
if(isset($get['record_type']))
$record_type = $get['record_type'];
else
$record_type = array();
$this->searchparams['record_type'] = $record_type;
if (isset($get["attributes"]))
$attributes = $get["attributes"];
else
$attributes = array();
foreach($attributes as $an=>&$av) {
if(substr($an, 0, 5) == 'attr_') {
$tmp = explode('_', $an);
if($attrdef = $dms->getAttributeDefinition($tmp[1])) {
switch($attrdef->getType()) {
/* Turn dates into timestamps */
case SeedDMS_Core_AttributeDefinition::type_date:
foreach(['from', 'to'] as $kk)
if(!empty($av[$kk])) {
if(!is_numeric($av[$kk])) {
$av[$kk] = makeTsFromDate($av[$kk]);
}
}
break;
}
}
}
}
$this->searchparams['attributes'] = $attributes;
/* Create $order array for fulltext search */
$order = ['by'=>'', 'dir'=>''];
switch($orderby) {
case 'dd':
$order = ['by'=>'created', 'dir'=>'desc'];
break;
case 'd':
$order = ['by'=>'created', 'dir'=>'asc'];
break;
case 'nd':
$order = ['by'=>'title', 'dir'=>'desc'];
break;
case 'n':
$order = ['by'=>'title', 'dir'=>'asc'];
break;
case 'id':
$order = ['by'=>'id', 'dir'=>'desc'];
break;
case 'i':
$order = ['by'=>'id', 'dir'=>'asc'];
break;
default:
$order = ['by'=>'', 'dir'=>''];
}
$this->searchparams['order'] = $order;
// Check to see if the search has been restricted to a particular sub-tree in
// the folder hierarchy.
$startFolder = null;
if (isset($get["folderfullsearchid"]) && is_numeric($get["folderfullsearchid"]) && $get["folderfullsearchid"]>0) {
$targetid = $get["folderfullsearchid"];
$startFolder = $this->dms->getFolder($targetid);
if (!is_object($startFolder)) {
UI::exitError(getMLText("search"),getMLText("invalid_folder_id"));
}
}
$this->searchparams['startFolder'] = $startFolder;
$rootFolder = $this->dms->getFolder($this->settings->_rootFolderID);
$this->searchparams['rootFolder'] = $rootFolder;
// }}}
} else {
// Search in Database {{{
/* Select if only documents (0x01), only folders (0x02) or both (0x03)
* are found
*/
$resultmode = 0x03;
if (isset($get["resultmode"]) && is_numeric($get["resultmode"])) {
$resultmode = $get['resultmode'];
}
$this->searchparams['resultmode'] = $resultmode;
$mode = "AND";
if (isset($get["mode"]) && is_numeric($get["mode"]) && $get["mode"]==0) {
$mode = "OR";
}
$this->searchparams['mode'] = $mode;
$searchin = array();
if (isset($get['searchin']) && is_array($get["searchin"])) {
foreach ($get["searchin"] as $si) {
if (isset($si) && is_numeric($si)) {
switch ($si) {
case 1: // keywords
case 2: // name
case 3: // comment
case 4: // attributes
case 5: // id
$searchin[$si] = $si;
break;
}
}
}
}
// if none is checkd search all
if (count($searchin)==0) $searchin=array(1, 2, 3, 4, 5);
$this->searchparams['searchin'] = $searchin;
// Check to see if the search has been restricted to a particular sub-tree in
// the folder hierarchy.
if (isset($get["targetid"]) && is_numeric($get["targetid"]) && $get["targetid"]>0) {
$targetid = $get["targetid"];
$startFolder = $this->dms->getFolder($targetid);
}
else {
$startFolder = $this->dms->getRootFolder();
}
if (!is_object($startFolder)) {
UI::exitError(getMLText("search"),getMLText("invalid_folder_id"));
}
$this->searchparams['startFolder'] = $startFolder;
/* Revision date {{{ */
$revisionstartts = null;
$revisionstartdate = array();
$revisionendts = null;
$revisionenddate = array();
$revised['from'] = null;
$revised['to'] = null;
if(!empty($get["revisiondatestart"])) {
$revisionstartts = makeTsFromDate($get["revisiondatestart"]);
$revisionstartdate = array('year'=>(int)date('Y', $revisionstartts), 'month'=>(int)date('m', $revisionstartts), 'day'=>(int)date('d', $revisionstartts), 'hour'=>0, 'minute'=>0, 'second'=>0);
if (!checkdate($revisionstartdate['month'], $revisionstartdate['day'], $revisionstartdate['year'])) {
UI::exitError(getMLText("search"),getMLText("invalid_revision_date_start"));
}
$revised['from'] = $revisionstartts;
}
$this->searchparams['revisionstartdate'] = $revisionstartdate;
if(!empty($get["revisiondateend"])) {
$revisionendts = makeTsFromDate($get["revisiondateend"]);
$revisionenddate = array('year'=>(int)date('Y', $revisionendts), 'month'=>(int)date('m', $revisionendts), 'day'=>(int)date('d', $revisionendts), 'hour'=>23, 'minute'=>59, 'second'=>59);
if (!checkdate($revisionenddate['month'], $revisionenddate['day'], $revisionenddate['year'])) {
UI::exitError(getMLText("search"),getMLText("invalid_revision_date_end"));
}
$revised['to'] = $revisionendts;
}
$this->searchparams['revisionenddate'] = $revisionenddate;
/* }}} */
/* Status date {{{ */
$statusstartdate = array();
$statusenddate = array();
if(!empty($get["statusdatestart"])) {
$statusstartts = makeTsFromDate($get["statusdatestart"]);
$statusstartdate = array('year'=>(int)date('Y', $statusstartts), 'month'=>(int)date('m', $statusstartts), 'day'=>(int)date('d', $statusstartts), 'hour'=>0, 'minute'=>0, 'second'=>0);
}
$this->searchparams['statusstartdate'] = $statusstartdate;
if ($statusstartdate && !checkdate($statusstartdate['month'], $statusstartdate['day'], $statusstartdate['year'])) {
UI::exitError(getMLText("search"),getMLText("invalid_status_date_start"));
}
$this->searchparams['statusstartdate'] = $statusstartdate;
if(!empty($get["statusdateend"])) {
$statusendts = makeTsFromDate($get["statusdateend"]);
$statusenddate = array('year'=>(int)date('Y', $statusendts), 'month'=>(int)date('m', $statusendts), 'day'=>(int)date('d', $statusendts), 'hour'=>23, 'minute'=>59, 'second'=>59);
}
if ($statusenddate && !checkdate($statusenddate['month'], $statusenddate['day'], $statusenddate['year'])) {
UI::exitError(getMLText("search"),getMLText("invalid_status_date_end"));
}
$this->searchparams['statusenddate'] = $statusenddate;
/* }}} */
/* Expiration date {{{ */
$expstartdate = array();
$expenddate = array();
if(!empty($get["expirationstart"])) {
$expstartts = makeTsFromDate($get["expirationstart"]);
$expstartdate = array('year'=>(int)date('Y', $expstartts), 'month'=>(int)date('m', $expstartts), 'day'=>(int)date('d', $expstartts), 'hour'=>0, 'minute'=>0, 'second'=>0);
if (!checkdate($expstartdate['month'], $expstartdate['day'], $expstartdate['year'])) {
UI::exitError(getMLText("search"),getMLText("invalid_expiration_date_start"));
}
}
$this->searchparams['expstartdate'] = $expstartdate;
if(!empty($get["expirationend"])) {
$expendts = makeTsFromDate($get["expirationend"]);
$expenddate = array('year'=>(int)date('Y', $expendts), 'month'=>(int)date('m', $expendts), 'day'=>(int)date('d', $expendts), 'hour'=>23, 'minute'=>59, 'second'=>59);
if (!checkdate($expenddate['month'], $expenddate['day'], $expenddate['year'])) {
UI::exitError(getMLText("search"),getMLText("invalid_expiration_date_end"));
}
}
$this->searchparams['expenddate'] = $expenddate;
/* }}} */
$reception = array();
if (isset($get["reception"])){
$reception = $get["reception"];
}
$this->searchparams['reception'] = $reception;
/* Do not search for folders if result shall be filtered by status.
* If this is not done, unexplainable results will be delivered.
* e.g. a search for expired documents of a given user will list
* also all folders of that user because the status doesn't apply
* to folders.
*/
// if($status)
// $resultmode = 0x01;
if (isset($get["attributes"]))
$attributes = $get["attributes"];
else
$attributes = array();
foreach($attributes as $attrdefid=>$attribute) {
$attrdef = $this->dms->getAttributeDefinition($attrdefid);
if($attribute) {
if($attrdef->getType() == SeedDMS_Core_AttributeDefinition::type_date) {
if(is_array($attribute)) {
if(!empty($attributes[$attrdefid]['from']))
$attributes[$attrdefid]['from'] = date('Y-m-d', makeTsFromDate($attribute['from']));
if(!empty($attributes[$attrdefid]['to']))
$attributes[$attrdefid]['to'] = date('Y-m-d', makeTsFromDate($attribute['to']));
} else {
$attributes[$attrdefid] = date('Y-m-d', makeTsFromDate($attribute));
}
}
}
}
$this->searchparams['attributes'] = $attributes;
// }}}
}
return $this->searchparams;
} /* }}} */
public function setSearchParam($name, $value) {
$this->searchparams[$name] = $value;
}
public function search() { /* {{{ */
if($this->searchparams['fullsearch']) {
if($this->settings->_fullSearchEngine == 'lucene') {
Zend_Search_Lucene_Search_QueryParser::setDefaultEncoding('utf-8');
}
$startTime = $this->getTime();
$total = 0;
$index = $this->fulltextservice->Indexer();
if($index) {
if(!empty($this->settings->_suggestTerms) && !empty($get['query'])) {
$st = preg_split("/[\s,]+/", trim($get['query']));
if($lastterm = end($st))
$this->terms = $index->terms($lastterm, $this->settings->_suggestTerms);
}
$limit = $this->searchparams['limit'];
$lucenesearch = $this->fulltextservice->Search();
$searchresult = $lucenesearch->search($this->searchparams['query'],
array(
'record_type'=>$this->searchparams['record_type'],
'owner'=>$this->searchparams['ownernames'],
'status'=>$this->searchparams['status'],
'category'=>$this->searchparams['categorynames'],
'user'=>$this->user->isAdmin() ? [] : [$this->user->getLogin()],
'mimetype'=>$this->searchparams['mimetype'],
'startFolder'=>$this->searchparams['startFolder'],
'rootFolder'=>$this->searchparams['rootFolder'],
'created_start'=>$this->searchparams['created']['from'],
'created_end'=>$this->searchparams['created']['to'],
'modified_start'=>$this->searchparams['modified']['from'],
'modified_end'=>$this->searchparams['modified']['to'],
'filesize_start'=>$this->searchparams['filesize']['from'],
'filesize_end'=>$this->searchparams['filesize']['to'],
'attributes'=>$this->searchparams['attributes']
), ($this->searchparams['pageNumber'] == 'all' ? array() : array('limit'=>$limit, 'offset'=>$limit * ($this->searchparams['pageNumber']-1))), $this->searchparams['order']);
if($searchresult !== false) {
$entries = array();
$facets = $searchresult['facets'];
$stats = $searchresult['stats'] ?? null;
$dcount = 0;
$fcount = 0;
if($searchresult['hits']) {
foreach($searchresult['hits'] as $hit) {
if($hit['document_id'][0] == 'D') {
if($tmp = $this->dms->getDocument(substr($hit['document_id'], 1))) {
// if($tmp->getAccessMode($user) >= M_READ) {
$tmp->verifyLastestContentExpriry();
$entries[] = $tmp;
$dcount++;
// }
}
} elseif($hit['document_id'][0] == 'F') {
if($tmp = $this->dms->getFolder(substr($hit['document_id'], 1))) {
// if($tmp->getAccessMode($user) >= M_READ) {
$entries[] = $tmp;
$fcount++;
// }
}
}
}
if(isset($facets['record_type'])) {
$fcount = isset($facets['record_type']['folder']) ? $facets['record_type']['folder'] : 0;
$dcount = isset($facets['record_type']['document']) ? $facets['record_type']['document'] : 0 ;
}
}
$this->fcount = $fcount;
$this->dcount = $dcount;
$this->stats = $stats;
$this->entries = $entries;
$this->facets = $facets;
$totalPages = 0;
if($limit > 0) {
if($searchresult['count'] > $limit) {
$totalPages = (int) ($searchresult['count']/$limit);
if($searchresult['count']%$limit)
$totalPages++;
} else {
$totalPages = 1;
}
}
$this->total = $searchresult['count'];
$this->totalPages = $totalPages;
}
$searchTime = $this->getTime() - $startTime;
$this->searchTime = round($searchTime, 2);
}
} else {
// ---------------- Start searching -----------------------------------------
$startTime = $this->getTime();
$resArr = $this->dms->search(array(
'query'=>$this->searchparams['query'],
'limit'=>0,
'offset'=>0,
'logicalmode'=>$this->searchparams['mode'],
'searchin'=>$this->searchparams['searchin'],
'startFolder'=>$this->searchparams['startFolder'],
'owner'=>$this->searchparams['ownerobjs'],
'status'=>$this->searchparams['status'],
'mimetype'=>$this->searchparams['mimetype'],
'creationstartdate'=>$this->searchparams['created']['from'],
'creationenddate'=>$this->searchparams['created']['to'],
'modificationstartdate'=>$this->searchparams['modified']['from'],
'modificationenddate'=>$this->searchparams['modified']['to'],
'filesizestart'=>$this->searchparams['filesize']['from'],
'filesizeend'=>$this->searchparams['filesize']['to'],
'categories'=>$this->searchparams['categories'],
'attributes'=>$this->searchparams['attributes'],
'mode'=>$this->searchparams['resultmode'],
'expirationstartdate'=>$this->searchparams['expstartdate'],
'expirationenddate'=>$this->searchparams['expenddate'],
'revisionstartdate'=>$this->searchparams['revisionstartdate'],
'revisionenddate'=>$this->searchparams['revisionenddate'],
'reception'=>$this->searchparams['reception'],
'statusstartdate'=>$this->searchparams['statusstartdate'],
'statusenddate'=>$this->searchparams['statusenddate'],
'orderby'=>$this->searchparams['orderby']
));
$this->total = $resArr['totalDocs'] + $resArr['totalFolders'];
$searchTime = $this->getTime() - $startTime;
$this->searchTime = round($searchTime, 2);
$entries = array();
$fcount = 0;
if($resArr['folders']) {
foreach ($resArr['folders'] as $entry) {
if ($entry->getAccessMode($this->user) >= M_READ) {
$entries[] = $entry;
$fcount++;
}
}
}
$this->fcount = $fcount;
$dcount = 0;
if($resArr['docs']) {
foreach ($resArr['docs'] as $entry) {
if ($entry->getAccessMode($this->user) >= M_READ) {
if($entry->getLatestContent()) {
$entry->verifyLastestContentExpriry();
$entries[] = $entry;
$dcount++;
}
}
}
}
$limit = $this->searchparams['limit'];
$this->dcount = $dcount;
$totalPages = 0;
if($limit > 0) {
$totalPages = (int) (count($entries)/$limit);
if(count($entries)%$limit)
$totalPages++;
}
if($this->searchparams['pageNumber'] != 'all')
$this->entries = array_slice($entries, ($this->searchparams['pageNumber']-1)*$limit, $limit);
$this->totalPages = $totalPages;
$this->facets = array();
$this->stats = array();
}
} /* }}} */
public function getFolderCount() {
return $this->fcount;
}
public function getDocumentCount() {
return $this->dcount;
}
public function getTotal() {
return $this->total;
}
} /* }}} */

View File

@ -20,7 +20,7 @@
class SeedDMS_Version { /* {{{ */
const _number = "6.0.31";
const _number = "6.0.33";
const _string = "SeedDMS";
function __construct() {

View File

@ -44,32 +44,9 @@ if(true) {
$containerBuilder = new \DI\ContainerBuilder();
$c = $containerBuilder->build();
/*
$c['notFoundHandler'] = function ($c) use ($settings, $dms) {
return function ($request, $response) use ($c, $settings, $dms) {
$uri = $request->getUri();
if($uri->getBasePath())
$file = $uri->getPath();
else
$file = substr($uri->getPath(), 1);
if(file_exists($file) && is_file($file)) {
$_SERVER['SCRIPT_FILENAME'] = basename($file);
// include($file);
exit;
}
if($request->isXhr()) {
exit;
}
// print_r($request->getUri());
// exit;
return $c['response']
->withStatus(302)
->withHeader('Location', isset($settings->_siteDefaultPage) && strlen($settings->_siteDefaultPage)>0 ? $settings->_httpRoot.$settings->_siteDefaultPage : $settings->_httpRoot."out/out.ViewFolder.php");
};
};
*/
AppFactory::setContainer($c);
$app = AppFactory::create();
/* put lots of data into the container, because if slim instanciates
* a class by itself (with the help from the DI container), it will
* pass the container to the constructor of the instanciated class.
@ -91,12 +68,8 @@ if(true) {
}
}
$app->get('/', function($request, $response) {
return $response
->withHeader('Location', '/out/out.ViewFolder.php')
->withStatus(302);
$app->addErrorMiddleware(false, true, true);
});
if(isset($GLOBALS['SEEDDMS_HOOKS']['initDMS'])) {
foreach($GLOBALS['SEEDDMS_HOOKS']['initDMS'] as $hookObj) {
if (method_exists($hookObj, 'addRoute')) {
@ -107,20 +80,13 @@ if(true) {
}
}
/*
$app->get('/out/[{path:.*}]', function($request, $response, $path = null) use ($app) {
$uri = $request->getUri();
if($uri->getBasePath())
$file = $uri->getPath();
else
$file = substr($uri->getPath(), 1);
if(file_exists($file) && is_file($file)) {
$_SERVER['SCRIPT_FILENAME'] = basename($file);
include($file);
exit;
}
/* Catch all route */
$app->get('/{path:.*}', function($request, $response) use ($settings) {
return $response
->withHeader('Location', $settings->_httpRoot.'out/out.ViewFolder.php')
->withStatus(302);
});
*/
$app->run();
} else {

View File

@ -406,86 +406,97 @@ echo '<p><a href="install.php">' . getMLText("settings_start_install") . '</a></
$this->contentHeading("SeedDMS Installation for version ".$_GET['version']);
$this->contentContainerStart();
$sqlfile = "update.sql";
switch($settings->_dbDriver) {
case 'mysql':
case 'mysqli':
case 'mysqlnd':
$tmp = explode(":", $settings->_dbHostname);
$dsn = $settings->_dbDriver.":dbname=".$settings->_dbDatabase.";host=".$tmp[0];
if(isset($tmp[1]))
$dsn .= ";port=".$tmp[1];
break;
case 'sqlite':
$dsn = $settings->_dbDriver.":".$settings->_dbDatabase;
if(file_exists('update-'.$_GET['version'].'/update-sqlite3.sql'))
$sqlfile = "update-sqlite3.sql";
break;
case 'pgsql':
$tmp = explode(":", $settings->_dbHostname);
$dsn = $settings->_dbDriver.":dbname=".$settings->_dbDatabase.";host=".$tmp[0];
if(isset($tmp[1]))
$dsn .= ";port=".$tmp[1];
if(file_exists('update-'.$_GET['version'].'/update-postgres.sql'))
$sqlfile = "update-postgres.sql";
}
$db = new PDO($dsn, $settings->_dbUser, $settings->_dbPass);
if (!$db) {
die;
}
$sqlfile = "update.sql";
switch($settings->_dbDriver) {
case 'mysql':
case 'mysqli':
case 'mysqlnd':
$tmp = explode(":", $settings->_dbHostname);
$dsn = $settings->_dbDriver.":dbname=".$settings->_dbDatabase.";host=".$tmp[0];
if(isset($tmp[1]))
$dsn .= ";port=".$tmp[1];
break;
case 'sqlite':
$dsn = $settings->_dbDriver.":".$settings->_dbDatabase;
if(file_exists('update-'.$_GET['version'].'/update-sqlite3.sql'))
$sqlfile = "update-sqlite3.sql";
break;
case 'pgsql':
$tmp = explode(":", $settings->_dbHostname);
$dsn = $settings->_dbDriver.":dbname=".$settings->_dbDatabase.";host=".$tmp[0];
if(isset($tmp[1]))
$dsn .= ";port=".$tmp[1];
if(file_exists('update-'.$_GET['version'].'/update-postgres.sql'))
$sqlfile = "update-postgres.sql";
}
$db = new PDO($dsn, $settings->_dbUser, $settings->_dbPass);
if (!$db) {
die;
}
$errorMsg = '';
$res = $db->query('select * from tblVersion');
$recs = $res->fetchAll(PDO::FETCH_ASSOC);
if(!empty($recs)) {
$rec = $recs[0];
if($_GET['version'] > $rec['major'].'.'.$rec['minor'].'.'.$rec['subminor']) {
$errorMsg = '';
switch($settings->_dbDriver) {
case 'mysql':
case 'mysqli':
case 'mysqlnd':
case 'sqlite':
$sql = 'select * from `tblVersion`';
break;
case 'pgsql':
$sql = 'select * from "tblVersion"';
break;
}
$res = $db->query($sql);
$recs = $res->fetchAll(PDO::FETCH_ASSOC);
if(!empty($recs)) {
$rec = $recs[0];
if($_GET['version'] > $rec['major'].'.'.$rec['minor'].'.'.$rec['subminor']) {
if(file_exists('update-'.$_GET['version'].'/'.$sqlfile)) {
$queries = file_get_contents('update-'.$_GET['version'].'/'.$sqlfile);
$queries = explode(";", $queries);
if(file_exists('update-'.$_GET['version'].'/'.$sqlfile)) {
$queries = file_get_contents('update-'.$_GET['version'].'/'.$sqlfile);
$queries = explode(";", $queries);
// execute queries
if($queries) {
echo "<h3>Updating database schema</h3>";
foreach($queries as $query) {
$query = trim($query);
if (!empty($query)) {
echo $query."<br />";
if(false === $db->exec($query)) {
$e = $db->ErrorInfo();
$errorMsg .= $e[2] . "<br/>";
// execute queries
if($queries) {
echo "<h3>Updating database schema</h3>";
foreach($queries as $query) {
$query = trim($query);
if (!empty($query)) {
echo $query."<br />";
if(false === $db->exec($query)) {
$e = $db->ErrorInfo();
$errorMsg .= $e[2] . "<br/>";
}
}
}
}
} else {
echo "<p>SQL file for update missing!</p>";
}
} else {
echo "<p>Database schema already up to date.</p>";
}
if(!$errorMsg) {
if(file_exists('update-'.$_GET['version'].'/update.php')) {
echo "<h3>Running update script</h3>";
include('update-'.$_GET['version'].'/update.php');
}
} else {
echo "<h3>Error Messages</h3>";
echo $errorMsg;
}
echo "<p><a href=\"install.php\">Go back to installation and recheck.</a></p>";
} else {
echo "<p>SQL file for update missing!</p>";
echo "<p>Could not determine database schema version.</p>";
}
} else {
echo "<p>Database schema already up to date.</p>";
}
$db = null;
if(!$errorMsg) {
if(file_exists('update-'.$_GET['version'].'/update.php')) {
echo "<h3>Running update script</h3>";
include('update-'.$_GET['version'].'/update.php');
}
} else {
echo "<h3>Error Messages</h3>";
echo $errorMsg;
}
echo "<p><a href=\"install.php\">Go back to installation and recheck.</a></p>";
} else {
echo "<p>Could not determine database schema version.</p>";
}
$db = null;
// just remove info for web page installation
$settings->_printDisclaimer = false;
$settings->_footNote = false;
// end of the page
// just remove info for web page installation
$settings->_printDisclaimer = false;
$settings->_footNote = false;
// end of the page
$this->contentContainerEnd();
$this->contentEnd();
$this->htmlEndPage();

View File

@ -686,6 +686,8 @@ URL: [url]',
'export_user_list_csv' => '',
'extension_archive' => 'إرشيف أطول',
'extension_changelog' => 'سجل التعديلات',
'extension_config' => '',
'extension_info' => '',
'extension_is_off_now' => '',
'extension_is_on_now' => '',
'extension_loading' => 'تحميل الإضافات',
@ -1140,6 +1142,7 @@ URL: [url]',
'no_groups' => 'لايوجد مجموعات',
'no_group_members' => 'هذه المجموعة لايوجد بها اعضاء',
'no_linked_files' => 'لايوجد ملفات مرتبطة',
'no_mimetype' => '',
'no_previous_versions' => 'لايوجد اصدارات سابقة',
'no_receipt_needed' => 'لا يحتاج لأي مستلم',
'no_review_needed' => 'لايوجد مراجعات في الانتظار',
@ -1287,6 +1290,7 @@ URL: [url]',
'removeFolderFromDropFolder' => 'إزالة مجلد من إسقاط لائحة',
'removeFolderFromDropFolder_desc' => '',
'remove_approval_log' => '',
'remove_from_clipboard' => '',
'remove_marked_files' => 'ازالة الملفات المختارة',
'remove_review_log' => '',
'remove_task' => '',
@ -1683,6 +1687,8 @@ URL: [url]',
'settings_enableLargeFileUpload_desc' => 'تمكين تحميل الملفات الكبيرة',
'settings_enableLoginByEmail' => '',
'settings_enableLoginByEmail_desc' => '',
'settings_enableMemcached' => '',
'settings_enableMemcached_desc' => '',
'settings_enableMenuTasks' => 'تمكين مهام القائمة',
'settings_enableMenuTasks_desc' => 'تمكين مهام القائمة',
'settings_enableMenuTransmittals' => '',
@ -2001,6 +2007,7 @@ URL: [url]',
'sign_out' => 'تسجيل الخروج',
'sign_out_user' => 'تسجيل خروج مستخدم',
'site_brand' => 'مجلس النواب اللبناني',
'skip_default_export_cols' => '',
'sk_SK' => 'السلوفاكية',
'sort_by_date' => 'رتب حسب التاريخ',
'sort_by_expiration_date' => '',
@ -2130,6 +2137,7 @@ URL: [url]',
'status_revision_sleeping' => 'مراجعة الوضع في حالة النوم',
'status_revisor_removed' => 'تم ازالة حالة المراجع',
'status_unknown' => 'مجهول',
'storage' => '',
'storage_size' => 'حجم التخزين',
'subfolder_duplicate_name' => 'اسم مجلد فرعي مكرر',
'submit_2_fact_auth' => 'قدم ثنائي عامل التوثيق',

View File

@ -620,6 +620,8 @@ $text = array(
'export_user_list_csv' => '',
'extension_archive' => '',
'extension_changelog' => '',
'extension_config' => '',
'extension_info' => '',
'extension_is_off_now' => '',
'extension_is_on_now' => '',
'extension_loading' => '',
@ -1018,6 +1020,7 @@ $text = array(
'no_groups' => 'Няма групи',
'no_group_members' => 'Групата няма членове',
'no_linked_files' => 'Няма свързани файлове',
'no_mimetype' => '',
'no_previous_versions' => 'Няма други версии',
'no_receipt_needed' => '',
'no_review_needed' => 'Рецензия не е нужна',
@ -1156,6 +1159,7 @@ $text = array(
'removeFolderFromDropFolder' => '',
'removeFolderFromDropFolder_desc' => '',
'remove_approval_log' => '',
'remove_from_clipboard' => '',
'remove_marked_files' => '',
'remove_review_log' => '',
'remove_task' => '',
@ -1525,6 +1529,8 @@ $text = array(
'settings_enableLargeFileUpload_desc' => 'Ако е включено, качване на файлове е дустъпно и чрез джава-аплет, именован jumploader, без лимит за размер на файла. Това също ще позволи да се качват няколко файла наведнъж.',
'settings_enableLoginByEmail' => '',
'settings_enableLoginByEmail_desc' => '',
'settings_enableMemcached' => '',
'settings_enableMemcached_desc' => '',
'settings_enableMenuTasks' => '',
'settings_enableMenuTasks_desc' => '',
'settings_enableMenuTransmittals' => '',
@ -1843,6 +1849,7 @@ $text = array(
'sign_out' => 'изход',
'sign_out_user' => '',
'site_brand' => '',
'skip_default_export_cols' => '',
'sk_SK' => 'Словашки',
'sort_by_date' => 'Сортирай по дата"',
'sort_by_expiration_date' => '',
@ -1972,6 +1979,7 @@ $text = array(
'status_revision_sleeping' => '',
'status_revisor_removed' => '',
'status_unknown' => 'Неизвестен',
'storage' => '',
'storage_size' => 'Размер на хранилището',
'subfolder_duplicate_name' => '',
'submit_2_fact_auth' => '',

View File

@ -625,6 +625,8 @@ URL: [url]',
'export_user_list_csv' => '',
'extension_archive' => '',
'extension_changelog' => '',
'extension_config' => '',
'extension_info' => '',
'extension_is_off_now' => '',
'extension_is_on_now' => '',
'extension_loading' => '',
@ -1023,6 +1025,7 @@ URL: [url]',
'no_groups' => 'No hi ha grups',
'no_group_members' => 'Aquest grup no té membres',
'no_linked_files' => 'No hi ha fitxers enllaçats',
'no_mimetype' => '',
'no_previous_versions' => 'No s\'han trobat altres versions',
'no_receipt_needed' => '',
'no_review_needed' => 'No hi ha revisions pendents.',
@ -1161,6 +1164,7 @@ URL: [url]',
'removeFolderFromDropFolder' => 'Esborrar carpeta després de la importació',
'removeFolderFromDropFolder_desc' => '',
'remove_approval_log' => '',
'remove_from_clipboard' => '',
'remove_marked_files' => '',
'remove_review_log' => '',
'remove_task' => '',
@ -1530,6 +1534,8 @@ URL: [url]',
'settings_enableLargeFileUpload_desc' => '',
'settings_enableLoginByEmail' => '',
'settings_enableLoginByEmail_desc' => '',
'settings_enableMemcached' => '',
'settings_enableMemcached_desc' => '',
'settings_enableMenuTasks' => '',
'settings_enableMenuTasks_desc' => '',
'settings_enableMenuTransmittals' => '',
@ -1848,6 +1854,7 @@ URL: [url]',
'sign_out' => 'desconnectar',
'sign_out_user' => '',
'site_brand' => '',
'skip_default_export_cols' => '',
'sk_SK' => 'Eslovac',
'sort_by_date' => '',
'sort_by_expiration_date' => '',
@ -1977,6 +1984,7 @@ URL: [url]',
'status_revision_sleeping' => '',
'status_revisor_removed' => '',
'status_unknown' => 'Desconegut',
'storage' => '',
'storage_size' => 'Storage size',
'subfolder_duplicate_name' => '',
'submit_2_fact_auth' => '',

View File

@ -710,6 +710,8 @@ URL: [url]',
'export_user_list_csv' => '',
'extension_archive' => 'Rozšíření',
'extension_changelog' => 'Changelog',
'extension_config' => '',
'extension_info' => '',
'extension_is_off_now' => '',
'extension_is_on_now' => '',
'extension_loading' => 'Načítání rozšíření',
@ -1171,6 +1173,7 @@ URL: [url]',
'no_groups' => 'Žádné skupiny',
'no_group_members' => 'Tato skupina nemá žádné členy',
'no_linked_files' => 'Žádné propojené soubory',
'no_mimetype' => '',
'no_previous_versions' => 'Nebyly nalezeny žádné jiné verze',
'no_receipt_needed' => 'Nejsou žádné dokumenty, které by vyžadovaly potvrzení o přijetí.',
'no_review_needed' => 'Nic nečeká k recenzi.',
@ -1333,6 +1336,7 @@ URL: [url]',
'removeFolderFromDropFolder' => 'Odstranit složku po nahrání',
'removeFolderFromDropFolder_desc' => '',
'remove_approval_log' => '',
'remove_from_clipboard' => '',
'remove_marked_files' => 'Odstranit označené soubory',
'remove_review_log' => '',
'remove_task' => '',
@ -1755,6 +1759,8 @@ Jméno: [username]
'settings_enableLargeFileUpload_desc' => 'Je-li nastaveno, nahrávání souborů je také k dispozici prostřednictvím java appletu s názvem jumploader bez omezení velikosti souboru nastaveného prohlížečem. Umožňuje také nahrát několik souborů v jednom kroku.',
'settings_enableLoginByEmail' => '',
'settings_enableLoginByEmail_desc' => '',
'settings_enableMemcached' => '',
'settings_enableMemcached_desc' => '',
'settings_enableMenuTasks' => 'Povolit seznam úkolů v nabídce',
'settings_enableMenuTasks_desc' => 'Aktivovat / Zakázat položku nabídky, která obsahuje všechny úkoly pro uživatele. Obsahuje dokumenty, které musí být přezkoumány, schváleny atd.',
'settings_enableMenuTransmittals' => '',
@ -2073,6 +2079,7 @@ Jméno: [username]
'sign_out' => 'Odhlásit',
'sign_out_user' => 'Odhlášení uživatele',
'site_brand' => '',
'skip_default_export_cols' => '',
'sk_SK' => 'Slovenština',
'sort_by_date' => '',
'sort_by_expiration_date' => '',
@ -2202,6 +2209,7 @@ Jméno: [username]
'status_revision_sleeping' => 'Probíhá',
'status_revisor_removed' => 'Kontrolor odstraněn ze seznamu',
'status_unknown' => 'Neznámý',
'storage' => '',
'storage_size' => 'Velikost úložiště',
'subfolder_duplicate_name' => '',
'submit_2_fact_auth' => 'Poslán tajný kód',

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 (3433), dgrutsch (22)
// Translators: Admin (3444), dgrutsch (22)
$text = array(
'2_factor_auth' => '2-Faktor Authentifizierung',
@ -409,7 +409,7 @@ URL: [url]</p>',
'current_version' => 'Aktuelle Version',
'daily' => 'täglich',
'dashboard' => 'Übersicht',
'databasesearch' => 'Datenbanksuche',
'databasesearch' => 'Datenbank',
'database_schema_version' => 'Version des Datenbankschemas',
'data_loading' => 'Bitte warten, bis die Daten geladen sind …',
'date' => 'Datum',
@ -850,6 +850,8 @@ URL: [url]</p>',
'export_user_list_csv' => 'Exportiere Benutzer als CSV-Datei',
'extension_archive' => 'Erweiterung',
'extension_changelog' => 'Versionshistorie',
'extension_config' => 'Einstellungen',
'extension_info' => 'Erweiterungen',
'extension_is_off_now' => 'Erweiterung ist ausgeschaltet',
'extension_is_on_now' => 'Erweiterung ist eingeschaltet',
'extension_loading' => 'Lade Erweiterungen ...',
@ -865,7 +867,7 @@ URL: [url]</p>',
'extension_readme' => 'Readme',
'extension_toggle_error' => 'Konnte Erweiterung nicht aus/einschalten',
'extension_version_list' => 'Versionen',
'facetfullsearch' => 'Volltextsuche (Facetten)',
'facetfullsearch' => 'Volltext (Facetten)',
'february' => 'Februar',
'file' => 'Datei',
'files' => 'Dateien',
@ -1046,7 +1048,7 @@ URL: [url]</p>',
'friday_abbr' => 'Fr',
'from' => 'von',
'fr_FR' => 'Französisch',
'fullsearch' => 'Volltextsuche',
'fullsearch' => 'Volltext',
'fullsearch_hint' => 'Volltext-Index benutzen',
'fulltextsearch_disabled' => 'Volltext-Index ist ausgeschaltet',
'fulltext_converters' => 'Index Dokumentenumwandlung',
@ -1404,6 +1406,7 @@ URL: [url]</p>',
'no_groups' => 'keine Gruppen',
'no_group_members' => 'Diese Gruppe hat keine Mitglieder',
'no_linked_files' => 'Keine verknüpften Dokumente',
'no_mimetype' => 'Kein Mime-Type',
'no_previous_versions' => 'Keine anderen Versionen gefunden',
'no_receipt_needed' => 'Es gibt zur Zeit keine Dokumente, die eine Empfangsbestätigung erfordern.',
'no_review_needed' => 'Keine offenen Prüfungen.',
@ -1622,6 +1625,7 @@ URL: [url]</p>',
'removeFolderFromDropFolder' => 'Ordner nach Import entfernen',
'removeFolderFromDropFolder_desc' => 'Schalten Sie dies ein, um den importierten Ordner im Ablageordner auf der Festplatte zu löschen.',
'remove_approval_log' => 'Einzelne Freigabe entfernen',
'remove_from_clipboard' => 'Aus Zwischenablage entfernen',
'remove_marked_files' => 'Markierte Dateien löschen',
'remove_review_log' => 'Einzelne Prüfung entfernen',
'remove_task' => 'Task entfernen',
@ -2146,6 +2150,8 @@ Sollten Sie kein Passwort bekommen haben, dann nutzen Sie bitte die Passwort-Ver
'settings_enableLargeFileUpload_desc' => 'Wenn dies gesetzt ist, dann ist ebenfalls der Upload von Dokumenten durch ein java applet mit Namen \'jumploader\' ohne Begrenzung der maximalen Dateigröße möglich. Auch das Hochladen mehrerer Dokumente in einem Schritt wird dadurch ermöglicht. Das Einschalten bewirkt, dass keine http only Cookies mehr gesetzt werden.',
'settings_enableLoginByEmail' => 'Anmeldung mit E-Mail erlauben',
'settings_enableLoginByEmail_desc' => 'Wenn eingeschaltet, dann ist auch die Anmeldung mit der E-Mail-Adresse möglich. Die Anmeldung mit dem Benutzername bleibt weiterhin möglich. Diese Einstellung wird möglicherweise nicht von allen Authentifizierungsmethoden berücksichtigt. Da die E-Mail nicht eindeutig ist, kann die Identifikation fehlschagen, auch wenn das Password aus Sicht des anmeldenen Benutzers korrekt ist.',
'settings_enableMemcached' => 'Memcached verwenden',
'settings_enableMemcached_desc' => 'Verwendet intern memcached, um einige Datenbankoperationen zu beschleunigen und sollte nicht im Produktionsbetrieb eingeschaltet werden.',
'settings_enableMenuTasks' => 'Aufgabenliste im Menü',
'settings_enableMenuTasks_desc' => 'Ein-/Ausschalten des Menüeintrags, der anstehenden Aufgaben des Benutzers enthält. Diese Liste beinhaltet Dokumente die geprüft, freigegeben, usw. werden müssen.',
'settings_enableMenuTransmittals' => 'Dokumentenlisten im Menü',
@ -2464,6 +2470,7 @@ Sollten Sie kein Passwort bekommen haben, dann nutzen Sie bitte die Passwort-Ver
'sign_out' => 'Abmelden',
'sign_out_user' => 'Benutzer abmelden',
'site_brand' => '',
'skip_default_export_cols' => 'Keine voreingestellten Spalten',
'sk_SK' => 'Slovakisch',
'sort_by_date' => 'Nach Datum sortieren',
'sort_by_expiration_date' => 'Nach Ablaufdatum sortieren',
@ -2593,6 +2600,7 @@ Sollten Sie kein Passwort bekommen haben, dann nutzen Sie bitte die Passwort-Ver
'status_revision_sleeping' => 'wartend',
'status_revisor_removed' => 'Wiederholungsprüfer von Liste entfernt',
'status_unknown' => 'unbekannt',
'storage' => 'Speicherung',
'storage_size' => 'Speicherverbrauch',
'subfolder_duplicate_name' => 'Doppelter Unterordnername',
'submit_2_fact_auth' => 'Schlüssel speichern',

View File

@ -620,6 +620,8 @@ $text = array(
'export_user_list_csv' => '',
'extension_archive' => '',
'extension_changelog' => '',
'extension_config' => '',
'extension_info' => '',
'extension_is_off_now' => '',
'extension_is_on_now' => '',
'extension_loading' => '',
@ -1029,6 +1031,7 @@ URL: [url]',
'no_groups' => '',
'no_group_members' => '',
'no_linked_files' => 'δεν υπάρχουν συνδεδεμένα αρχεία',
'no_mimetype' => '',
'no_previous_versions' => '',
'no_receipt_needed' => '',
'no_review_needed' => '',
@ -1167,6 +1170,7 @@ URL: [url]',
'removeFolderFromDropFolder' => '',
'removeFolderFromDropFolder_desc' => '',
'remove_approval_log' => '',
'remove_from_clipboard' => '',
'remove_marked_files' => '',
'remove_review_log' => '',
'remove_task' => '',
@ -1536,6 +1540,8 @@ URL: [url]',
'settings_enableLargeFileUpload_desc' => '',
'settings_enableLoginByEmail' => '',
'settings_enableLoginByEmail_desc' => '',
'settings_enableMemcached' => '',
'settings_enableMemcached_desc' => '',
'settings_enableMenuTasks' => '',
'settings_enableMenuTasks_desc' => '',
'settings_enableMenuTransmittals' => '',
@ -1854,6 +1860,7 @@ URL: [url]',
'sign_out' => 'Αποσύνδεση',
'sign_out_user' => 'Αποσύνδεση χρήστη',
'site_brand' => '',
'skip_default_export_cols' => '',
'sk_SK' => 'Σλοβάκικα',
'sort_by_date' => '',
'sort_by_expiration_date' => '',
@ -1983,6 +1990,7 @@ URL: [url]',
'status_revision_sleeping' => '',
'status_revisor_removed' => '',
'status_unknown' => '',
'storage' => '',
'storage_size' => '',
'subfolder_duplicate_name' => '',
'submit_2_fact_auth' => '',

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 (2531), archonwang (3), dgrutsch (9), netixw (14)
// Translators: Admin (2547), archonwang (3), dgrutsch (9), netixw (14)
$text = array(
'2_factor_auth' => '2-factor authentication',
@ -409,7 +409,7 @@ URL: [url]</p>',
'current_version' => 'Current version',
'daily' => 'Daily',
'dashboard' => 'Dashboard',
'databasesearch' => 'Database search',
'databasesearch' => 'Database',
'database_schema_version' => 'Version of database schema',
'data_loading' => 'Please wait, until the data is loaded …',
'date' => 'Date',
@ -467,7 +467,7 @@ URL: [url]</p>',
'documents_user_no_reception' => 'Documents without reception',
'documents_user_obsolete' => 'Obsolete documents',
'documents_user_reception' => 'Documents awaiting reception',
'documents_user_rejected' => 'Rejected documents',
'documents_user_rejected' => 'Documents rejected',
'documents_user_requiring_attention' => 'Documents owned by you that require attention',
'documents_with_notification' => 'Documents with notification',
'document_access_permission_changed_email' => 'Permission changed',
@ -850,6 +850,8 @@ URL: [url]</p>',
'export_user_list_csv' => 'Export users as CSV',
'extension_archive' => 'Extension',
'extension_changelog' => 'Changelog',
'extension_config' => 'Settings',
'extension_info' => 'Extensions',
'extension_is_off_now' => 'Extension off now',
'extension_is_on_now' => 'Extension now enabled',
'extension_loading' => 'Loading extensions ...',
@ -865,7 +867,7 @@ URL: [url]</p>',
'extension_readme' => 'Readme',
'extension_toggle_error' => 'Could not toggle extension',
'extension_version_list' => 'Versions',
'facetfullsearch' => 'Full text search (facetts)',
'facetfullsearch' => 'Full text (facetts)',
'february' => 'February',
'file' => 'File',
'files' => 'Files',
@ -875,7 +877,7 @@ URL: [url]</p>',
'files_loading' => 'Please wait, until the list of files is loaded …',
'filetype' => 'File type',
'filter_for_documents' => 'Additional filter for documents',
'filter_for_documents_and_folders' => 'Additional filter for folder and documents',
'filter_for_documents_and_folders' => 'Additional filter for folders and documents',
'filter_for_folders' => 'Additional filter for folders',
'finished_workflow_log' => 'Finished workflows',
'folder' => 'Folder',
@ -1046,7 +1048,7 @@ URL: [url]</p>',
'friday_abbr' => 'Fr',
'from' => 'From',
'fr_FR' => 'French',
'fullsearch' => 'Full text search',
'fullsearch' => 'Full text',
'fullsearch_hint' => 'Use fulltext index',
'fulltextsearch_disabled' => 'Fulltext index is disabled',
'fulltext_converters' => 'Index document conversion',
@ -1198,9 +1200,9 @@ URL: [url]</p>',
'language' => 'Language',
'lastaccess' => 'Last access',
'last_update' => 'Last Update',
'latest_newdocuments' => 'Latest added documents',
'latest_statuschange' => 'Latest status change',
'latest_updateddocuments' => 'Latest updated documents',
'latest_newdocuments' => 'Recently added documents',
'latest_statuschange' => 'Documents with recent status change',
'latest_updateddocuments' => 'Recently updated documents',
'legend' => 'Legend',
'librarydoc' => 'Document from library',
'linked_document' => 'Linked document',
@ -1406,6 +1408,7 @@ URL: [url]</p>',
'no_groups' => 'No groups',
'no_group_members' => 'This group has no members',
'no_linked_files' => 'No linked files',
'no_mimetype' => 'No mimetype',
'no_previous_versions' => 'No other versions found',
'no_receipt_needed' => 'There are currently no documents requiring a receipt confirmation.',
'no_review_needed' => 'No review pending.',
@ -1624,6 +1627,7 @@ URL: [url]</p>',
'removeFolderFromDropFolder' => 'Remove folder after import',
'removeFolderFromDropFolder_desc' => 'Enable this if you want the folder which was imported to be removed from the drop folder.',
'remove_approval_log' => 'Remove approval',
'remove_from_clipboard' => 'Remove from clipboard',
'remove_marked_files' => 'Remove marked files',
'remove_review_log' => 'Remove review',
'remove_task' => 'Remove task',
@ -2148,6 +2152,8 @@ If you did not receive a password, please use the password forgotten function on
'settings_enableLargeFileUpload_desc' => 'If set, file upload is also available through a java applet called jumploader without a file size limit set by the browser. It also allows to upload several files in one step. Turning this on will turn off http only cookies.',
'settings_enableLoginByEmail' => 'Enable login by email',
'settings_enableLoginByEmail_desc' => 'If enabled, the user maya also use the email address for login. This will not disable login with the username. This setting may not be regarded by all authentication methods. Because the email is not unique, authentication may fail, even if the user enters a right password.',
'settings_enableMemcached' => 'Use memcached (experimental)',
'settings_enableMemcached_desc' => 'Use memcached for accelerating some database operations. This should not be be turned on in production.',
'settings_enableMenuTasks' => 'Enable task list in menu',
'settings_enableMenuTasks_desc' => 'Enable/Disable the menu item which contains all tasks for the user. This contains documents, that need to be reviewed, approved, etc.',
'settings_enableMenuTransmittals' => 'Enable transmittals in menu',
@ -2466,6 +2472,7 @@ If you did not receive a password, please use the password forgotten function on
'sign_out' => 'Sign out',
'sign_out_user' => 'Sign out user',
'site_brand' => '',
'skip_default_export_cols' => 'Skip default columns',
'sk_SK' => 'Slovak',
'sort_by_date' => 'Sort by date',
'sort_by_expiration_date' => 'Sort by date of expiration',
@ -2595,6 +2602,7 @@ If you did not receive a password, please use the password forgotten function on
'status_revision_sleeping' => 'pending',
'status_revisor_removed' => 'Revisor removed from list',
'status_unknown' => 'Unknown',
'storage' => 'Storage',
'storage_size' => 'Storage size',
'subfolder_duplicate_name' => 'Duplicate subfolder name',
'submit_2_fact_auth' => 'Save secret',

View File

@ -699,6 +699,8 @@ URL: [url]',
'export_user_list_csv' => '',
'extension_archive' => '',
'extension_changelog' => 'Log de Cambios',
'extension_config' => '',
'extension_info' => '',
'extension_is_off_now' => '',
'extension_is_on_now' => '',
'extension_loading' => 'Cargando extensiones',
@ -1155,6 +1157,7 @@ URL: [url]',
'no_groups' => 'No hay grupos',
'no_group_members' => 'Este grupo no tiene miembros',
'no_linked_files' => 'No hay ficheros vinculados',
'no_mimetype' => '',
'no_previous_versions' => 'No se han encontrado otras versiones',
'no_receipt_needed' => '',
'no_review_needed' => 'No hay revisiones pendientes.',
@ -1310,6 +1313,7 @@ nURL: [url]',
'removeFolderFromDropFolder' => 'Eliminar carpeta después de importar',
'removeFolderFromDropFolder_desc' => '',
'remove_approval_log' => '',
'remove_from_clipboard' => '',
'remove_marked_files' => 'Eliminar ficheros marcados',
'remove_review_log' => '',
'remove_task' => '',
@ -1706,6 +1710,8 @@ URL: [url]',
'settings_enableLargeFileUpload_desc' => 'Si se habilita, la carga de ficheros también estará disponible a través de un applet java llamado jumploader, sin límite de tamaño de fichero fijado por el navegador. También permite la carga de múltiples ficheros de una sola vez.',
'settings_enableLoginByEmail' => '',
'settings_enableLoginByEmail_desc' => '',
'settings_enableMemcached' => '',
'settings_enableMemcached_desc' => '',
'settings_enableMenuTasks' => 'Activar en el menú la lista de tareas',
'settings_enableMenuTasks_desc' => 'Habilita/Deshabillita la parte del menú que contiene todas las tareas para el usuario. Contiene documentos que necesitan ser revisados, aprobados, etc.',
'settings_enableMenuTransmittals' => '',
@ -2024,6 +2030,7 @@ URL: [url]',
'sign_out' => 'Salir',
'sign_out_user' => 'Desconectar usuario',
'site_brand' => '',
'skip_default_export_cols' => '',
'sk_SK' => 'Slovaco',
'sort_by_date' => 'Ordenar por Fecha',
'sort_by_expiration_date' => 'Ordenar por fecha de vencimiento',
@ -2153,6 +2160,7 @@ URL: [url]',
'status_revision_sleeping' => 'pendiente',
'status_revisor_removed' => '',
'status_unknown' => 'Desconocido',
'storage' => '',
'storage_size' => 'Tamaño de almacenamiento',
'subfolder_duplicate_name' => '',
'submit_2_fact_auth' => '',

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 (1173), jeromerobert (50), lonnnew (9), Oudiceval (1171)
// Translators: Admin (1175), jeromerobert (50), lonnnew (9), Oudiceval (1171)
$text = array(
'2_factor_auth' => 'Authentification forte',
@ -820,6 +820,8 @@ URL : [url]</p>',
'export_user_list_csv' => 'Exporter les utilisateurs en CSV',
'extension_archive' => 'Extension',
'extension_changelog' => 'Journal des modifications',
'extension_config' => '',
'extension_info' => '',
'extension_is_off_now' => 'Lextension est désactivée',
'extension_is_on_now' => 'Lextension est activée',
'extension_loading' => 'Chargement des extensions…',
@ -1361,6 +1363,7 @@ URL : [url]</p>',
'no_groups' => 'Aucun groupe',
'no_group_members' => 'Ce groupe ne contient aucun membre',
'no_linked_files' => 'Aucun fichier lié',
'no_mimetype' => '',
'no_previous_versions' => 'Aucune autre version trouvée',
'no_receipt_needed' => 'Il ny a actuellement aucun document nécessitant une confirmation de réception.',
'no_review_needed' => 'Aucune vérification en attente',
@ -1577,6 +1580,7 @@ URL : [url]</p>',
'removeFolderFromDropFolder' => 'Suppression du dossier après importation',
'removeFolderFromDropFolder_desc' => '',
'remove_approval_log' => 'Approbation retirée',
'remove_from_clipboard' => '',
'remove_marked_files' => 'Supprimer les fichiers sélectionnés',
'remove_review_log' => 'Vérification retirée',
'remove_task' => '',
@ -2093,6 +2097,8 @@ Nom : [username]
'settings_enableLargeFileUpload_desc' => 'Si défini, le téléchargement de fichier est également disponible via un applet java appelé jumploader sans limite de taille définie par le navigateur. Il permet également de télécharger plusieurs fichiers en une seule fois.',
'settings_enableLoginByEmail' => '',
'settings_enableLoginByEmail_desc' => '',
'settings_enableMemcached' => '',
'settings_enableMemcached_desc' => '',
'settings_enableMenuTasks' => 'Activer le menu des tâches',
'settings_enableMenuTasks_desc' => 'Affiche un menu avec la liste des tâches. Cette liste contient les documents en attente dune action par lutilisateur.',
'settings_enableMenuTransmittals' => '',
@ -2411,6 +2417,7 @@ Nom : [username]
'sign_out' => 'Déconnexion',
'sign_out_user' => 'Déconnecter l\'utilisateur',
'site_brand' => '',
'skip_default_export_cols' => '',
'sk_SK' => 'Slovaque',
'sort_by_date' => 'Trier par date',
'sort_by_expiration_date' => 'Trier par date dexpiration',
@ -2540,6 +2547,7 @@ Nom : [username]
'status_revision_sleeping' => 'en attente',
'status_revisor_removed' => 'Réviseur retiré de la liste',
'status_unknown' => 'Inconnu',
'storage' => '',
'storage_size' => 'Taille occupée',
'subfolder_duplicate_name' => 'Un sous-dossier porte déjà ce nom !',
'submit_2_fact_auth' => 'Enregistrer la clé secrète',
@ -2684,7 +2692,7 @@ URL : [url]</p>',
'type_to_filter' => 'Filtrer dans la liste',
'type_to_search' => 'Effectuer une recherche',
'uk_UA' => 'Ukrénien',
'undefined' => '',
'undefined' => 'indéfini',
'under_folder' => 'Dans le dossier',
'unknown_attrdef' => 'Définition dattribut inconnue',
'unknown_command' => 'Commande non reconnue.',
@ -2703,7 +2711,7 @@ URL : [url]</p>',
'unlock_cause_locking_user' => 'Vous pouvez encore le mettre à jour, car vous êtes le seul à l\'avoir verrouillé. Le verrouillage sera automatiquement annulé.',
'unlock_document' => 'Déverrouiller',
'update' => 'Mettre à jour',
'updated' => '',
'updated' => 'mis à jour',
'updated_documents' => '',
'update_approvers' => 'Mettre à jour la liste des approbateurs',
'update_document' => 'Mettre à jour',

File diff suppressed because it is too large Load Diff

View File

@ -693,6 +693,8 @@ URL: [url]',
'export_user_list_csv' => '',
'extension_archive' => 'Bővítmények',
'extension_changelog' => 'Változásnapló',
'extension_config' => '',
'extension_info' => '',
'extension_is_off_now' => '',
'extension_is_on_now' => '',
'extension_loading' => 'Kiterjesztések betöltése ...',
@ -1146,6 +1148,7 @@ URL: [url]',
'no_groups' => 'Nincsenek csoportok',
'no_group_members' => 'Ennek a csoportnak nincsenek tagjai',
'no_linked_files' => 'Nincsenek hivatkozott állományok',
'no_mimetype' => '',
'no_previous_versions' => 'Nem találhatók más változatok',
'no_receipt_needed' => '',
'no_review_needed' => 'Nincs folyamatban lévő felülvizsgálat.',
@ -1301,6 +1304,7 @@ URL: [url]',
'removeFolderFromDropFolder' => '',
'removeFolderFromDropFolder_desc' => '',
'remove_approval_log' => '',
'remove_from_clipboard' => '',
'remove_marked_files' => 'Megjelölt állományok eltávolítása',
'remove_review_log' => '',
'remove_task' => '',
@ -1696,6 +1700,8 @@ URL: [url]',
'settings_enableLargeFileUpload_desc' => 'Ha beállítja az állományok feltöltése elérhető lesz egy jumploadernek hívott java appleten keresztül a böngészőprogram állomány méret korlátja nélkül. Ez engedélyezi több állomány feltöltését egy lépésben.',
'settings_enableLoginByEmail' => '',
'settings_enableLoginByEmail_desc' => '',
'settings_enableMemcached' => '',
'settings_enableMemcached_desc' => '',
'settings_enableMenuTasks' => 'Feladatok menüpont engedélyezése',
'settings_enableMenuTasks_desc' => 'Engedélyezi / letiltja a menüelemet, amely a felhasználó összes feladatát tartalmazza. Ez olyan dokumentumokat tartalmaz, amelyeket felül kell vizsgálni, jóvá kell hagyni stb.',
'settings_enableMenuTransmittals' => '',
@ -2014,6 +2020,7 @@ URL: [url]',
'sign_out' => 'Kijelentkezés',
'sign_out_user' => 'Kijelentkezés',
'site_brand' => '',
'skip_default_export_cols' => '',
'sk_SK' => 'Szlovák',
'sort_by_date' => '',
'sort_by_expiration_date' => '',
@ -2143,6 +2150,7 @@ URL: [url]',
'status_revision_sleeping' => '',
'status_revisor_removed' => '',
'status_unknown' => 'Ismeretlen',
'storage' => '',
'storage_size' => 'Tároló mérete',
'subfolder_duplicate_name' => '',
'submit_2_fact_auth' => '',

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 (485), atoz-chevara (835)
// Translators: Admin (489), atoz-chevara (835)
$text = array(
'2_factor_auth' => '',
@ -382,7 +382,7 @@ URL: [url]</p>',
'dashboard' => '',
'databasesearch' => 'Pencarian Basis data',
'database_schema_version' => 'Versi skema basis data',
'data_loading' => '',
'data_loading' => 'Harap tunggu, data sedang disiapkan.',
'date' => 'Tanggal',
'days' => 'hari',
'debug' => 'Debug',
@ -689,7 +689,7 @@ URL: [url]</p>',
'empty_notify_list' => 'Tidak ada entri',
'enable_extension' => 'Aktifkan ekstensi',
'enddate' => '',
'en_GB' => '',
'en_GB' => 'Inggris (GB)',
'equal_transition_states' => 'Status awal dan akhir sama',
'error' => 'Galat',
'error_add_aro' => 'Kesalahan saat menambahkan objek permintaan akses',
@ -749,6 +749,8 @@ URL: [url]',
'export_user_list_csv' => 'Ekspor pengguna sebagai CSV',
'extension_archive' => 'Ekstensi',
'extension_changelog' => '',
'extension_config' => '',
'extension_info' => '',
'extension_is_off_now' => 'Perpanjangan tidak aktif sekarang',
'extension_is_on_now' => '',
'extension_loading' => 'Memuat ekstensi...',
@ -965,7 +967,7 @@ URL: [url]</p>',
'index_processing' => '',
'index_waiting' => 'Mengunggu',
'individuals' => 'Perorangan',
'individuals_in_groups' => '',
'individuals_in_groups' => 'Anggota di grup',
'ind_review_removed' => 'Perubahan status, karena ulasan pengguna [name] telah dihapus.',
'info_recipients_tab_not_released' => '',
'info_rm_user_from_processes_none' => '',
@ -1239,6 +1241,7 @@ URL: [url]',
'no_groups' => 'Tidak ada kelompok',
'no_group_members' => 'Kelompok ini tidak memiliki anggota',
'no_linked_files' => 'Tidak ada berkas yang ditautkan',
'no_mimetype' => '',
'no_previous_versions' => 'Tidak ada versi lain yang ditemukan',
'no_receipt_needed' => 'Saat ini tidak ada dokumen yang memerlukan konfirmasi tanda terima.',
'no_review_needed' => 'Tidak ada tinjauan yang tertunda.',
@ -1410,6 +1413,7 @@ URL: [url]',
'removeFolderFromDropFolder' => 'Hapus folder setelah diimpor',
'removeFolderFromDropFolder_desc' => '',
'remove_approval_log' => 'Hapus persetujuan',
'remove_from_clipboard' => '',
'remove_marked_files' => 'Hapus file yang ditandai',
'remove_review_log' => 'Hapus ulasan',
'remove_task' => '',
@ -1786,6 +1790,8 @@ Jika Anda tidak menerima kata sandi, silakan gunakan fitur lupa kata sandi di ha
'settings_enableLargeFileUpload_desc' => 'Jika disetel, unggah berkas juga tersedia melalui java applet yang disebut jumploader tanpa batas ukuran berkas yang ditetapkan oleh peramban. Ini juga memungkinkan untuk mengunggah beberapa berkas dalam satu langkah. Mengaktifkan ini akan mematikan cookie http saja.',
'settings_enableLoginByEmail' => '',
'settings_enableLoginByEmail_desc' => '',
'settings_enableMemcached' => '',
'settings_enableMemcached_desc' => '',
'settings_enableMenuTasks' => 'Aktifkan daftar task di menu',
'settings_enableMenuTasks_desc' => '',
'settings_enableMenuTransmittals' => '',
@ -2104,6 +2110,7 @@ Jika Anda tidak menerima kata sandi, silakan gunakan fitur lupa kata sandi di ha
'sign_out' => 'Keluar',
'sign_out_user' => '',
'site_brand' => '',
'skip_default_export_cols' => '',
'sk_SK' => 'Slovakia',
'sort_by_date' => 'Urutkan berdasarkan tanggal',
'sort_by_expiration_date' => 'Urutkan berdasarkan tanggal kadaluwarsa',
@ -2233,6 +2240,7 @@ Jika Anda tidak menerima kata sandi, silakan gunakan fitur lupa kata sandi di ha
'status_revision_sleeping' => 'tertunda',
'status_revisor_removed' => '',
'status_unknown' => 'Tidak diketahui',
'storage' => '',
'storage_size' => 'Ukuran penyimpanan',
'subfolder_duplicate_name' => 'Duplikasi nama subfolder',
'submit_2_fact_auth' => '',

View File

@ -703,6 +703,8 @@ URL: [url]',
'export_user_list_csv' => '',
'extension_archive' => 'Archivio estensioni',
'extension_changelog' => 'Registro delle modifiche delle estensioni',
'extension_config' => '',
'extension_info' => '',
'extension_is_off_now' => '',
'extension_is_on_now' => '',
'extension_loading' => 'Caricamento estensioni...',
@ -1153,6 +1155,7 @@ URL: [url]',
'no_groups' => 'Nessun gruppo',
'no_group_members' => 'Questo gruppo non ha membri',
'no_linked_files' => 'Nessun file collegato',
'no_mimetype' => '',
'no_previous_versions' => 'Nessun\'altra versione trovata',
'no_receipt_needed' => 'Rete disco',
'no_review_needed' => 'Nessuna revisione in corso.',
@ -1319,6 +1322,7 @@ URL: [url]',
'removeFolderFromDropFolder' => 'Rimuovi la cartella di pubblicazione dopo l\'importazione',
'removeFolderFromDropFolder_desc' => '',
'remove_approval_log' => '',
'remove_from_clipboard' => '',
'remove_marked_files' => 'Rimuovi i files contrassegnati',
'remove_review_log' => '',
'remove_task' => '',
@ -1742,6 +1746,8 @@ Name: [username]
'settings_enableLargeFileUpload_desc' => 'Se selezionato, il caricamento (upload) dei files può essere effettuato anche attraverso un\'applet Java chiamata Jumploader evitando il limite di dimensioni file imposto dal browser; Jumploader permette anche il caricamento di diversi files contemporaneamente.',
'settings_enableLoginByEmail' => '',
'settings_enableLoginByEmail_desc' => '',
'settings_enableMemcached' => '',
'settings_enableMemcached_desc' => '',
'settings_enableMenuTasks' => 'Abilita compito delle attività nel menù',
'settings_enableMenuTasks_desc' => 'Abilita/disabilita la voce di menu che contiene tutte le attività degli utenti. Questo conterrà i documenti che devono essere rivisti, approvati, etc.',
'settings_enableMenuTransmittals' => '',
@ -2060,6 +2066,7 @@ Name: [username]
'sign_out' => 'Disconnettiti',
'sign_out_user' => 'Disconnetti l\'utente',
'site_brand' => '',
'skip_default_export_cols' => '',
'sk_SK' => 'Slovacco',
'sort_by_date' => 'Ordina per data',
'sort_by_expiration_date' => '',
@ -2189,6 +2196,7 @@ Name: [username]
'status_revision_sleeping' => 'in attesa',
'status_revisor_removed' => 'Revisore rimosso dalla lista',
'status_unknown' => 'Sconosciuto',
'storage' => '',
'storage_size' => 'Spazio di archiviazione',
'subfolder_duplicate_name' => 'Nome sottocartella duplicato',
'submit_2_fact_auth' => 'Salva segreto',

View File

@ -699,6 +699,8 @@ URL: [url]',
'export_user_list_csv' => '',
'extension_archive' => '',
'extension_changelog' => '',
'extension_config' => '',
'extension_info' => '',
'extension_is_off_now' => '',
'extension_is_on_now' => '',
'extension_loading' => '',
@ -1153,6 +1155,7 @@ URL [url]',
'no_groups' => '그룹이 없음',
'no_group_members' => '그룹 회원 이 없습니다.',
'no_linked_files' => '연결되지 않은 파일',
'no_mimetype' => '',
'no_previous_versions' => '다른 버전을 찾을 수 없습니다',
'no_receipt_needed' => '접수가 필요하지 않습니다',
'no_review_needed' => '검토중인 자료가 없습니다.',
@ -1300,6 +1303,7 @@ URL: [url]',
'removeFolderFromDropFolder' => '',
'removeFolderFromDropFolder_desc' => '',
'remove_approval_log' => '',
'remove_from_clipboard' => '',
'remove_marked_files' => '마크 파일을 제거',
'remove_review_log' => '',
'remove_task' => '',
@ -1713,6 +1717,8 @@ URL : [url]',
'settings_enableLargeFileUpload_desc' => '설정하면, 브라우저가 설정 한 파일 크기 제한없이 jumploader라는 파일 업로드 자바 애플릿을 통해 사용할 수 있습니다. 또한 한 번에 여러 파일을 업로드 할 수 있습니다.',
'settings_enableLoginByEmail' => '',
'settings_enableLoginByEmail_desc' => '',
'settings_enableMemcached' => '',
'settings_enableMemcached_desc' => '',
'settings_enableMenuTasks' => '메뉴의 작업 목록 허용',
'settings_enableMenuTasks_desc' => '사용자의 모든 작업이 포함되어있는 메뉴 항목을 활성/비활성 합니다. 이것은 검토, 승인등이 필요한 문서를 포함 합니다',
'settings_enableMenuTransmittals' => '',
@ -2031,6 +2037,7 @@ URL : [url]',
'sign_out' => '로그 아웃',
'sign_out_user' => '사용자가 로그 아웃',
'site_brand' => '',
'skip_default_export_cols' => '',
'sk_SK' => '슬로바키아어',
'sort_by_date' => '',
'sort_by_expiration_date' => '',
@ -2160,6 +2167,7 @@ URL : [url]',
'status_revision_sleeping' => '보류',
'status_revisor_removed' => '감사자 목록에서 제거',
'status_unknown' => '알 수없는',
'storage' => '',
'storage_size' => '저장 크기',
'subfolder_duplicate_name' => '',
'submit_2_fact_auth' => '',

View File

@ -696,6 +696,8 @@ URL: [url]',
'export_user_list_csv' => '',
'extension_archive' => '',
'extension_changelog' => '',
'extension_config' => '',
'extension_info' => '',
'extension_is_off_now' => '',
'extension_is_on_now' => '',
'extension_loading' => '',
@ -1150,6 +1152,7 @@ URL: [url]',
'no_groups' => 'ບໍ່ມີກຸ່ມ',
'no_group_members' => 'ກຸ່ມນີ້ຍັງບໍ່ມີສະມາຊິກ',
'no_linked_files' => 'ບໍ່ມີໄຟລທີ່ເຊື່ອມໂຍງ',
'no_mimetype' => '',
'no_previous_versions' => 'ບໍ່ພົບເວີຊັນອື່ນ',
'no_receipt_needed' => 'ປະຈຸບັນນີ້ບໍ່ມີເອກະສານທີ່ຈະຕ້ອງຢືນຢັນກ່ຽວກັບການຮັບສິນຄ້າ',
'no_review_needed' => 'ບໍ່ມີເອກະສານທີຍັງຄ້າງທີລໍຖ້າກວດຄືນ',
@ -1316,6 +1319,7 @@ URL: [url]',
'removeFolderFromDropFolder' => 'ຍ້າຍໂຟລເດີຫຼັງຈາກນຳຂໍ້ມູນເຂົ້າ',
'removeFolderFromDropFolder_desc' => '',
'remove_approval_log' => '',
'remove_from_clipboard' => '',
'remove_marked_files' => 'ລົບໄຟລທີມີເຄື່ອງໝາຍໄວ້',
'remove_review_log' => '',
'remove_task' => '',
@ -1739,6 +1743,8 @@ URL: [url]',
'settings_enableLargeFileUpload_desc' => 'ການຕັ້ງຄ່າອັບໂຫລດໄຟລຈະມີໃຫ້ບໍລິການຜ່ານທາງດ້ານຂວາຂອງເອັບເຟັກທີ່ເອີ້ນວ່າ jumploader ໂດຍບໍ່ມີຂິດຈຳກັດຂອງຂະໜາດໄຟລທີກຳນົດໂດຍບາວເຊີ ນອກຈາກນີຍັງຊ່ວຍໃນການອັບໂຫລດໄຟລຫຼາຍໄຟລໃນຂັນຕອນດຽວການເປີດຄຸນລັກສະນະນີ້ຈະປິດຄຸກກີ້ສະເພາະ Http ເທົ່ານັ້ນ',
'settings_enableLoginByEmail' => '',
'settings_enableLoginByEmail_desc' => '',
'settings_enableMemcached' => '',
'settings_enableMemcached_desc' => '',
'settings_enableMenuTasks' => 'ເປີດການໄຊ້ງານ',
'settings_enableMenuTasks_desc' => 'ເປີດ/ປິດ ລາຍການເມນູທີ່ມີວຽກທັງໝົດສຳລັບຜູ້ໄຊ້ເອກະສານນີ້ມີເອກະສານທີຈ້ອງໄດ້ຮັບການກວດສອບ',
'settings_enableMenuTransmittals' => '',
@ -2057,6 +2063,7 @@ URL: [url]',
'sign_out' => 'ອອກຈາກລະບົບ',
'sign_out_user' => 'ອອກຈາກລະບົບຜູ້ໄຊ້',
'site_brand' => '',
'skip_default_export_cols' => '',
'sk_SK' => 'ສະໂລວາເກຍ',
'sort_by_date' => '',
'sort_by_expiration_date' => '',
@ -2186,6 +2193,7 @@ URL: [url]',
'status_revision_sleeping' => 'ຢູ່ລະຫວ່າງດຳເນີນການ',
'status_revisor_removed' => 'ແກ້ໄຂຄຳອະທິບາຍອອກຈາກລາຍການ',
'status_unknown' => 'ບໍ່ຮູ້',
'storage' => '',
'storage_size' => 'ຂະໜາດພື້ນທີ່ເກັບຂໍ້ມູນ',
'subfolder_duplicate_name' => '',
'submit_2_fact_auth' => 'ເກັບຄວາມລັບໄວ້',

View File

@ -710,6 +710,8 @@ URL: [url]',
'export_user_list_csv' => '',
'extension_archive' => 'Utvidelse',
'extension_changelog' => 'Endringslogg',
'extension_config' => '',
'extension_info' => '',
'extension_is_off_now' => '',
'extension_is_on_now' => '',
'extension_loading' => 'Laster inn utvidelser ...',
@ -1171,6 +1173,7 @@ URL: [url]',
'no_groups' => 'Ingen grupper',
'no_group_members' => 'Denne gruppen har ingen medlemmer',
'no_linked_files' => 'Ingen koblede filer',
'no_mimetype' => '',
'no_previous_versions' => 'Ingen andre versjoner funnet',
'no_receipt_needed' => 'Det er for øyeblikket ingen dokumenter som krever kvitteringsbekreftelse.',
'no_review_needed' => 'Ingen gjennomgang i påvente.',
@ -1331,6 +1334,7 @@ URL: [url]',
'removeFolderFromDropFolder' => 'Fjern mappe etter import',
'removeFolderFromDropFolder_desc' => '',
'remove_approval_log' => '',
'remove_from_clipboard' => '',
'remove_marked_files' => 'Fjern markerte filer',
'remove_review_log' => '',
'remove_task' => '',
@ -1752,6 +1756,8 @@ Bruker: [username]
'settings_enableLargeFileUpload_desc' => 'Hvis det er satt, er filopplasting også tilgjengelig via en java-applet som heter jumploader uten en filstørrelsesgrense som er angitt av nettleseren. Det gjør det også mulig å laste opp flere filer på ett trinn. Hvis du slår på dette, slås bare av cookies.',
'settings_enableLoginByEmail' => '',
'settings_enableLoginByEmail_desc' => '',
'settings_enableMemcached' => '',
'settings_enableMemcached_desc' => '',
'settings_enableMenuTasks' => 'Aktiver oppgaveliste i menyen',
'settings_enableMenuTasks_desc' => 'Aktiver/deaktiver menypunktet som inneholder alle oppgaver for brukeren. Denne inneholder dokumenter som må gjennomgås, godkjennes osv.',
'settings_enableMenuTransmittals' => '',
@ -2070,6 +2076,7 @@ Bruker: [username]
'sign_out' => 'Logg ut',
'sign_out_user' => 'Logg ut bruker',
'site_brand' => 'Nettsted merke/logo',
'skip_default_export_cols' => '',
'sk_SK' => 'Slovakisk',
'sort_by_date' => 'Sorter etter dato',
'sort_by_expiration_date' => '',
@ -2199,6 +2206,7 @@ Bruker: [username]
'status_revision_sleeping' => 'avventer',
'status_revisor_removed' => 'Revisor fjernet fra listen',
'status_unknown' => 'Ukjent',
'storage' => '',
'storage_size' => 'Lagrings størrelse',
'subfolder_duplicate_name' => 'Dupliser navnet på undermappen',
'submit_2_fact_auth' => 'Lagre hemmelighet',

View File

@ -703,6 +703,8 @@ URL: [url]',
'export_user_list_csv' => 'Exporteer gebruikers in csv-formaat',
'extension_archive' => 'Extensies',
'extension_changelog' => 'Overzicht van wijzigingen',
'extension_config' => '',
'extension_info' => '',
'extension_is_off_now' => 'Extensie uitgeschakeld',
'extension_is_on_now' => 'Extensie ingeschakeld',
'extension_loading' => 'Laden van extensies ...',
@ -1163,6 +1165,7 @@ URL: [url]',
'no_groups' => 'Geen groepen',
'no_group_members' => 'Deze groep heeft geen leden',
'no_linked_files' => 'Geen gekoppelde bestanden',
'no_mimetype' => '',
'no_previous_versions' => 'Geen andere versie(s) gevonden',
'no_receipt_needed' => 'Geen ontvangstbericht nodig',
'no_review_needed' => 'Geen review bezig.',
@ -1329,6 +1332,7 @@ URL: [url]',
'removeFolderFromDropFolder' => 'Map verwijderen uit Dropfilder',
'removeFolderFromDropFolder_desc' => '',
'remove_approval_log' => '',
'remove_from_clipboard' => '',
'remove_marked_files' => 'Geselecteerde bestanden worden verwijderd',
'remove_review_log' => '',
'remove_task' => '',
@ -1751,6 +1755,8 @@ Name: [username]
'settings_enableLargeFileUpload_desc' => 'Indien ingeschakeld, is bestandsupload ook beschikbaar via een java applet jumploader genaamd zonder een bestandsgrootte limiet door de browser. Het staat ook toe om meerdere bestanden in een keer te versturen.',
'settings_enableLoginByEmail' => '',
'settings_enableLoginByEmail_desc' => '',
'settings_enableMemcached' => '',
'settings_enableMemcached_desc' => '',
'settings_enableMenuTasks' => 'Menu-taken aanzetten',
'settings_enableMenuTasks_desc' => 'Menu-taken aanzetten',
'settings_enableMenuTransmittals' => '',
@ -2069,6 +2075,7 @@ Name: [username]
'sign_out' => 'Log uit',
'sign_out_user' => 'Log gebruiker uit',
'site_brand' => 'Merk van de site',
'skip_default_export_cols' => '',
'sk_SK' => 'Slowaaks',
'sort_by_date' => 'Sorteren op datum',
'sort_by_expiration_date' => 'Sorteren op vervaldatum',
@ -2198,6 +2205,7 @@ Name: [username]
'status_revision_sleeping' => 'Slapend',
'status_revisor_removed' => 'Verwijderd',
'status_unknown' => 'Onbekend',
'storage' => '',
'storage_size' => 'Omvang opslag',
'subfolder_duplicate_name' => 'Dubble mapnaam',
'submit_2_fact_auth' => '2-factor-authentificatie verstuurd',

View File

@ -686,6 +686,8 @@ URL: [url]',
'export_user_list_csv' => 'Eksportuj użytkowników do pliku CSV',
'extension_archive' => 'Rozszerzenie',
'extension_changelog' => 'Log Zmian',
'extension_config' => '',
'extension_info' => '',
'extension_is_off_now' => '',
'extension_is_on_now' => '',
'extension_loading' => 'Wgrywam dodatki...',
@ -1140,6 +1142,7 @@ URL: [url]',
'no_groups' => 'Brak grup',
'no_group_members' => 'Ta grupa nie ma członków',
'no_linked_files' => 'Brak powiązanych dokumentów',
'no_mimetype' => '',
'no_previous_versions' => 'Nie znaleziono poprzednich wersji',
'no_receipt_needed' => 'Brak dokumentów w trakcie potwierdzenia',
'no_review_needed' => 'Brak dokumentów w trakcie opiniowania',
@ -1295,6 +1298,7 @@ URL: [url]',
'removeFolderFromDropFolder' => 'Usuń folder po imporcie',
'removeFolderFromDropFolder_desc' => '',
'remove_approval_log' => '',
'remove_from_clipboard' => '',
'remove_marked_files' => 'Usuń zaznaczone pliki',
'remove_review_log' => '',
'remove_task' => '',
@ -1682,6 +1686,8 @@ Name: [username]
'settings_enableLargeFileUpload_desc' => 'Jeśli zaznaczone, wczytywanie plików będzie możliwe również przez aplet javy bez limitu rozmiaru plików. Aplet pozwala również na wczytywanie wielu plików jednocześnie.',
'settings_enableLoginByEmail' => '',
'settings_enableLoginByEmail_desc' => '',
'settings_enableMemcached' => '',
'settings_enableMemcached_desc' => '',
'settings_enableMenuTasks' => 'Włącz listę zadań w menu',
'settings_enableMenuTasks_desc' => 'Włącza/Wyłącza pozycję w menu w której znajdują się wszystkie zadania dla użytkownika. Zawiera dokumenty, które potrzebują być ocenione, zatwierdzone, itd.',
'settings_enableMenuTransmittals' => '',
@ -2000,6 +2006,7 @@ Name: [username]
'sign_out' => 'Wyloguj',
'sign_out_user' => 'Wyloguj użytkownika',
'site_brand' => '',
'skip_default_export_cols' => '',
'sk_SK' => 'słowacki',
'sort_by_date' => 'Sortuj według daty',
'sort_by_expiration_date' => 'Sortuj według daty ważności',
@ -2129,6 +2136,7 @@ Name: [username]
'status_revision_sleeping' => 'Oczekujące',
'status_revisor_removed' => 'Revisor usunięty z listy',
'status_unknown' => 'Nieznany',
'storage' => '',
'storage_size' => 'Zajętość dysku',
'subfolder_duplicate_name' => 'Zduplikowana nazwa podfolderu',
'submit_2_fact_auth' => 'Zapisz sekretne hasło',

View File

@ -710,6 +710,8 @@ URL: [url]',
'export_user_list_csv' => '',
'extension_archive' => 'Extensão',
'extension_changelog' => 'Alterações no Log',
'extension_config' => '',
'extension_info' => '',
'extension_is_off_now' => '',
'extension_is_on_now' => '',
'extension_loading' => 'Carregando Extensões',
@ -1170,6 +1172,7 @@ URL: [url]',
'no_groups' => 'Sem grupos',
'no_group_members' => 'Este grupo não tem membros',
'no_linked_files' => 'Não há arquivos vinculados',
'no_mimetype' => '',
'no_previous_versions' => 'Nenhuma outra versão encontrada',
'no_receipt_needed' => 'Atualmente, não há documentos que exijam uma confirmação de recebimento.',
'no_review_needed' => 'Nenhuma revisão pendente.',
@ -1336,6 +1339,7 @@ URL: [url]',
'removeFolderFromDropFolder' => 'Remover pasta após a importação',
'removeFolderFromDropFolder_desc' => '',
'remove_approval_log' => '',
'remove_from_clipboard' => '',
'remove_marked_files' => 'Remover arquivos marcados',
'remove_review_log' => '',
'remove_task' => '',
@ -1758,6 +1762,8 @@ Nome: [username]
'settings_enableLargeFileUpload_desc' => 'Se selecionado, o upload de arquivo também estará disponível através de um applet java chamado jumploader sem limite de tamanho de arquivo definido pelo navegador. Ele também permite fazer o upload de vários arquivos de uma só vez.',
'settings_enableLoginByEmail' => '',
'settings_enableLoginByEmail_desc' => '',
'settings_enableMemcached' => '',
'settings_enableMemcached_desc' => '',
'settings_enableMenuTasks' => 'Ativar lista de tarefas no menu',
'settings_enableMenuTasks_desc' => 'Ativar / desativar o item de menu que contém todas as tarefas do usuário. Contém documentos que precisam ser revisados, aprovados etc.',
'settings_enableMenuTransmittals' => '',
@ -2076,6 +2082,7 @@ Nome: [username]
'sign_out' => 'Sair',
'sign_out_user' => 'Sair usuário',
'site_brand' => '',
'skip_default_export_cols' => '',
'sk_SK' => 'Eslovaco',
'sort_by_date' => 'classificar por data',
'sort_by_expiration_date' => '',
@ -2205,6 +2212,7 @@ Nome: [username]
'status_revision_sleeping' => 'Pendente',
'status_revisor_removed' => 'Revisor removido da lista',
'status_unknown' => 'Desconhecido',
'storage' => '',
'storage_size' => 'Tamanho de armazenamento',
'subfolder_duplicate_name' => 'nome duplicado da subpasta',
'submit_2_fact_auth' => 'Salvar senha',

View File

@ -698,6 +698,8 @@ URL: [url]',
'export_user_list_csv' => '',
'extension_archive' => '',
'extension_changelog' => '',
'extension_config' => '',
'extension_info' => '',
'extension_is_off_now' => '',
'extension_is_on_now' => '',
'extension_loading' => 'Se incarca extensiile',
@ -1152,6 +1154,7 @@ URL: [url]',
'no_groups' => 'Nu există grupe',
'no_group_members' => 'Acest grup nu are membri',
'no_linked_files' => 'Nici un fișiere asociate',
'no_mimetype' => '',
'no_previous_versions' => 'Nu sunt alte versiuni gasite',
'no_receipt_needed' => '',
'no_review_needed' => 'Nici o revizuire în așteptare.',
@ -1307,6 +1310,7 @@ URL: [url]',
'removeFolderFromDropFolder' => '',
'removeFolderFromDropFolder_desc' => '',
'remove_approval_log' => '',
'remove_from_clipboard' => '',
'remove_marked_files' => 'Eliminați fișierele marcate',
'remove_review_log' => '',
'remove_task' => '',
@ -1720,6 +1724,8 @@ URL: [url]',
'settings_enableLargeFileUpload_desc' => 'Dacă este setat, incărcarea este de asemenea disponibilă prin intermediul unui applet Java numit jumploader fără limită de dimensiune a fișierului stabilită de browser. De asemenea, permite încărcarea mai multor fișiere într-un singur pas. Activand aceasta optiune va dezactiva optiunea http only cookies.',
'settings_enableLoginByEmail' => '',
'settings_enableLoginByEmail_desc' => '',
'settings_enableMemcached' => '',
'settings_enableMemcached_desc' => '',
'settings_enableMenuTasks' => '',
'settings_enableMenuTasks_desc' => '',
'settings_enableMenuTransmittals' => '',
@ -2038,6 +2044,7 @@ URL: [url]',
'sign_out' => 'Sign out',
'sign_out_user' => 'Sign out utilizator',
'site_brand' => '',
'skip_default_export_cols' => '',
'sk_SK' => 'Slovacă',
'sort_by_date' => 'Sortare dupa data',
'sort_by_expiration_date' => '',
@ -2167,6 +2174,7 @@ URL: [url]',
'status_revision_sleeping' => 'in asteptare',
'status_revisor_removed' => 'Revizuitor eliminat din lista',
'status_unknown' => 'Necunoscut',
'storage' => '',
'storage_size' => 'Dimensiunea de stocare',
'subfolder_duplicate_name' => '',
'submit_2_fact_auth' => '',

View File

@ -698,6 +698,8 @@ URL: [url]',
'export_user_list_csv' => '',
'extension_archive' => '',
'extension_changelog' => 'Журнал изменений',
'extension_config' => '',
'extension_info' => '',
'extension_is_off_now' => '',
'extension_is_on_now' => '',
'extension_loading' => 'Загрузка расширений',
@ -1151,6 +1153,7 @@ URL: [url]',
'no_groups' => 'Нет групп',
'no_group_members' => 'Группа не имеет членов',
'no_linked_files' => 'Нет связанных документов',
'no_mimetype' => '',
'no_previous_versions' => 'Нет предыдущих версий',
'no_receipt_needed' => 'Нет документов, нуждающихся в подтверждении получения',
'no_review_needed' => 'Рецензия не требуется',
@ -1309,6 +1312,7 @@ URL: [url]',
'removeFolderFromDropFolder' => '',
'removeFolderFromDropFolder_desc' => '',
'remove_approval_log' => '',
'remove_from_clipboard' => '',
'remove_marked_files' => 'Удалить выбранные файлы',
'remove_review_log' => '',
'remove_task' => '',
@ -1727,6 +1731,8 @@ URL: [url]',
'settings_enableLargeFileUpload_desc' => 'Если включено, загрузка файлов доступна так же через Java-апплет, называемый jumploader, без ограничения размера файла. Это также позволит загружать несколько файлов за раз.',
'settings_enableLoginByEmail' => '',
'settings_enableLoginByEmail_desc' => '',
'settings_enableMemcached' => '',
'settings_enableMemcached_desc' => '',
'settings_enableMenuTasks' => 'Включить список задач в меню',
'settings_enableMenuTasks_desc' => 'Включить/отключить пункт меню, который содержит все задачи пользователя. Там содержатся документы, которые нуждаются в рецензии, утверждении и т.д.',
'settings_enableMenuTransmittals' => '',
@ -2045,6 +2051,7 @@ URL: [url]',
'sign_out' => 'Выйти',
'sign_out_user' => 'Пользовательский выход',
'site_brand' => '',
'skip_default_export_cols' => '',
'sk_SK' => 'Slovak',
'sort_by_date' => 'Сортировка по дате',
'sort_by_expiration_date' => '',
@ -2174,6 +2181,7 @@ URL: [url]',
'status_revision_sleeping' => 'В ожидании рецензии',
'status_revisor_removed' => 'Ревизор удален из списка',
'status_unknown' => 'Неизвестный',
'storage' => '',
'storage_size' => 'Размер хранилища',
'subfolder_duplicate_name' => '',
'submit_2_fact_auth' => '',

View File

@ -710,6 +710,8 @@ URL: [url]',
'export_user_list_csv' => '',
'extension_archive' => 'Rozšírenie',
'extension_changelog' => 'Denník zmien',
'extension_config' => '',
'extension_info' => '',
'extension_is_off_now' => '',
'extension_is_on_now' => '',
'extension_loading' => 'Nahrávajú sa rozšírenia ...',
@ -1171,6 +1173,7 @@ URL: [url]',
'no_groups' => 'Žiadne skupiny',
'no_group_members' => 'Táto skupina nemá žiadnych členov',
'no_linked_files' => 'No linked files',
'no_mimetype' => '',
'no_previous_versions' => 'Neboli nájdené žiadne iné verzie',
'no_receipt_needed' => 'There are currently no documents requiring a receipt confirmation.',
'no_review_needed' => 'No review pending.',
@ -1337,6 +1340,7 @@ URL: [url]',
'removeFolderFromDropFolder' => 'Po importe odstrániť zložku',
'removeFolderFromDropFolder_desc' => '',
'remove_approval_log' => '',
'remove_from_clipboard' => '',
'remove_marked_files' => 'Odstrániť označené súbory',
'remove_review_log' => '',
'remove_task' => '',
@ -1760,6 +1764,8 @@ Meno: [username]
'settings_enableLargeFileUpload_desc' => 'If set, file upload is also available through a java applet called jumploader without a file size limit set by the browser. It also allows to upload several files in one step. Turning this on will turn off http only cookies.',
'settings_enableLoginByEmail' => '',
'settings_enableLoginByEmail_desc' => '',
'settings_enableMemcached' => '',
'settings_enableMemcached_desc' => '',
'settings_enableMenuTasks' => 'Enable task list in menu',
'settings_enableMenuTasks_desc' => 'Enable/Disable the menu item which contains all tasks for the user. This contains documents, that need to be reviewed, approved, etc.',
'settings_enableMenuTransmittals' => '',
@ -2078,6 +2084,7 @@ Meno: [username]
'sign_out' => 'odhlásiť',
'sign_out_user' => 'Odhlásiť používateľa',
'site_brand' => '',
'skip_default_export_cols' => '',
'sk_SK' => 'Slovenčina',
'sort_by_date' => '',
'sort_by_expiration_date' => '',
@ -2207,6 +2214,7 @@ Meno: [username]
'status_revision_sleeping' => 'pending',
'status_revisor_removed' => 'Revisor removed from list',
'status_unknown' => 'Neznámy',
'storage' => '',
'storage_size' => 'Objem dát',
'subfolder_duplicate_name' => '',
'submit_2_fact_auth' => 'Save secret',

View File

@ -704,6 +704,8 @@ URL: [url]',
'export_user_list_csv' => '',
'extension_archive' => '',
'extension_changelog' => '',
'extension_config' => '',
'extension_info' => '',
'extension_is_off_now' => '',
'extension_is_on_now' => '',
'extension_loading' => '',
@ -1158,6 +1160,7 @@ URL: [url]',
'no_groups' => 'Inga grupper',
'no_group_members' => 'Denna grupp har inga medlemmar',
'no_linked_files' => 'Inga länkade filer',
'no_mimetype' => '',
'no_previous_versions' => 'Inga andra versioner hittades.',
'no_receipt_needed' => 'Det finns inga dokument som saknar mottagningsbevis.',
'no_review_needed' => 'Det finns inga dokument som du behöver granska.',
@ -1310,6 +1313,7 @@ URL: [url]',
'removeFolderFromDropFolder' => 'Radera katalog efter import',
'removeFolderFromDropFolder_desc' => '',
'remove_approval_log' => '',
'remove_from_clipboard' => '',
'remove_marked_files' => 'Ta bort markerade filer',
'remove_review_log' => '',
'remove_task' => '',
@ -1733,6 +1737,8 @@ Kommentar: [comment]',
'settings_enableLargeFileUpload_desc' => 'Om aktiverad, kan filer laddas upp via javaapplet med namnet jumploader, utan begränsningar i filstorlek. Flera filer kan även laddas upp samtidigt i ett steg.',
'settings_enableLoginByEmail' => '',
'settings_enableLoginByEmail_desc' => '',
'settings_enableMemcached' => '',
'settings_enableMemcached_desc' => '',
'settings_enableMenuTasks' => 'Aktivera uppgiftslista i menyn',
'settings_enableMenuTasks_desc' => 'Aktiverar ett menyobjekt som visar användarens uppgifter, såsom dokument som behöver granskas eller godkännas.',
'settings_enableMenuTransmittals' => '',
@ -2051,6 +2057,7 @@ Kommentar: [comment]',
'sign_out' => 'Logga ut',
'sign_out_user' => 'Logga ut användare',
'site_brand' => '',
'skip_default_export_cols' => '',
'sk_SK' => 'Slovakiska',
'sort_by_date' => '',
'sort_by_expiration_date' => '',
@ -2180,6 +2187,7 @@ Kommentar: [comment]',
'status_revision_sleeping' => 'Vilande',
'status_revisor_removed' => 'Reviderare borttagen från listan',
'status_unknown' => 'Okänd',
'storage' => '',
'storage_size' => 'Lagringsstorlek',
'subfolder_duplicate_name' => '',
'submit_2_fact_auth' => 'Spara hemlighet',

View File

@ -692,6 +692,8 @@ URL: [url]',
'export_user_list_csv' => 'Kullanıcıları CSV olarak dışa aktar',
'extension_archive' => '',
'extension_changelog' => 'Değişiklik Listesi',
'extension_config' => '',
'extension_info' => '',
'extension_is_off_now' => '',
'extension_is_on_now' => '',
'extension_loading' => 'Uzantı yüklendi',
@ -1144,6 +1146,7 @@ URL: [url]',
'no_groups' => 'Grup yok',
'no_group_members' => 'Bu grubun hiç üyesi yok',
'no_linked_files' => 'Link verilmiş dosya yok',
'no_mimetype' => '',
'no_previous_versions' => 'Başka versiyon yok',
'no_receipt_needed' => '',
'no_review_needed' => 'Bekleyen kontrol yok.',
@ -1301,6 +1304,7 @@ URL: [url]',
'removeFolderFromDropFolder' => '',
'removeFolderFromDropFolder_desc' => '',
'remove_approval_log' => '',
'remove_from_clipboard' => '',
'remove_marked_files' => 'İşaretli dosyaları sil',
'remove_review_log' => '',
'remove_task' => '',
@ -1697,6 +1701,8 @@ URL: [url]',
'settings_enableLargeFileUpload_desc' => 'Etkinleştirilirse, büyük dosyalar dosya limitine bakılmaksızın jumploader isimli java applet aracılığıyla yüklenebilir. Bu ayrıca bir seferde birden çok dosya yüklemeyi de sağlar. Bu açıldığında sadece http çerezleri kapanmış olur.',
'settings_enableLoginByEmail' => '',
'settings_enableLoginByEmail_desc' => '',
'settings_enableMemcached' => '',
'settings_enableMemcached_desc' => '',
'settings_enableMenuTasks' => '',
'settings_enableMenuTasks_desc' => '',
'settings_enableMenuTransmittals' => '',
@ -2015,6 +2021,7 @@ URL: [url]',
'sign_out' => ıkış',
'sign_out_user' => 'Kullanıcı hesabından çıkış',
'site_brand' => '',
'skip_default_export_cols' => '',
'sk_SK' => 'Slovakça',
'sort_by_date' => 'Tarihe göre sırala',
'sort_by_expiration_date' => '',
@ -2144,6 +2151,7 @@ URL: [url]',
'status_revision_sleeping' => '',
'status_revisor_removed' => '',
'status_unknown' => 'Bilinmeyen',
'storage' => '',
'storage_size' => 'Depo boyutu',
'subfolder_duplicate_name' => '',
'submit_2_fact_auth' => '',

View File

@ -697,6 +697,8 @@ URL: [url]',
'export_user_list_csv' => '',
'extension_archive' => '',
'extension_changelog' => '',
'extension_config' => '',
'extension_info' => '',
'extension_is_off_now' => '',
'extension_is_on_now' => '',
'extension_loading' => '',
@ -1150,6 +1152,7 @@ URL: [url]',
'no_groups' => 'Немає груп',
'no_group_members' => 'Група не має членів',
'no_linked_files' => 'Немає пов\'язаних документів',
'no_mimetype' => '',
'no_previous_versions' => 'Немає попередніх версій',
'no_receipt_needed' => 'Немає документів, які потребують підтвердження отримання',
'no_review_needed' => 'Рецензія не потрібна',
@ -1308,6 +1311,7 @@ URL: [url]',
'removeFolderFromDropFolder' => '',
'removeFolderFromDropFolder_desc' => '',
'remove_approval_log' => '',
'remove_from_clipboard' => '',
'remove_marked_files' => 'Видалити обрані файли',
'remove_review_log' => '',
'remove_task' => '',
@ -1719,6 +1723,8 @@ URL: [url]',
'settings_enableLargeFileUpload_desc' => 'Якщо увімкнено, завантаження файлів доступне також через Java-аплет jumploader без обмеження розміру файлів. Це також дозволить завантажувати кілька файлів за раз.',
'settings_enableLoginByEmail' => '',
'settings_enableLoginByEmail_desc' => '',
'settings_enableMemcached' => '',
'settings_enableMemcached_desc' => '',
'settings_enableMenuTasks' => 'Включити список завдань в меню',
'settings_enableMenuTasks_desc' => 'Включити/відключити пункт меню, який містить всі завдання користувача. Там містяться документи, які потребують рецензії, затвердження і т.ін.',
'settings_enableMenuTransmittals' => '',
@ -2037,6 +2043,7 @@ URL: [url]',
'sign_out' => 'Вийти',
'sign_out_user' => 'Вихід користувача',
'site_brand' => '',
'skip_default_export_cols' => '',
'sk_SK' => 'Slovak',
'sort_by_date' => '',
'sort_by_expiration_date' => '',
@ -2166,6 +2173,7 @@ URL: [url]',
'status_revision_sleeping' => 'Ревізію призупинено',
'status_revisor_removed' => 'Ревізора видалено зі списку',
'status_unknown' => 'Невідомий',
'storage' => '',
'storage_size' => 'Розмір сховища',
'subfolder_duplicate_name' => '',
'submit_2_fact_auth' => '',

View File

@ -700,6 +700,8 @@ URL: [url]',
'export_user_list_csv' => '',
'extension_archive' => '扩展',
'extension_changelog' => '更新日志',
'extension_config' => '',
'extension_info' => '',
'extension_is_off_now' => '',
'extension_is_on_now' => '',
'extension_loading' => '加载扩展',
@ -1154,6 +1156,7 @@ URL: [url]',
'no_groups' => '无组别',
'no_group_members' => '该组没有成员',
'no_linked_files' => '无链接文件',
'no_mimetype' => '',
'no_previous_versions' => '无其它版本',
'no_receipt_needed' => '目前没有需要收据确认的文件',
'no_review_needed' => '无待校对的文件',
@ -1314,6 +1317,7 @@ URL: [url]',
'removeFolderFromDropFolder' => '导入后删除文件夹',
'removeFolderFromDropFolder_desc' => '',
'remove_approval_log' => '',
'remove_from_clipboard' => '',
'remove_marked_files' => '删除选中的文件',
'remove_review_log' => '',
'remove_task' => '',
@ -1707,6 +1711,8 @@ URL: [url]',
'settings_enableLargeFileUpload_desc' => '如果设置了文件上传也可以通过一个名为jumploader的浏览器java小程序来实现文件上传。它还允许一次上传多个文件。打开此选项将关闭网页cookie。',
'settings_enableLoginByEmail' => '',
'settings_enableLoginByEmail_desc' => '',
'settings_enableMemcached' => '',
'settings_enableMemcached_desc' => '',
'settings_enableMenuTasks' => '在菜单中启用任务列表',
'settings_enableMenuTasks_desc' => '启用/禁用包含用户所有任务的菜单项。其中包含需要审核、批准的文件等。',
'settings_enableMenuTransmittals' => '',
@ -2025,6 +2031,7 @@ URL: [url]',
'sign_out' => '登出',
'sign_out_user' => '退出登录',
'site_brand' => '',
'skip_default_export_cols' => '',
'sk_SK' => '斯洛伐克语',
'sort_by_date' => '日期排序',
'sort_by_expiration_date' => '',
@ -2154,6 +2161,7 @@ URL: [url]',
'status_revision_sleeping' => '等待',
'status_revisor_removed' => '从名单中删除校订人',
'status_unknown' => '未知',
'storage' => '',
'storage_size' => '存储大小',
'subfolder_duplicate_name' => '重复的文件夹',
'submit_2_fact_auth' => '保存秘钥',

View File

@ -710,6 +710,8 @@ URL: [url]',
'export_user_list_csv' => '',
'extension_archive' => '擴充',
'extension_changelog' => '修改紀錄',
'extension_config' => '',
'extension_info' => '',
'extension_is_off_now' => '',
'extension_is_on_now' => '',
'extension_loading' => '擴充套件讀取中',
@ -1171,6 +1173,7 @@ URL: [url]',
'no_groups' => '無組別',
'no_group_members' => '該組沒有成員',
'no_linked_files' => '無連結檔',
'no_mimetype' => '',
'no_previous_versions' => '無其它版本',
'no_receipt_needed' => '當前沒有需要收據確認的文件。',
'no_review_needed' => '無待校對的文件',
@ -1335,6 +1338,7 @@ URL: [url]',
'removeFolderFromDropFolder' => '導入後刪除文件夾',
'removeFolderFromDropFolder_desc' => '',
'remove_approval_log' => '',
'remove_from_clipboard' => '',
'remove_marked_files' => '刪除勾選的檔案',
'remove_review_log' => '',
'remove_task' => '',
@ -1758,6 +1762,8 @@ URL: [url]',
'settings_enableLargeFileUpload_desc' => '如果設置了該選項則還可以通過一個名為Jumploader的Java小程序來上傳文件而瀏覽器沒有設置文件大小限制。它還允許一步上傳幾個文件。啟用此功能將關閉僅HTTP cookie。',
'settings_enableLoginByEmail' => '',
'settings_enableLoginByEmail_desc' => '',
'settings_enableMemcached' => '',
'settings_enableMemcached_desc' => '',
'settings_enableMenuTasks' => '在菜單中啟用任務列表',
'settings_enableMenuTasks_desc' => '啟用/禁用包含用戶所有任務的菜單項。其中包含需要審查,批准等的文件。',
'settings_enableMenuTransmittals' => '',
@ -2076,6 +2082,7 @@ URL: [url]',
'sign_out' => '登出',
'sign_out_user' => '登出使用者',
'site_brand' => '',
'skip_default_export_cols' => '',
'sk_SK' => '斯洛伐克語',
'sort_by_date' => '依日期排序',
'sort_by_expiration_date' => '',
@ -2205,6 +2212,7 @@ URL: [url]',
'status_revision_sleeping' => '待定',
'status_revisor_removed' => '修訂者已從清單中刪除',
'status_unknown' => '未知',
'storage' => '',
'storage_size' => '存儲大小',
'subfolder_duplicate_name' => '子文件夾名稱重複',
'submit_2_fact_auth' => '保存秘密',

View File

@ -250,10 +250,38 @@ default:
$attributes = $_POST["attributes_version"];
foreach($attributes as $attrdefid=>$attribute) {
$attrdef = $dms->getAttributeDefinition($attrdefid);
if(null === ($ret = $controller->callHook('validateAttribute', $attrdef, $attribute))) {
if($attribute) {
switch($attrdef->getType()) {
case SeedDMS_Core_AttributeDefinition::type_date:
$attribute = date('Y-m-d', makeTsFromDate($attribute));
if(is_array($attribute))
$attribute = array_map(fn($value): string => date('Y-m-d', makeTsFromDate($value)), $attribute);
else
$attribute = date('Y-m-d', makeTsFromDate($attribute));
break;
case SeedDMS_Core_AttributeDefinition::type_folder:
if(is_array($attribute))
$attribute = array_map(fn($value): object => $dms->getFolder((int) $value), $attribute);
else
$attribute = $dms->getFolder((int) $attribute);
break;
case SeedDMS_Core_AttributeDefinition::type_document:
if(is_array($attribute))
$attribute = array_map(fn($value): object => $dms->getDocument((int) $value), $attribute);
else
$attribute = $dms->getDocument((int) $attribute);
break;
case SeedDMS_Core_AttributeDefinition::type_user:
if(is_array($attribute))
$attribute = array_map(fn($value): object => $dms->getUser((int) $value), $attribute);
else
$attribute = $dms->getUser((int) $attribute);
break;
case SeedDMS_Core_AttributeDefinition::type_group:
if(is_array($attribute))
$attribute = array_map(fn($value): object => $dms->getGroup((int) $value), $attribute);
else
$attribute = $dms->getGroup((int) $attribute);
break;
}
if(!$attrdef->validate($attribute, null, true)) {
@ -263,6 +291,10 @@ default:
} elseif($attrdef->getMinValues() > 0) {
UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("attr_min_values", array("attrname"=>$attrdef->getName())));
}
} else {
if($ret === false)
return false;
}
}
} else {
$attributes = array();

View File

@ -46,7 +46,8 @@ if(!checkFormKey('edituserdata')) {
$fullname = $_POST["fullname"];
$email = $_POST["email"];
$comment = $_POST["comment"];
$language = $_POST["language"];
if(isset($_POST["language"]))
$language = $_POST["language"];
/* 'theme' won't be set, if themeselector is turned off */
if(isset($_POST["theme"]))
$mytheme = $_POST["theme"];
@ -103,7 +104,7 @@ if ($user->getEmail() != $email)
if ($user->getComment() != $comment)
$user->setComment($comment);
if ($user->getLanguage() != $language)
if (isset($language) && $user->getLanguage() != $language)
$user->setLanguage($language);
if (isset($mytheme) && $user->getTheme() != $mytheme)

View File

@ -55,7 +55,10 @@ if($user) {
$params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ChangePassword.php?hash=".$hash;
$params['url_prefix'] = getBaseUrl().$settings->_httpRoot;
$emailobj->toIndividual($settings->_smtpSendFrom, $user, $subject, $message, $params);
add_log_line("Request for '".$login."' send to '".$email."'", PEAR_LOG_INFO);
}
} else {
add_log_line("No such user '".$login."' with email '".$email."'", PEAR_LOG_WARNING);
}
header('Location: ../out/out.PasswordSend.php');

View File

@ -31,5 +31,4 @@ include("../inc/inc.Authentication.php");
$session->setLanguage($_GET['lang']);
header("Location: http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].$_GET['referer']);
?>
header("Location: http".((isset($_SERVER['HTTPS']) && (strcmp($_SERVER['HTTPS'],'off')!=0)) ? "s" : "")."://".$_SERVER['HTTP_HOST'].decryptData($settings->_encryptionKey, $_GET['referer']));

View File

@ -55,10 +55,12 @@ if (!is_object($content)) {
UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("invalid_version"));
}
if (isset($_POST["startdate"])) {
$ts = null;
if (!empty($_POST["startdate"])) {
$ts = makeTsFromDate($_POST["startdate"]);
} else {
$ts = time();
}
if(!$ts) {
UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("invalid_revision_date"));
}
$startdate = date('Y-m-d', $ts);

View File

@ -29,17 +29,6 @@ include("../inc/inc.DBInit.php");
include("../inc/inc.ClassUI.php");
include("../inc/inc.Authentication.php");
function getBoolValue($post_name)
{
$out = false;
if (isset($_POST[$post_name]))
if ($_POST[$post_name]=="on")
$out = true;
return $out;
}
if (!$user->isAdmin()) {
UI::exitError(getMLText("admin_tools"),getMLText("access_denied"));
}
@ -68,10 +57,12 @@ if ($action == "saveSettings")
function setBoolValue($name) {
global $_POST, $settings;
if(!in_array($name, $settings->_hiddenConfFields)) {
if (isset($_POST[$name]) && $_POST[$name]=="on")
$settings->{"_".$name} = true;
else
$settings->{"_".$name} = false;
if (isset($_POST[$name])) {
if ($_POST[$name]=="on")
$settings->{"_".$name} = true;
else
$settings->{"_".$name} = false;
}
}
}
function setIntValue($name) {
@ -81,11 +72,13 @@ if ($action == "saveSettings")
}
function setArrayValue($name) {
global $_POST, $settings;
if(!in_array($name, $settings->_hiddenConfFields)) {
if(isset($_POST[$name]) && $_POST[$name])
$settings->{"_".$name} = $_POST[$name];
else
$settings->{"_".$name} = array();
if (!in_array($name, $settings->_hiddenConfFields)) {
if (isset($_POST[$name])) {
if ($_POST[$name])
$settings->{"_".$name} = $_POST[$name];
else
$settings->{"_".$name} = array();
}
}
}
function setDirValue($name) {
@ -199,6 +192,7 @@ if ($action == "saveSettings")
setStrValue("partitionSize"); // TODO: check if valid value, e.g. 1M or 5K
setStrValue("maxUploadSize"); // TODO: check if valid value, e.g. 1M or 5K
setBoolValue("enableXsendfile");
setBoolValue("enableMemcached");
// SETTINGS - SYSTEM - AUTHENTICATION
setBoolValue("enableGuestLogin");
@ -299,7 +293,7 @@ if ($action == "saveSettings")
// SETTINGS - ADVANCED - SERVER
setStrValue("coreDir");
setStrValue("luceneClassDir");
setIntValue("contentOffsetDir");
setStrValue("contentOffsetDir");
setIntValue("maxDirID");
setIntValue("updateNotifyTime");
setIntValue("maxExecutionTime");
@ -347,15 +341,21 @@ if ($action == "saveSettings")
// -------------------------------------------------------------------------
// save
// -------------------------------------------------------------------------
if (!$settings->save())
UI::exitError(getMLText("admin_tools"),getMLText("settings_SaveError"));
if (!$settings->save()) {
if(isAjax()) {
echo json_encode(array('success'=>false, 'msg'=>getMLText('settings_SaveError')));
exit;
} else {
UI::exitError(getMLText("admin_tools"),getMLText("settings_SaveError"));
}
}
add_log_line(".php&action=savesettings");
}
$session->setSplashMsg(array('type'=>'success', 'msg'=>getMLText('splash_settings_saved')));
header("Location:../out/out.Settings.php?currenttab=".$_POST['currenttab']);
?>
if(isAjax()) {
echo json_encode(array('success'=>true, 'msg'=>getMLText('splash_settings_saved')));
} else {
$session->setSplashMsg(array('type'=>'success', 'msg'=>getMLText('splash_settings_saved')));
header("Location:../out/out.Settings.php?currenttab=".$_POST['currenttab']);
}

View File

@ -346,10 +346,38 @@ default:
$attributes = $_POST["attributes_version"];
foreach($attributes as $attrdefid=>$attribute) {
$attrdef = $dms->getAttributeDefinition($attrdefid);
if(null === ($ret = $controller->callHook('validateAttribute', $attrdef, $attribute))) {
if($attribute) {
switch($attrdef->getType()) {
case SeedDMS_Core_AttributeDefinition::type_date:
$attribute = date('Y-m-d', makeTsFromDate($attribute));
if(is_array($attribute))
$attribute = array_map(fn($value): string => date('Y-m-d', makeTsFromDate($value)), $attribute);
else
$attribute = date('Y-m-d', makeTsFromDate($attribute));
break;
case SeedDMS_Core_AttributeDefinition::type_folder:
if(is_array($attribute))
$attribute = array_map(fn($value): object => $dms->getFolder((int) $value), $attribute);
else
$attribute = $dms->getFolder((int) $attribute);
break;
case SeedDMS_Core_AttributeDefinition::type_document:
if(is_array($attribute))
$attribute = array_map(fn($value): object => $dms->getDocument((int) $value), $attribute);
else
$attribute = $dms->getDocument((int) $attribute);
break;
case SeedDMS_Core_AttributeDefinition::type_user:
if(is_array($attribute))
$attribute = array_map(fn($value): object => $dms->getUser((int) $value), $attribute);
else
$attribute = $dms->getUser((int) $attribute);
break;
case SeedDMS_Core_AttributeDefinition::type_group:
if(is_array($attribute))
$attribute = array_map(fn($value): object => $dms->getGroup((int) $value), $attribute);
else
$attribute = $dms->getGroup((int) $attribute);
break;
}
if(!$attrdef->validate($attribute, null, true)) {
@ -359,6 +387,10 @@ default:
} elseif($attrdef->getMinValues() > 0) {
UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("attr_min_values", array("attrname"=>$attrdef->getName())));
}
} else {
if($ret === false)
return false;
}
}
} else {
$attributes = array();

View File

@ -57,6 +57,8 @@ if($view) {
$view->setParam('enableRecursiveCount', $settings->_enableRecursiveCount);
$view->setParam('maxRecursiveCount', $settings->_maxRecursiveCount);
$view->setParam('previewWidthList', $settings->_previewWidthList);
$view->setParam('previewConverters', isset($settings->_converters['preview']) ? $settings->_converters['preview'] : array());
$view->setParam('convertToPdf', $settings->_convertToPdf);
$view->setParam('timeout', $settings->_cmdTimeout);
$view->setParam('accessobject', $accessop);
$view->setParam('xsendfile', $settings->_enableXsendfile);

View File

@ -53,6 +53,7 @@ if ($view) {
$view->setParam('type', $type);
$view->setParam('data', $data);
$view->setParam('accessobject', $accessop);
$view->setParam('quota', $settings->_quota);
$view($_GET);
exit;
}

View File

@ -49,6 +49,7 @@ if (isset($_GET["orderdir"]) && strlen($_GET["orderdir"])==1 ) {
$days = null;
$startts = null;
$endts = null;
$seluser = null;
if(isset($_GET['days']) && is_numeric($_GET['days'])) {
$days = (int) $_GET['days'];
} else {
@ -59,6 +60,9 @@ if(isset($_GET['days']) && is_numeric($_GET['days'])) {
$endts = makeTsFromDate($_GET['enddate']);
}
}
if(isset($_GET['seluserid'])) {
$seluser = $dms->getUser((int) $_GET['seluserid']);
}
if($view) {
$view->setParam('conversionmgr', $conversionmgr);
@ -68,6 +72,7 @@ if($view) {
$view->setParam('days', $days);
$view->setParam('startts', $startts);
$view->setParam('endts', $endts);
$view->setParam('seluser', $seluser);
$view->setParam('cachedir', $settings->_cacheDir);
$view->setParam('previewWidthList', $settings->_previewWidthList);
$view->setParam('timeout', $settings->_cmdTimeout);

View File

@ -29,51 +29,57 @@ require_once("inc/inc.DBInit.php");
require_once("inc/inc.ClassUI.php");
require_once("inc/inc.Authentication.php");
function getTime() {
function getTime() { /* {{{ */
if (function_exists('microtime')) {
$tm = microtime();
$tm = explode(' ', $tm);
return (float) sprintf('%f', $tm[1] + $tm[0]);
}
return time();
}
} /* }}} */
$get = $_GET;
// Redirect to the search page if the navigation search button has been
// selected without supplying any search terms.
if (isset($_GET["navBar"])) {
if (!isset($_GET["folderid"]) || !is_numeric($_GET["folderid"]) || intval($_GET["folderid"])<1) {
if (isset($get["navBar"])) {
if (!isset($get["folderid"]) || !is_numeric($get["folderid"]) || intval($get["folderid"])<1) {
$folderid=$settings->_rootFolderID;
} else {
$folderid = $_GET["folderid"];
$folderid = $get["folderid"];
}
}
$includecontent = false;
if (isset($_GET["includecontent"]) && $_GET["includecontent"])
if (isset($get["includecontent"]) && $get["includecontent"])
$includecontent = true;
$skipdefaultcols = false;
if (isset($get["skipdefaultcols"]) && $get["skipdefaultcols"])
$skipdefaultcols = true;
$newowner = null;
if (isset($_GET["newowner"]) && is_numeric($_GET["newowner"]) && $_GET['newowner'] > 0) {
$newowner = $dms->getUser((int) $_GET['newowner']);
if (isset($get["newowner"]) && is_numeric($get["newowner"]) && $get['newowner'] > 0) {
$newowner = $dms->getUser((int) $get['newowner']);
}
$newreviewer = null;
if (isset($_GET["newreviewer"]) && is_numeric($_GET["newreviewer"]) && $_GET['newreviewer'] > 0) {
$newreviewer = $dms->getUser((int) $_GET['newreviewer']);
if (isset($get["newreviewer"]) && is_numeric($get["newreviewer"]) && $get['newreviewer'] > 0) {
$newreviewer = $dms->getUser((int) $get['newreviewer']);
}
$newapprover = null;
if (isset($_GET["newapprover"]) && is_numeric($_GET["newapprover"]) && $_GET['newapprover'] > 0) {
$newapprover = $dms->getUser((int) $_GET['newapprover']);
if (isset($get["newapprover"]) && is_numeric($get["newapprover"]) && $get['newapprover'] > 0) {
$newapprover = $dms->getUser((int) $get['newapprover']);
}
$changecategory = null;
if (isset($_GET["changecategory"]) && is_numeric($_GET["changecategory"]) && $_GET['changecategory'] > 0) {
$changecategory = $dms->getDocumentCategory((int) $_GET['changecategory']);
if (isset($get["changecategory"]) && is_numeric($get["changecategory"]) && $get['changecategory'] > 0) {
$changecategory = $dms->getDocumentCategory((int) $get['changecategory']);
}
$removecategory = 0;
if (isset($_GET["removecategory"]) && is_numeric($_GET["removecategory"]) && $_GET['removecategory'] > 0) {
$removecategory = (int) $_GET['removecategory'];
if (isset($get["removecategory"]) && is_numeric($get["removecategory"]) && $get['removecategory'] > 0) {
$removecategory = (int) $get['removecategory'];
}
/* Creation date {{{ */
@ -83,16 +89,16 @@ $createendts = null;
$createenddate = null;
$created['from'] = null;
$created['to'] = null;
if(!empty($_GET["created"]["from"])) {
$createstartts = makeTsFromDate($_GET["created"]["from"]);
if(!empty($get["created"]["from"])) {
$createstartts = makeTsFromDate($get["created"]["from"]);
$createstartdate = array('year'=>(int)date('Y', $createstartts), 'month'=>(int)date('m', $createstartts), 'day'=>(int)date('d', $createstartts), 'hour'=>0, 'minute'=>0, 'second'=>0);
if (!checkdate($createstartdate['month'], $createstartdate['day'], $createstartdate['year'])) {
UI::exitError(getMLText("search"),getMLText("invalid_create_date_end"));
}
$created['from'] = $createstartts;
}
if(!empty($_GET["created"]["to"])) {
$createendts = makeTsFromDate($_GET["created"]["to"]);
if(!empty($get["created"]["to"])) {
$createendts = makeTsFromDate($get["created"]["to"]);
$createenddate = array('year'=>(int)date('Y', $createendts), 'month'=>(int)date('m', $createendts), 'day'=>(int)date('d', $createendts), 'hour'=>23, 'minute'=>59, 'second'=>59);
if (!checkdate($createenddate['month'], $createenddate['day'], $createenddate['year'])) {
UI::exitError(getMLText("search"),getMLText("invalid_create_date_end"));
@ -108,16 +114,16 @@ $modifyendts = null;
$modifyenddate = null;
$modified['from'] = null;
$modified['to'] = null;
if(!empty($_GET["modified"]["from"])) {
$modifystartts = makeTsFromDate($_GET["modified"]["from"]);
if(!empty($get["modified"]["from"])) {
$modifystartts = makeTsFromDate($get["modified"]["from"]);
$modifystartdate = array('year'=>(int)date('Y', $modifystartts), 'month'=>(int)date('m', $modifystartts), 'day'=>(int)date('d', $modifystartts), 'hour'=>0, 'minute'=>0, 'second'=>0);
if (!checkdate($modifystartdate['month'], $modifystartdate['day'], $modifystartdate['year'])) {
UI::exitError(getMLText("search"),getMLText("invalid_modification_date_end"));
}
$modified['from'] = $modifystartts;
}
if(!empty($_GET["modified"]["to"])) {
$modifyendts = makeTsFromDate($_GET["modified"]["to"]);
if(!empty($get["modified"]["to"])) {
$modifyendts = makeTsFromDate($get["modified"]["to"]);
$modifyenddate = array('year'=>(int)date('Y', $modifyendts), 'month'=>(int)date('m', $modifyendts), 'day'=>(int)date('d', $modifyendts), 'hour'=>23, 'minute'=>59, 'second'=>59);
if (!checkdate($modifyenddate['month'], $modifyenddate['day'], $modifyenddate['year'])) {
UI::exitError(getMLText("search"),getMLText("invalid_modification_date_end"));
@ -131,35 +137,35 @@ $filesizestart = 0;
$filesizeend = 0;
$filesize['from'] = null;
$filesize['to'] = null;
if(!empty($_GET["filesize"]["from"])) {
$filesizestart = $_GET["filesize"]["from"];
$filesize['from'] = $_GET["filesize"]["from"];
if(!empty($get["filesize"]["from"])) {
$filesizestart = $get["filesize"]["from"];
$filesize['from'] = $get["filesize"]["from"];
}
if(!empty($_GET["filesize"]["to"])) {
$filesizeend = $_GET["filesize"]["to"];
$filesize['to'] = $_GET["filesize"]["to"];
if(!empty($get["filesize"]["to"])) {
$filesizeend = $get["filesize"]["to"];
$filesize['to'] = $get["filesize"]["to"];
}
/* }}} */
// Check to see if the search has been restricted to a particular
// document owner.
// $_GET['owner'] can be a name of an array of names or ids {{{
// $get['owner'] can be a name of an array of names or ids {{{
$owner = [];
$ownernames = []; // Needed by fulltext search
$ownerobjs = []; // Needed by database search
if(!empty($_GET["owner"])) {
$owner = $_GET['owner'];
if (!is_array($_GET['owner'])) {
if(is_numeric($_GET['owner']))
$o = $dms->getUser($_GET['owner']);
if(!empty($get["owner"])) {
$owner = $get['owner'];
if (!is_array($get['owner'])) {
if(is_numeric($get['owner']))
$o = $dms->getUser($get['owner']);
else
$o = $dms->getUserByLogin($_GET['owner']);
$o = $dms->getUserByLogin($get['owner']);
if($o) {
$ownernames[] = $o->getLogin();
$ownerobjs[] = $o;
}
} else {
foreach($_GET["owner"] as $l) {
foreach($get["owner"] as $l) {
if($l) {
if(is_numeric($l))
$o = $dms->getUser($l);
@ -174,121 +180,89 @@ if(!empty($_GET["owner"])) {
}
} /* }}} */
// category {{{
$categories = array();
$categorynames = array();
$category = array();
if(isset($_GET['category']) && $_GET['category']) {
$category = $_GET['category'];
foreach($_GET['category'] as $catid) {
if($catid) {
if(is_numeric($catid)) {
if($cat = $dms->getDocumentCategory($catid)) {
$categories[] = $cat;
$categorynames[] = $cat->getName();
}
} else {
$categorynames[] = $catid;
// category {{{
$categories = array();
$categorynames = array();
$category = array();
if(isset($get['category']) && $get['category']) {
$category = $get['category'];
foreach($get['category'] as $catid) {
if($catid) {
if(is_numeric($catid)) {
if($cat = $dms->getDocumentCategory($catid)) {
$categories[] = $cat;
$categorynames[] = $cat->getName();
}
} else {
$categorynames[] = $catid;
}
}
} /* }}} */
}
} /* }}} */
if (isset($_GET["orderby"]) && is_string($_GET["orderby"])) {
$orderby = $_GET["orderby"];
}
else {
$orderby = "";
}
if (isset($get["orderby"]) && is_string($get["orderby"])) {
$orderby = $get["orderby"];
} else {
$orderby = "";
}
$terms = [];
$limit = (isset($_GET["limit"]) && is_numeric($_GET["limit"])) ? (int) $_GET['limit'] : 20;
$fullsearch = ((!isset($_GET["fullsearch"]) && $settings->_defaultSearchMethod == 'fulltext') || !empty($_GET["fullsearch"])) && $settings->_enableFullSearch;
$facetsearch = !empty($_GET["facetsearch"]) && $settings->_enableFullSearch;
$limit = (isset($get["limit"]) && is_numeric($get["limit"])) ? (int) $get['limit'] : 20;
$fullsearch = ((!isset($get["fullsearch"]) && $settings->_defaultSearchMethod == 'fulltext') || !empty($get["fullsearch"])) && $settings->_enableFullSearch;
$facetsearch = !empty($get["facetsearch"]) && $settings->_enableFullSearch;
if (isset($get["query"]) && is_string($get["query"])) {
$query = $get["query"];
} else {
$query = "";
}
// Check to see if the search has been restricted to a particular
// mimetype. {{{
$mimetype = [];
if (isset($get["mimetype"])) {
if (!is_array($get['mimetype'])) {
if(!empty($get['mimetype']))
$mimetype[] = $get['mimetype'];
} else {
foreach($get["mimetype"] as $l) {
if($l)
$mimetype[] = $l;
}
}
} /* }}} */
// status
$status = isset($get['status']) ? $get['status'] : array();
// Get the page number to display. If the result set contains more than
// 25 entries, it is displayed across multiple pages.
//
// This requires that a page number variable be used to track which page the
// user is interested in, and an extra clause on the select statement.
//
// Default page to display is always one.
$pageNumber=1;
if (isset($get["pg"])) {
if (is_numeric($get["pg"]) && $get["pg"]>0) {
$pageNumber = (int) $get["pg"];
}
elseif (!strcasecmp($get["pg"], "all")) {
$pageNumber = "all";
}
}
if($fullsearch) {
// Search in Fulltext {{{
if (isset($_GET["query"]) && is_string($_GET["query"])) {
$query = $_GET["query"];
// if(isset($_GET['action']) && ($_GET['action'] == 'typeahead'))
// $query .= '*';
}
else {
$query = "";
}
//
// Get the page number to display. If the result set contains more than
// 25 entries, it is displayed across multiple pages.
//
// This requires that a page number variable be used to track which page the
// user is interested in, and an extra clause on the select statement.
//
// Default page to display is always one.
$pageNumber=1;
if (isset($_GET["pg"])) {
if (is_numeric($_GET["pg"]) && $_GET["pg"]>0) {
$pageNumber = (integer)$_GET["pg"];
}
elseif (!strcasecmp($_GET["pg"], "all")) {
$pageNumber = "all";
}
}
// --------------- Suche starten --------------------------------------------
// Check to see if the search has been restricted to a particular
// mimetype. {{{
$mimetype = [];
if (isset($_GET["mimetype"])) {
if (!is_array($_GET['mimetype'])) {
if(!empty($_GET['mimetype']))
$mimetype[] = $_GET['mimetype'];
} else {
foreach($_GET["mimetype"] as $l) {
if($l)
$mimetype[] = $l;
}
}
} /* }}} */
/* Creation date {{{
$createstartts = null;
$createstartdate = null;
$createendts = null;
$createenddate = null;
$created = [];
if(!empty($_GET["created"]["from"])) {
$createstartts = makeTsFromDate($_GET["created"]["from"]);
$createstartdate = array('year'=>(int)date('Y', $createstartts), 'month'=>(int)date('m', $createstartts), 'day'=>(int)date('d', $createstartts), 'hour'=>0, 'minute'=>0, 'second'=>0);
if (!checkdate($createstartdate['month'], $createstartdate['day'], $createstartdate['year'])) {
UI::exitError(getMLText("search"),getMLText("invalid_create_date_end"));
}
$created['from'] = $createstartts;
}
if(!empty($_GET["created"]["to"])) {
$createendts = makeTsFromDate($_GET["created"]["to"]);
$createenddate = array('year'=>(int)date('Y', $createendts), 'month'=>(int)date('m', $createendts), 'day'=>(int)date('d', $createendts), 'hour'=>23, 'minute'=>59, 'second'=>59);
if (!checkdate($createenddate['month'], $createenddate['day'], $createenddate['year'])) {
UI::exitError(getMLText("search"),getMLText("invalid_create_date_end"));
}
$created['to'] = $createendts;
}
}}} */
// status
if(isset($_GET['status']))
$status = $_GET['status'];
else
$status = array();
// Search in Fulltext {{{
// record_type
if(isset($_GET['record_type']))
$record_type = $_GET['record_type'];
if(isset($get['record_type']))
$record_type = $get['record_type'];
else
$record_type = array();
if (isset($_GET["attributes"]))
$attributes = $_GET["attributes"];
if (isset($get["attributes"]))
$attributes = $get["attributes"];
else
$attributes = array();
@ -340,8 +314,8 @@ if($fullsearch) {
// Check to see if the search has been restricted to a particular sub-tree in
// the folder hierarchy.
$startFolder = null;
if (isset($_GET["folderfullsearchid"]) && is_numeric($_GET["folderfullsearchid"]) && $_GET["folderfullsearchid"]>0) {
$targetid = $_GET["folderfullsearchid"];
if (isset($get["folderfullsearchid"]) && is_numeric($get["folderfullsearchid"]) && $get["folderfullsearchid"]>0) {
$targetid = $get["folderfullsearchid"];
$startFolder = $dms->getFolder($targetid);
if (!is_object($startFolder)) {
UI::exitError(getMLText("search"),getMLText("invalid_folder_id"));
@ -350,7 +324,6 @@ if($fullsearch) {
$rootFolder = $dms->getFolder($settings->_rootFolderID);
$startTime = getTime();
if($settings->_fullSearchEngine == 'lucene') {
Zend_Search_Lucene_Search_QueryParser::setDefaultEncoding('utf-8');
}
@ -358,6 +331,7 @@ if($fullsearch) {
if(strlen($query) < 4 && strpos($query, '*')) {
$session->setSplashMsg(array('type'=>'error', 'msg'=>getMLText('splash_invalid_searchterm')));
$dcount = 0;
$fcount = 0;
$totalPages = 0;
$entries = array();
$searchTime = 0;
@ -367,13 +341,30 @@ if($fullsearch) {
$total = 0;
$index = $fulltextservice->Indexer();
if($index) {
if(!empty($settings->_suggestTerms) && !empty($_GET['query'])) {
$st = preg_split("/[\s,]+/", trim($_GET['query']));
if(!empty($settings->_suggestTerms) && !empty($get['query'])) {
$st = preg_split("/[\s,]+/", trim($get['query']));
if($lastterm = end($st))
$terms = $index->terms($lastterm, $settings->_suggestTerms);
}
$lucenesearch = $fulltextservice->Search();
$searchresult = $lucenesearch->search($query, array('record_type'=>$record_type, 'owner'=>$ownernames, 'status'=>$status, 'category'=>$categorynames, 'user'=>$user->isAdmin() ? [] : [$user->getLogin()], 'mimetype'=>$mimetype, 'startFolder'=>$startFolder, 'rootFolder'=>$rootFolder, 'created_start'=>$createstartts, 'created_end'=>$createendts, 'modified_start'=>$modifystartts, 'modified_end'=>$modifyendts, 'filesize_start'=>$filesizestart, 'filesize_end'=>$filesizeend, 'attributes'=>$attributes), ($pageNumber == 'all' ? array() : array('limit'=>$limit, 'offset'=>$limit * ($pageNumber-1))), $order);
$searchresult = $lucenesearch->search($query,
array(
'record_type'=>$record_type,
'owner'=>$ownernames,
'status'=>$status,
'category'=>$categorynames,
'user'=>$user->isAdmin() ? [] : [$user->getLogin()],
'mimetype'=>$mimetype,
'startFolder'=>$startFolder,
'rootFolder'=>$rootFolder,
'created_start'=>$created['from'],
'created_end'=>$created['to'],
'modified_start'=>$modified['from'],
'modified_end'=>$modified['to'],
'filesize_start'=>$filesize['from'],
'filesize_end'=>$filesize['to'],
'attributes'=>$attributes
), ($pageNumber == 'all' ? array() : array('limit'=>$limit, 'offset'=>$limit * ($pageNumber-1))), $order);
if($searchresult === false) {
$session->setSplashMsg(array('type'=>'error', 'msg'=>getMLText('splash_invalid_searchterm')));
$dcount = 0;
@ -441,29 +432,23 @@ if($fullsearch) {
// }}}
} else {
// Search in Database {{{
if (isset($_GET["query"]) && is_string($_GET["query"])) {
$query = $_GET["query"];
}
else {
$query = "";
}
/* Select if only documents (0x01), only folders (0x02) or both (0x03)
* are found
*/
$resultmode = 0x03;
if (isset($_GET["resultmode"]) && is_numeric($_GET["resultmode"])) {
$resultmode = $_GET['resultmode'];
if (isset($get["resultmode"]) && is_numeric($get["resultmode"])) {
$resultmode = $get['resultmode'];
}
$mode = "AND";
if (isset($_GET["mode"]) && is_numeric($_GET["mode"]) && $_GET["mode"]==0) {
if (isset($get["mode"]) && is_numeric($get["mode"]) && $get["mode"]==0) {
$mode = "OR";
}
$searchin = array();
if (isset($_GET['searchin']) && is_array($_GET["searchin"])) {
foreach ($_GET["searchin"] as $si) {
if (isset($get['searchin']) && is_array($get["searchin"])) {
foreach ($get["searchin"] as $si) {
if (isset($si) && is_numeric($si)) {
switch ($si) {
case 1: // keywords
@ -483,8 +468,8 @@ if($fullsearch) {
// Check to see if the search has been restricted to a particular sub-tree in
// the folder hierarchy.
if (isset($_GET["targetid"]) && is_numeric($_GET["targetid"]) && $_GET["targetid"]>0) {
$targetid = $_GET["targetid"];
if (isset($get["targetid"]) && is_numeric($get["targetid"]) && $get["targetid"]>0) {
$targetid = $get["targetid"];
$startFolder = $dms->getFolder($targetid);
}
else {
@ -494,76 +479,43 @@ if($fullsearch) {
UI::exitError(getMLText("search"),getMLText("invalid_folder_id"));
}
// Check to see if the search has been restricted to a particular
/* document owner. {{{
$owner = array();
$ownerobjs = array();
if (isset($_GET["owner"])) {
$owner = $_GET['owner'];
if (!is_array($_GET['owner'])) {
if(!empty($_GET['owner']) && $o = $dms->getUser($_GET['owner'])) {
$ownerobjs[] = $o;
} else
UI::exitError(getMLText("search"),getMLText("unknown_owner"));
} else {
foreach($_GET["owner"] as $l) {
if($o = $dms->getUser($l)) {
$ownerobjs[] = $o;
}
}
}
} }}} */
/* Creation date {{{
$createstartdate = array();
$createenddate = array();
if(!empty($_GET["createstart"])) {
$createstartts = makeTsFromDate($_GET["createstart"]);
$createstartdate = array('year'=>(int)date('Y', $createstartts), 'month'=>(int)date('m', $createstartts), 'day'=>(int)date('d', $createstartts), 'hour'=>0, 'minute'=>0, 'second'=>0);
}
if ($createstartdate && !checkdate($createstartdate['month'], $createstartdate['day'], $createstartdate['year'])) {
UI::exitError(getMLText("search"),getMLText("invalid_create_date_end"));
}
if(!empty($_GET["createend"])) {
$createendts = makeTsFromDate($_GET["createend"]);
$createenddate = array('year'=>(int)date('Y', $createendts), 'month'=>(int)date('m', $createendts), 'day'=>(int)date('d', $createendts), 'hour'=>23, 'minute'=>59, 'second'=>59);
}
if ($createenddate && !checkdate($createenddate['month'], $createenddate['day'], $createenddate['year'])) {
UI::exitError(getMLText("search"),getMLText("invalid_create_date_end"));
}
}}} */
/* Revision date {{{ */
$revisionstartts = null;
$revisionstartdate = array();
$revisionendts = null;
$revisionenddate = array();
if(!empty($_GET["revisiondatestart"])) {
$revisionstartts = makeTsFromDate($_GET["revisiondatestart"]);
$revised['from'] = null;
$revised['to'] = null;
if(!empty($get["revisiondatestart"])) {
$revisionstartts = makeTsFromDate($get["revisiondatestart"]);
$revisionstartdate = array('year'=>(int)date('Y', $revisionstartts), 'month'=>(int)date('m', $revisionstartts), 'day'=>(int)date('d', $revisionstartts), 'hour'=>0, 'minute'=>0, 'second'=>0);
if (!checkdate($revisionstartdate['month'], $revisionstartdate['day'], $revisionstartdate['year'])) {
UI::exitError(getMLText("search"),getMLText("invalid_revision_date_start"));
}
$revised['from'] = $revisionstartts;
}
if(!empty($_GET["revisiondateend"])) {
$revisionendts = makeTsFromDate($_GET["revisiondateend"]);
if(!empty($get["revisiondateend"])) {
$revisionendts = makeTsFromDate($get["revisiondateend"]);
$revisionenddate = array('year'=>(int)date('Y', $revisionendts), 'month'=>(int)date('m', $revisionendts), 'day'=>(int)date('d', $revisionendts), 'hour'=>23, 'minute'=>59, 'second'=>59);
if (!checkdate($revisionenddate['month'], $revisionenddate['day'], $revisionenddate['year'])) {
UI::exitError(getMLText("search"),getMLText("invalid_revision_date_end"));
}
$revised['to'] = $revisionendts;
}
/* }}} */
/* Status date {{{ */
$statusstartdate = array();
$statusenddate = array();
if(!empty($_GET["statusdatestart"])) {
$statusstartts = makeTsFromDate($_GET["statusdatestart"]);
if(!empty($get["statusdatestart"])) {
$statusstartts = makeTsFromDate($get["statusdatestart"]);
$statusstartdate = array('year'=>(int)date('Y', $statusstartts), 'month'=>(int)date('m', $statusstartts), 'day'=>(int)date('d', $statusstartts), 'hour'=>0, 'minute'=>0, 'second'=>0);
}
if ($statusstartdate && !checkdate($statusstartdate['month'], $statusstartdate['day'], $statusstartdate['year'])) {
UI::exitError(getMLText("search"),getMLText("invalid_status_date_start"));
}
if(!empty($_GET["statusdateend"])) {
$statusendts = makeTsFromDate($_GET["statusdateend"]);
if(!empty($get["statusdateend"])) {
$statusendts = makeTsFromDate($get["statusdateend"]);
$statusenddate = array('year'=>(int)date('Y', $statusendts), 'month'=>(int)date('m', $statusendts), 'day'=>(int)date('d', $statusendts), 'hour'=>23, 'minute'=>59, 'second'=>59);
}
if ($statusenddate && !checkdate($statusenddate['month'], $statusenddate['day'], $statusenddate['year'])) {
@ -574,15 +526,15 @@ if($fullsearch) {
/* Expiration date {{{ */
$expstartdate = array();
$expenddate = array();
if(!empty($_GET["expirationstart"])) {
$expstartts = makeTsFromDate($_GET["expirationstart"]);
if(!empty($get["expirationstart"])) {
$expstartts = makeTsFromDate($get["expirationstart"]);
$expstartdate = array('year'=>(int)date('Y', $expstartts), 'month'=>(int)date('m', $expstartts), 'day'=>(int)date('d', $expstartts), 'hour'=>0, 'minute'=>0, 'second'=>0);
if (!checkdate($expstartdate['month'], $expstartdate['day'], $expstartdate['year'])) {
UI::exitError(getMLText("search"),getMLText("invalid_expiration_date_start"));
}
}
if(!empty($_GET["expirationend"])) {
$expendts = makeTsFromDate($_GET["expirationend"]);
if(!empty($get["expirationend"])) {
$expendts = makeTsFromDate($get["expirationend"]);
$expenddate = array('year'=>(int)date('Y', $expendts), 'month'=>(int)date('m', $expendts), 'day'=>(int)date('d', $expendts), 'hour'=>23, 'minute'=>59, 'second'=>59);
if (!checkdate($expenddate['month'], $expenddate['day'], $expenddate['year'])) {
UI::exitError(getMLText("search"),getMLText("invalid_expiration_date_end"));
@ -590,45 +542,9 @@ if($fullsearch) {
}
/* }}} */
// status
$status = isset($_GET['status']) ? $_GET['status'] : array();
/*
$status = array();
if (isset($_GET["draft"])){
$status[] = S_DRAFT;
}
if (isset($_GET["pendingReview"])){
$status[] = S_DRAFT_REV;
}
if (isset($_GET["pendingApproval"])){
$status[] = S_DRAFT_APP;
}
if (isset($_GET["inWorkflow"])){
$status[] = S_IN_WORKFLOW;
}
if (isset($_GET["released"])){
$status[] = S_RELEASED;
}
if (isset($_GET["rejected"])){
$status[] = S_REJECTED;
}
if (isset($_GET["inrevision"])){
$status[] = S_IN_REVISION;
}
if (isset($_GET["obsolete"])){
$status[] = S_OBSOLETE;
}
if (isset($_GET["expired"])){
$status[] = S_EXPIRED;
}
if (isset($_GET["needs_correction"])){
$status[] = S_NEEDS_CORRECTION;
}
*/
$reception = array();
if (isset($_GET["reception"])){
$reception = $_GET["reception"];
if (isset($get["reception"])){
$reception = $get["reception"];
}
/* Do not search for folders if result shall be filtered by status.
@ -640,8 +556,8 @@ if($fullsearch) {
// if($status)
// $resultmode = 0x01;
if (isset($_GET["attributes"]))
$attributes = $_GET["attributes"];
if (isset($get["attributes"]))
$attributes = $get["attributes"];
else
$attributes = array();
@ -661,38 +577,20 @@ if($fullsearch) {
}
}
//
// Get the page number to display. If the result set contains more than
// 25 entries, it is displayed across multiple pages.
//
// This requires that a page number variable be used to track which page the
// user is interested in, and an extra clause on the select statement.
//
// Default page to display is always one.
$pageNumber=1;
// $limit = 15;
if (isset($_GET["pg"])) {
if (is_numeric($_GET["pg"]) && $_GET["pg"]>0) {
$pageNumber = (int) $_GET["pg"];
}
elseif (!strcasecmp($_GET["pg"], "all")) {
$pageNumber = "all";
}
}
// ---------------- Start searching -----------------------------------------
$startTime = getTime();
$resArr = $dms->search(array(
'query'=>$query,
'limit'=>0,
'offset'=>0 /*$limit, ($pageNumber-1)*$limit*/,
'offset'=>0,
'logicalmode'=>$mode,
'searchin'=>$searchin,
'startFolder'=>$startFolder,
'owner'=>$ownerobjs,
'status'=>$status,
'creationstartdate'=>$created['from'], //$createstartdate ? $createstartdate : array(),
'creationenddate'=>$created['to'], //$createenddate ? $createenddate : array(),
'mimetype'=>$mimetype,
'creationstartdate'=>$created['from'],
'creationenddate'=>$created['to'],
'modificationstartdate'=>$modified['from'],
'modificationenddate'=>$modified['to'],
'filesizestart'=>$filesize['from'],
@ -715,7 +613,7 @@ if($fullsearch) {
$entries = array();
$fcount = 0;
// if(!isset($_GET['action']) || $_GET['action'] != 'export') {
// if(!isset($get['action']) || $get['action'] != 'export') {
if($resArr['folders']) {
foreach ($resArr['folders'] as $entry) {
if ($entry->getAccessMode($user) >= M_READ) {
@ -738,7 +636,7 @@ if($fullsearch) {
}
}
$totalPages = 1;
if ((!isset($_GET['action']) || $_GET['action'] != 'export') /*&& (!isset($_GET["pg"]) || strcasecmp($_GET["pg"], "all"))*/) {
if ((!isset($get['action']) || $get['action'] != 'export') /*&& (!isset($get["pg"]) || strcasecmp($get["pg"], "all"))*/) {
$totalPages = (int) (count($entries)/$limit);
if(count($entries)%$limit)
$totalPages++;
@ -772,7 +670,8 @@ if($settings->_showSingleSearchHit && count($entries) == 1) {
$view->setParam('accessobject', $accessop);
$view->setParam('query', $query);
$view->setParam('includecontent', $includecontent);
$view->setParam('marks', isset($_GET['marks']) ? $_GET['marks'] : array());
$view->setParam('skipdefaultcols', $skipdefaultcols);
$view->setParam('marks', isset($get['marks']) ? $get['marks'] : array());
$view->setParam('newowner', $newowner);
$view->setParam('newreviewer', $newreviewer);
$view->setParam('newapprover', $newapprover);
@ -784,7 +683,7 @@ if($settings->_showSingleSearchHit && count($entries) == 1) {
$view->setParam('pagenumber', $pageNumber);
$view->setParam('limit', $limit);
$view->setParam('searchtime', $searchTime);
$view->setParam('urlparams', $_GET);
$view->setParam('urlparams', $get);
$view->setParam('cachedir', $settings->_cacheDir);
$view->setParam('onepage', $settings->_onePageMode); // do most navigation by reloading areas of pages with ajax
$view->setParam('showtree', showtree());
@ -797,21 +696,21 @@ if($settings->_showSingleSearchHit && count($entries) == 1) {
$view->setParam('facetsearch', $facetsearch);
$view->setParam('mode', isset($mode) ? $mode : '');
$view->setParam('orderby', isset($orderby) ? $orderby : '');
$view->setParam('defaultsearchmethod', !empty($_GET["fullsearch"]) || $settings->_defaultSearchMethod);
$view->setParam('defaultsearchmethod', !empty($get["fullsearch"]) || $settings->_defaultSearchMethod);
$view->setParam('resultmode', isset($resultmode) ? $resultmode : '');
$view->setParam('searchin', isset($searchin) ? $searchin : array());
$view->setParam('startfolder', isset($startFolder) ? $startFolder : null);
$view->setParam('owner', $owner);
$view->setParam('createstartdate', $createstartts);
$view->setParam('createenddate', $createendts);
$view->setParam('createstartdate', $created['from']);
$view->setParam('createenddate', $created['to']);
$view->setParam('created', $created);
$view->setParam('revisionstartdate', !empty($revisionstartdate) ? getReadableDate($revisionstartts) : '');
$view->setParam('revisionenddate', !empty($revisionenddate) ? getReadableDate($revisionendts) : '');
$view->setParam('modifystartdate', $modifystartts);
$view->setParam('modifyenddate', $modifyendts);
$view->setParam('modifystartdate', $modified['from']);
$view->setParam('modifyenddate', $modified['to']);
$view->setParam('modified', $modified);
$view->setParam('filesizestart', $filesizestart);
$view->setParam('filesizeend', $filesizeend);
$view->setParam('filesizestart', $filesize['from']);
$view->setParam('filesizeend', $filesize['to']);
$view->setParam('filesize', $filesize);
$view->setParam('expstartdate', !empty($expstartdate) ? getReadableDate($expstartts) : '');
$view->setParam('expenddate', !empty($expenddate) ? getReadableDate($expendts) : '');
@ -839,7 +738,7 @@ if($settings->_showSingleSearchHit && count($entries) == 1) {
$view->setParam('xsendfile', $settings->_enableXsendfile);
$view->setParam('reception', $reception);
$view->setParam('showsinglesearchhit', $settings->_showSingleSearchHit);
$view($_GET);
$view($get);
exit;
}
}

View File

@ -42,6 +42,7 @@ if($view) {
$view->setParam('settings', $settings);
$view->setParam('extmgr', $extMgr);
$view->setParam('currenttab', (isset($_REQUEST['currenttab']) ? $_REQUEST['currenttab'] : ''));
$view->setParam('extname', (isset($_REQUEST['extensionname']) ? $_REQUEST['extensionname'] : ''));
$view->setParam('allusers', $users);
$view->setParam('allgroups', $groups);
$view->setParam('accessobject', $accessop);

View File

@ -161,7 +161,11 @@ $(document).ready( function() {
foreach($res['docs'] as $document) {
$extracontent = array();
$extracontent['below_title'] = $this->getListRowPath($document);
echo $this->documentListRow($document, $previewer, false, 0, $extracontent);
$txt = $this->callHook('documentListItem', $document, $previewer, false, 'attributemgr', $extracontent);
if(is_string($txt))
echo $txt;
else
echo $this->documentListRow($document, $previewer, false, 0, $extracontent);
}
echo "</tbody>\n</table>\n";
@ -176,10 +180,14 @@ $(document).ready( function() {
print "<th>".getMLText("action")."</th>\n";
print "</tr>\n</thead>\n<tbody>\n";
foreach($res['contents'] as $content) {
$doc = $content->getDocument();
$document = $content->getDocument();
$extracontent = array();
$extracontent['below_title'] = $this->getListRowPath($doc);
echo $this->documentListRow($doc, $previewer, false, 0, $extracontent);
$txt = $this->callHook('documentListItem', $document, $previewer, false, 'attributemgr', $extracontent);
if(is_string($txt))
echo $txt;
else
echo $this->documentListRow($document, $previewer, false, 0, $extracontent);
}
print "</tbody></table>";
}

View File

@ -464,7 +464,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);;
echo "<li class=\"active\">";
else
echo "<li>";
echo "<a href=\"".$this->params['settings']->_httpRoot."op/op.SetLanguage.php?lang=".$currLang."&referer=".$_SERVER["REQUEST_URI"]."\">";
echo "<a href=\"".$this->params['settings']->_httpRoot."op/op.SetLanguage.php?lang=".$currLang."&referer=".urlencode(encryptData($this->params['settings']->_encryptionKey, $_SERVER["REQUEST_URI"]))."\">";
echo getMLText($currLang)."</a></li>\n";
}
echo " </ul>\n";
@ -563,7 +563,11 @@ background-image: linear-gradient(to bottom, #882222, #111111);;
echo " <a class=\"dropdown-toggle\" data-toggle=\"dropdown\">".$menuitem['label']." <i class=\"fa fa-caret-down\"></i></a>\n";
echo " <ul class=\"dropdown-menu\" role=\"menu\">\n";
foreach($menuitem['children'] as $submenuitem) {
echo " <li><a href=\"".$submenuitem['link']."\"".(isset($submenuitem['target']) ? ' target="'.$submenuitem['target'].'"' : '').">".$submenuitem['label']."</a></li>\n";
echo " <li><a href=\"".$submenuitem['link']."\"".(isset($submenuitem['target']) ? ' target="'.$submenuitem['target'].'"' : '');
if(!empty($submenuitem['attributes']))
foreach($submenuitem['attributes'] as $attr)
echo ' '.$attr[0].'="'.$attr[1].'"';
echo ">".$submenuitem['label']."</a></li>\n";
}
echo " </ul>\n";
} else {
@ -768,6 +772,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);;
private function folderNavigationBar($folder) { /* {{{ */
$dms = $this->params['dms'];
$session = $this->params['session'];
$enableClipboard = $this->params['enableclipboard'];
$accessobject = $this->params['accessobject'];
if (!is_object($folder) || !$folder->isType('folder')) {
@ -812,7 +817,10 @@ background-image: linear-gradient(to bottom, #882222, #111111);;
$menuitems['edit_folder_notify'] = array('link'=>$this->params['settings']->_httpRoot."out/out.FolderNotify.php?folderid=". $folderID ."&showtree=". showtree(), 'label'=>getMLText('edit_folder_notify'));
}
if($enableClipboard) {
$menuitems['add_to_clipboard'] = array('class'=>'addtoclipboard', 'attributes'=>array(['rel', 'F'.$folder->getId()], ['msg', getMLText('splash_added_to_clipboard')], ['title', getMLText("add_to_clipboard")]), 'label'=>getMLText("add_to_clipboard"));
if($session->isOnClipboard($folder))
$menuitems['remove_from_clipboard'] = array('class'=>'removefromclipboard', 'attributes'=>array(['rel', 'F'.$folder->getId()], ['msg', getMLText('splash_removed_from_clipboard')], ['title', getMLText("remove_from_clipboard")]), 'label'=>getMLText("remove_from_clipboard"));
else
$menuitems['add_to_clipboard'] = array('class'=>'addtoclipboard', 'attributes'=>array(['rel', 'F'.$folder->getId()], ['msg', getMLText('splash_added_to_clipboard')], ['title', getMLText("add_to_clipboard")]), 'label'=>getMLText("add_to_clipboard"));
}
if ($accessobject->check_view_access('Indexer') && $this->params['enablefullsearch']) {
$menuitems['index_folder'] = array('link'=>$this->params['settings']->_httpRoot."out/out.Indexer.php?folderid=". $folderID."&showtree=".showtree(), 'label'=>getMLText('index_folder'));
@ -835,6 +843,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);;
} /* }}} */
private function documentNavigationBar($document) { /* {{{ */
$session = $this->params['session'];
$accessobject = $this->params['accessobject'];
$enableClipboard = $this->params['enableclipboard'];
$accessMode = $document->getAccessMode($this->params['user']);
@ -896,7 +905,10 @@ background-image: linear-gradient(to bottom, #882222, #111111);;
$menuitems['edit_document_notify'] = array('link'=>$this->params['settings']->_httpRoot."out/out.DocumentNotify". $docid, 'label'=>getMLText('edit_document_notify'));
}
if($enableClipboard) {
$menuitems['add_to_clipboard'] = array('class'=>'addtoclipboard', 'attributes'=>array(['rel', 'D'.$document->getId()], ['msg', getMLText('splash_added_to_clipboard')], ['title', getMLText("add_to_clipboard")]), 'label'=>getMLText("add_to_clipboard"));
if($session->isOnClipboard($document))
$menuitems['remove_from_clipboard'] = array('class'=>'removefromclipboard', 'attributes'=>array(['rel', 'D'.$document->getId()], ['msg', getMLText('splash_removed_from_clipboard')], ['title', getMLText("remove_from_clipboard")]), 'label'=>getMLText("remove_from_clipboard"));
else
$menuitems['add_to_clipboard'] = array('class'=>'addtoclipboard', 'attributes'=>array(['rel', 'D'.$document->getId()], ['msg', getMLText('splash_added_to_clipboard')], ['title', getMLText("add_to_clipboard")]), 'label'=>getMLText("add_to_clipboard"));
}
if ($accessobject->check_view_access('TransferDocument')) {
$menuitems['transfer_document'] = array('link'=>$this->params['settings']->_httpRoot."out/out.TransferDocument". $docid, 'label'=>getMLText('transfer_document'));
@ -1623,9 +1635,9 @@ function getOverallStatusIcon($status) { /* {{{ */
*/
function getModalBox($config) { /* {{{ */
$content = '
<div class="modal modal-wide hide" id="'.$config['id'].'" tabindex="-1" role="dialog" aria-labelledby="'.$config['id'].'Label" aria-hidden="true">
<div class="modal modal-wide hide" id="'.$config['id'].'" tabindex="-1" role="dialog" aria-labelledby="'.$config['id'].'Label">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<button type="button" class="close" data-dismiss="modal">×</button>
<h3 id="'.$config['id'].'Label">'.$config['title'].'</h3>
</div>
<div class="modal-body">
@ -1640,7 +1652,7 @@ function getOverallStatusIcon($status) { /* {{{ */
';
if($config['buttons']) {
foreach($config['buttons'] as $button)
$content .= '<button class="btn'.(!empty($button['id']) ? ' btn-primary" id="'.$button['id'].'"': '" ').'data-dismiss="modal" aria-hidden="true">'.$button['title'].'</button>';
$content .= '<button class="btn'.(!empty($button['id']) ? ' btn-primary" id="'.$button['id'].'"': '" ').'data-dismiss="modal">'.$button['title'].'</button>';
}
$content .= '
</div>
@ -2100,6 +2112,15 @@ $(document).ready(function() {
echo self::getAttributeEditField($attrdef, $attribute, $fieldname, $norequire, $namepostfix, $alwaysmultiple);
} /* }}} */
/**
* Return html code for an input/select field of an attribute
*
* The passed attribute ($attribute) can either be an object of type
* SeedDMS_Core_Attribute, scalar or an array. A scalar or array is
* passed when the method is called to create the search form. In that
* case $attribute has the value from the post data after submitting the
* search form.
*/
function getAttributeEditField($attrdef, $attribute, $fieldname='attributes', $norequire=false, $namepostfix='', $alwaysmultiple=false) { /* {{{ */
$dms = $this->params['dms'];
$attr_id = $fieldname.'_'.$attrdef->getId().($namepostfix ? '_'.$namepostfix : '');
@ -2136,10 +2157,19 @@ $(document).ready(function() {
$content .= $this->getDocumentChooserHtml("attr".$attrdef->getId(), M_READ, -1, $target, $attr_name);
break;
case SeedDMS_Core_AttributeDefinition::type_user:
$target = $attribute ? $attribute->getValueAsArray() : [];
$objvalue = [];
foreach($target as $t)
$objvalue[] = $t->getId();
if($attribute) {
if(is_object($attribute)) {
$target = $attribute->getValueAsArray();
foreach($target as $t)
$objvalue[] = $t->getId();
} elseif(is_array($attribute)) {
foreach($attribute as $t)
$objvalue[] = $t;
} else {
$objvalue[] = $attribute;
}
}
$users = $dms->getAllUsers();
if($users) {
$allowempty = $attrdef->getMinValues() == 0;
@ -2159,10 +2189,19 @@ $(document).ready(function() {
}
break;
case SeedDMS_Core_AttributeDefinition::type_group:
$target = $attribute ? $attribute->getValueAsArray() : [];
$objvalue = [];
foreach($target as $t)
$objvalue[] = $t->getId();
if($attribute) {
if(is_object($attribute)) {
$target = $attribute->getValueAsArray();
foreach($target as $t)
$objvalue[] = $t->getId();
} elseif(is_array($attribute)) {
foreach($attribute as $t)
$objvalue[] = $t;
} else {
$objvalue[] = $attribute;
}
}
$groups = $dms->getAllGroups();
if($groups) {
$allowempty = $attrdef->getMinValues() == 0;
@ -2656,9 +2695,9 @@ $(function() {
*
* @param string text
*/
function printInlineEdit($text, $object){ /* {{{ */
function printInlineEditDocumentName($text, $object){ /* {{{ */
if(!empty($this->params['settings']->_inlineEditing)) {
echo "<span class=\"editable\" contenteditable=\"true\"";
echo "<span class=\"editdocname editable\" contenteditable=\"true\"";
if($object->isType('document'))
echo " data-document=\"".$object->getId()."\" data-formtoken=\"".createFormKey('setdocumentname')."\"";
echo ">".$text;
@ -3277,6 +3316,7 @@ $('body').on('click', '[id^=\"table-row-folder\"] td:nth-child(2)', function(ev)
function documentListRowAction($document, $previewer, $skipcont=false, $version=0, $extracontent=array()) { /* {{{ */
$user = $this->params['user'];
$session = $this->params['session'];
$enableClipboard = $this->params['enableclipboard'];
$accessop = $this->params['accessobject'];
$onepage = $this->params['onepage'];
@ -3306,7 +3346,10 @@ $('body').on('click', '[id^=\"table-row-folder\"] td:nth-child(2)', function(ev)
$actions['document_access'] = $this->printAccessButton($document, true);
}
if($enableClipboard) {
$actions['add_to_clipboard'] = '<a class="addtoclipboard" rel="D'.$docID.'" msg="'.getMLText('splash_added_to_clipboard').'" title="'.getMLText("add_to_clipboard").'"><i class="fa fa-copy"></i></a>';
if($session->isOnClipboard($document))
$actions['remove_from_clipboard'] = '<a class="removefromclipboard" rel="D'.$docID.'" msg="'.getMLText('splash_removed_from_clipboard').'" title="'.getMLText("remove_from_clipboard").'"><i class="fa fa-copy"></i></a>';
else
$actions['add_to_clipboard'] = '<a class="addtoclipboard" rel="D'.$docID.'" msg="'.getMLText('splash_added_to_clipboard').'" title="'.getMLText("add_to_clipboard").'"><i class="fa fa-copy"></i></a>';
}
if($onepage)
$actions['view_document'] = '<a href="'.$this->params['settings']->_httpRoot.'out/out.ViewDocument.php?documentid='.$docID.'" title="'.getMLText("view_document").'"><i class="fa fa-eye"></i></a>';
@ -3378,7 +3421,7 @@ $('body').on('click', '[id^=\"table-row-folder\"] td:nth-child(2)', function(ev)
$extracontent = array_merge($extracontent, $ec);
$content .= "<td>";
if (file_exists($dms->contentDir . $latestContent->getPath())) {
if ($latestContent->exists()) {
$previewhtml = $this->callHook('documentListPreview', $previewer, $document, $latestContent);
if(is_string($previewhtml))
$content .= $previewhtml;
@ -3512,6 +3555,7 @@ $('body').on('click', '[id^=\"table-row-folder\"] td:nth-child(2)', function(ev)
function folderListRowAction($subFolder, $skipcont=false, $extracontent=array()) { /* {{{ */
$dms = $this->params['dms'];
$user = $this->params['user'];
$session = $this->params['session'];
// $folder = $this->params['folder'];
$showtree = $this->params['showtree'];
$enableRecursiveCount = $this->params['enableRecursiveCount'];
@ -3544,7 +3588,10 @@ $('body').on('click', '[id^=\"table-row-folder\"] td:nth-child(2)', function(ev)
$actions['folder_access'] = $this->printAccessButton($subFolder, true);
}
if($enableClipboard) {
$actions['add_to_clipboard'] = '<a class="addtoclipboard" rel="F'.$subFolder->getID().'" msg="'.getMLText('splash_added_to_clipboard').'" title="'.getMLText("add_to_clipboard").'"><i class="fa fa-copy"></i></a>';
if($session->isOnClipboard($subFolder))
$actions['add_to_clipboard'] = '<a class="removefromclipboard" rel="F'.$subFolder->getID().'" msg="'.getMLText('splash_removed_from_clipboard').'" title="'.getMLText("remove_from_clipboard").'"><i class="fa fa-copy"></i></a>';
else
$actions['add_to_clipboard'] = '<a class="addtoclipboard" rel="F'.$subFolder->getID().'" msg="'.getMLText('splash_added_to_clipboard').'" title="'.getMLText("add_to_clipboard").'"><i class="fa fa-copy"></i></a>';
}
if($onepage)
$actions['view_folder'] = '<a href="'.$this->params['settings']->_httpRoot.'out/out.ViewFolder.php?folderid='.$subFolder->getID().'" title="'.getMLText("view_folder").'"><i class="fa fa-eye"></i></a>';

View File

@ -244,11 +244,49 @@ $(document).ready( function() {
return true;
} /* }}} */
protected function getSearchUrl($type, $item) {
$dms = $this->params['dms'];
$settings = $this->params['settings'];
$searchurl = null;
switch($type) {
case 'docsperuser':
case 'sizeperuser':
$searchurl = $settings->_httpRoot.'out/out.Search.php?fullsearch=0&query=&mode=1&orderby=&resultmode=1&owner%5B%5D='.$item['res'];
break;
case 'foldersperuser':
$searchurl = $settings->_httpRoot.'out/out.Search.php?fullsearch=0&query=&mode=1&orderby=&resultmode=2&owner%5B%5D='.$item['res'];
break;
case 'docspercategory':
$searchurl = $settings->_httpRoot.'out/out.Search.php?fullsearch=0&query=&mode=1&orderby=&resultmode=1&category%5B%5D='.$item['res'];
break;
case 'docsperstatus':
$searchurl = $settings->_httpRoot.'out/out.Search.php?fullsearch=0&query=&mode=1&orderby=&resultmode=1&status%5B%5D='.$item['res'];
break;
case 'docspermonth':
case 'sizepermonth':
$startmonth = $item['key'].'-01';
$endmonth = date('Y-m-t', strtotime($startmonth));
$searchurl = $settings->_httpRoot.'out/out.Search.php?fullsearch=0&query=&mode=1&orderby=&resultmode=1&created%5Bfrom%5D='.$startmonth.'&created%5Bto%5D='.$endmonth;
break;
case 'docspermimetype':
$searchurl = $settings->_httpRoot.'out/out.Search.php?fullsearch=0&query=&mode=1&orderby=&resultmode=1&mimetype%5B%5D='.urlencode($item['key']);
break;
case 'docsaccumulated':
$start = date('Y-m-d', $item['key']/1000);
$end = date('Y-m-d', $item['key']/1000 + 86400);
$searchurl = $settings->_httpRoot.'out/out.Search.php?fullsearch=0&query=&mode=1&orderby=&resultmode=1&created%5Bfrom%5D='.$start.'&created%5Bto%5D='.$end;
break;
}
return $searchurl;
}
public function show() { /* {{{ */
$dms = $this->params['dms'];
$user = $this->params['user'];
$data = $this->params['data'];
$type = $this->params['type'];
$quota = $this->params['quota'];
$this->htmlAddHeader(
'<script type="text/javascript" src="../styles/bootstrap/flot/jquery.flot.min.js"></script>'."\n".
@ -272,7 +310,7 @@ $(document).ready( function() {
$this->contentContainerEnd();
$this->columnEnd();
if(in_array($type, array('docspermonth', 'docsaccumulated'))) {
if(in_array($type, array('sizepermonth', 'docspermonth', 'docsaccumulated'))) {
$this->columnStart(9);
} else {
$this->columnStart(6);
@ -285,9 +323,14 @@ $(document).ready( function() {
$this->contentContainerEnd();
echo "<table class=\"table table-condensed table-sm table-hover\">";
echo "<tr>";
echo "<th>".getMLText('chart_'.$type.'_title')."</th><th>".getMLText('total')."</th>";
if(in_array($type, array('docspermonth', 'docsaccumulated')))
echo "<th>".getMLText('chart_'.$type.'_title')."</th>";
echo "<th>".getMLText('total')."</th>";
$types = array('docspermonth', 'docsaccumulated');
if($quota)
$types[] = 'sizeperuser';
if(in_array($type, $types))
echo "<th></th>";
echo "<th>Search</th>";
echo "</tr>";
$total = 0;
switch($type) {
@ -304,6 +347,11 @@ $(document).ready( function() {
echo "<td>".$item['total']."</td>";
if(in_array($type, array('docspermonth')))
echo "<td>".sprintf('%+d', $item['total']-$oldtotal)."</td>";
$searchurl = $this->getSearchUrl($type, $item);
if($searchurl)
echo "<td><a href=\"".$searchurl."\"><i class=\"fa fa-search\"></i></a></td>";
else
echo "<td></td>";
echo "</tr>";
$oldtotal = $item['total'];
$total += $item['total'];
@ -317,15 +365,46 @@ $(document).ready( function() {
echo "<td>".getReadableDate($item['key']/1000)."</td>";
echo "<td>".$item['total']."</td>";
echo "<td>".sprintf('%+d', $item['total']-$oldtotal)."</td>";
$searchurl = $this->getSearchUrl($type, $item);
if($searchurl)
echo "<td><a href=\"".$searchurl."\"><i class=\"fa fa-search\"></i></a></td>";
else
echo "<td></td>";
echo "</tr>";
$oldtotal = $item['total'];
$total += $item['total'];
}
break;
case 'sizeperuser':
foreach($data as $item) {
$currUser = $dms->getUser($item['res']);
echo "<tr><td>".htmlspecialchars($item['key'])."</td>";
echo "<td>".SeedDMS_Core_File::format_filesize((int) $item['total'])."</td>";
if($quota) {
echo "<td width=\"100\">";
$qt = $currUser->getQuota() ? $currUser->getQuota() : $quota;
echo $this->getProgressBar($currUser->getUsedDiskSpace(), $qt);
echo "</td>";
}
$searchurl = $this->getSearchUrl($type, $item);
if($searchurl)
echo "<td><a href=\"".$searchurl."\"><i class=\"fa fa-search\"></i></a></td>";
else
echo "<td></td>";
echo "</tr>";
$total += $item['total'];
}
echo "<tr><th></th><th>".SeedDMS_Core_File::format_filesize($total)."<th></tr>";
break;
case 'sizepermonth':
foreach($data as $item) {
echo "<tr><td>".htmlspecialchars($item['key'])."</td><td>".SeedDMS_Core_File::format_filesize((int) $item['total'])."</td></tr>";
echo "<tr><td>".htmlspecialchars($item['key'])."</td><td>".SeedDMS_Core_File::format_filesize((int) $item['total'])."</td>";
$searchurl = $this->getSearchUrl($type, $item);
if($searchurl)
echo "<td><a href=\"".$searchurl."\"><i class=\"fa fa-search\"></i></a></td>";
else
echo "<td></td>";
echo "</tr>";
$total += $item['total'];
}
echo "<tr><th></th><th>".SeedDMS_Core_File::format_filesize($total)."<th></tr>";
@ -334,7 +413,7 @@ $(document).ready( function() {
echo "</table>";
$this->columnEnd();
if(!in_array($type, array('docspermonth', 'docsaccumulated'))) {
if(!in_array($type, array('sizepermonth', 'docspermonth', 'docsaccumulated'))) {
$this->columnStart(3);
$this->contentHeading(getMLText('legend'));
$this->contentContainerStart('', 'legend');

View File

@ -52,12 +52,12 @@ class SeedDMS_View_Clipboard extends SeedDMS_Theme_Style {
$subitems = [];
foreach($clipboard['folders'] as $folderid) {
if($folder = $this->params['dms']->getFolder($folderid)) {
$subitems[] = array('label'=>'<i class="fa fa-folder-o"></i> '.$folder->getName(), 'link'=>$this->params['settings']->_httpRoot."out/out.ViewFolder.php?folderid=".$folder->getID(), 'class'=>"table-row-folder droptarget", 'attributes'=>array(array('data-droptarget', "folder_".$folder->getID()), array('rel', "folder_".$folder->getID()), array('data-name', htmlspecialchars($folder->getName(), ENT_QUOTES))));
$subitems[] = array('label'=>'<i class="fa fa-folder-o"></i> '.htmlspecialchars($folder->getName()), 'link'=>$this->params['settings']->_httpRoot."out/out.ViewFolder.php?folderid=".$folder->getID(), 'class'=>"table-row-folder droptarget", 'attributes'=>array(array('data-droptarget', "folder_".$folder->getID()), array('rel', "folder_".$folder->getID()), array('data-name', htmlspecialchars($folder->getName(), ENT_QUOTES))));
}
}
foreach($clipboard['docs'] as $docid) {
if($document = $this->params['dms']->getDocument($docid))
$subitems[] = array('label'=>'<i class="fa fa-file"></i> '.$document->getName(), 'link'=>$this->params['settings']->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(), 'class'=>"table-row-document droptarget", 'attributes'=>array(array('data-droptarget', "document_".$document->getID()), array('rel', "document_".$document->getID()), array('formtoken', createFormKey('')), array('data-name', htmlspecialchars($document->getName(), ENT_QUOTES))));
$subitems[] = array('label'=>'<i class="fa fa-file"></i> '.htmlspecialchars($document->getName()), 'link'=>$this->params['settings']->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID(), 'class'=>"table-row-document droptarget", 'attributes'=>array(array('data-droptarget', "document_".$document->getID()), array('rel', "document_".$document->getID()), array('formtoken', createFormKey('')), array('data-name', htmlspecialchars($document->getName(), ENT_QUOTES))));
}
if((count($clipboard['docs']) + count($clipboard['folders'])) > 0) {
$subitems[] = array('divider'=>true);

View File

@ -353,7 +353,7 @@ class SeedDMS_View_DocumentVersionDetail extends SeedDMS_Theme_Style {
print "<li>".$arr[0].": ".$arr[1]."</li>\n";
} else {
$attrdef = $attribute->getAttributeDefinition();
print "<li>".htmlspecialchars($attrdef->getName()).": ".htmlspecialchars(implode(', ', $attribute->getValueAsArray()))."</li>\n";
print "<li>".htmlspecialchars($attrdef->getName()).": ".htmlspecialchars($attribute->getValueAsString())."</li>\n";
}
}
}

View File

@ -45,6 +45,7 @@ class SeedDMS_View_ExpiredDocuments extends SeedDMS_Theme_Style {
function show() { /* {{{ */
$dms = $this->params['dms'];
$user = $this->params['user'];
$settings = $this->params['settings'];
$orderby = $this->params['orderby'];
$orderdir = $this->params['orderdir'];
$conversionmgr = $this->params['conversionmgr'];
@ -56,6 +57,7 @@ class SeedDMS_View_ExpiredDocuments extends SeedDMS_Theme_Style {
$days = $this->params['days'];
$startts = $this->params['startts'];
$endts = $this->params['endts'];
$seluser = $this->params['seluser'];
$db = $dms->getDB();
$previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth, $timeout, $xsendfile);
@ -91,6 +93,21 @@ class SeedDMS_View_ExpiredDocuments extends SeedDMS_Theme_Style {
getMLText("enddate"),
$this->getDateChooser(getReadableDate($endts), "enddate", $this->params['session']->getLanguage(), '', '')
);
$allUsers = $dms->getAllUsers($settings->_sortUsersInList);
foreach ($allUsers as $currUser) {
if (!$currUser->isGuest())
$options[] = array($currUser->getID(), htmlspecialchars($currUser->getLogin()), $seluser && ($seluser->getId() == $currUser->getId()), array(array('data-subtitle', htmlspecialchars($currUser->getFullName()))));
}
$this->formField(
getMLText("user"),
array(
'element'=>'select',
'name'=>'seluserid',
'class'=>'chzn-select',
'options'=>$options,
'attributes'=>array(array('data-allow-clear', 'true'), array('data-placeholder', getMLText('select_user'))),
)
);
$this->formSubmit("<i class=\"fa fa-refresh\"></i> ".getMLText('update'));
?>
</form>
@ -99,7 +116,7 @@ class SeedDMS_View_ExpiredDocuments extends SeedDMS_Theme_Style {
$this->columnStart(8);
if(is_numeric($days)) {
$docs = $dms->getDocumentsExpired($days, null, $orderby, $orderdir, true);
$docs = $dms->getDocumentsExpired($days, $seluser, $orderby, $orderdir, true);
$this->contentHeading(''.$days);
} else {
$d = [];
@ -107,7 +124,7 @@ class SeedDMS_View_ExpiredDocuments extends SeedDMS_Theme_Style {
$d['start'] = $startts;
if($endts)
$d['end'] = $endts+86400;
$docs = $dms->getDocumentsExpired($d, null, $orderby, $orderdir, true);
$docs = $dms->getDocumentsExpired($d, $seluser, $orderby, $orderdir, true);
$this->contentHeading(getReadableDate($startts)." - ".getReadableDate($endts));
}
if($docs) {
@ -137,4 +154,3 @@ class SeedDMS_View_ExpiredDocuments extends SeedDMS_Theme_Style {
$this->htmlEndPage();
} /* }}} */
}
?>

View File

@ -55,6 +55,25 @@ class SeedDMS_View_ExtensionMgr extends SeedDMS_Theme_Style {
});
*/
});
$('body').on('click', '#btn_save_config', function(ev){
var element = $(this);
ev.preventDefault();
$.ajax({url: '../op/op.Settings.php',
type: 'POST',
dataType: "json",
data: data = $('#formconfig').serializeArray(),
success: function(data) {
noty({
text: data.msg,
type: (data.error) ? 'error' : 'success',
dismissQueue: true,
layout: 'topRight',
theme: 'defaultTheme',
timeout: 1500,
});
}
});
});
$('body').on('click', 'a.toggle', function(ev){
// $('a.toggle').click(function(ev){
var element = $(this);
@ -247,8 +266,10 @@ class SeedDMS_View_ExtensionMgr extends SeedDMS_Theme_Style {
if(!empty($extconf['changelog']) && file_exists($extdir."/".$extname."/".$extconf['changelog'])) {
echo $this->getModalBoxLink(array('target'=>'extensionChangelog', 'remote'=>'out.ExtensionMgr.php?action=changelog&extensionname='.$extname, 'class'=>'', 'title'=>'<i class="fa fa-reorder"></i>', 'attributes'=>array('title'=>getMLText('show_extension_changelog'))));
}
if($extconf['config'])
echo "<a href=\"../out/out.Settings.php?currenttab=extensions#".$extname."\" title=\"".getMLText('configure_extension')."\"><i class=\"fa fa-cogs\"></i></a>";
if($extconf['config']) {
// echo "<a href=\"../out/out.Settings.php?currenttab=extensions#".$extname."\" title=\"".getMLText('configure_extension')."\"><i class=\"fa fa-cogs\"></i></a>";
echo $this->getModalBoxLink(array('target'=>'extensionConfig', 'remote'=>'out.Settings.php?action=extension&extensionname='.$extname, 'class'=>'', 'title'=>'<i class="fa fa-cogs"></i>', 'attributes'=>array('title'=>getMLText('show_extension_changelog'), 'data-modal-title'=>'<i class=\'fa fa-circle'.(isset($settings->_extensions[$extname]["__disable__"]) && $settings->_extensions[$extname]["__disable__"] ? ' disabled' : ' enabled').'\'></i> '.$extconf['title'])));
}
if($settings->_enableExtensionDownload)
echo "<form style=\"display: inline-block; margin: 0px;\" method=\"post\" action=\"../op/op.ExtensionMgr.php\" id=\"".$extname."-download\">".createHiddenFieldWithKey('extensionmgr')."<input type=\"hidden\" name=\"action\" value=\"download\" /><input type=\"hidden\" name=\"extname\" value=\"".$extname."\" /><a class=\"download\" data-extname=\"".$extname."\" title=\"".getMLText('download_extension')."\"><i class=\"fa fa-download\"></i></a></form>";
if(is_writeable($settings->_configFilePath) && $check) {
@ -392,6 +413,7 @@ class SeedDMS_View_ExtensionMgr extends SeedDMS_Theme_Style {
echo $this->getModalBox(array('id'=>'extensionInfo', 'title'=>getMLText('extension_version_list'), 'content'=>'<p>'.getMLText('extension_loading').'</p>', 'buttons'=>array(array('title'=>getMLText('close')))));
echo $this->getModalBox(array('id'=>'extensionChangelog', 'title'=>getMLText('extension_changelog'), 'content'=>'<p>'.getMLText('changelog_loading').'</p>', 'buttons'=>array(array('title'=>getMLText('close')))));
echo $this->getModalBox(array('id'=>'extensionReadme', 'title'=>getMLText('extension_readme'), 'content'=>'<p>'.getMLText('readme_loading').'</p>', 'buttons'=>array(array('title'=>getMLText('close')))));
echo $this->getModalBox(array('id'=>'extensionConfig', 'title'=>getMLText('extension_config'), 'content'=>'<p>'.getMLText('readme_loading').'</p>', 'buttons'=>array(array('title'=>getMLText('close')), array('id'=>'btn_save_config', 'title'=>getMLText('save')))));
$this->contentEnd();
$this->htmlEndPage();
} /* }}} */

View File

@ -13,11 +13,6 @@
* @version Release: @package_version@
*/
/**
* Include parent class
*/
//require_once("class.Bootstrap.php");
/**
* Class which outputs the html page for Info view
*
@ -60,17 +55,30 @@ class SeedDMS_View_Info extends SeedDMS_Theme_Style {
$this->rowStart();
$this->columnStart(6);
$this->contentHeading(getMLText("seeddms_info"));
$seedextensions = $extmgr->getExtensionConfiguration();
echo "<table class=\"table table-condensed table-sm\">\n";
echo "<thead>\n<tr>\n";
echo "<th></th>";
echo "<th>".getMLText("name");
echo "</th>\n";
echo "<th>".getMLText("name")."</th>\n";
echo "</tr>\n</thead>\n<tbody>\n";
$dbversion = $dms->getDBVersion();
echo "<tr><td></td><td></td><td>".getMLText('seeddms_version')."</td><td>".$version->version()."</td></tr>\n";
echo "<tr><td>".getMLText('seeddms_version')."</td><td>".$version->version()."</td></tr>\n";
if($user->isAdmin()) {
echo "<tr><td></td><td></td><td>".getMLText('database_schema_version')."</td><td>".$dbversion['major'].".".$dbversion['minor'].".".$dbversion['subminor']."</td></tr>\n";
$storage = $dms->getStorage();
echo "<tr><td>".getMLText('database_schema_version')."</td><td>".$dbversion['major'].".".$dbversion['minor'].".".$dbversion['subminor']."</td></tr>\n";
echo "<tr></td><td>".getMLText('storage')."</td><td>".($storage ? $storage->info() : "legacy")."</td></tr>\n";
}
echo "</tbody>\n</table>\n";
if($user->isAdmin()) {
$this->contentHeading(getMLText("extension_info"));
echo "<table class=\"table table-condensed table-sm\">\n";
echo "<thead>\n<tr>\n";
echo "<th></th>";
echo "<th></th>";
echo "<th>".getMLText("name");
echo "<th>".getMLText("version")."</th>\n";
echo "</th>\n";
echo "</tr>\n</thead>\n<tbody>\n";
$seedextensions = $extmgr->getExtensionConfiguration();
foreach($seedextensions as $extname=>$extconf) {
echo "<tr><td>";
if(!$settings->extensionIsDisabled($extname))
@ -85,8 +93,8 @@ class SeedDMS_View_Info extends SeedDMS_Theme_Style {
echo "<td>".$extname."<br />".$extconf['title']."</td><td>".$extconf['version']."</td>";
echo "</tr>\n";
}
echo "</tbody>\n</table>\n";
}
echo "</tbody>\n</table>\n";
$this->columnEnd();
$this->columnStart(6);
if($user->isAdmin()) {
@ -98,6 +106,7 @@ class SeedDMS_View_Info extends SeedDMS_Theme_Style {
echo "</tr>\n</thead>\n<tbody>\n";
echo "<tr><td>PHP</td><td>".phpversion()."</td></tr>\n";
echo "<tr><td>Path to php.ini</td><td>".php_ini_loaded_file()."</td></tr>\n";
echo "<tr><td>Timezone</td><td>".date_default_timezone_get()." (Current date/time on server is ".getLongReadableDate(time()).")</td></tr>\n";
echo "</tbody>\n</table>\n";
$this->contentHeading(getMLText("installed_php_extensions"));

View File

@ -57,7 +57,7 @@ $(document).ready( function() {
$('#export').on('click', function(ev) {
ev.preventDefault();
ev.stopPropagation();
var url = $(this).attr('href')+'&includecontent='+($('#includecontent').prop('checked') ? '1' : '0');
var url = $(this).attr('href')+'&includecontent='+($('#includecontent').prop('checked') ? '1' : '0')+'&skipdefaultcols='+($('#skipdefaultcols').prop('checked') ? '1' : '0');
var values = {};
$('input[name^=\"marks\"]').each(function() {
if(this.checked)
@ -225,10 +225,12 @@ $(document).ready(function() {
$user = $this->params['user'];
$entries = $this->params['searchhits'];
$includecontent = $this->params['includecontent'];
$skipdefaultcols = $this->params['skipdefaultcols'];
$marks = $this->params['marks'];
include("../inc/inc.ClassDownloadMgr.php");
$downmgr = new SeedDMS_Download_Mgr();
$downmgr->skipDefaultCols($skipdefaultcols);
if($extraheader = $this->callHook('extraDownloadHeader'))
$downmgr->addHeader($extraheader);
foreach($entries as $entry) {
@ -545,6 +547,12 @@ $(document).ready(function() {
<li class="nav-item <?php echo ($facetsearch == true && $facetsearch == true) ? 'active' : ''; ?>"><a class="nav-link <?php echo ($facetsearch == true && $facetsearch == true) ? 'active' : ''; ?>" data-target="#facetfulltext" data-toggle="tab" role="button"><?php printMLText('facetfullsearch'); ?></a></li>
<?php
}
$tabs = $this->callHook('extraTabs');
if($tabs) {
foreach($tabs as $tabid=>$tab) {
echo '<li class="nav-item"><a class="nav-link" data-target="#'.$tabid.'" data-toggle="tab" role="button">'.$tab['title'].'</a></li>';
}
}
?>
</ul>
<div class="tab-content">
@ -710,6 +718,8 @@ $(document).ready(function() {
$openfilterdlg = true;
if($status)
$openfilterdlg = true;
if($mimetype)
$openfilterdlg = true;
if($modifyenddate || $modifystartdate)
$openfilterdlg = true;
if($revisionstartdate || $revisionenddate)
@ -754,6 +764,7 @@ $(document).ready(function() {
}
$options[] = array(S_DRAFT_APP, getOverallStatusText(S_DRAFT_APP), in_array(S_DRAFT_APP, $status));
$options[] = array(S_RELEASED, getOverallStatusText(S_RELEASED), in_array(S_RELEASED, $status));
$options[] = array(S_DRAFT, getOverallStatusText(S_DRAFT), in_array(S_DRAFT, $status));
$options[] = array(S_REJECTED, getOverallStatusText(S_REJECTED), in_array(S_REJECTED, $status));
$options[] = array(S_IN_REVISION, getOverallStatusText(S_IN_REVISION), in_array(S_IN_REVISION, $status));
$options[] = array(S_EXPIRED, getOverallStatusText(S_EXPIRED), in_array(S_EXPIRED, $status));
@ -770,6 +781,22 @@ $(document).ready(function() {
'options'=>$options
)
);
$options = [];
foreach($dms->getMimeTypes() as $m) {
$options[] = array($m['mimeType'], $m['mimeType'], in_array($m['mimeType'], $mimetype)/*, array(array('data-subtitle', htmlspecialchars($m['c'].' ×')))*/);
}
$this->formField(
getMLText("mimetype"),
array(
'element'=>'select',
'class'=>'chzn-select',
'name'=>'mimetype[]',
'multiple'=>true,
'attributes'=>array(array('data-placeholder', getMLText('select_mimetype')), array('data-no_results_text', getMLText('no_mimetype'))),
'options'=>$options
)
);
$this->formField(
getMLText("modified")." (".getMLText('from').")",
$this->getDateChooser(!empty($modifystartdate) ? getReadableDate($modifystartdate) : null, "modified[from]", $this->params['session']->getLanguage())
@ -811,9 +838,9 @@ $(document).ready(function() {
} elseif(in_array($attrdef->getType(), [SeedDMS_Core_AttributeDefinition::type_int, SeedDMS_Core_AttributeDefinition::type_float]) && !$attrdef->getValueSet()) {
$this->formField(htmlspecialchars($attrdef->getName().' ('.getMLText('from').')'), $this->getAttributeEditField($attrdef, !empty($attributes[$attrdef->getID()]['from']) ? $attributes[$attrdef->getID()]['from'] : '', 'attributes', true, 'from'));
$this->formField(htmlspecialchars($attrdef->getName().' ('.getMLText('to').')'), $this->getAttributeEditField($attrdef, !empty($attributes[$attrdef->getID()]['to']) ? $attributes[$attrdef->getID()]['to'] : '', 'attributes', true, 'to'));
} else
$this->formField(htmlspecialchars($attrdef->getName()), $this->getAttributeEditField($attrdef, isset($attributes[$attrdef->getID()]) ? $attributes[$attrdef->getID()] : '', 'attributes', true, '', true));
} else {
$this->formField(htmlspecialchars($attrdef->getName()), $this->getAttributeEditField($attrdef, isset($attributes[$attrdef->getID()]) ? $attributes[$attrdef->getID()] : '', 'attributes', true, '', false));
}
}
}
}
@ -1483,6 +1510,14 @@ $(document).ready(function() {
echo "</div>\n";
}
// }}}
if($tabs) {
foreach($tabs as $tabid=>$tab) {
echo '<div class="tab-pane" id="'.$tabid.'" role="tabpanel">';
echo $tab['content'];
echo "</div>\n";
}
}
?>
</div>
<?php
@ -1506,6 +1541,16 @@ $(document).ready(function() {
'value'=>1,
)
);
$this->formField(
getMLText("skip_default_export_cols"),
array(
'element'=>'input',
'type'=>'checkbox',
'name'=>'skipdefaultcols',
'id'=>'skipdefaultcols',
'value'=>1,
)
);
//$this->formSubmit("<i class=\"fa fa-download\"></i> ".getMLText('export'));
print $this->html_link('Search', array_merge($_GET, array('action'=>'export')), array('class'=>'btn btn-primary', 'id'=>'export'), "<i class=\"fa fa-download\"></i> ".getMLText("batch_export"), false, true)."\n";
$content = ob_get_clean();

View File

@ -13,11 +13,6 @@
* @version Release: @package_version@
*/
/**
* Include parent class
*/
//require_once("class.Bootstrap.php");
/**
* Class which outputs the html page for SetRevisors view
*
@ -31,6 +26,26 @@
*/
class SeedDMS_View_SetRevisors extends SeedDMS_Theme_Style {
function js() { /* {{{ */
header('Content-Type: application/javascript; charset=UTF-8');
parent::jsTranslations(array('js_form_error', 'js_form_errors'));
?>
function runValidation() {
$("#form1").validate({
rules: {
startdate: {
required: true
},
},
messages: {
comment: "<?php printMLText("js_no_reviѕion_date");?>",
}
});
}
runValidation();
<?php
} /* }}} */
function show() { /* {{{ */
$dms = $this->params['dms'];
$user = $this->params['user'];
@ -44,6 +59,9 @@ class SeedDMS_View_SetRevisors extends SeedDMS_Theme_Style {
$overallStatus = $content->getStatus();
$this->htmlAddHeader('<script type="text/javascript" src="../views/'.$this->theme.'/vendors/jquery-validation/jquery.validate.js"></script>'."\n", 'js');
$this->htmlAddHeader('<script type="text/javascript" src="../views/'.$this->theme.'/styles/validation-default.js"></script>'."\n", 'js');
$this->htmlStartPage(getMLText("document_title", array("documentname" => htmlspecialchars($document->getName()))));
$this->globalNavigation($folder);
$this->contentStart();
@ -69,7 +87,7 @@ class SeedDMS_View_SetRevisors extends SeedDMS_Theme_Style {
}
?>
<form class="form-horizontal" action="../op/op.SetRevisors.php" method="post" name="form1">
<form class="form-horizontal" action="../op/op.SetRevisors.php" method="post" id="form1" name="form1">
<input type='hidden' name='documentid' value='<?php echo $document->getID() ?>'/>
<input type='hidden' name='version' value='<?php echo $content->getVersion() ?>'/>
@ -184,4 +202,3 @@ class SeedDMS_View_SetRevisors extends SeedDMS_Theme_Style {
$this->htmlEndPage();
} /* }}} */
}
?>

View File

@ -189,9 +189,10 @@ class SeedDMS_View_Settings extends SeedDMS_Theme_Style {
<td><?= getMLText($title) ?></td>
<td>
<?php
if($this->isVisible($name))
if($this->isVisible($name)) {
echo '<input name="'.$name.'" type="hidden" vaule="" />';
echo '<input name="'.$name.'" type="checkbox" '.($settings->{"_".$name} ? "checked" : '').' />';
else
} else
echo getMLText('settings_conf_field_not_editable');
echo "</td>\n";
?>
@ -331,7 +332,184 @@ class SeedDMS_View_Settings extends SeedDMS_Theme_Style {
<?php
} /* }}} */
function js() { /* {{{ */
protected function showExtensionConfig($extname, $extconf) { /* {{{ */
$dms = $this->params['dms'];
$settings = $this->params['settings'];
foreach($extconf['config'] as $confkey=>$conf) {
ob_start();
if($this->isVisible($extname.'|'.$confkey)) {
switch($conf['type']) {
case 'checkbox':
?>
<input type="hidden" name="<?php echo "extensions[".$extname."][".$confkey."]"; ?>" value=""><input type="checkbox" id="extension_<?= $extname ?>_<?= $confkey ?>" name="<?php echo "extensions[".$extname."][".$confkey."]"; ?>" value="1" <?php if(isset($settings->_extensions[$extname][$confkey]) && $settings->_extensions[$extname][$confkey]) echo 'checked'; ?> />
<?php
break;
case 'select':
$allowempty = empty($conf['allow_empty']) ? false : $conf['allow_empty'];
$multiple = empty($conf['multiple']) ? false : $conf['multiple'];
$order = empty($conf['order']) ? '' : $conf['order'];
if(!empty($conf['options'])) {
$selections = empty($settings->_extensions[$extname][$confkey]) ? array() : explode(",", $settings->_extensions[$extname][$confkey]);
echo "<select id=\"extension_".$extname."_".$confkey."\" class=\"chzn-select\"".($allowempty ? " data-allow-clear=\"true\"" : "").($order ? " order=\"".$order."\"" : "")." name=\"extensions[".$extname."][".$confkey."][]\"".($multiple ? " multiple" : "").(!empty($conf['size']) ? " size=\"".$conf['size']."\"" : "")." data-placeholder=\"".getMLText("select_option")."\" style=\"width: 100%;\">";
if(is_array($conf['options'])) {
$options = $conf['options'];
} elseif(is_string($conf['options']) && $conf['options'] == 'hook') {
$options = $this->callHook('getOptions', $confkey, $extname, $extconf);
} else {
$options = [];
}
if($allowempty)
echo "<option value=\"\"></option>";
foreach($options as $key=>$opt) {
echo "<option value=\"".$key."\"";
if(in_array($key, $selections))
echo " selected";
if(is_array($opt)) {
echo " data-subtitle=\"".htmlspecialchars($opt['subtitle'])."\">".htmlspecialchars($opt['value']);
} else {
echo ">".htmlspecialchars(getMLText($extname.'_'.$opt, array(), $opt));
}
echo "</option>";
}
echo "</select>";
} elseif(!empty($conf['internal'])) {
$selections = empty($settings->_extensions[$extname][$confkey]) ? array() : explode(",", $settings->_extensions[$extname][$confkey]);
switch($conf['internal']) {
case "categories":
$categories = $dms->getDocumentCategories();
if($categories) {
echo "<select class=\"chzn-select\"".($allowempty ? " data-allow-clear=\"true\"" : "")." name=\"extensions[".$extname."][".$confkey."][]\"".($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) {
echo "<option value=\"".$category->getID()."\"";
if(in_array($category->getID(), $selections))
echo " selected";
echo ">".htmlspecialchars($category->getName())."</option>";
}
echo "</select>";
}
break;
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%;\">";
if($allowempty)
echo "<option value=\"\"></option>";
foreach($users as $curuser) {
echo "<option value=\"".$curuser->getID()."\"";
if(in_array($curuser->getID(), $selections))
echo " selected";
echo ">".htmlspecialchars($curuser->getLogin()." - ".$curuser->getFullName())."</option>";
}
echo "</select>";
}
break;
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%;\">";
if($allowempty)
echo "<option value=\"\"></option>";
foreach($recs as $rec) {
echo "<option value=\"".$rec->getID()."\"";
if(in_array($rec->getID(), $selections))
echo " selected";
echo ">".htmlspecialchars($rec->getName())."</option>";
}
echo "</select>";
}
break;
case "attributedefinitions":
$objtype = empty($conf['objtype']) ? 0 : $conf['objtype'];
$attrtype = empty($conf['attrtype']) ? 0 : $conf['attrtype'];
$order = empty($conf['order']) ? '' : $conf['order'];
$recs = $dms->getAllAttributeDefinitions($objtype, $attrtype);
if($recs) {
echo "<select class=\"chzn-select\"".($allowempty ? " data-allow-clear=\"true\"" : "").($order ? " order=\"".$order."\"" : "")." 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>";
if($order == 'keep') {
foreach($selections as $selid) {
if($rec = $dms->getAttributeDefinition($selid)) {
echo "<option value=\"".$rec->getID()."\" selected data-subtitle=\"".htmlspecialchars(getAttributeObjectTypeText($rec).", ".getAttributeTypeText($rec))."\">".htmlspecialchars($rec->getName())."</option>";
}
}
}
foreach($recs as $rec) {
if($order == 'keep' && in_array($rec->getID(), $selections))
continue;
echo "<option value=\"".$rec->getID()."\"";
if(in_array($rec->getID(), $selections))
echo " selected";
echo " data-subtitle=\"".htmlspecialchars(getAttributeObjectTypeText($rec).", ".getAttributeTypeText($rec))."\">".htmlspecialchars($rec->getName())."</option>";
}
echo "</select>";
} else {
printMLText('no_attribute_definitions');
}
break;
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%;\">";
if($allowempty)
echo "<option value=\"\"></option>";
foreach($recs as $rec) {
echo "<option value=\"".$rec->getID()."\"";
if(in_array($rec->getID(), $selections))
echo " selected";
echo ">".htmlspecialchars($rec->getName())."</option>";
}
echo "</select>";
} else {
printMLText('no_workflows');
}
break;
case "folders":
$this->formField(null, $this->getFolderChooserHtml("form".$extname.$confkey, M_READ, -1, $selections ? $dms->getFolder($selections[0]) : 0, 'extensions['.$extname."][".$confkey."]"));
break;
case "folderlist":
echo "<select class=\"chzn-select-folder\"".($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($selections) {
foreach ($selections as $selid) {
if ($f = $dms->getFolder($selid)) {
echo "<option value=\"".$f->getID()."\"";
echo " selected";
echo ">".htmlspecialchars($f->getName())."</option>";
}
}
}
echo "</select>";
break;
case "documents":
$this->formField(null, $this->getDocumentChooserHtml("form".$extname.$confkey, M_READ, -1, $selections ? $dms->getDocument($selections[0]) : 0, 'extensions['.$extname."][".$confkey."]"));
break;
}
}
break;
case 'hook':
echo $this->callHook('showConfig', $confkey, $extname, $extconf);
break;
case "date":
$this->formField(
null,
$this->getDateChooser((isset($settings->_extensions[$extname][$confkey]) ? getReadableDate($settings->_extensions[$extname][$confkey]) : ''), "extensions[".$extname."][".$confkey."]", $this->params['session']->getLanguage())
);
break;
default:
$this->showTextField("extensions[".$extname."][".$confkey."]", isset($settings->_extensions[$extname][$confkey]) ? $settings->_extensions[$extname][$confkey] : '', isset($conf['type']) ? $conf['type'] : '', isset($conf['placeholder']) ? $conf['placeholder'] : '');
}
} else {
echo getMLText('settings_conf_field_not_editable');
}
$html = ob_get_clean();
$this->showConfigPlain($conf['title'], isset($conf['help']) ? $conf['help'] : '', $html);
}
} /* }}} */
public function js() { /* {{{ */
$extmgr = $this->params['extmgr'];
header('Content-Type: application/javascript; charset=UTF-8');
@ -382,7 +560,42 @@ console.log($(event.currentTarget).data('target').substring(1));
<?php
} /* }}} */
function show() { /* {{{ */
public function extension() { /* {{{ */
$dms = $this->params['dms'];
$user = $this->params['user'];
$extname = $this->params['extname'];
$settings = $this->params['settings'];
$extmgr = $this->params['extmgr'];
$extconf = $extmgr->getExtensionConfiguration()[$extname];
?>
<form action="../op/op.Settings.php" method="post" enctype="multipart/form-data" id="formconfig" name="formconfig" >
<?php echo createHiddenFieldWithKey('savesettings'); ?>
<input type="hidden" name="action" value="saveSettings" />
<?php
if($this->hasHook('processConfig')) {
$ttt = $this->callHook('processConfig', $extname, $extconf);
if($ttt)
$extconf = $ttt;
}
if($this->isVisible($extname.'|')) {
if($extconf['config']) {
// $this->showRawConfigHeadline("<p><a id=\"".$extname."\" name=\"".$extname."\"></a>".'<input type="hidden" name="extensions['.$extname.'][__disable__]" value="'.(isset($settings->_extensions[$extname]["__disable__"]) && $settings->_extensions[$extname]["__disable__"] ? '1' : '').'" /><i class="fa fa-circle'.(isset($settings->_extensions[$extname]["__disable__"]) && $settings->_extensions[$extname]["__disable__"] ? ' disabled' : ' enabled').'"></i> <span title="'.$extname.'">'.$extconf['title'].'</span></p>');
$this->showExtensionConfig($extname, $extconf);
} else {
/* Even no configuration exists, output the input field to enable/disable
* the extension. Otherwise it will be enabled each time the config is
* saved.
*/
echo '<input type="hidden" name="extensions['.$extname.'][__disable__]" value="'.(isset($settings->_extensions[$extname]["__disable__"]) && $settings->_extensions[$extname]["__disable__"] ? '1' : '').'" />'."\n";
}
}
?>
</form>
<?php
} /* }}} */
public function show() { /* {{{ */
$dms = $this->params['dms'];
$user = $this->params['user'];
$users = $this->params['allusers'];
@ -547,6 +760,7 @@ if(($kkk = $this->callHook('getFullSearchEngine')) && is_array($kkk))
<?php $this->showConfigText('settings_partitionSize', 'partitionSize'); ?>
<?php $this->showConfigText('settings_maxUploadSize', 'maxUploadSize'); ?>
<?php $this->showConfigCheckbox('settings_enableXsendfile', 'enableXsendfile'); ?>
<?php $this->showConfigCheckbox('settings_enableMemcached', 'enableMemcached'); ?>
<!--
-- SETTINGS - SYSTEM - AUTHENTICATION
-->
@ -717,171 +931,7 @@ if(($kkk = $this->callHook('getFullSearchEngine')) && is_array($kkk))
if($this->isVisible($extname.'|')) {
if($extconf['config']) {
$this->showRawConfigHeadline("<a id=\"".$extname."\" name=\"".$extname."\"></a>".'<input type="hidden" name="extensions['.$extname.'][__disable__]" value="'.(isset($settings->_extensions[$extname]["__disable__"]) && $settings->_extensions[$extname]["__disable__"] ? '1' : '').'" /><i class="fa fa-circle'.(isset($settings->_extensions[$extname]["__disable__"]) && $settings->_extensions[$extname]["__disable__"] ? ' disabled' : ' enabled').'"></i> <span title="'.$extname.'">'.$extconf['title'].'</span>');
foreach($extconf['config'] as $confkey=>$conf) {
ob_start();
if($this->isVisible($extname.'|'.$confkey)) {
switch($conf['type']) {
case 'checkbox':
?>
<input type="hidden" name="<?php echo "extensions[".$extname."][".$confkey."]"; ?>" value=""><input type="checkbox" name="<?php echo "extensions[".$extname."][".$confkey."]"; ?>" value="1" <?php if(isset($settings->_extensions[$extname][$confkey]) && $settings->_extensions[$extname][$confkey]) echo 'checked'; ?> />
<?php
break;
case 'select':
$allowempty = empty($conf['allow_empty']) ? false : $conf['allow_empty'];
$multiple = empty($conf['multiple']) ? false : $conf['multiple'];
if(!empty($conf['options'])) {
$selections = empty($settings->_extensions[$extname][$confkey]) ? array() : explode(",", $settings->_extensions[$extname][$confkey]);
echo "<select class=\"chzn-select\"".($allowempty ? " data-allow-clear=\"true\"" : "")." name=\"extensions[".$extname."][".$confkey."][]\"".($multiple ? " multiple" : "").(!empty($conf['size']) ? " size=\"".$conf['size']."\"" : "")." data-placeholder=\"".getMLText("select_option")."\" style=\"width: 100%;\">";
if(is_array($conf['options'])) {
$options = $conf['options'];
} elseif(is_string($conf['options']) && $conf['options'] == 'hook') {
$options = $this->callHook('getOptions', $confkey, $extname, $extconf);
} else {
$options = [];
}
if($allowempty)
echo "<option value=\"\"></option>";
foreach($options as $key=>$opt) {
echo "<option value=\"".$key."\"";
if(in_array($key, $selections))
echo " selected";
echo ">".htmlspecialchars(getMLText($extname.'_'.$opt, array(), $opt))."</option>";
}
echo "</select>";
} elseif(!empty($conf['internal'])) {
$selections = empty($settings->_extensions[$extname][$confkey]) ? array() : explode(",", $settings->_extensions[$extname][$confkey]);
switch($conf['internal']) {
case "categories":
$categories = $dms->getDocumentCategories();
if($categories) {
echo "<select class=\"chzn-select\"".($allowempty ? " data-allow-clear=\"true\"" : "")." name=\"extensions[".$extname."][".$confkey."][]\"".($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) {
echo "<option value=\"".$category->getID()."\"";
if(in_array($category->getID(), $selections))
echo " selected";
echo ">".htmlspecialchars($category->getName())."</option>";
}
echo "</select>";
}
break;
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%;\">";
if($allowempty)
echo "<option value=\"\"></option>";
foreach($users as $curuser) {
echo "<option value=\"".$curuser->getID()."\"";
if(in_array($curuser->getID(), $selections))
echo " selected";
echo ">".htmlspecialchars($curuser->getLogin()." - ".$curuser->getFullName())."</option>";
}
echo "</select>";
}
break;
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%;\">";
if($allowempty)
echo "<option value=\"\"></option>";
foreach($recs as $rec) {
echo "<option value=\"".$rec->getID()."\"";
if(in_array($rec->getID(), $selections))
echo " selected";
echo ">".htmlspecialchars($rec->getName())."</option>";
}
echo "</select>";
}
break;
case "attributedefinitions":
$objtype = empty($conf['objtype']) ? 0 : $conf['objtype'];
$attrtype = empty($conf['attrtype']) ? 0 : $conf['attrtype'];
$order = empty($conf['order']) ? '' : $conf['order'];
$recs = $dms->getAllAttributeDefinitions($objtype, $attrtype);
if($recs) {
echo "<select class=\"chzn-select\"".($allowempty ? " data-allow-clear=\"true\"" : "").($order ? " order=\"".$order."\"" : "")." 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>";
if($order == 'keep') {
foreach($selections as $selid) {
if($rec = $dms->getAttributeDefinition($selid)) {
echo "<option value=\"".$rec->getID()."\" selected data-subtitle=\"".htmlspecialchars(getAttributeObjectTypeText($rec).", ".getAttributeTypeText($rec))."\">".htmlspecialchars($rec->getName())."</option>";
}
}
}
foreach($recs as $rec) {
if($order == 'keep' && in_array($rec->getID(), $selections))
continue;
echo "<option value=\"".$rec->getID()."\"";
if(in_array($rec->getID(), $selections))
echo " selected";
echo " data-subtitle=\"".htmlspecialchars(getAttributeObjectTypeText($rec).", ".getAttributeTypeText($rec))."\">".htmlspecialchars($rec->getName())."</option>";
}
echo "</select>";
} else {
printMLText('no_attribute_definitions');
}
break;
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%;\">";
if($allowempty)
echo "<option value=\"\"></option>";
foreach($recs as $rec) {
echo "<option value=\"".$rec->getID()."\"";
if(in_array($rec->getID(), $selections))
echo " selected";
echo ">".htmlspecialchars($rec->getName())."</option>";
}
echo "</select>";
} else {
printMLText('no_workflows');
}
break;
case "folders":
$this->formField(null, $this->getFolderChooserHtml("form".$extname.$confkey, M_READ, -1, $selections ? $dms->getFolder($selections[0]) : 0, 'extensions['.$extname."][".$confkey."]"));
break;
case "folderlist":
echo "<select class=\"chzn-select-folder\"".($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($selections) {
foreach ($selections as $selid) {
if ($f = $dms->getFolder($selid)) {
echo "<option value=\"".$f->getID()."\"";
echo " selected";
echo ">".htmlspecialchars($f->getName())."</option>";
}
}
}
echo "</select>";
break;
case "documents":
$this->formField(null, $this->getDocumentChooserHtml("form".$extname.$confkey, M_READ, -1, $selections ? $dms->getDocument($selections[0]) : 0, 'extensions['.$extname."][".$confkey."]"));
break;
}
}
break;
case 'hook':
echo $this->callHook('showConfig', $confkey, $extname, $extconf);
break;
case "date":
$this->formField(
null,
$this->getDateChooser((isset($settings->_extensions[$extname][$confkey]) ? getReadableDate($settings->_extensions[$extname][$confkey]) : ''), "extensions[".$extname."][".$confkey."]", $this->params['session']->getLanguage())
);
break;
default:
$this->showTextField("extensions[".$extname."][".$confkey."]", isset($settings->_extensions[$extname][$confkey]) ? $settings->_extensions[$extname][$confkey] : '', isset($conf['type']) ? $conf['type'] : '', isset($conf['placeholder']) ? $conf['placeholder'] : '');
}
} else {
echo getMLText('settings_conf_field_not_editable');
}
$html = ob_get_clean();
$this->showConfigPlain($conf['title'], isset($conf['help']) ? $conf['help'] : '', $html);
}
$this->showExtensionConfig($extname, $extconf);
} else {
/* Even no configuration exists, output the input field to enable/disable
* the extension. Otherwise it will be enabled each time the config is

View File

@ -298,7 +298,7 @@ class SeedDMS_View_Tasks extends SeedDMS_Theme_Style {
$subitems = [];
foreach($tasks['review'] as $t) {
$doc = $dms->getDocument($t['id']);
$subitems[] = array('label'=>$doc->getName(), 'link'=>$this->params['settings']->_httpRoot."out/out.ViewDocument.php?documentid=".$doc->getID()."&currenttab=revapp", 'class'=>"table-row-document", 'rel'=>"document_".$doc->getID());
$subitems[] = array('label'=>htmlspecialchars($doc->getName()), 'link'=>$this->params['settings']->_httpRoot."out/out.ViewDocument.php?documentid=".$doc->getID()."&currenttab=revapp", 'class'=>"table-row-document", 'rel'=>"document_".$doc->getID());
}
$menuitems['tasks']['children']['review'] = array('label'=>getMLText('documents_to_review'), 'children'=>$subitems);
@ -307,7 +307,7 @@ class SeedDMS_View_Tasks extends SeedDMS_Theme_Style {
$subitems = [];
foreach($tasks['approval'] as $t) {
$doc = $dms->getDocument($t['id']);
$subitems[] = array('label'=>$doc->getName(), 'link'=>$this->params['settings']->_httpRoot."out/out.ViewDocument.php?documentid=".$doc->getID()."&currenttab=revapp", 'class'=>"table-row-document", 'rel'=>"document_".$doc->getID());
$subitems[] = array('label'=>htmlspecialchars($doc->getName()), 'link'=>$this->params['settings']->_httpRoot."out/out.ViewDocument.php?documentid=".$doc->getID()."&currenttab=revapp", 'class'=>"table-row-document", 'rel'=>"document_".$doc->getID());
}
$menuitems['tasks']['children']['approval'] = array('label'=>getMLText('documents_to_approve'), 'children'=>$subitems);
}
@ -315,7 +315,7 @@ class SeedDMS_View_Tasks extends SeedDMS_Theme_Style {
$subitems = [];
foreach($tasks['workflow'] as $t) {
$doc = $dms->getDocument($t['id']);
$subitems[] = array('label'=>$doc->getName(), 'link'=>$this->params['settings']->_httpRoot."out/out.ViewDocument.php?documentid=".$doc->getID()."&currenttab=workflow", 'class'=>"table-row-document", 'rel'=>"document_".$doc->getID());
$subitems[] = array('label'=>htmlspecialchars($doc->getName()), 'link'=>$this->params['settings']->_httpRoot."out/out.ViewDocument.php?documentid=".$doc->getID()."&currenttab=workflow", 'class'=>"table-row-document", 'rel'=>"document_".$doc->getID());
}
$menuitems['tasks']['children']['workflow'] = array('label'=>getMLText('documents_to_trigger_workflow'), 'children'=>$subitems);
}
@ -323,7 +323,7 @@ class SeedDMS_View_Tasks extends SeedDMS_Theme_Style {
$subitems = [];
foreach($tasks['receipt'] as $t) {
$doc = $dms->getDocument($t['id']);
$subitems[] = array('label'=>$doc->getName(), 'link'=>"../out/out.ViewDocument.php?documentid=".$doc->getID()."&currenttab=recipients", 'class'=>"table-row-document", 'rel'=>"document_".$doc->getID());
$subitems[] = array('label'=>htmlspecialchars($doc->getName()), 'link'=>"../out/out.ViewDocument.php?documentid=".$doc->getID()."&currenttab=recipients", 'class'=>"table-row-document", 'rel'=>"document_".$doc->getID());
}
$menuitems['tasks']['children']['receipt'] = array('label'=>getMLText('documents_to_receipt'), 'children'=>$subitems);
}
@ -331,7 +331,7 @@ class SeedDMS_View_Tasks extends SeedDMS_Theme_Style {
$subitems = [];
foreach($tasks['revision'] as $t) {
$doc = $dms->getDocument($t['id']);
$subitems[] = array('label'=>$doc->getName(), 'link'=>"../out/out.ViewDocument.php?documentid=".$doc->getID()."&currenttab=revision", 'class'=>"table-row-document", 'rel'=>"document_".$doc->getID());
$subitems[] = array('label'=>htmlspecialchars($doc->getName()), 'link'=>"../out/out.ViewDocument.php?documentid=".$doc->getID()."&currenttab=revision", 'class'=>"table-row-document", 'rel'=>"document_".$doc->getID());
}
$menuitems['tasks']['children']['revision'] = array('label'=>getMLText('documents_to_revise'), 'children'=>$subitems);
}
@ -339,7 +339,7 @@ class SeedDMS_View_Tasks extends SeedDMS_Theme_Style {
$subitems = [];
foreach($tasks['needscorrection'] as $t) {
$doc = $dms->getDocument($t['id']);
$subitems[] = array('label'=>$doc->getName(), 'link'=>"../out/out.ViewDocument.php?documentid=".$doc->getID()."&currenttab=docinfo", 'class'=>"table-row-document", 'rel'=>"document_".$doc->getID());
$subitems[] = array('label'=>htmlspecialchars($doc->getName()), 'link'=>"../out/out.ViewDocument.php?documentid=".$doc->getID()."&currenttab=docinfo", 'class'=>"table-row-document", 'rel'=>"document_".$doc->getID());
}
$menuitems['tasks']['children']['needscorrection'] = array('label'=>getMLText('documents_to_correct'), 'children'=>$subitems);
}
@ -347,15 +347,15 @@ class SeedDMS_View_Tasks extends SeedDMS_Theme_Style {
$subitems = [];
foreach($tasks['rejected'] as $t) {
$doc = $dms->getDocument($t['id']);
$subitems[] = array('label'=>$doc->getName(), 'link'=>$this->params['settings']->_httpRoot."out/out.ViewDocument.php?documentid=".$doc->getID()."&currenttab=docinfo", 'class'=>"table-row-document", 'rel'=>"document_".$doc->getID());
$subitems[] = array('label'=>htmlspecialchars($doc->getName()), 'link'=>$this->params['settings']->_httpRoot."out/out.ViewDocument.php?documentid=".$doc->getID()."&currenttab=docinfo", 'class'=>"table-row-document", 'rel'=>"document_".$doc->getID());
}
$menuitems['tasks']['children']['rejected'] = array('label'=>getMLText('documents_rejected'), 'children'=>$subitems);
$menuitems['tasks']['children']['rejected'] = array('label'=>getMLText('documents_user_rejected'), 'children'=>$subitems);
}
if(!empty($tasks['checkedout'])) {
$subitems = [];
foreach($tasks['checkedout'] as $t) {
$doc = $dms->getDocument($t['id']);
$subitems[] = array('label'=>$doc->getName(), 'link'=>"../out/out.ViewDocument.php?documentid=".$doc->getID()."&currenttab=docinfo", 'class'=>"table-row-document", 'rel'=>"document_".$doc->getID());
$subitems[] = array('label'=>htmlspecialchars($doc->getName()), 'link'=>"../out/out.ViewDocument.php?documentid=".$doc->getID()."&currenttab=docinfo", 'class'=>"table-row-document", 'rel'=>"document_".$doc->getID());
}
$menuitems['tasks']['children']['checkedout'] = array('label'=>getMLText('documents_checked_out_by_you'), 'children'=>$subitems);
}

View File

@ -604,10 +604,12 @@ console.log(element);
$tmp = array();
foreach($approvalStatus as $r) {
if($r['type'] == 1) {
if(!in_array($r['required'], $mapprovers['g']))
if($mapprovers) {
if(!in_array($r['required'], $mapprovers['g']))
$tmp[] = $r['required'];
} else {
$tmp[] = $r['required'];
} else {
$tmp[] = $r['required'];
}
}
}
$fieldwrap = array('', '');

View File

@ -321,14 +321,14 @@ $(document).ready( function() {
foreach($files as $file) {
$file_exists=file_exists($dms->contentDir . $file->getPath());
$file_exists = $file->exists();//file_exists($dms->contentDir . $file->getPath());
$responsibleUser = $file->getUser();
print "<tr>";
print "<td>";
$previewer->createPreview($file, $previewwidthdetail);
if($file_exists) {
$previewer->createPreview($file, $previewwidthdetail);
if ($viewonlinefiletypes && (in_array(strtolower($file->getFileType()), $viewonlinefiletypes) || in_array(strtolower($file->getMimeType()), $viewonlinefiletypes))) {
if($accessobject->check_controller_access('ViewOnline', array('action'=>'run'))) {
print "<a target=\"_blank\" href=\"".$this->params['settings']->_httpRoot."op/op.ViewOnline.php?documentid=".$documentid."&file=". $file->getID()."\">";
@ -338,15 +338,15 @@ $(document).ready( function() {
print "<a href=\"".$this->params['settings']->_httpRoot."op/op.Download.php?documentid=".$documentid."&file=".$file->getID()."\">";
}
}
}
if($previewer->hasPreview($file)) {
print("<img class=\"mimeicon\" width=\"".$previewwidthdetail."\" src=\"".$this->params['settings']->_httpRoot."op/op.Preview.php?documentid=".$document->getID()."&file=".$file->getID()."&width=".$previewwidthdetail."\" title=\"".htmlspecialchars($file->getMimeType())."\">");
} else {
print "<img class=\"mimeicon\" width=\"".$previewwidthdetail."\" src=\"".$this->getMimeIcon($file->getFileType())."\" title=\"".htmlspecialchars($file->getMimeType())."\">";
}
if($file_exists) {
if($previewer->hasPreview($file)) {
print("<img class=\"mimeicon\" width=\"".$previewwidthdetail."\" src=\"".$this->params['settings']->_httpRoot."op/op.Preview.php?documentid=".$document->getID()."&file=".$file->getID()."&width=".$previewwidthdetail."\" title=\"".htmlspecialchars($file->getMimeType())."\">");
} else {
print "<img class=\"mimeicon\" width=\"".$previewwidthdetail."\" src=\"".$this->getMimeIcon($file->getFileType())."\" title=\"".htmlspecialchars($file->getMimeType())."\">";
}
if($accessobject->check_controller_access('Download', array('action'=>'run')) || $accessobject->check_controller_access('ViewOnline', array('action'=>'run')))
print "</a>";
} else {
print "<img class=\"mimeicon\" width=\"".$previewwidthdetail."\" src=\"".$this->getMimeIcon($file->getFileType())."\" title=\"".htmlspecialchars($file->getMimeType())."\">";
}
print "</td>";
@ -357,7 +357,7 @@ $(document).ready( function() {
print "<li>".htmlspecialchars($file->getOriginalFileName())."</li>\n";
if ($file_exists) {
$realmimetype = $file->getRealMimeType();
print "<li>".SeedDMS_Core_File::format_filesize(filesize($dms->contentDir . $file->getPath())) ." bytes, ".htmlspecialchars($file->getMimeType())."</li>";
print "<li>".SeedDMS_Core_File::format_filesize($file->size()) ." bytes, ".htmlspecialchars($file->getMimeType())."</li>";
} else print "<li>".htmlspecialchars($file->getMimeType())." - <span class=\"warning\">".getMLText("document_deleted")."</span></li>";
print "<li>".getMLText("uploaded_by")." <a href=\"mailto:".htmlspecialchars($responsibleUser->getEmail())."\">".htmlspecialchars($responsibleUser->getFullName())."</a></li>";
@ -440,7 +440,7 @@ $(document).ready( function() {
?>
<tr>
<td><?php printMLText("name");?>:</td>
<td><?php $this->printInlineEdit(htmlspecialchars($document->getName()), $document);?></td>
<td><?php $this->printInlineEditDocumentName(htmlspecialchars($document->getName()), $document);?></td>
</tr>
<tr>
<td><?php printMLText("owner");?>:</td>
@ -733,7 +733,7 @@ $(document).ready( function() {
$previewwidthdetail = $this->params['previewWidthDetail'];
// verify if file exists
$file_exists=file_exists($dms->contentDir . $latestContent->getPath());
$file_exists = $latestContent->exists(); //file_exists($dms->contentDir . $latestContent->getPath());
$status = $latestContent->getStatus();
@ -747,23 +747,30 @@ $(document).ready( function() {
$this->rowStart();
$this->columnStart(3);
if ($file_exists) {
if ($viewonlinefiletypes && (in_array(strtolower($latestContent->getFileType()), $viewonlinefiletypes) || in_array(strtolower($latestContent->getMimeType()), $viewonlinefiletypes))) {
if($accessobject->check_controller_access('ViewOnline', array('action'=>'run')))
print "<a target=\"_blank\" href=\"".$this->params['settings']->_httpRoot."op/op.ViewOnline.php?documentid=".$latestContent->getDocument()->getId()."&version=". $latestContent->getVersion()."\">";
} else {
if($accessobject->check_controller_access('Download', array('action'=>'version')))
print "<a href=\"".$this->params['settings']->_httpRoot."op/op.Download.php?documentid=".$latestContent->getDocument()->getId()."&version=".$latestContent->getVersion()."\">";
$previewer->createPreview($latestContent);
$previewhtml = $this->callHook('documentPreviewThumb', $previewer, $latestContent->getDocument(), $latestContent);
if(is_string($previewhtml))
echo $previewhtml;
else {
if ($viewonlinefiletypes && (in_array(strtolower($latestContent->getFileType()), $viewonlinefiletypes) || in_array(strtolower($latestContent->getMimeType()), $viewonlinefiletypes))) {
if($accessobject->check_controller_access('ViewOnline', array('action'=>'run')))
print "<a target=\"_blank\" href=\"".$this->params['settings']->_httpRoot."op/op.ViewOnline.php?documentid=".$latestContent->getDocument()->getId()."&version=". $latestContent->getVersion()."\">";
} else {
if($accessobject->check_controller_access('Download', array('action'=>'version')))
print "<a href=\"".$this->params['settings']->_httpRoot."op/op.Download.php?documentid=".$latestContent->getDocument()->getId()."&version=".$latestContent->getVersion()."\">";
}
if($previewer->hasPreview($latestContent)) {
print("<img class=\"mimeicon\" width=\"".$previewwidthdetail."\" src=\"".$this->params['settings']->_httpRoot."op/op.Preview.php?documentid=".$latestContent->getDocument()->getID()."&version=".$latestContent->getVersion()."&width=".$previewwidthdetail."\" title=\"".htmlspecialchars($latestContent->getMimeType())."\">");
} else {
print "<img class=\"mimeicon\" width=\"".$previewwidthdetail."\" src=\"".$this->getMimeIcon($latestContent->getFileType())."\" title=\"".htmlspecialchars($latestContent->getMimeType())."\">";
}
if ($accessobject->check_controller_access('ViewOnline', array('action'=>'run')) || $accessobject->check_controller_access('Download', array('action'=>'version'))) {
print "</a>";
}
}
}
$previewer->createPreview($latestContent);
if($previewer->hasPreview($latestContent)) {
print("<img class=\"mimeicon\" width=\"".$previewwidthdetail."\" src=\"".$this->params['settings']->_httpRoot."op/op.Preview.php?documentid=".$latestContent->getDocument()->getID()."&version=".$latestContent->getVersion()."&width=".$previewwidthdetail."\" title=\"".htmlspecialchars($latestContent->getMimeType())."\">");
} else {
print "<img class=\"mimeicon\" width=\"".$previewwidthdetail."\" src=\"".$this->getMimeIcon($latestContent->getFileType())."\" title=\"".htmlspecialchars($latestContent->getMimeType())."\">";
}
if ($file_exists && ($accessobject->check_controller_access('ViewOnline', array('action'=>'run')) || $accessobject->check_controller_access('Download', array('action'=>'version')))) {
print "</a>";
}
// print "</td>\n";
// print "<td>";
@ -2050,4 +2057,3 @@ $(document).ready( function() {
$this->htmlEndPage();
} /* }}} */
}
?>

View File

@ -363,6 +363,7 @@ $(document).ready( function() {
}); /* }}} */
$('body').on('click', '[data-toggle="modal"]', function(ev){ /* {{{ */
setTimeout(function(){initMost();}, 500);
/* Also set the title */
if($(this).data("modal-title"))
$($(this).data("target")+' .modal-header h3').html($(this).data("modal-title"));
@ -407,6 +408,8 @@ $(document).ready( function() {
if(data.success) {
$("#main-clipboard").html('Loading').load(seeddms_webroot+'out/out.Clipboard.php?action=mainclipboard')
$("#menu-clipboard div").html('Loading').load(seeddms_webroot+'out/out.Clipboard.php?action=menuclipboard')
$("div.ajax[data-action='navigation']").trigger('update', {});
$("div.ajax[data-action='folderList']").trigger('update', {});
noty({
text: attr_msg,
type: 'success',
@ -442,6 +445,8 @@ $(document).ready( function() {
if(data.success) {
$("#main-clipboard").html('Loading').load(seeddms_webroot+'out/out.Clipboard.php?action=mainclipboard')
$("#menu-clipboard div").html('Loading').load(seeddms_webroot+'out/out.Clipboard.php?action=menuclipboard')
$("div.ajax[data-action='navigation']").trigger('update', {});
$("div.ajax[data-action='folderList']").trigger('update', {});
noty({
text: attr_msg,
type: 'success',
@ -716,8 +721,7 @@ $(document).ready( function() {
window.history.back();
}); /* }}} */
$("body").on("blur", "span.editable", function(e) { /* {{{ */
console.log($(this).data('document'));
$("body").on("blur", "span.editdocname", function(e) { /* {{{ */
e.preventDefault();
$.post(seeddms_webroot+"op/op.Ajax.php", { command: "setdocumentname", id: $(this).data('document'), formtoken: $(this).data('formtoken'), name: $(this).text() })
.done(function( data ) {
@ -753,6 +757,8 @@ function onAddClipboard(ev) { /* {{{ */
if(data.success) {
$("#main-clipboard").html('Loading').load(seeddms_webroot+'out/out.Clipboard.php?action=mainclipboard')
$("#menu-clipboard div").html('Loading').load(seeddms_webroot+'out/out.Clipboard.php?action=menuclipboard')
$("div.ajax[data-action='navigation']").trigger('update', {});
$("div.ajax[data-action='folderList']").trigger('update', {});
noty({
text: data.message,
type: 'success',

View File

@ -378,7 +378,11 @@ background-image: linear-gradient(to bottom, #882222, #111111);;
echo " <a class=\"nav-link dropdown-toggle\" data-toggle=\"dropdown\">".$menuitem['label']."</a>\n";
echo " <div class=\"dropdown-menu dropdown-menu-left\">\n";
foreach($menuitem['children'] as $submenuitem) {
echo " <a class=\"dropdown-item\" href=\"".$submenuitem['link']."\"".(isset($submenuitem['target']) ? ' target="'.$submenuitem['target'].'"' : '').">".$submenuitem['label']."</a>\n";
echo " <a class=\"dropdown-item\" href=\"".$submenuitem['link']."\"".(isset($submenuitem['target']) ? ' target="'.$submenuitem['target'].'"' : '');
if(!empty($submenuitem['attributes']))
foreach($submenuitem['attributes'] as $attr)
echo ' '.$attr[0].'="'.$attr[1].'"';
echo ">".$submenuitem['label']."</a>\n";
}
echo " </div>\n";
} else {
@ -472,7 +476,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);;
echo " <a class=\"dropdown-item active\"";
else
echo " <a class=\"dropdown-item\"";
echo " href=\"".$this->params['settings']->_httpRoot."op/op.SetLanguage.php?lang=".$currLang."&referer=".$_SERVER["REQUEST_URI"]."\">";
echo " href=\"".$this->params['settings']->_httpRoot."op/op.SetLanguage.php?lang=".$currLang."&referer=".urlencode(encryptData($this->params['settings']->_encryptionKey, $_SERVER["REQUEST_URI"]))."\">";
echo getMLText($currLang)."</a>\n";
}
echo " </div>\n";
@ -701,6 +705,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);;
private function folderNavigationBar($folder) { /* {{{ */
$dms = $this->params['dms'];
$session = $this->params['session'];
$enableClipboard = $this->params['enableclipboard'];
$accessobject = $this->params['accessobject'];
if (!is_object($folder) || !$folder->isType('folder')) {
@ -743,7 +748,10 @@ background-image: linear-gradient(to bottom, #882222, #111111);;
$menuitems['edit_folder_notify'] = array('link'=>$this->params['settings']->_httpRoot."out/out.FolderNotify.php?folderid=". $folderID ."&showtree=". showtree(), 'label'=>getMLText('edit_folder_notify'));
}
if($enableClipboard) {
$menuitems['add_to_clipboard'] = array('class'=>'addtoclipboard', 'attributes'=>array(['rel', 'F'.$folder->getId()], ['msg', getMLText('splash_added_to_clipboard')], ['title', getMLText("add_to_clipboard")]), 'label'=>getMLText("add_to_clipboard"));
if($session->isOnClipboard($folder))
$menuitems['remove_from_clipboard'] = array('class'=>'removefromclipboard', 'attributes'=>array(['rel', 'F'.$folder->getId()], ['msg', getMLText('splash_removed_from_clipboard')], ['title', getMLText("remove_from_clipboard")]), 'label'=>getMLText("remove_from_clipboard"));
else
$menuitems['add_to_clipboard'] = array('class'=>'addtoclipboard', 'attributes'=>array(['rel', 'F'.$folder->getId()], ['msg', getMLText('splash_added_to_clipboard')], ['title', getMLText("add_to_clipboard")]), 'label'=>getMLText("add_to_clipboard"));
}
if ($this->params['user']->isAdmin() && $this->params['enablefullsearch']) {
$menuitems['index_folder'] = array('link'=>$this->params['settings']->_httpRoot."out/out.Indexer.php?folderid=". $folderID."&showtree=".showtree(), 'label'=>getMLText('index_folder'));
@ -764,6 +772,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);;
} /* }}} */
private function documentNavigationBar($document) { /* {{{ */
$session = $this->params['session'];
$accessobject = $this->params['accessobject'];
$enableClipboard = $this->params['enableclipboard'];
$accessMode = $document->getAccessMode($this->params['user']);
@ -823,7 +832,10 @@ background-image: linear-gradient(to bottom, #882222, #111111);;
$menuitems['edit_document_notify'] = array('link'=>$this->params['settings']->_httpRoot."out/out.DocumentNotify". $docid, 'label'=>getMLText('edit_document_notify'));
}
if($enableClipboard) {
$menuitems['add_to_clipboard'] = array('class'=>'addtoclipboard', 'attributes'=>array(['rel', 'D'.$document->getId()], ['msg', getMLText('splash_added_to_clipboard')], ['title', getMLText("add_to_clipboard")]), 'label'=>getMLText("add_to_clipboard"));
if($session->isOnClipboard($document))
$menuitems['remove_from_clipboard'] = array('class'=>'removefromclipboard', 'attributes'=>array(['rel', 'D'.$document->getId()], ['msg', getMLText('splash_removed_from_clipboard')], ['title', getMLText("remove_from_clipboard")]), 'label'=>getMLText("remove_from_clipboard"));
else
$menuitems['add_to_clipboard'] = array('class'=>'addtoclipboard', 'attributes'=>array(['rel', 'D'.$document->getId()], ['msg', getMLText('splash_added_to_clipboard')], ['title', getMLText("add_to_clipboard")]), 'label'=>getMLText("add_to_clipboard"));
}
if ($accessobject->check_view_access('TransferDocument')) {
$menuitems['transfer_document'] = array('link'=>$this->params['settings']->_httpRoot."out/out.TransferDocument". $docid, 'label'=>getMLText('transfer_document'));
@ -1539,12 +1551,12 @@ function getOverallStatusIcon($status) { /* {{{ */
function getModalBox($config) { /* {{{ */
$content = '';
$content .= '
<div class="modal fade" id="'.$config['id'].'" tabindex="-1" role="dialog" aria-labelledby="'.$config['id'].'Label" aria-hidden="true">
<div class="modal fade" id="'.$config['id'].'" tabindex="-1" role="dialog" aria-labelledby="'.$config['id'].'Label">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
<div class="modal-header">
<h3 id="'.$config['id'].'Label">'.$config['title'].'</h3>
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<button type="button" class="close" data-dismiss="modal">×</button>
</div>
<div class="modal-body">
';
@ -1558,7 +1570,7 @@ function getOverallStatusIcon($status) { /* {{{ */
';
if($config['buttons']) {
foreach($config['buttons'] as $button)
$content .= '<button class="btn'.(!empty($button['id']) ? ' btn-primary" id="'.$button['id'].'"': ' btn-secondary" ').' data-dismiss="modal" aria-hidden="true">'.$button['title'].'</button>';
$content .= '<button class="btn'.(!empty($button['id']) ? ' btn-primary" id="'.$button['id'].'"': ' btn-secondary" ').' data-dismiss="modal">'.$button['title'].'</button>';
}
$content .= '
</div>
@ -2044,6 +2056,15 @@ $(document).ready(function() {
echo self::getAttributeEditField($attrdef, $attribute, $fieldname, $norequire, $namepostfix, $alwaysmultiple);
} /* }}} */
/**
* Return html code for an input/select field of an attribute
*
* The passed attribute ($attribute) can either be an object of type
* SeedDMS_Core_Attribute, scalar or an array. A scalar or array is
* passed when the method is called to create the search form. In that
* case $attribute has the value from the post data after submitting the
* search form.
*/
function getAttributeEditField($attrdef, $attribute, $fieldname='attributes', $norequire=false, $namepostfix='', $alwaysmultiple=false) { /* {{{ */
$dms = $this->params['dms'];
$attr_id = $fieldname.'_'.$attrdef->getId().($namepostfix ? '_'.$namepostfix : '');
@ -2077,18 +2098,27 @@ $(document).ready(function() {
$content .= "<input type=\"text\" class=\"form-control\" id=\"".$attr_id."\" name=\"".$attr_name."\" value=\"".htmlspecialchars($objvalue)."\"".((!$norequire && $attrdef->getMinValues() > 0) ? ' required="required"' : '')." data-rule-number=\"true\"/>";
break; */
case SeedDMS_Core_AttributeDefinition::type_folder:
$target = $attribute ? $attribute->getValue() : null;
$target = $attribute ? (is_object($attribute) ? $attribute->getValue() : $attribute) : null;
$content .= $this->getFolderChooserHtml("attr".$attrdef->getId(), M_READWRITE, -1, $target, $attr_name, false);
break;
case SeedDMS_Core_AttributeDefinition::type_document:
$target = $attribute ? $attribute->getValue() : null;
$target = $attribute ? (is_object($attribute) ? $attribute->getValue() : $attribute) : null;
$content .= $this->getDocumentChooserHtml("attr".$attrdef->getId(), M_READ, -1, $target, $attr_name);
break;
case SeedDMS_Core_AttributeDefinition::type_user:
$target = $attribute ? $attribute->getValueAsArray() : [];
$objvalue = [];
foreach($target as $t)
$objvalue[] = $t->getId();
if($attribute) {
if(is_object($attribute)) {
$target = $attribute->getValueAsArray();
foreach($target as $t)
$objvalue[] = $t->getId();
} elseif(is_array($attribute)) {
foreach($attribute as $t)
$objvalue[] = $t;
} else {
$objvalue[] = $attribute;
}
}
$users = $dms->getAllUsers();
if($users) {
$allowempty = $attrdef->getMinValues() == 0;
@ -2108,10 +2138,19 @@ $(document).ready(function() {
}
break;
case SeedDMS_Core_AttributeDefinition::type_group:
$target = $attribute ? $attribute->getValueAsArray() : [];
$objvalue = [];
foreach($target as $t)
$objvalue[] = $t->getId();
if($attribute) {
if(is_object($attribute)) {
$target = $attribute->getValueAsArray();
foreach($target as $t)
$objvalue[] = $t->getId();
} elseif(is_array($attribute)) {
foreach($attribute as $t)
$objvalue[] = $t;
} else {
$objvalue[] = $attribute;
}
}
$groups = $dms->getAllGroups();
if($groups) {
$allowempty = $attrdef->getMinValues() == 0;
@ -2606,9 +2645,9 @@ $(function() {
*
* @param string text
*/
function printInlineEdit($text, $object){ /* {{{ */
function printInlineEditDocumentName($text, $object){ /* {{{ */
if(!empty($this->params['settings']->_inlineEditing)) {
echo "<span class=\"editable\" contenteditable=\"true\"";
echo "<span class=\"editdocname editable\" contenteditable=\"true\"";
if($object->isType('document'))
echo " data-document=\"".$object->getId()."\" data-formtoken=\"".createFormKey('setdocumentname')."\"";
echo ">".$text;
@ -3251,6 +3290,7 @@ $('body').on('click', '[id^=\"table-row-folder\"] td:nth-child(2)', function(ev)
function documentListRowAction($document, $previewer, $skipcont=false, $version=0, $extracontent=array()) { /* {{{ */
$user = $this->params['user'];
$session = $this->params['session'];
$enableClipboard = $this->params['enableclipboard'];
$accessop = $this->params['accessobject'];
$onepage = $this->params['onepage'];
@ -3280,7 +3320,10 @@ $('body').on('click', '[id^=\"table-row-folder\"] td:nth-child(2)', function(ev)
$actions['document_access'] = $this->printAccessButton($document, true);
}
if($enableClipboard) {
$actions['add_to_clipboard'] = '<a class="addtoclipboard" rel="D'.$docID.'" msg="'.getMLText('splash_added_to_clipboard').'" title="'.getMLText("add_to_clipboard").'"><i class="fa fa-copy"></i></a>';
if($session->isOnClipboard($document))
$actions['remove_from_clipboard'] = '<a class="removefromclipboard" rel="D'.$docID.'" msg="'.getMLText('splash_removed_from_clipboard').'" title="'.getMLText("remove_from_clipboard").'"><i class="fa fa-copy"></i></a>';
else
$actions['add_to_clipboard'] = '<a class="addtoclipboard" rel="D'.$docID.'" msg="'.getMLText('splash_added_to_clipboard').'" title="'.getMLText("add_to_clipboard").'"><i class="fa fa-copy"></i></a>';
}
if($onepage)
$actions['view_document'] = '<a href="'.$this->params['settings']->_httpRoot.'out/out.ViewDocument.php?documentid='.$docID.'" title="'.getMLText("view_document").'"><i class="fa fa-eye"></i></a>';
@ -3351,7 +3394,7 @@ $('body').on('click', '[id^=\"table-row-folder\"] td:nth-child(2)', function(ev)
$extracontent = array_merge($extracontent, $ec);
$content .= "<td>";
if (file_exists($dms->contentDir . $latestContent->getPath())) {
if ($latestContent->exists()) {
$previewhtml = $this->callHook('documentListPreview', $previewer, $document, $latestContent);
if(is_string($previewhtml))
$content .= $previewhtml;
@ -3421,7 +3464,7 @@ $('body').on('click', '[id^=\"table-row-folder\"] td:nth-child(2)', function(ev)
if($totalreceipts) {
$content .= "
<div class=\"progress\">
<div class=\"progress-bar bar bar-success bg-success d-block\" role=\"progress-bar\" style=\"width: ".round($rstat['1']/$totalreceipts*100)."%;\">".($rstat['1'] ? $rstat['1']."/".$totalreceipts : '').($allcomments['1'] ? " ".$this->printPopupBox('<i class="fa fa-comment"></i>', implode('<br />', formatComment($allcomments['1'])), true) : "")."</div>
<div class=\"progress-bar bar bar-success bg-success\" role=\"progress-bar\" style=\"width: ".round($rstat['1']/$totalreceipts*100)."%;\">".($rstat['1'] ? $rstat['1']."/".$totalreceipts : '').($allcomments['1'] ? " ".$this->printPopupBox('<i class="fa fa-comment"></i>', implode('<br />', formatComment($allcomments['1'])), true) : "")."</div>
<div class=\"progress-bar bar bar-danger bg-danger\" style=\"width: ".round($rstat['-1']/$totalreceipts*100)."%;\">".($rstat['-1'] ? $rstat['-1']."/".$totalreceipts : '').($allcomments['-1'] ? " ".$this->printPopupBox('<i class="fa fa-comment"></i>', implode('<br />', formatComment($allcomments['-1'])), true) : "")."</div>
</div>";
}
@ -3538,6 +3581,7 @@ $('body').on('click', '[id^=\"table-row-folder\"] td:nth-child(2)', function(ev)
function folderListRowAction($subFolder, $skipcont=false, $extracontent=array()) { /* {{{ */
$dms = $this->params['dms'];
$user = $this->params['user'];
$session = $this->params['session'];
// $folder = $this->params['folder'];
$showtree = $this->params['showtree'];
$enableRecursiveCount = $this->params['enableRecursiveCount'];
@ -3570,7 +3614,10 @@ $('body').on('click', '[id^=\"table-row-folder\"] td:nth-child(2)', function(ev)
$actions['folder_access'] = $this->printAccessButton($subFolder, true);
}
if($enableClipboard) {
$actions['add_to_clipboard'] = '<a class="addtoclipboard" rel="F'.$subFolder->getID().'" msg="'.getMLText('splash_added_to_clipboard').'" title="'.getMLText("add_to_clipboard").'"><i class="fa fa-copy"></i></a>';
if($session->isOnClipboard($subFolder))
$actions['add_to_clipboard'] = '<a class="removefromclipboard" rel="F'.$subFolder->getID().'" msg="'.getMLText('splash_removed_from_clipboard').'" title="'.getMLText("remove_from_clipboard").'"><i class="fa fa-copy"></i></a>';
else
$actions['add_to_clipboard'] = '<a class="addtoclipboard" rel="F'.$subFolder->getID().'" msg="'.getMLText('splash_added_to_clipboard').'" title="'.getMLText("add_to_clipboard").'"><i class="fa fa-copy"></i></a>';
}
if($onepage)
$actions['view_folder'] = '<a href="'.$this->params['settings']->_httpRoot.'out/out.ViewFolder.php?folderid='.$subFolder->getID().'" title="'.getMLText("view_folder").'"><i class="fa fa-eye"></i></a>';

View File

@ -396,7 +396,7 @@ $(document).ready( function() {
$('body').on('click', '[data-toggle="modal"]', function(ev){ /* {{{ */
ev.preventDefault();
if($(this).data("remote"))
$($(this).data("target")+' .modal-body').load($(this).data("remote"));
$($(this).data("target")+' .modal-body').load($(this).data("remote"), function() {setTimeout(function(){initMost();}, 500);});
/* Also set the title */
if($(this).data("modal-title"))
$($(this).data("target")+' .modal-header h3').html($(this).data("modal-title"));
@ -456,6 +456,8 @@ $(document).ready( function() {
if(data.success) {
$("#main-clipboard").html('Loading').load(seeddms_webroot+'out/out.Clipboard.php?action=mainclipboard')
$("#menu-clipboard div").html('Loading').load(seeddms_webroot+'out/out.Clipboard.php?action=menuclipboard')
$("div.ajax[data-action='navigation']").trigger('update', {});
$("div.ajax[data-action='folderList']").trigger('update', {});
noty({
text: attr_msg,
type: 'success',
@ -491,6 +493,8 @@ $(document).ready( function() {
if(data.success) {
$("#main-clipboard").html('Loading').load(seeddms_webroot+'out/out.Clipboard.php?action=mainclipboard')
$("#menu-clipboard div").html('Loading').load(seeddms_webroot+'out/out.Clipboard.php?action=menuclipboard')
$("div.ajax[data-action='navigation']").trigger('update', {});
$("div.ajax[data-action='folderList']").trigger('update', {});
noty({
text: attr_msg,
type: 'success',
@ -765,8 +769,7 @@ $(document).ready( function() {
window.history.back();
}); /* }}} */
$("body").on("blur", "span.editable", function(e) { /* {{{ */
console.log($(this).data('document'));
$("body").on("blur", "span.editdocname", function(e) { /* {{{ */
e.preventDefault();
$.post(seeddms_webroot+"op/op.Ajax.php", { command: "setdocumentname", id: $(this).data('document'), formtoken: $(this).data('formtoken'), name: $(this).text() })
.done(function( data ) {
@ -802,6 +805,8 @@ function onAddClipboard(ev) { /* {{{ */
if(data.success) {
$("#main-clipboard").html('Loading').load(seeddms_webroot+'out/out.Clipboard.php?action=mainclipboard')
$("#menu-clipboard div").html('Loading').load(seeddms_webroot+'out/out.Clipboard.php?action=menuclipboard')
$("div.ajax[data-action='navigation']").trigger('update', {});
$("div.ajax[data-action='folderList']").trigger('update', {});
noty({
text: data.message,
type: 'success',