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

This commit is contained in:
Uwe Steinmann 2025-09-18 11:54:08 +02:00
commit d260386f5f
111 changed files with 6069 additions and 2844 deletions

101
CHANGELOG
View File

@ -1,19 +1,52 @@
--------------------------------------------------------------------------------
Changes in version 6.1.0
--------------------------------------------------------------------------------
- merge changes up to 6.0.26
- merge changes up to 6.0.35
- add attribute groups and selective output of attributes
- do not use md5 password hashing anymore, hashes will be updated automatically
when passwords are reset
- count failed runs of a task, disable it after 5 failures
-------------------------------------------------------------------------------
Changes in version 6.0.35
--------------------------------------------------------------------------------
- merge changes up to 5.1.42
-------------------------------------------------------------------------------
--------------------------------------------------------------------------------
Changes in version 6.0.34
--------------------------------------------------------------------------------
- merge changes up to 5.1.41
- Revisors can be set, even if revision date is not set
- fix saving revision one vote reject
- show statistics on how many have revised a document
- fix possible xss attack in setup of 2-factor authentication
- better layout of page for setup of 2-factor authentication
--------------------------------------------------------------------------------
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
--------------------------------------------------------------------------------
- merge changes up to 5.1.38
- fix various restapi endpoints which hadn't been updated to slim4
--------------------------------------------------------------------------------
Changes in version 6.0.30
--------------------------------------------------------------------------------
- merge changes up to 5.1.37
- receipt comment can be disabled
- send request receipt notification only when document is released
--------------------------------------------------------------------------------
Changes in version 6.0.29
@ -312,6 +345,66 @@
- add document list which can be exported as an archive
- search results can be exported
--------------------------------------------------------------------------------
Changes in version 5.1.42
--------------------------------------------------------------------------------
- use proxy when getting latest version
--------------------------------------------------------------------------------
Changes in version 5.1.41
--------------------------------------------------------------------------------
- action when clicking on a thumbnail can be set (download or view online)
- major update of polish translation
- fix getting access rights in getMandatoryApprovers() and getMandatoryReviewers()
- better checking for attribute definition when building a search query
- fix list of related documents when hook documentListItem() is implemented
- move EditAttributes into controller and add various hooks (like EditDocument)
- move sending notification mail when attributes are changed into
Notification Service
- more documentation on configuring LDAP
- collect output controller/view hooks with '+' instead of array_merge()
- add hook 'searchExportOptions'
- show how many users have to review/approve a document and how many did
already (in menu task list and document list)
- break long original file names on viewDocument page
- fix potential XSS attack in many fields of settings
- allow to edit original filename, check filename for problematic chars
--------------------------------------------------------------------------------
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
--------------------------------------------------------------------------------
- require php 8.2
- fix php error in out/out.ReviewSummary.php
--------------------------------------------------------------------------------
Changes in version 5.1.37
--------------------------------------------------------------------------------
@ -319,6 +412,10 @@
- documents in certain folders can be excluded from dashboard, could be useful
for folders containing archived documents
- migrate from Slim 3 to Slim 4 (check for extension updates)
- fix reloading more entries in list of folders/documents at end of page if
maxItemsPerPage is set
- prevent xss attack
- log level for rest api can be set separately
--------------------------------------------------------------------------------
Changes in version 5.1.36

View File

@ -24,7 +24,7 @@ dist:
rm -rf tmp
quickstart:
php7.4 vendor/bin/phing -Dversion=$(VERSION) package
php8.2 vendor/bin/phing -Dversion=$(VERSION) package
unittest:
vendor/bin/phing -Dversion=$(VERSION) phpunitfast

View File

@ -16,7 +16,7 @@
<propertyregex property="shortversion" subject="${version} kk" pattern="([56])\.([0-9]).*" replace="seeddms$1$2x" override="true"/>
<property name="majorversion" value="${version}" />
<propertyregex property="majorversion" subject="${version}" pattern="([56])\..*" replace="$1" override="true"/>
<property name="composer_version" value="2.2.22" />
<property name="composer_version" value="2.8.5" />
<property name="composer_extra_params" value="" />
<property name="composer_env" value="" />
<property name="mink_driver" value="chrome" />
@ -73,8 +73,13 @@
<then>
<httpget url="https://getcomposer.org/composer-2.phar" sslVerifyPeer="false" dir="${srcdir}" filename="composer.phar" />
</then>
<else>
<httpget url="https://getcomposer.org/download/${composer_version}/composer.phar" sslVerifyPeer="false" dir="${srcdir}" />
<else>
<if>
<not><available file="composer.phar" /></not>
<then>
<httpget url="https://getcomposer.org/download/${composer_version}/composer.phar" sslVerifyPeer="false" dir="${srcdir}" />
</then>
</if>
</else>
</if>
<echo message="Installing dependencies..." />

View File

@ -1,30 +1,33 @@
{
"config": {
"platform": {
"php": "7.4"
"php": "8.2"
}
},
"require": {
"robthree/twofactorauth": "^1.5",
"sabre/dav": "^4.",
"sabre/xml": "*",
"robthree/twofactorauth": "^3.0",
"slim/slim": "^4.0",
"guzzlehttp/psr7": "*",
"erusev/parsedown": "*",
"erusev/parsedown-extra": "*",
"mibe/feedwriter": "^1.1",
"phpoffice/phpspreadsheet": "*",
"sabre/xml": "*",
"sabre/dav": "^4.",
"pear/log": "*",
"pear/mail": "*",
"pear/mail_mime": "*",
"pear/net_smtp": "*",
"pear/auth_sasl": "*",
"pear/db": "*",
"dragonmantank/cron-expression": "^3.1",
"alecrabbit/php-console-colour": "*",
"dragonmantank/cron-expression": "^3",
"zf1/zend-search-lucene": "*",
"symfony/http-foundation": "^5.4",
"php-di/php-di": "^6.4",
"slim/psr7": "^1.7",
"bacon/bacon-qr-code": "^3.0",
"seeddms/core": "dev-master",
"seeddms/lucene": "dev-master",
"seeddms/preview": "dev-master",

View File

@ -0,0 +1,123 @@
<?php
/**
* Implementation of EditAttributes controller
*
* @category DMS
* @package SeedDMS
* @license GPL 2
* @version @version@
* @author Uwe Steinmann <uwe@steinmann.cx>
* @copyright Copyright (C) 2010-2013 Uwe Steinmann
* @version Release: @package_version@
*/
/**
* Class which does the busines logic for editing the version attributes
*
* @category DMS
* @package SeedDMS
* @author Uwe Steinmann <uwe@steinmann.cx>
* @copyright Copyright (C) 2010-2025 Uwe Steinmann
* @version Release: @package_version@
*/
class SeedDMS_Controller_EditAttributes extends SeedDMS_Controller_Common {
public function run() {
$dms = $this->params['dms'];
$user = $this->params['user'];
$settings = $this->params['settings'];
$document = $this->params['document'];
$version = $this->params['version'];
if(false === $this->callHook('preEditAttributes')) {
if(empty($this->errormsg))
$this->errormsg = 'hook_preEditAttributes_failed';
return null;
}
$result = $this->callHook('editAttributes', $version);
if($result === null) {
$attributes = $this->params['attributes'];
$oldattributes = $version->getAttributes();
if($attributes) {
foreach($attributes as $attrdefid=>$attribute) {
if($attrdef = $dms->getAttributeDefinition($attrdefid)) {
if(null === ($ret = $this->callHook('validateAttribute', $attrdef, $attribute))) {
if($attribute) {
switch($attrdef->getType()) {
case SeedDMS_Core_AttributeDefinition::type_date:
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, $version, false)) {
$this->errormsg = getAttributeValidationText($attrdef->getValidationError(), $attrdef->getName(), $attribute);
return false;
}
if(!isset($oldattributes[$attrdefid]) || $attribute != $oldattributes[$attrdefid]->getValue()) {
if(!$version->setAttributeValue($dms->getAttributeDefinition($attrdefid), $attribute)) {
//UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("error_occured"));
return false;
}
}
} elseif($attrdef->getMinValues() > 0) {
$this->errormsg = array("attr_min_values", array("attrname"=>$attrdef->getName()));
return false;
} elseif(isset($oldattributes[$attrdefid])) {
if(!$version->removeAttribute($dms->getAttributeDefinition($attrdefid)))
// UI::exitError(getMLText("document_title", array("documentname" => $folder->getName())),getMLText("error_occured"));
return false;
}
} else {
if($ret === false)
return false;
}
}
}
}
foreach($oldattributes as $attrdefid=>$oldattribute) {
if(!isset($attributes[$attrdefid])) {
if(!$version->removeAttribute($dms->getAttributeDefinition($attrdefid)))
return false;
}
}
} elseif($result === false) {
if(empty($this->errormsg))
$this->errormsg = 'hook_editAttributes_failed';
return false;
}
if(false === $this->callHook('postEditAttributes')) {
}
return true;
}
}

View File

@ -141,7 +141,7 @@ class SeedDMS_Controller_Login extends SeedDMS_Controller_Common {
$dms_session = $_COOKIE["mydms_session"];
if(!$resArr = $session->load($dms_session)) {
/* Turn off http only cookies if jumploader is enabled */
setcookie("mydms_session", $dms_session, time()-3600, $settings->_httpRoot, null, false, true); //delete cookie
setcookie("mydms_session", $dms_session, time()-3600, $settings->_httpRoot, '', false, true); //delete cookie
header("Location: " . $settings->_httpRoot . "out/out.Login.php?referuri=".$referuri);
exit;
} else {
@ -160,7 +160,7 @@ class SeedDMS_Controller_Login extends SeedDMS_Controller_Common {
$lifetime = time() + intval($settings->_cookieLifetime);
else
$lifetime = 0;
setcookie("mydms_session", $id, $lifetime, $settings->_httpRoot, null, false, true);
setcookie("mydms_session", $id, $lifetime, $settings->_httpRoot, '', false, true);
}
}
@ -238,7 +238,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

@ -18,6 +18,14 @@ Please note, that when ever a command outputs anything to stderr,
this will considered as a failure of the command. Most command line
programs have a parameter (.e.g. `-q`) to suppress such an output.
If you run php-fpm you may encounter problems with charsets based on
UTF-8. Programms like `catdoc` read LANG from the environment to
set the correct encoding of the output. php-fpm often clears the
environment and programms like `catdoc` will not longer output any
UTF-8 chars. In such a case you may want to set `clear_env=no` in
php-fpm's configuration. On Debian this is done in the file
`/etc/php/<php version>/fpm/pool.d/www.conf`. Search for `clear_env`.
Conversion to text for fulltext search
=======================================
@ -41,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

@ -10,25 +10,27 @@ regular ldap server, e.g. openldap
The location of the ldap server is specified in two parameters: `host` and
`port`. `host` can be either a plain hostname or an ldap URI, including the
protocol, the host and optionally the port, e.g. ldap://localhost:389. In case
protocol, the host and optionally the port, e.g. `ldap://localhost:389`. In case
of an URI the port in the configuration must remain empty.
The authentication itself is a two step process which differs, depending on how
to bind to the server. If the configuration sets 'bindDN' and 'bindPW', those
to bind to the server. If the configuration sets `bindDN` and `bindPW`, those
values will be used for a initial non anonymous bind to the ldap server
otherwise an anonymous bind is executed.
After the initial bind, a ldap search for either 'uid=<username>' (ldap) or
'sAMAccountName=<username>' (AD) below basedn is done. The purpose of this
After the initial bind, a ldap search for either `uid=<username>` (ldap) or
`sAMAccountName=<username>` (AD) below basedn is done. The purpose of this
search is to retrieve a working bindDN which is then used to actually
authenticate the user. In case of an anonymous first bind the search will
likely fail and the bindDN for the second bind will be either
'uid=<username>,<basedn>' (ldap) or '<username>@<accountDomainName>' (AD). If
the search succeeds the bindDN will be taken from the user's data in the ldap
authenticate the user. In case of a successful anonymous first bind but a
failed search (this seems to be the case when connecting to an AD), a second
non anonymous bind is tried. The bindDN for that second bind will be either
`uid=<username>,<basedn>` (ldap) or `<username>@<accountDomainName>` (AD).
If the search after the first anonymous bind succeeds, the bindDN will be
taken from the user's data in the ldap
server. This bindDN will be used for a second bind using the users password.
If the second bind succeeds the user could be successfully authenticated.
If the second bind succeeds the user is successfully authenticated.
The data from the ldap server can be used to create an account in SeedDMS
The data from the ldap server can be used to create or update an account in SeedDMS
if the user trying to login does not exist yet, but was able to authenticate.
This will only be done if 'authentication->restricted' in the configuration
is set to false. In that case the common name (cn) and email address is taken
@ -41,12 +43,37 @@ can be set with the attribute `mailField`. If it is not set it defaults to `mail
Since version 5.1.34 and 6.0.27 the groups of a user stored in the ldap directory
can be synchronised with the groups in SeedDMS. The ldap field storing
the groups can be configured with the attribute `mailField`. This will add
new groups in SeedDMS and aѕsign them to the user.
new groups in SeedDMS and assign them to the user.
Using email address for authentication
---------------------------------------
Since version 5.1.34 and 6.0.27 the email can be used for authentication
(requires `enableLoginByEmail` to be set in the configuration).
This only works if the search after the first bind succeeds, which is usually
only the case if it is a none anonymous bind.
Notes on connecting to an AD
-----------------------------
The ldap authentication was originally implemented for classic LDAP servers
like openldap. Before doing the actual authentication the user was searched
by combining the user's login name and the configured baseDN. This search was
preceded an anonymous or non anonymous bind (depending on wether bindDN and
bindPWD are set). The only purpose of that search was to retrieve the
distinguished name of the user, which was used in a second non anonymous bind
for authenticating the user. If that search fails or didn't return a record
(which seems to be always the case for an anonymous bind to an AD)
a second non anonymous bind with the user's credentials is tried. That bind
uses a dn which is quite different for classic ldap and AD (see examples
below). The dn for an AD is of the form '<username>@<domain>'. '<domain>' is
the string configured in the parameter `accountDomainName`.
Examples
---------
Anonymous bind to openldap on localhost, port 389
### Anonymous bind to openldap on localhost, port 389
- type = "ldap"
- baseDN = "ou=users,dc=mycompany,dc=de"
- host = "ldap://localhost"
@ -55,12 +82,37 @@ During authentication as user 'admin' the following steps are executed
1. connect to ldap server at localhost:389
2. do an anonymous bind
3. search for 'uid=admin' below basedn
3.1 if the bind succeeds, search for `uid=admin` below basedn
3.2 if the bind fails use `uid=admin,<basedn>` as dn and continue with step 5
4.1. if search succeeds use the dn from the user
4.2. if search fails use 'uid=admin,<basedn>' as dn
4.2. if search fails use `uid=admin,<basedn>` as dn
5. do a non anonymous bind with dn and password entered by user
6. if step 5. succeeds the use is authenticated
6. if step 5. succeeds the user is authenticated
7. if `restricted` in the settings is *not* set another ldap search for the
user is executed to retrieve the full name, and the email and if
8.1 the user doesn't exist in SeedDMS, the user will be created or
8.2 the user exists in SeedDMS, the use will be updated
If bindDN and bindPW are specified in the configuration, the second step
will be a non anonymous bind.
### Connecting to an AD
- type = "AD"
- baseDN = "ou=users,dc=mycompany,dc=de"
- accountDomainName=mycompany
- host = "ldap://localhost"
During authentication as user 'admin' the following steps are executed
1. connect to AD server at localhost:389
2. do an anonymous bind (which usually succeeds)
3. search for `uid=admin` below basedn (which usually returns an empty record)
4. if search returns no data use `admin@<accountDomainName>` as dn
5. do a non anonymous bind with dn and password entered by user
6. if step 5. succeeds the user is authenticated
7. if `restricted` in the settings is *not* set another ldap search for the
user is executed to retrieve the full name, and the email and if
8.1 the user doesn't exist in SeedDMS, the user will be created or
8.2 the user exists in SeedDMS, the use will be updated

View File

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

View File

@ -33,6 +33,11 @@ class SeedDMS_Calendar {
*/
protected $db;
/**
* Instanz of user
*/
protected $user;
public function __construct($db, $user) { /* {{{ */
$this->db = $db;
$this->user = $user;

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) {
@ -284,7 +285,7 @@ class SeedDMS_Controller_Common {
if(is_string($tmpret)) {
$ret = ($ret === null) ? $tmpret : (is_string($ret) ? $ret.$tmpret : array_merge($ret, array($tmpret)));
} elseif(is_array($tmpret)) { // || is_object($tmpret)) {
$ret = ($ret === null) ? $tmpret : (is_string($ret) ? array_merge(array($ret), $tmpret) : array_merge($ret, $tmpret));
$ret = ($ret === null) ? $tmpret : (is_string($ret) ? (array($ret) + $tmpret) : ($ret + $tmpret));
} else
$ret = $tmpret;
}

View File

@ -39,12 +39,48 @@ class SeedDMS_Download_Mgr {
*/
protected $items;
/**
* @var array $folder_items list of folder content items
* @access protected
*/
protected $folder_items;
/**
* @var array $extracols list of arrays with extra columns per item
* @access protected
*/
protected $extracols;
/**
* @var array $folder_extracols list of arrays with extra columns per folder item
* @access protected
*/
protected $folder_extracols;
/**
* @var array $header list of entries in header (first line)
* @access protected
*/
protected $header;
/**
* @var array $folder_header list of entries in header (first line)
* @access protected
*/
protected $folder_header;
/**
* @var array $extraheader list of extra entries in header
* @access protected
*/
protected $extraheader;
/**
* @var array $folder_extraheader list of extra entries in header
* @access protected
*/
protected $folder_extraheader;
/**
* @var array $rawcontents list of content used instead of document content
* @access protected
@ -55,21 +91,50 @@ class SeedDMS_Download_Mgr {
* @var array $filenames filename used in archive
* @access protected
*/
protected $filnames;
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->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->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'));
$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();
$this->rawcontents = array();
$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;
} /* }}} */
public function addFolderHeader($extraheader) { /* {{{ */
$this->folder_extraheader = $extraheader;
} /* }}} */
public function addItem($item, $extracols=array(), $rawcontent='', $filename='') { /* {{{ */
$this->items[$item->getID()] = $item;
$this->extracols[$item->getID()] = $extracols;
@ -77,19 +142,26 @@ class SeedDMS_Download_Mgr {
$this->filenames[$item->getID()] = $filename;
} /* }}} */
public function addFolderItem($item, $extracols=array()) { /* {{{ */
$this->folder_items[$item->getID()] = $item;
$this->folder_extracols[$item->getID()] = $extracols;
} /* }}} */
public function createToc($file) { /* {{{ */
$items = $this->items;
$objPHPExcel = new PhpOffice\PhpSpreadsheet\Spreadsheet();
$objPHPExcel->setValueBinder(new \PhpOffice\PhpSpreadsheet\Cell\AdvancedValueBinder());
$objPHPExcel->getProperties()->setCreator("SeedDMS")->setTitle("Metadata");
if($items = $this->items) {
$sheet = $objPHPExcel->setActiveSheetIndex(0);
$sheet->setTitle(getMLText('documents'));
$i = 1;
$col = 1;
foreach($this->header as $h)
$sheet->setCellValueByColumnAndRow($col++, $i, $h);
if(!$this->skipdefaultcols)
foreach($this->header as $h)
$sheet->setCellValue([$col++, $i], $h);
foreach($this->extraheader as $h)
$sheet->setCellValueByColumnAndRow($col++, $i, $h);
$sheet->setCellValue([$col++, $i], $h);
$i++;
foreach($items as $item) {
if($item->isType('documentcontent')) {
@ -100,13 +172,14 @@ class SeedDMS_Download_Mgr {
$approvalStatus = $item->getApprovalStatus();
$col = 1;
$sheet->setCellValueByColumnAndRow($col++, $i, $document->getID());
$sheet->setCellValueByColumnAndRow($col++, $i, $document->getName());
$sheet->setCellValueByColumnAndRow($col++, $i, $document->getID()."-".$item->getOriginalFileName());
$sheet->setCellValueByColumnAndRow($col++, $i, getOverallStatusText($status['status']));
$sheet->setCellValueByColumnAndRow($col++, $i, $item->getVersion());
$l = $i;
$k = $i;
$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());
if($reviewStatus) {
foreach ($reviewStatus as $r) {
switch ($r["type"]) {
@ -128,11 +201,11 @@ class SeedDMS_Download_Mgr {
break;
}
$tcol = $col;
$sheet->setCellValueByColumnAndRow($tcol++, $l, $reqName);
$sheet->setCellValueByColumnAndRow($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->setCellValueByColumnAndRow($tcol++, $l, $r['comment']);
$sheet->setCellValueByColumnAndRow($tcol++, $l, getReviewStatusText($r["status"]));
$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->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++;
}
$l--;
@ -159,24 +232,61 @@ class SeedDMS_Download_Mgr {
break;
}
$tcol = $col;
$sheet->setCellValueByColumnAndRow($tcol++, $k, $reqName);
$sheet->setCellValueByColumnAndRow($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->setCellValueByColumnAndRow($tcol++, $k, $r['comment']);
$sheet->setCellValueByColumnAndRow($tcol++, $k, getApprovalStatusText($r["status"]));
$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->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++;
}
$k--;
}
$col += 4;
}
if(isset($this->extracols[$item->getID()]) && $this->extracols[$item->getID()]) {
foreach($this->extracols[$item->getID()] as $column)
$sheet->setCellValueByColumnAndRow($col++, $i, is_array($column) ? implode("\n", $column) : $column );
$sheet->setCellValue([$col++, $i], is_array($column) ? implode("\n", $column) : $column );
}
$i = max($l, $k);
$i++;
}
}
}
if($items = $this->folder_items) {
if($this->items)
$sheet = $objPHPExcel->createSheet($i);
else
$sheet = $objPHPExcel->setActiveSheetIndex(0);
$sheet->setTitle(getMLText('folders'));
$i = 1;
$col = 1;
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++;
$items = $this->folder_items;
foreach($items as $item) {
if($item->isType('folder')) {
$folder = $item;
$dms = $folder->_dms;
$col = 1;
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 );
}
$i++;
}
}
}
$objWriter = new PhpOffice\PhpSpreadsheet\Writer\Xlsx($objPHPExcel);
$objWriter->save($file);

View File

@ -46,6 +46,8 @@ class SeedDMS_EmailNotify extends SeedDMS_Notify {
protected $from_address;
protected $force_from;
protected $lazy_ssl;
protected $debug;
@ -203,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 {
@ -391,7 +397,7 @@ class SeedDMS_Extension_Mgr {
return false;
return self::checkExtensionByName($extname, $extconf, $options);
}
} /* }}} */
/**
* Check content of extension directory or configuration of extension

View File

@ -28,22 +28,22 @@ class SeedDMS_LdapAuthentication extends SeedDMS_Authentication {
var $settings;
protected function addUser($username, $info) {
$mailfield = !empty($settings->_ldapMailField) ? $settings->_ldapMailField : 'mail';
protected function addUser($username, $info) { /* {{{ */
$mailfield = !empty($this->settings->_ldapMailField) ? $this->settings->_ldapMailField : 'mail';
return $this->dms->addUser($username, null, $info['cn'][0], isset($info[$mailfield]) ? $info[$mailfield][0] : '', $this->settings->_language, $this->settings->_theme, "User was added from LDAP");
}
} /* }}} */
protected function updateUser($user, $info) {
$mailfield = !empty($settings->_ldapMailField) ? $settings->_ldapMailField : 'mail';
protected function updateUser($user, $info) { /* {{{ */
$mailfield = !empty($this->settings->_ldapMailField) ? $this->settings->_ldapMailField : 'mail';
if(isset($info['cn'][0]) && ($info['cn'][0] != $user->getFullName())) {
$user->setFullName($info['cn'][0]);
}
if(isset($info[$mailfield][0]) && ($info[$mailfield][0] != $user->getEmail())) {
$user->setEmail($info[$mailfield][0]);
}
}
} /* }}} */
protected function syncGroups($user, $ldapgroups) {
protected function syncGroups($user, $ldapgroups) { /* {{{ */
$groupnames = [];
$count = 0;
if(isset($ldapgroups['count']))
@ -88,7 +88,7 @@ class SeedDMS_LdapAuthentication extends SeedDMS_Authentication {
}
}
}
}
} /* }}} */
public function __construct($dms, $settings) { /* {{{ */
$this->dms = $dms;
@ -233,7 +233,7 @@ class SeedDMS_LdapAuthentication extends SeedDMS_Authentication {
}
/* Check if user already exists in the database. Return with an error
* only if the sql statements fails, but not if no user was found.
* only if the sql statements fails, but not if the user wasn't found.
* The username may not be the one passed to this function anymore. It
* could have been overwritten by uid (or sAMAccountName) derived from
* the above ldap search.

View File

@ -573,7 +573,7 @@ class SeedDMS_NotificationService {
* the currently logged in user is not the
* owner and the owner is not already in the list of notifiers.
*/
if($user->getID() != $content->getUser()->getID() && $content->getUser()->getID() != $document->getOwner()->getID() && false === SeedDMS_Core_DMS::inList($content->getUser(), $nl['users']))
if($user->getID() != $content->getUser()->getID() && $content->getUser()->getID() != $document->getOwner()->getID() && false === SeedDMS_Core_DMS::inList($content->getUser(), $notifyList['users']))
$this->toIndividual($user, $content->getUser(), $subject, $message, $params, SeedDMS_NotificationService::RECV_UPLOADER);
} /* }}} */
@ -685,6 +685,64 @@ class SeedDMS_NotificationService {
}
} /* }}} */
public function sendChangedVersionAttributesMail($version, $user, $oldattributes) { /* {{{ */
$document = $version->getDocument();
$dms = $document->getDMS();
$folder = $document->getFolder();
$notifyList = $document->getNotifyList();
$newattributes = $version->getAttributes();
if($oldattributes) {
foreach($oldattributes as $attrdefid=>$attribute) {
if(!isset($newattributes[$attrdefid]) || $newattributes[$attrdefid]->getValueAsArray() !== $oldattributes[$attrdefid]->getValueAsArray()) {
$subject = "attribute_changed_email_subject";
$message = "attribute_changed_email_body";
$params = array();
$params['name'] = $document->getName();
$params['version'] = $version->getVersion();
$params['attribute_name'] = $attribute->getAttributeDefinition()->getName();
$params['attribute_old_value'] = $oldattributes[$attrdefid]->getValue();
$params['attribute_new_value'] = isset($newattributes[$attrdefid]) ? $newattributes[$attrdefid]->getValue() : '';
$params['folder_path'] = $folder->getFolderPathPlain();
$params['username'] = $user->getFullName();
$params['url'] = getBaseUrl().$this->settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID();
$params['sitename'] = $this->settings->_siteName;
$params['http_root'] = $this->settings->_httpRoot;
$this->toList($user, $notifyList["users"], $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION);
foreach ($notifyList["groups"] as $grp) {
$this->toGroup($user, $grp, $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION);
}
}
}
}
/* Check for new attributes which didn't have a value before */
if($newattributes) {
foreach($newattributes as $attrdefid=>$attribute) {
if(!isset($oldattributes[$attrdefid]) && $attribute) {
$subject = "attribute_changed_email_subject";
$message = "attribute_changed_email_body";
$params = array();
$params['name'] = $document->getName();
$params['version'] = $version->getVersion();
$params['attribute_name'] = $dms->getAttributeDefinition($attrdefid)->getName();
$params['attribute_old_value'] = '';
$params['attribute_new_value'] = $attribute->getValue();
$params['folder_path'] = $folder->getFolderPathPlain();
$params['username'] = $user->getFullName();
$params['url'] = getBaseUrl().$this->settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID();
$params['sitename'] = $this->settings->_siteName;
$params['http_root'] = $this->settings->_httpRoot;
$this->toList($user, $notifyList["users"], $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION);
foreach ($notifyList["groups"] as $grp) {
$this->toGroup($user, $grp, $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION);
}
}
}
}
} /* }}} */
public function sendChangedFolderAttributesMail($folder, $user, $oldattributes) { /* {{{ */
$dms = $folder->getDMS();
$notifyList = $folder->getNotifyList();
@ -1288,7 +1346,7 @@ class SeedDMS_NotificationService {
$params['reviewer'] = $reviewer->getFullName();
elseif($reviewer->isType('group'))
$params['reviewer'] = $reviewer->getName();
$params['username'] = $user->getName();
$params['username'] = $user->getFullName();
$params['sitename'] = $this->settings->_siteName;
$params['http_root'] = $this->settings->_httpRoot;
$params['url'] = getBaseUrl().$this->settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID();
@ -1471,6 +1529,35 @@ class SeedDMS_NotificationService {
$this->toGroup($user, $recipient, $subject, $message, $params, SeedDMS_NotificationService::RECV_RECIPIENT);
} /* }}} */
/**
* Send a request receipt notification to all recipients of the document content
*
* This method can be called when the status of a document content changes
* to 'released'. The recipients haven't been informed when the
* document content was created but not immediatly released.
*/
public function sendToAllReceiptMail($content, $user) { /* {{{ */
$dms = $content->getDMS();
$receiptStatus = $content->getReceiptStatus();
if (!empty($receiptStatus)) {
foreach ($receiptStatus as $r) {
if($r['status'] == 0) {
switch ($r["type"]) {
case 0: // Recipient is an individual.
if($recipient = $dms->getUser($r["required"]))
$this->sendAddReceiptMail($content, $user, $recipient);
break;
case 1: // Recipient is a group.
if($recipient = $dms->getGroup($r["required"]))
$this->sendAddReceiptMail($content, $user, $recipient);
break;
}
}
}
}
} /* }}} */
public function sendChangedDocumentOwnerMail($document, $user, $oldowner) { /* {{{ */
if($oldowner->getID() != $document->getOwner()->getID()) {
$notifyList = $document->getNotifyList();

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

@ -154,6 +154,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
@ -267,8 +269,10 @@ class Settings { /* {{{ */
var $_allowChangeRevAppInProcess = false;
// enable/disable log system
var $_logFileEnable = true;
// enable/disable log system
// max log level
var $_logFileMaxLevel = 6; // PEAR_LOG_INFO
// max log level for restapi
var $_logFileRestApiMaxLevel = 6; // PEAR_LOG_INFO
// the log file rotation
var $_logFileRotation = "d";
// Enable file upload by fine-uploader (was 'jumploader')
@ -360,6 +364,8 @@ class Settings { /* {{{ */
var $_previewWidthDetail = 100;
// Preview image width in drop folder list
var $_previewWidthDropFolderList = 100;
// download or view online when clicking on preview image
var $_defaultThumbnailClick = 'download';
// show full preview on document details page
var $_showFullPreview = false;
// convert to pdf for preview on document details page
@ -392,6 +398,10 @@ class Settings { /* {{{ */
var $_smtpPort = null;
// SMTP : send from
var $_smtpSendFrom = null;
// SMTP : force send from
var $_smtpForceFrom = false;
// SMTP : allow self signed certificates
var $_smtpLazySSL = false;
// SMTP : user
var $_smtpUser = null;
// SMTP : password
@ -508,7 +518,7 @@ class Settings { /* {{{ */
*
*/
function stringToArray($value) { /* {{{ */
return explode(";", $Value);
return explode(";", $value);
} /* }}} */
/**
@ -590,6 +600,7 @@ class Settings { /* {{{ */
$this->_previewWidthDetail = intval($tab["previewWidthDetail"]);
if(isset($tab["previewWidthDropFolderList"]))
$this->_previewWidthDropFolderList = intval($tab["previewWidthDropFolderList"]);
$this->_defaultThumbnailClick = strval($tab["defaultThumbnailClick"]);
$this->_showFullPreview = Settings::boolVal($tab["showFullPreview"]);
$this->_convertToPdf = Settings::boolVal($tab["convertToPdf"]);
if(isset($tab["maxItemsPerPage"]))
@ -696,11 +707,13 @@ class Settings { /* {{{ */
$this->_proxyPassword = strval($tab["proxyPassword"]);
$this->_logFileEnable = Settings::boolVal($tab["logFileEnable"]);
$this->_logFileMaxLevel = strval($tab["logFileMaxLevel"]);
$this->_logFileRestApiMaxLevel = strval($tab["logFileRestApiMaxLevel"]);
$this->_logFileRotation = strval($tab["logFileRotation"]);
$this->_enableLargeFileUpload = Settings::boolVal($tab["enableLargeFileUpload"]);
$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');
@ -1007,6 +1020,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');
@ -1028,6 +1043,7 @@ class Settings { /* {{{ */
$this->setXMLAttributValue($node, "previewWidthMenuList", $this->_previewWidthMenuList);
$this->setXMLAttributValue($node, "previewWidthDetail", $this->_previewWidthDetail);
$this->setXMLAttributValue($node, "previewWidthDropFolderList", $this->_previewWidthDropFolderList);
$this->setXMLAttributValue($node, "defaultThumbnailClick", $this->_defaultThumbnailClick);
$this->setXMLAttributValue($node, "showFullPreview", $this->_showFullPreview);
$this->setXMLAttributValue($node, "convertToPdf", $this->_convertToPdf);
$this->setXMLAttributValue($node, "maxItemsPerPage", $this->_maxItemsPerPage);
@ -1114,11 +1130,13 @@ class Settings { /* {{{ */
$this->setXMLAttributValue($node, "proxyPassword", $this->_proxyPassword);
$this->setXMLAttributValue($node, "logFileEnable", $this->_logFileEnable);
$this->setXMLAttributValue($node, "logFileMaxLevel", $this->_logFileMaxLevel);
$this->setXMLAttributValue($node, "logFileRestApiMaxLevel", $this->_logFileRestApiMaxLevel);
$this->setXMLAttributValue($node, "logFileRotation", $this->_logFileRotation);
$this->setXMLAttributValue($node, "enableLargeFileUpload", $this->_enableLargeFileUpload);
$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');
@ -1346,9 +1364,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

@ -45,8 +45,8 @@ class UI extends UI_Default {
* @param array $params parameter passed to constructor of view class
* @return object an object of a class implementing the view
*/
static function factory($theme, $class='', $params=array()) { /* {{{ */
global $settings, $dms, $user, $session, $extMgr, $request, $logger, $notifier;
static public function factory($theme, $class='', $params=array()) { /* {{{ */
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);
@ -179,7 +180,7 @@ class UI extends UI_Default {
return null;
} /* }}} */
static function getStyles() { /* {{{ */
static public function getStyles() { /* {{{ */
global $settings;
$themes = array();
@ -196,7 +197,7 @@ class UI extends UI_Default {
return $themes;
} /* }}} */
static function exitError($pagetitle, $error, $noexit=false, $plain=false) {
static public function exitError($pagetitle, $error, $noexit=false, $plain=false) {
global $theme, $dms, $user, $settings;
$view = UI::factory($theme, 'ErrorDlg');
$request = $view->getParam('request');

View File

@ -213,7 +213,7 @@ class SeedDMS_View_Common {
if(is_string($tmpret)) {
$ret = ($ret === null) ? $tmpret : (is_string($ret) ? $ret.$tmpret : array_merge($ret, array($tmpret)));
} elseif(is_array($tmpret) || is_object($tmpret)) {
$ret = ($ret === null) ? $tmpret : (is_string($ret) ? array_merge(array($ret), $tmpret) : array_merge($ret, $tmpret));
$ret = ($ret === null) ? $tmpret : (is_string($ret) ? (array($ret) + $tmpret) : ($ret + $tmpret));
} else
$ret = $tmpret;
}

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

@ -32,6 +32,10 @@
use Symfony\Component\HttpFoundation\Request;
/* Actually not needed anymore, but some old extension may still use
* S_RELEASED, S_REJECTED, etc. from SeedDMS_Core_Document. So we keep
* it for a while. Should be removed von 6.0.31 and 5.1.38 is released.
*/
if (!empty($settings->_coreDir)) {
require_once $settings->_coreDir . '/Core.php';
} else {

View File

@ -27,8 +27,6 @@ class SeedDMS_ExpiredDocumentsTask extends SeedDMS_SchedulerTaskBase { /* {{{ */
$tableformathead = " %-10s %5s %-60s";
$tableformathtml = "<tr><td>%s</td><td>%d</td><td>%s</td></tr>";
$tableformatheadhtml = "<tr><th>%s</th><th>%s</th><th>%s</th></tr>";
$body = '';
$bodyhtml = '';
require_once('inc/inc.ClassEmailNotify.php');
$email = new SeedDMS_EmailNotify($dms, $settings->_smtpSendFrom, $settings->_smtpServer, $settings->_smtpPort, $settings->_smtpUser, $settings->_smtpPassword);
@ -39,6 +37,8 @@ class SeedDMS_ExpiredDocumentsTask extends SeedDMS_SchedulerTaskBase { /* {{{ */
if(!$u->isGuest() && !$u->isDisabled()) {
$docs = $dms->getDocumentsExpired(intval($taskparams['days']), $u);
if (count($docs)>0) {
$body = '';
$bodyhtml = '';
$bodyhtml .= "<table>".PHP_EOL;
$bodyhtml .= sprintf($tableformatheadhtml."\n", getMLText("expires", array(), ""), "ID", getMLText("name", array(), ""));
$body .= sprintf($tableformathead."\n", getMLText("expires", array(), ""), "ID", getMLText("name", array(), ""));
@ -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);
}
}
}
@ -65,6 +66,8 @@ class SeedDMS_ExpiredDocumentsTask extends SeedDMS_SchedulerTaskBase { /* {{{ */
} elseif($taskparams['email']) {
$docs = $dms->getDocumentsExpired(intval($taskparams['days']));
if (count($docs)>0) {
$body = '';
$bodyhtml = '';
$bodyhtml .= "<table>".PHP_EOL;
$bodyhtml .= sprintf($tableformatheadhtml."\n", getMLText("expiration_date", array(), ""), "ID", getMLText("name", array(), ""));
$body .= sprintf($tableformathead."\n", getMLText("expiration_date", array(), ""), "ID", getMLText("name", array(), ""));
@ -79,12 +82,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 +617,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 +719,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

@ -111,7 +111,7 @@ function getPeriodOfTime($timestamp) { /* {{{ */
* @return integer/boolean unix timestamp or false in case of an error
*/
function makeTsFromDate($date) { /* {{{ */
return strtotime($date);
return $date ? strtotime($date) : false;
} /* }}} */
/*
@ -462,6 +462,29 @@ function getFilenameByDocname($content) { /* {{{ */
return mb_ereg_replace("([^\w\s\d\-_~,;\[\]\(\).])", '', $filename);
} /* }}} */
function getStreamContext($proxyurl, $proxyuser, $proxypass) { /* {{{ */
if(!$proxyurl)
return null;
$url = parse_url($proxyurl);
$opts = [
$url['scheme'] => [
'proxy' => 'tcp://'.$url['host'].($url['port'] ? ':'.$url['port'] : ''),
'request_fulluri' => true,
]
];
if($proxyuser && $proxypass) {
$auth = base64_encode($proxyurl.':'.$this->proxypass);
$opts[$url['scheme']] = [
'header' => [
'Proxy-Authorization: Basic '.$auth
]
];
}
$context = stream_context_create($opts);
return $context;
} /* }}} */
function getLogger($prefix='', $mask=PEAR_LOG_INFO) { /* {{{ */
global $settings;
@ -743,6 +766,7 @@ function get_extension($mimetype) { /* {{{ */
case 'video/webm': return '.webm';
case 'application/zip': return '.zip';
case 'application/x-gzip': return '.gz';
case 'application/x-xz': return '.xz';
case 'application/x-rar': return '.rar';
case 'application/x-7z-compressed': return '.7z';
case 'application/x-compressed-tar': return '.tgz';
@ -1100,7 +1124,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();
}
}
}
@ -1148,9 +1174,9 @@ function getMandatoryReviewers($folder, $document, $user) { /* {{{ */
foreach($revg as $gid) {
if($g = $dms->getGroup($gid)) {
if($document)
$accessmode = $document->getGroupAccessMode($u);
$accessmode = $document->getGroupAccessMode($g);
else
$accessmode = $folder->getGroupAccessMode($u);
$accessmode = $folder->getGroupAccessMode($g);
if($accessmode < M_READ || !$g->getUsers())
$reviewers["ng"][] = $g->getId();
else
@ -1195,7 +1221,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();
}
}
}
@ -1243,9 +1271,9 @@ function getMandatoryApprovers($folder, $document, $user) { /* {{{ */
foreach($appg as $gid) {
if($g = $dms->getGroup($gid)) {
if($document)
$accessmode = $document->getGroupAccessMode($u);
$accessmode = $document->getGroupAccessMode($g);
else
$accessmode = $folder->getGroupAccessMode($u);
$accessmode = $folder->getGroupAccessMode($g);
if($accessmode < M_READ || !$g->getUsers())
$approvers["ng"][] = $g->getId();
else
@ -1424,3 +1452,667 @@ class SeedDMS_FolderTree { /* {{{ */
} /* }}} */
} /* }}} */
class SeedDMS_Search { /* {{{ */
protected $dms;
protected $user;
protected $fulltextservice;
protected $settings;
public $searchparams;
protected $total;
protected $dcount;
protected $fcount;
protected $totalPages;
protected $entries;
protected $terms;
protected $searchTime;
protected $facets;
protected $stats;
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->total = 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) {
if($attribute) {
if($attrdef = $this->dms->getAttributeDefinition($attrdefid)) {
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

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

@ -23,9 +23,11 @@
$text = array(
'2_factor_auth' => 'توثيق ذو عاملين',
'2_factor_auth_code' => '',
'2_factor_auth_info' => 'معلومات عن توثيق ذو عاملين',
'2_fact_auth_current_secret' => '',
'2_fact_auth_new_secret' => '',
'2_fact_auth_qrcode' => '',
'2_fact_auth_secret' => '',
'abbr_day' => '',
'abbr_hour' => '',
@ -397,6 +399,7 @@ URL: [url]',
'docs_in_reception_no_access' => 'الدخول مرفوض الى المستندات في الإستقبال',
'docs_in_revision_disabled' => '',
'docs_in_revision_no_access' => 'الدخول مرفوض الى المستندات قيد المراجعة',
'docs_with_link_to_itself' => '',
'docs_with_missing_revision_date' => '',
'document' => 'مستند',
'documentcontent' => 'موضوع المستند',
@ -553,6 +556,8 @@ URL: [url]',
'download_header_document_name' => '',
'download_header_document_no' => '',
'download_header_filename' => '',
'download_header_folder_name' => '',
'download_header_folder_no' => '',
'download_header_internal_version' => '',
'download_header_reviewer' => '',
'download_header_review_comment' => '',
@ -683,6 +688,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' => 'تحميل الإضافات',
@ -964,6 +971,7 @@ URL: [url]',
'linked_to_this_version' => 'متعلقة بهذا الإصدار',
'link_alt_updatedocument' => 'اذا كنت تود تحميل ملفات اكبر من حجم الملفات المتاحة حاليا, من فضلك استخدم البديل <a href="%s">صفحة التحميل</a>.',
'link_document' => 'رابط المستند',
'link_to' => '',
'link_to_version' => 'رابط الإصدار',
'list_access_rights' => 'لائحة حقوق الدخول',
'list_contains_no_access_docs' => 'هذه الائحة لا تحتوي على مستندات للدخول',
@ -1137,6 +1145,7 @@ URL: [url]',
'no_groups' => 'لايوجد مجموعات',
'no_group_members' => 'هذه المجموعة لايوجد بها اعضاء',
'no_linked_files' => 'لايوجد ملفات مرتبطة',
'no_mimetype' => '',
'no_previous_versions' => 'لايوجد اصدارات سابقة',
'no_receipt_needed' => 'لا يحتاج لأي مستلم',
'no_review_needed' => 'لايوجد مراجعات في الانتظار',
@ -1151,6 +1160,9 @@ URL: [url]',
'no_workflows' => '',
'no_workflow_available' => 'لا يوجد سير عمل',
'number_count' => '',
'n_of_m_approved' => '',
'n_of_m_reviewed' => '',
'n_of_m_revised' => '',
'objectcheck' => 'التحقق من مستند/مجلد',
'objects_without_attribute' => '',
'object_check_critical' => 'التحقق من الشيء في حالة حرجة',
@ -1192,6 +1204,7 @@ URL: [url]',
'password_forgotten_title' => 'ارسال كلمة السر',
'password_mismatch_error' => '',
'password_mismatch_error_title' => '',
'password_never_expires' => '',
'password_repeat' => 'تكرار كلمة السر',
'password_send' => 'أرسل كلمة السر',
'password_send_text' => 'أرسل نموذج كلمة السر',
@ -1219,6 +1232,7 @@ URL: [url]',
'preview_txt' => '',
'previous_state' => 'حالة سابقة',
'previous_versions' => 'اصدارات سابقة',
'problematic_filename' => '',
'process' => 'سير العمل',
'process_without_user_group' => 'معالجة دون استعمال مستخدم من المجموعة',
'pt_BR' => 'البرتغالية (BR)',
@ -1282,11 +1296,14 @@ URL: [url]',
'removed_workflow_email_body_html' => '',
'removed_workflow_email_subject' => '[sitename]: [name] - تم ازالة مسار العمل من اصدار المستند',
'removeFolderFromDropFolder' => 'إزالة مجلد من إسقاط لائحة',
'removeFolderFromDropFolder_desc' => '',
'remove_approval_log' => '',
'remove_from_clipboard' => '',
'remove_marked_files' => 'ازالة الملفات المختارة',
'remove_review_log' => '',
'remove_task' => '',
'reorder' => '',
'reorder_documents_in_folder' => '',
'repaired' => 'تم اصلاحه',
'repairing_objects' => 'تحضير المستندات والمجلدات.',
'replace_content_email_body' => '',
@ -1464,6 +1481,7 @@ URL: [url]',
'select_category' => 'اضغط لاختيار قسم',
'select_created' => '',
'select_documents_for_process' => '',
'select_folder' => '',
'select_group' => 'اختيار مجموعة',
'select_groups' => 'اضغط لاختيار مجموعة',
'select_grp_approvers' => 'اضغط لاختيار مجموعة الموافقون',
@ -1511,7 +1529,9 @@ URL: [url]',
'service_name' => '',
'sessions' => 'صفوف',
'setDateFromFile' => 'وضع تاريخ من الملف',
'setDateFromFile_desc' => '',
'setDateFromFolder' => 'تحديد التاريخ من المجلد',
'setDateFromFolder_desc' => '',
'settings' => 'الإعدادات',
'settings_activate_module' => 'Activate module',
'settings_activate_php_extension' => 'Activate PHP extension',
@ -1606,9 +1626,15 @@ URL: [url]',
'settings_defaultSearchMethod_desc' => 'طريقة البحث الافتراضية',
'settings_defaultSearchMethod_valdatabase' => 'طريقة البحث الافتراضية في قاعدة البيانات',
'settings_defaultSearchMethod_valfulltext' => 'طريقة البحث الافتراضية في جمل كاملة',
'settings_defaultThumbnailClick' => '',
'settings_defaultThumbnailClick_desc' => '',
'settings_defaultThumbnailClick_valdownload' => '',
'settings_defaultThumbnailClick_valviewonline' => '',
'settings_delete_install_folder' => 'مسح مثبت المجلد',
'settings_disableChangePassword' => '',
'settings_disableChangePassword_desc' => '',
'settings_disableReceiptComment' => '',
'settings_disableReceiptComment_desc' => '',
'settings_disableSelfEdit' => 'تعطيل التحرير الذاتي',
'settings_disableSelfEdit_desc' => 'تعطيل التحرير الذاتي',
'settings_disable_install' => 'تعطيل التثبيت',
@ -1674,6 +1700,8 @@ URL: [url]',
'settings_enableLargeFileUpload_desc' => 'تمكين تحميل الملفات الكبيرة',
'settings_enableLoginByEmail' => '',
'settings_enableLoginByEmail_desc' => '',
'settings_enableMemcached' => '',
'settings_enableMemcached_desc' => '',
'settings_enableMenuTasks' => 'تمكين مهام القائمة',
'settings_enableMenuTasks_desc' => 'تمكين مهام القائمة',
'settings_enableMenuTransmittals' => '',
@ -1733,6 +1761,8 @@ URL: [url]',
'settings_encryptionKey' => 'مفتاح التشفير',
'settings_encryptionKey_desc' => 'مفتاح التشفير',
'settings_error' => 'خطأ',
'settings_excludeFoldersDashboard' => '',
'settings_excludeFoldersDashboard_desc' => '',
'settings_expandFolderTree' => 'قم بتوسيع شجرة المجلد',
'settings_expandFolderTree_desc' => 'قم بتوسيع شجرة المجلد',
'settings_expandFolderTree_val0' => 'قم بتوسيع شجرة المجلد قيمة0',
@ -1791,6 +1821,8 @@ URL: [url]',
'settings_logFileEnable_desc' => 'تمكين سجل الملف',
'settings_logFileMaxLevel' => '',
'settings_logFileMaxLevel_desc' => '',
'settings_logFileRestApiMaxLevel' => '',
'settings_logFileRestApiMaxLevel_desc' => '',
'settings_logFileRotation' => 'سجل ملف التناوب',
'settings_logFileRotation_desc' => 'سجل ملف التناوب',
'settings_loginFailure' => 'فشل في تسجيل الدخول',
@ -1988,6 +2020,7 @@ URL: [url]',
'sign_out' => 'تسجيل الخروج',
'sign_out_user' => 'تسجيل خروج مستخدم',
'site_brand' => 'مجلس النواب اللبناني',
'skip_default_export_cols' => '',
'sk_SK' => 'السلوفاكية',
'sort_by_date' => 'رتب حسب التاريخ',
'sort_by_expiration_date' => '',
@ -2058,6 +2091,7 @@ URL: [url]',
'splash_move_document' => 'نقل المستند',
'splash_move_folder' => 'نقل الملف',
'splash_notinherit_access' => 'لا يرث الوصول',
'splash_orig_filename_changed' => '',
'splash_receipt_update_success' => 'استلام التحديث بنجاح',
'splash_removed_from_clipboard' => 'ازيل من الحافظة',
'splash_rm_attribute' => 'إزالة السمة',
@ -2117,6 +2151,7 @@ URL: [url]',
'status_revision_sleeping' => 'مراجعة الوضع في حالة النوم',
'status_revisor_removed' => 'تم ازالة حالة المراجع',
'status_unknown' => 'مجهول',
'storage' => '',
'storage_size' => 'حجم التخزين',
'subfolder_duplicate_name' => 'اسم مجلد فرعي مكرر',
'submit_2_fact_auth' => 'قدم ثنائي عامل التوثيق',

View File

@ -23,9 +23,11 @@
$text = array(
'2_factor_auth' => '',
'2_factor_auth_code' => '',
'2_factor_auth_info' => '',
'2_fact_auth_current_secret' => '',
'2_fact_auth_new_secret' => '',
'2_fact_auth_qrcode' => '',
'2_fact_auth_secret' => '',
'abbr_day' => '',
'abbr_hour' => '',
@ -384,6 +386,7 @@ $text = array(
'docs_in_reception_no_access' => '',
'docs_in_revision_disabled' => '',
'docs_in_revision_no_access' => '',
'docs_with_link_to_itself' => '',
'docs_with_missing_revision_date' => '',
'document' => 'Документ',
'documentcontent' => '',
@ -491,6 +494,8 @@ $text = array(
'download_header_document_name' => '',
'download_header_document_no' => '',
'download_header_filename' => '',
'download_header_folder_name' => '',
'download_header_folder_no' => '',
'download_header_internal_version' => '',
'download_header_reviewer' => '',
'download_header_review_comment' => '',
@ -617,6 +622,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' => '',
@ -858,6 +865,7 @@ $text = array(
'linked_to_this_version' => '',
'link_alt_updatedocument' => 'Ако искате да качите файлове над текущия лимит, използвайте друг <a href="%s">начин</a>.',
'link_document' => '',
'link_to' => '',
'link_to_version' => '',
'list_access_rights' => 'Списък на права',
'list_contains_no_access_docs' => '',
@ -1015,6 +1023,7 @@ $text = array(
'no_groups' => 'Няма групи',
'no_group_members' => 'Групата няма членове',
'no_linked_files' => 'Няма свързани файлове',
'no_mimetype' => '',
'no_previous_versions' => 'Няма други версии',
'no_receipt_needed' => '',
'no_review_needed' => 'Рецензия не е нужна',
@ -1029,6 +1038,9 @@ $text = array(
'no_workflows' => '',
'no_workflow_available' => '',
'number_count' => '',
'n_of_m_approved' => '',
'n_of_m_reviewed' => '',
'n_of_m_revised' => '',
'objectcheck' => 'Проверка на Папка/Документ',
'objects_without_attribute' => '',
'object_check_critical' => '',
@ -1070,6 +1082,7 @@ $text = array(
'password_forgotten_title' => 'Парола изпратена',
'password_mismatch_error' => '',
'password_mismatch_error_title' => '',
'password_never_expires' => '',
'password_repeat' => 'Повторете паролата',
'password_send' => '',
'password_send_text' => '',
@ -1097,6 +1110,7 @@ $text = array(
'preview_txt' => '',
'previous_state' => 'Предишно състояние',
'previous_versions' => 'Предишни версии',
'problematic_filename' => '',
'process' => '',
'process_without_user_group' => '',
'pt_BR' => 'Португалски (Бразилия)',
@ -1151,11 +1165,14 @@ $text = array(
'removed_workflow_email_body_html' => '',
'removed_workflow_email_subject' => '',
'removeFolderFromDropFolder' => '',
'removeFolderFromDropFolder_desc' => '',
'remove_approval_log' => '',
'remove_from_clipboard' => '',
'remove_marked_files' => '',
'remove_review_log' => '',
'remove_task' => '',
'reorder' => '',
'reorder_documents_in_folder' => '',
'repaired' => '',
'repairing_objects' => 'Поправка на папки и документи',
'replace_content_email_body' => '',
@ -1306,6 +1323,7 @@ $text = array(
'select_category' => 'Изберете категория',
'select_created' => '',
'select_documents_for_process' => '',
'select_folder' => '',
'select_group' => '',
'select_groups' => 'Кликни да избереш групи',
'select_grp_approvers' => 'Кликни да избереш група утвърждаващи',
@ -1353,7 +1371,9 @@ $text = array(
'service_name' => '',
'sessions' => '',
'setDateFromFile' => '',
'setDateFromFile_desc' => '',
'setDateFromFolder' => '',
'setDateFromFolder_desc' => '',
'settings' => 'Настройки',
'settings_activate_module' => 'Активирай модул',
'settings_activate_php_extension' => 'Активирай разширение на PHP',
@ -1448,9 +1468,15 @@ $text = array(
'settings_defaultSearchMethod_desc' => '',
'settings_defaultSearchMethod_valdatabase' => '',
'settings_defaultSearchMethod_valfulltext' => '',
'settings_defaultThumbnailClick' => '',
'settings_defaultThumbnailClick_desc' => '',
'settings_defaultThumbnailClick_valdownload' => '',
'settings_defaultThumbnailClick_valviewonline' => '',
'settings_delete_install_folder' => 'Изтрийте ENABLE_INSTALL_TOOL в папка конфигурация, за да започнете да използвате системата',
'settings_disableChangePassword' => '',
'settings_disableChangePassword_desc' => '',
'settings_disableReceiptComment' => '',
'settings_disableReceiptComment_desc' => '',
'settings_disableSelfEdit' => 'Изключи собствено редактиране',
'settings_disableSelfEdit_desc' => 'Ако е включено, потребителите няма да могат да редактират своята информация',
'settings_disable_install' => 'Изтрийте ENABLE_INSTALL_TOOL ако е возможно',
@ -1516,6 +1542,8 @@ $text = array(
'settings_enableLargeFileUpload_desc' => 'Ако е включено, качване на файлове е дустъпно и чрез джава-аплет, именован jumploader, без лимит за размер на файла. Това също ще позволи да се качват няколко файла наведнъж.',
'settings_enableLoginByEmail' => '',
'settings_enableLoginByEmail_desc' => '',
'settings_enableMemcached' => '',
'settings_enableMemcached_desc' => '',
'settings_enableMenuTasks' => '',
'settings_enableMenuTasks_desc' => '',
'settings_enableMenuTransmittals' => '',
@ -1575,6 +1603,8 @@ $text = array(
'settings_encryptionKey' => 'Кодиращ ключ',
'settings_encryptionKey_desc' => 'Този стринг се използва за създаване на уникален идентификатор, който добавен като невидимо поле към формуляр, предотвратява CSRF атаки.',
'settings_error' => 'Грешка',
'settings_excludeFoldersDashboard' => '',
'settings_excludeFoldersDashboard_desc' => '',
'settings_expandFolderTree' => 'Разгърни дървото с папките',
'settings_expandFolderTree_desc' => 'Разгръщане на дървото с папките',
'settings_expandFolderTree_val0' => 'започвайки от сгънато дърво',
@ -1633,6 +1663,8 @@ $text = array(
'settings_logFileEnable_desc' => 'Включи/изключи лог',
'settings_logFileMaxLevel' => '',
'settings_logFileMaxLevel_desc' => '',
'settings_logFileRestApiMaxLevel' => '',
'settings_logFileRestApiMaxLevel_desc' => '',
'settings_logFileRotation' => 'Превъртане на лога',
'settings_logFileRotation_desc' => 'Превъртане на лога',
'settings_loginFailure' => 'Неуспешно влизане',
@ -1830,6 +1862,7 @@ $text = array(
'sign_out' => 'изход',
'sign_out_user' => '',
'site_brand' => '',
'skip_default_export_cols' => '',
'sk_SK' => 'Словашки',
'sort_by_date' => 'Сортирай по дата"',
'sort_by_expiration_date' => '',
@ -1900,6 +1933,7 @@ $text = array(
'splash_move_document' => '',
'splash_move_folder' => '',
'splash_notinherit_access' => '',
'splash_orig_filename_changed' => '',
'splash_receipt_update_success' => '',
'splash_removed_from_clipboard' => '',
'splash_rm_attribute' => '',
@ -1959,6 +1993,7 @@ $text = array(
'status_revision_sleeping' => '',
'status_revisor_removed' => '',
'status_unknown' => 'Неизвестен',
'storage' => '',
'storage_size' => 'Размер на хранилището',
'subfolder_duplicate_name' => '',
'submit_2_fact_auth' => '',

View File

@ -23,9 +23,11 @@
$text = array(
'2_factor_auth' => '',
'2_factor_auth_code' => '',
'2_factor_auth_info' => '',
'2_fact_auth_current_secret' => '',
'2_fact_auth_new_secret' => '',
'2_fact_auth_qrcode' => '',
'2_fact_auth_secret' => '',
'abbr_day' => '',
'abbr_hour' => '',
@ -389,6 +391,7 @@ URL: [url]',
'docs_in_reception_no_access' => '',
'docs_in_revision_disabled' => '',
'docs_in_revision_no_access' => '',
'docs_with_link_to_itself' => '',
'docs_with_missing_revision_date' => '',
'document' => 'Document',
'documentcontent' => '',
@ -496,6 +499,8 @@ URL: [url]',
'download_header_document_name' => '',
'download_header_document_no' => '',
'download_header_filename' => '',
'download_header_folder_name' => '',
'download_header_folder_no' => '',
'download_header_internal_version' => '',
'download_header_reviewer' => '',
'download_header_review_comment' => '',
@ -622,6 +627,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' => '',
@ -863,6 +870,7 @@ URL: [url]',
'linked_to_this_version' => '',
'link_alt_updatedocument' => '',
'link_document' => '',
'link_to' => '',
'link_to_version' => '',
'list_access_rights' => 'Llista tots els tipus d\'accés...',
'list_contains_no_access_docs' => '',
@ -1020,6 +1028,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.',
@ -1034,6 +1043,9 @@ URL: [url]',
'no_workflows' => '',
'no_workflow_available' => '',
'number_count' => '',
'n_of_m_approved' => '',
'n_of_m_reviewed' => '',
'n_of_m_revised' => '',
'objectcheck' => 'Carpeta / Comprobació del document',
'objects_without_attribute' => '',
'object_check_critical' => '',
@ -1075,6 +1087,7 @@ URL: [url]',
'password_forgotten_title' => '',
'password_mismatch_error' => '',
'password_mismatch_error_title' => '',
'password_never_expires' => '',
'password_repeat' => '',
'password_send' => '',
'password_send_text' => '',
@ -1102,6 +1115,7 @@ URL: [url]',
'preview_txt' => '',
'previous_state' => '',
'previous_versions' => 'Versions anteriors',
'problematic_filename' => '',
'process' => '',
'process_without_user_group' => '',
'pt_BR' => 'Portuguès',
@ -1156,11 +1170,14 @@ URL: [url]',
'removed_workflow_email_body_html' => '',
'removed_workflow_email_subject' => '',
'removeFolderFromDropFolder' => 'Esborrar carpeta després de la importació',
'removeFolderFromDropFolder_desc' => '',
'remove_approval_log' => '',
'remove_from_clipboard' => '',
'remove_marked_files' => '',
'remove_review_log' => '',
'remove_task' => '',
'reorder' => '',
'reorder_documents_in_folder' => '',
'repaired' => '',
'repairing_objects' => '',
'replace_content_email_body' => '',
@ -1311,6 +1328,7 @@ URL: [url]',
'select_category' => 'Prem per seleccionar la categoria',
'select_created' => '',
'select_documents_for_process' => '',
'select_folder' => '',
'select_group' => 'Seleccionar grup',
'select_groups' => '',
'select_grp_approvers' => '',
@ -1358,7 +1376,9 @@ URL: [url]',
'service_name' => '',
'sessions' => '',
'setDateFromFile' => '',
'setDateFromFile_desc' => '',
'setDateFromFolder' => '',
'setDateFromFolder_desc' => '',
'settings' => 'Settings',
'settings_activate_module' => 'Activate module',
'settings_activate_php_extension' => 'Activate PHP extension',
@ -1453,9 +1473,15 @@ URL: [url]',
'settings_defaultSearchMethod_desc' => '',
'settings_defaultSearchMethod_valdatabase' => '',
'settings_defaultSearchMethod_valfulltext' => '',
'settings_defaultThumbnailClick' => '',
'settings_defaultThumbnailClick_desc' => '',
'settings_defaultThumbnailClick_valdownload' => '',
'settings_defaultThumbnailClick_valviewonline' => '',
'settings_delete_install_folder' => '',
'settings_disableChangePassword' => '',
'settings_disableChangePassword_desc' => '',
'settings_disableReceiptComment' => '',
'settings_disableReceiptComment_desc' => '',
'settings_disableSelfEdit' => '',
'settings_disableSelfEdit_desc' => '',
'settings_disable_install' => '',
@ -1521,6 +1547,8 @@ URL: [url]',
'settings_enableLargeFileUpload_desc' => '',
'settings_enableLoginByEmail' => '',
'settings_enableLoginByEmail_desc' => '',
'settings_enableMemcached' => '',
'settings_enableMemcached_desc' => '',
'settings_enableMenuTasks' => '',
'settings_enableMenuTasks_desc' => '',
'settings_enableMenuTransmittals' => '',
@ -1580,6 +1608,8 @@ URL: [url]',
'settings_encryptionKey' => '',
'settings_encryptionKey_desc' => '',
'settings_error' => 'Error',
'settings_excludeFoldersDashboard' => '',
'settings_excludeFoldersDashboard_desc' => '',
'settings_expandFolderTree' => '',
'settings_expandFolderTree_desc' => '',
'settings_expandFolderTree_val0' => '',
@ -1638,6 +1668,8 @@ URL: [url]',
'settings_logFileEnable_desc' => 'Enable/disable log file',
'settings_logFileMaxLevel' => '',
'settings_logFileMaxLevel_desc' => '',
'settings_logFileRestApiMaxLevel' => '',
'settings_logFileRestApiMaxLevel_desc' => '',
'settings_logFileRotation' => 'Log File Rotation',
'settings_logFileRotation_desc' => '',
'settings_loginFailure' => '',
@ -1835,6 +1867,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' => '',
@ -1905,6 +1938,7 @@ URL: [url]',
'splash_move_document' => '',
'splash_move_folder' => '',
'splash_notinherit_access' => '',
'splash_orig_filename_changed' => '',
'splash_receipt_update_success' => '',
'splash_removed_from_clipboard' => '',
'splash_rm_attribute' => '',
@ -1964,6 +1998,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

@ -23,9 +23,11 @@
$text = array(
'2_factor_auth' => 'dvoufaktorové ověření',
'2_factor_auth_code' => '',
'2_factor_auth_info' => 'Tento systém vyžaduje dvoufaktorové ověření. Na svém mobilním telefonu budete potřebovat Google Authenticator. Níže vidíte dva QR kódy. Správný je vaše současné tajemství. Vlevo můžete nastavit nové tajemství. Pokud nastavíte nové tajemství, ujistěte se, že jste jej znovu otestovali pomocí služby Google Authenticator.',
'2_fact_auth_current_secret' => '',
'2_fact_auth_new_secret' => '',
'2_fact_auth_qrcode' => '',
'2_fact_auth_secret' => 'tajemství',
'abbr_day' => '',
'abbr_hour' => '',
@ -409,6 +411,7 @@ URL: [url]',
'docs_in_reception_no_access' => 'Dokumenty s přijetím, ale bez přístupu příjemce',
'docs_in_revision_disabled' => '',
'docs_in_revision_no_access' => 'Dokumenty v revizi bez přístupu kontrolora',
'docs_with_link_to_itself' => '',
'docs_with_missing_revision_date' => '',
'document' => 'Dokument',
'documentcontent' => 'Obsah dokumentu',
@ -577,6 +580,8 @@ URL: [url]',
'download_header_document_name' => '',
'download_header_document_no' => '',
'download_header_filename' => '',
'download_header_folder_name' => '',
'download_header_folder_no' => '',
'download_header_internal_version' => '',
'download_header_reviewer' => '',
'download_header_review_comment' => '',
@ -707,6 +712,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í',
@ -995,6 +1002,7 @@ URL: [url]',
'linked_to_this_version' => 'Provázáno odkazem s touto verzí',
'link_alt_updatedocument' => 'Chcete-li nahrát soubory větší než je maximální velikost pro nahrávání, použijte prosím <a href="%s">alternativní stránku</a>.',
'link_document' => '',
'link_to' => '',
'link_to_version' => 'Provázat k verzi',
'list_access_rights' => 'Seznam všech přístupových práv ...',
'list_contains_no_access_docs' => 'Seznam obsahuje více dokumentů, ke kterým nemáte přístup a které se nezobrazují.',
@ -1168,6 +1176,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.',
@ -1182,6 +1191,9 @@ URL: [url]',
'no_workflows' => '',
'no_workflow_available' => 'Není k dispozici žádné workflow',
'number_count' => '',
'n_of_m_approved' => '',
'n_of_m_reviewed' => '',
'n_of_m_revised' => '',
'objectcheck' => 'Kontrola složky/dokumentu',
'objects_without_attribute' => '',
'object_check_critical' => 'Kritické chyby',
@ -1227,6 +1239,7 @@ Pokud budete mít problém s přihlášením i po změně hesla, kontaktujte Adm
'password_forgotten_title' => 'Heslo odesláno',
'password_mismatch_error' => '',
'password_mismatch_error_title' => '',
'password_never_expires' => '',
'password_repeat' => 'Opakujte heslo',
'password_send' => 'Heslo odesláno',
'password_send_text' => 'Vaše nové heslo bylo odesláno a zadanou emailovou adresu, pokud pro přihlašovací jméno a email existuje uživatel. Pokud neobdržíte email během příštích minut, pak se ujistěte se, že přihlašovací jméno a email jsou správné a proces zopakujte.',
@ -1254,6 +1267,7 @@ Pokud budete mít problém s přihlášením i po změně hesla, kontaktujte Adm
'preview_txt' => '',
'previous_state' => 'Předchozí stav',
'previous_versions' => 'Předešlé verze',
'problematic_filename' => '',
'process' => 'Proces',
'process_without_user_group' => 'Procesy bez uživatele / skupiny',
'pt_BR' => 'Portugalština (BR)',
@ -1328,11 +1342,14 @@ URL: [url]',
'removed_workflow_email_body_html' => '',
'removed_workflow_email_subject' => '[sitename]: [name] - Odstraněno workflow z verze dokumentu',
'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' => '',
'reorder' => '',
'reorder_documents_in_folder' => '',
'repaired' => 'opraveno',
'repairing_objects' => 'Opravuji dokumenty a složky.',
'replace_content_email_body' => '',
@ -1531,6 +1548,7 @@ URL: [url]',
'select_category' => 'Kliknutím vybrat kategorii',
'select_created' => '',
'select_documents_for_process' => '',
'select_folder' => '',
'select_group' => 'Vybrat skupinu',
'select_groups' => 'Kliknutím vybrat skupiny',
'select_grp_approvers' => 'Kliknutím vybrat skupinu schvalovatele',
@ -1583,7 +1601,9 @@ Jméno: [username]
'service_name' => '',
'sessions' => 'seance',
'setDateFromFile' => '',
'setDateFromFile_desc' => '',
'setDateFromFolder' => '',
'setDateFromFolder_desc' => '',
'settings' => 'Nastavení',
'settings_activate_module' => 'Aktivovat modul',
'settings_activate_php_extension' => 'Aktivovat PHP extension',
@ -1678,9 +1698,15 @@ Jméno: [username]
'settings_defaultSearchMethod_desc' => 'Výchozí metoda vyhledávání, když je vyhledávací formulář spuštěn v hlavním menu.',
'settings_defaultSearchMethod_valdatabase' => 'databáze',
'settings_defaultSearchMethod_valfulltext' => 'fulltext',
'settings_defaultThumbnailClick' => '',
'settings_defaultThumbnailClick_desc' => '',
'settings_defaultThumbnailClick_valdownload' => '',
'settings_defaultThumbnailClick_valviewonline' => '',
'settings_delete_install_folder' => 'Chcete-li použít SeedDMS, musíte v konfiguračním adresáři odstranit soubor ENABLE_INSTALL_TOOL',
'settings_disableChangePassword' => '',
'settings_disableChangePassword_desc' => '',
'settings_disableReceiptComment' => '',
'settings_disableReceiptComment_desc' => '',
'settings_disableSelfEdit' => 'Zakázat vlastní úpravy',
'settings_disableSelfEdit_desc' => 'Je-li zaškrtnuto, uživatel nemůže upravit svůj vlastní profil',
'settings_disable_install' => 'Pokud je to možné, smažte soubor ENABLE_INSTALL_TOOL',
@ -1746,6 +1772,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' => '',
@ -1805,6 +1833,8 @@ Jméno: [username]
'settings_encryptionKey' => 'Šifrovací klíč',
'settings_encryptionKey_desc' => 'Tento řetězec se používá k vytvoření jedinečného identifikátoru, který je přidán jako skryté pole formuláře, aby se zabránilo útokům CSRF.',
'settings_error' => 'Chyba',
'settings_excludeFoldersDashboard' => '',
'settings_excludeFoldersDashboard_desc' => '',
'settings_expandFolderTree' => 'Rozbalit strom složek',
'settings_expandFolderTree_desc' => 'Rozbalení stromu složek',
'settings_expandFolderTree_val0' => 'začít se skrytým stromem',
@ -1863,6 +1893,8 @@ Jméno: [username]
'settings_logFileEnable_desc' => 'Povolení / zakázání souboru protokolu',
'settings_logFileMaxLevel' => '',
'settings_logFileMaxLevel_desc' => '',
'settings_logFileRestApiMaxLevel' => '',
'settings_logFileRestApiMaxLevel_desc' => '',
'settings_logFileRotation' => 'Otočení souboru protokolu',
'settings_logFileRotation_desc' => 'Otáčení souboru protokolu',
'settings_loginFailure' => 'Přihlášení selhalo',
@ -2060,6 +2092,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' => '',
@ -2130,6 +2163,7 @@ Jméno: [username]
'splash_move_document' => 'Dokument přesunut',
'splash_move_folder' => 'Složka přesunuta',
'splash_notinherit_access' => 'Přístupová práva již nejsou zděděna',
'splash_orig_filename_changed' => '',
'splash_receipt_update_success' => 'Příjem byl úspěšně přidán',
'splash_removed_from_clipboard' => 'Odstraněno ze schránky',
'splash_rm_attribute' => 'Atribut odstraněn',
@ -2189,6 +2223,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,13 +19,15 @@
// along with this program; if not, write to the Free Software
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
//
// Translators: Admin (3418), dgrutsch (22)
// Translators: Admin (3461), dgrutsch (22)
$text = array(
'2_factor_auth' => '2-Faktor Authentifizierung',
'2_factor_auth_code' => '2ter Faktor',
'2_factor_auth_info' => 'Dieses System erfordert 2-Faktor-Authentifikation. Dazu brauchen Sie einen Authenticator auf Ihrem Mobiltelefon. Unten sehen Sie zwei QR-Codes. Der rechte Code beinhaltet Ihren aktuellen geheimen Schlüssel. Auf der linken Seite wird ein neuer Schlüssel angezeigt. Wenn Sie den neuen Schlüssel speichern, dann stellen Sie zuvor sicher, dass sie ihn mit Ihrem bevorzugten Authenticator (z.B. andOTP) zuvor eingescant haben.',
'2_fact_auth_current_secret' => 'Aktuelles Geheimnis',
'2_fact_auth_new_secret' => 'Neues Geheimnis',
'2_fact_auth_qrcode' => 'QR-Code',
'2_fact_auth_secret' => 'Schlüssel',
'abbr_day' => 'T.',
'abbr_hour' => 'St.',
@ -408,7 +410,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',
@ -442,6 +444,7 @@ URL: [url]</p>',
'docs_in_reception_no_access' => 'Dokumente mit Empfangsbestätigung ohne Zugriff des Empfängers',
'docs_in_revision_disabled' => 'Dokument mit Wiederholungsprüfung durch gesperrten Benutzer',
'docs_in_revision_no_access' => 'Dokumente mit Wiederholungsprüfung ohne Zugriff des Prüfers',
'docs_with_link_to_itself' => 'Dokumente mit Verknüpfung zu sich selbst',
'docs_with_missing_revision_date' => 'Dokumente ohne Datum der Wiederholungsprüfung',
'document' => 'Dokument',
'documentcontent' => 'Dokumentenversion',
@ -711,6 +714,8 @@ URL: [url]</p>',
'download_header_document_name' => 'Dokumentenname',
'download_header_document_no' => 'Dokumenten-Nr.',
'download_header_filename' => 'Dateiname',
'download_header_folder_name' => 'Ordnername',
'download_header_folder_no' => 'Ordner-ID',
'download_header_internal_version' => 'Int. Version',
'download_header_reviewer' => 'Prüfer',
'download_header_review_comment' => 'Prüfkommentar',
@ -847,6 +852,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 ...',
@ -862,7 +869,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',
@ -1043,7 +1050,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',
@ -1208,6 +1215,7 @@ URL: [url]</p>',
'linked_to_this_version' => 'Mit dieser Version verknüpft',
'link_alt_updatedocument' => 'Wenn Sie ein Dokument hochladen möchten, das größer als die maximale Dateigröße ist, dann benutzen Sie bitte die alternative <a href="%s">Upload-Seite</a>.',
'link_document' => 'Dokument verlinken',
'link_to' => '',
'link_to_version' => 'An Version hängen',
'list_access_rights' => 'Alle Zugriffsrechte auflisten ...',
'list_contains_no_access_docs' => 'Die Liste enthält weitere Dokumente auf die Sie keinen Zugriff haben und deshalb nicht angezeigt werden.',
@ -1401,6 +1409,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.',
@ -1415,6 +1424,9 @@ URL: [url]</p>',
'no_workflows' => 'Sie haben bisher keinen Workflow erstellt',
'no_workflow_available' => 'Kein Workflow verfügbar',
'number_count' => 'Anzahl',
'n_of_m_approved' => '[approved]/[total] freigegeben',
'n_of_m_reviewed' => '[reviewed]/[total] geprüft',
'n_of_m_revised' => '[revised]/[total] wiederholt geprüft',
'objectcheck' => 'Ordner- und Dokumentenprüfung',
'objects_without_attribute' => 'Objekte ohne dieses Attribut',
'object_check_critical' => 'Kritische Fehler',
@ -1472,6 +1484,7 @@ Sollen Sie danach immer noch Probleme bei der Anmeldung haben, dann kontaktieren
'password_forgotten_title' => 'Passwort gesendet',
'password_mismatch_error' => 'Passwörter sind nicht identisch',
'password_mismatch_error_title' => 'Passwörter sind nicht identisch',
'password_never_expires' => 'Passwort läuft nicht ab',
'password_repeat' => 'Passwort wiederholen',
'password_send' => 'Passwort verschickt',
'password_send_text' => 'Ihr neues Passwort wurde an die angegebene E-Mail-Adresse versandt, wenn ein Benutzer mit diesem Login und dieser E-Mail-Adresse existiert. Sollten Sie innerhalb der nächsten Minuten keine E-Mail bekommen, dann überprüfen Sie nochmal die Angaben und wiederholen Sie den Vorgang.',
@ -1499,6 +1512,7 @@ Sollen Sie danach immer noch Probleme bei der Anmeldung haben, dann kontaktieren
'preview_txt' => 'Vorschau als Text',
'previous_state' => 'Voriger Status',
'previous_versions' => 'Vorhergehende Versionen',
'problematic_filename' => 'Der Dateiname beinhaltet entweder Zeichen, die in manchen Dateisystemen nicht erlaubt oder problematisch sind, oder der Dateiname hat die falsche Endung. Der Dateiname wird beim Download eines Dokument und vom WebDAV Server verwendet.',
'process' => 'Prozess',
'process_without_user_group' => 'Prozesse ohne Benutzer/Gruppe',
'pt_BR' => 'Portugiesisch (BR)',
@ -1617,11 +1631,14 @@ Benutzer: [username]<br />
URL: [url]</p>',
'removed_workflow_email_subject' => '[sitename]: [name] - Workflow von Dokumentenversion',
'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',
'reorder' => 'Neu ortnen',
'reorder' => 'Neu ordnen',
'reorder_documents_in_folder' => 'Vergibt für alle Dokumente eines Ordners neue Sequenznummern beginnend bei 1.0',
'repaired' => 'repariert',
'repairing_objects' => 'Repariere Dokumente und Ordner.',
'replace_content_email_body' => 'Die letzte Version des Dokuments wurde ersetzt.
@ -1920,6 +1937,7 @@ URL: [url]</p>',
'select_category' => 'Klicken zur Auswahl einer Kategorie',
'select_created' => 'Klicken zur Auswahl des Erstellungsdatums',
'select_documents_for_process' => 'Dokumente auswählen',
'select_folder' => 'Ordner auswählen',
'select_group' => 'Gruppe auswählen',
'select_groups' => 'Klicken zur Auswahl einer Gruppe',
'select_grp_approvers' => 'Klicken zur Auswahl einer Freigabegruppe',
@ -1974,7 +1992,9 @@ Sollten Sie kein Passwort bekommen haben, dann nutzen Sie bitte die Passwort-Ver
'service_name' => 'Service-Name',
'sessions' => 'Benutzer Online',
'setDateFromFile' => 'Datum von importierter Datei übernehmen',
'setDateFromFile_desc' => 'Übernimmt das Datum der zu importierenden Datei als Datum des Dokuments in SeedDMS',
'setDateFromFolder' => 'Datum von importierten Verzeichnis übernehmen',
'setDateFromFolder_desc' => 'Übernimmt das Datum des zu importierenden Ordners als Datum des Ordners in SeedDMS',
'settings' => 'Einstellungen',
'settings_activate_module' => 'Modul aktivieren',
'settings_activate_php_extension' => 'PHP-Erweiterung aktivieren',
@ -2069,9 +2089,15 @@ Sollten Sie kein Passwort bekommen haben, dann nutzen Sie bitte die Passwort-Ver
'settings_defaultSearchMethod_desc' => 'Voreingestellte Suchmethode, wenn über das Suchfeld in der Menüleiste gesucht wird.',
'settings_defaultSearchMethod_valdatabase' => 'Datenbank',
'settings_defaultSearchMethod_valfulltext' => 'Volltext',
'settings_defaultThumbnailClick' => 'Aktion nach Anklicken eines Vorschaubildes',
'settings_defaultThumbnailClick_desc' => 'Diese Aktion wird ausgeführt, wenn auf ein Vorschaubild geklickt wird.',
'settings_defaultThumbnailClick_valdownload' => 'Dokument herunterladen',
'settings_defaultThumbnailClick_valviewonline' => 'Dokument online anschauen',
'settings_delete_install_folder' => 'Um SeedDMS nutzen zu können, müssen Sie die Datei ENABLE_INSTALL_TOOL aus dem Konfigurationsverzeichnis löschen.',
'settings_disableChangePassword' => 'Kein Ändern des eigenen Passworts',
'settings_disableChangePassword_desc' => 'Anwählen, um das Ändern des eigenen Passworts zu unterbinden. Schalten Sie dies ein, wenn LDAP-Authentifizierung verwendet wird. Es verhindert, dass Benutzer ein Passwort in der Datenbank setzen und damit die LDAP-Authentifizierung umgehen.',
'settings_disableReceiptComment' => 'Kommentar für Empfangsbestätigung ausschalten',
'settings_disableReceiptComment_desc' => 'Wenn Sie dies einschalten wird bei der Empfangsbestätigung kein Kommentar abgefragt.',
'settings_disableSelfEdit' => 'Kein Ändern des eigenen Profils',
'settings_disableSelfEdit_desc' => 'Anwählen, um das Ändern des eigenen Profiles zu verhindern.',
'settings_disable_install' => 'Lösche ENABLE_INSTALL_TOOL wenn möglich',
@ -2137,6 +2163,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ü',
@ -2196,6 +2224,8 @@ Sollten Sie kein Passwort bekommen haben, dann nutzen Sie bitte die Passwort-Ver
'settings_encryptionKey' => 'Verschlüsselungs-Sequenz',
'settings_encryptionKey_desc' => 'Diese Zeichenkette wird verwendet um eine eindeutige Kennung zu erzeugen, die als verstecktes Feld in einem Formular untergebracht wird. Sie dient zur Verhinderung von CSRF-Attacken.',
'settings_error' => 'Fehler',
'settings_excludeFoldersDashboard' => 'Ordner nicht für das Dashboard berücksichtigen',
'settings_excludeFoldersDashboard_desc' => 'Diese Ordner werden bei der Ausgabe der Dokumente auf dem Dashboard nicht berücksichtigt. Das kann z.B. für archivierte Dokumente oder Dokumente im Mülleimer sinnvoll sein.',
'settings_expandFolderTree' => 'Dokumenten-Baum',
'settings_expandFolderTree_desc' => 'Auswählen, wie der Dokumenten-Baum nach der Anmeldung angezeigt wird.',
'settings_expandFolderTree_val0' => 'versteckt',
@ -2254,6 +2284,8 @@ Sollten Sie kein Passwort bekommen haben, dann nutzen Sie bitte die Passwort-Ver
'settings_logFileEnable_desc' => 'Anwählen, um alle Aktionen in einer Log-Datei im Datenverzeichnis zu speichern.',
'settings_logFileMaxLevel' => 'Maximal Log-Level',
'settings_logFileMaxLevel_desc' => 'Alle Meldungen bis zu diesem Level werden protokolliert',
'settings_logFileRestApiMaxLevel' => 'Rest Api maximal Log-Level',
'settings_logFileRestApiMaxLevel_desc' => 'Alle Meldungen der Rest Api bis zu diesem Level werden protokolliert',
'settings_logFileRotation' => 'Rotation der Log-Datei',
'settings_logFileRotation_desc' => 'Zeitraum nachdem eine Rotation der Log-Datei durchgeführt wird',
'settings_loginFailure' => 'Anmeldefehlversuche',
@ -2451,6 +2483,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',
@ -2521,6 +2554,7 @@ Sollten Sie kein Passwort bekommen haben, dann nutzen Sie bitte die Passwort-Ver
'splash_move_document' => 'Dokument verschoben',
'splash_move_folder' => 'Ordner verschoben',
'splash_notinherit_access' => 'Zugriffsrechte werden nicht mehr geerbt',
'splash_orig_filename_changed' => 'Originaler Dateiname geändert',
'splash_receipt_update_success' => 'Empfangsbestätigung hinzugefügt',
'splash_removed_from_clipboard' => 'Aus der Zwischenablage entfernt',
'splash_rm_attribute' => 'Attribut gelöscht',
@ -2580,6 +2614,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

@ -23,9 +23,11 @@
$text = array(
'2_factor_auth' => '',
'2_factor_auth_code' => '',
'2_factor_auth_info' => '',
'2_fact_auth_current_secret' => '',
'2_fact_auth_new_secret' => '',
'2_fact_auth_qrcode' => '',
'2_fact_auth_secret' => '',
'abbr_day' => '',
'abbr_hour' => '',
@ -384,6 +386,7 @@ $text = array(
'docs_in_reception_no_access' => '',
'docs_in_revision_disabled' => '',
'docs_in_revision_no_access' => '',
'docs_with_link_to_itself' => '',
'docs_with_missing_revision_date' => '',
'document' => 'Έγγραφο',
'documentcontent' => '',
@ -491,6 +494,8 @@ $text = array(
'download_header_document_name' => '',
'download_header_document_no' => '',
'download_header_filename' => '',
'download_header_folder_name' => '',
'download_header_folder_no' => '',
'download_header_internal_version' => '',
'download_header_reviewer' => '',
'download_header_review_comment' => '',
@ -617,6 +622,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' => '',
@ -858,6 +865,7 @@ $text = array(
'linked_to_this_version' => '',
'link_alt_updatedocument' => '',
'link_document' => '',
'link_to' => '',
'link_to_version' => '',
'list_access_rights' => 'Εμφάνισε όλα τα δικαιώματα πρόσβασης',
'list_contains_no_access_docs' => '',
@ -1026,6 +1034,7 @@ URL: [url]',
'no_groups' => '',
'no_group_members' => '',
'no_linked_files' => 'δεν υπάρχουν συνδεδεμένα αρχεία',
'no_mimetype' => '',
'no_previous_versions' => '',
'no_receipt_needed' => '',
'no_review_needed' => '',
@ -1040,6 +1049,9 @@ URL: [url]',
'no_workflows' => '',
'no_workflow_available' => '',
'number_count' => '',
'n_of_m_approved' => '',
'n_of_m_reviewed' => '',
'n_of_m_revised' => '',
'objectcheck' => 'Αναζήτηση σε αρχεία και φακέλους',
'objects_without_attribute' => '',
'object_check_critical' => '',
@ -1081,6 +1093,7 @@ URL: [url]',
'password_forgotten_title' => '',
'password_mismatch_error' => '',
'password_mismatch_error_title' => '',
'password_never_expires' => '',
'password_repeat' => '',
'password_send' => '',
'password_send_text' => '',
@ -1108,6 +1121,7 @@ URL: [url]',
'preview_txt' => '',
'previous_state' => '',
'previous_versions' => '',
'problematic_filename' => '',
'process' => '',
'process_without_user_group' => '',
'pt_BR' => 'Πορτογαλικά',
@ -1162,11 +1176,14 @@ URL: [url]',
'removed_workflow_email_body_html' => '',
'removed_workflow_email_subject' => '',
'removeFolderFromDropFolder' => '',
'removeFolderFromDropFolder_desc' => '',
'remove_approval_log' => '',
'remove_from_clipboard' => '',
'remove_marked_files' => '',
'remove_review_log' => '',
'remove_task' => '',
'reorder' => '',
'reorder_documents_in_folder' => '',
'repaired' => '',
'repairing_objects' => '',
'replace_content_email_body' => '',
@ -1317,6 +1334,7 @@ URL: [url]',
'select_category' => 'Επιλογή κατηγορίας',
'select_created' => '',
'select_documents_for_process' => '',
'select_folder' => '',
'select_group' => 'Επιλογή ομάδας',
'select_groups' => '',
'select_grp_approvers' => '',
@ -1364,7 +1382,9 @@ URL: [url]',
'service_name' => '',
'sessions' => '',
'setDateFromFile' => '',
'setDateFromFile_desc' => '',
'setDateFromFolder' => '',
'setDateFromFolder_desc' => '',
'settings' => 'Ρυθμίσεις',
'settings_activate_module' => '',
'settings_activate_php_extension' => '',
@ -1459,9 +1479,15 @@ URL: [url]',
'settings_defaultSearchMethod_desc' => '',
'settings_defaultSearchMethod_valdatabase' => '',
'settings_defaultSearchMethod_valfulltext' => '',
'settings_defaultThumbnailClick' => '',
'settings_defaultThumbnailClick_desc' => '',
'settings_defaultThumbnailClick_valdownload' => '',
'settings_defaultThumbnailClick_valviewonline' => '',
'settings_delete_install_folder' => '',
'settings_disableChangePassword' => 'Disable changing password',
'settings_disableChangePassword_desc' => '',
'settings_disableReceiptComment' => '',
'settings_disableReceiptComment_desc' => '',
'settings_disableSelfEdit' => '',
'settings_disableSelfEdit_desc' => '',
'settings_disable_install' => '',
@ -1527,6 +1553,8 @@ URL: [url]',
'settings_enableLargeFileUpload_desc' => '',
'settings_enableLoginByEmail' => '',
'settings_enableLoginByEmail_desc' => '',
'settings_enableMemcached' => '',
'settings_enableMemcached_desc' => '',
'settings_enableMenuTasks' => '',
'settings_enableMenuTasks_desc' => '',
'settings_enableMenuTransmittals' => '',
@ -1586,6 +1614,8 @@ URL: [url]',
'settings_encryptionKey' => '',
'settings_encryptionKey_desc' => '',
'settings_error' => '',
'settings_excludeFoldersDashboard' => '',
'settings_excludeFoldersDashboard_desc' => '',
'settings_expandFolderTree' => '',
'settings_expandFolderTree_desc' => '',
'settings_expandFolderTree_val0' => '',
@ -1644,6 +1674,8 @@ URL: [url]',
'settings_logFileEnable_desc' => '',
'settings_logFileMaxLevel' => '',
'settings_logFileMaxLevel_desc' => '',
'settings_logFileRestApiMaxLevel' => '',
'settings_logFileRestApiMaxLevel_desc' => '',
'settings_logFileRotation' => '',
'settings_logFileRotation_desc' => '',
'settings_loginFailure' => '',
@ -1841,6 +1873,7 @@ URL: [url]',
'sign_out' => 'Αποσύνδεση',
'sign_out_user' => 'Αποσύνδεση χρήστη',
'site_brand' => '',
'skip_default_export_cols' => '',
'sk_SK' => 'Σλοβάκικα',
'sort_by_date' => '',
'sort_by_expiration_date' => '',
@ -1911,6 +1944,7 @@ URL: [url]',
'splash_move_document' => '',
'splash_move_folder' => '',
'splash_notinherit_access' => '',
'splash_orig_filename_changed' => '',
'splash_receipt_update_success' => '',
'splash_removed_from_clipboard' => '',
'splash_rm_attribute' => '',
@ -1970,6 +2004,7 @@ URL: [url]',
'status_revision_sleeping' => '',
'status_revisor_removed' => '',
'status_unknown' => '',
'storage' => '',
'storage_size' => '',
'subfolder_duplicate_name' => '',
'submit_2_fact_auth' => '',

View File

@ -19,13 +19,15 @@
// along with this program; if not, write to the Free Software
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
//
// Translators: Admin (2517), archonwang (3), dgrutsch (9), netixw (14)
// Translators: Admin (2561), archonwang (3), dgrutsch (9), netixw (14)
$text = array(
'2_factor_auth' => '2-factor authentication',
'2_factor_auth_code' => '2nd factor',
'2_factor_auth_info' => 'This system enforces 2 factor authentication. You will need an Authenticator on your mobile phone. Below you see two QR codes. The right one is your current secret. On the left you can set a new secret. If you set a new secret make sure to rescan it with your preffered authenticator, e.g. andOTP.',
'2_fact_auth_current_secret' => 'Current secret',
'2_fact_auth_new_secret' => 'New secret',
'2_fact_auth_qrcode' => 'QR code',
'2_fact_auth_secret' => 'Secret',
'abbr_day' => 'd',
'abbr_hour' => 'h',
@ -408,7 +410,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',
@ -442,6 +444,7 @@ URL: [url]</p>',
'docs_in_reception_no_access' => 'Documents with reception without access by recipient',
'docs_in_revision_disabled' => 'Documents with revision by disabled user',
'docs_in_revision_no_access' => 'Documents in revision without access by revisor',
'docs_with_link_to_itself' => 'Documents with link to itself',
'docs_with_missing_revision_date' => 'Documents withoug date of revision',
'document' => 'Document',
'documentcontent' => 'Document content',
@ -466,7 +469,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',
@ -711,6 +714,8 @@ URL: [url]</p>',
'download_header_document_name' => 'Document name',
'download_header_document_no' => 'Document no',
'download_header_filename' => 'File name',
'download_header_folder_name' => 'Folder name',
'download_header_folder_no' => 'Folder no.',
'download_header_internal_version' => 'Int. version',
'download_header_reviewer' => 'Reviewer',
'download_header_review_comment' => 'Review comment',
@ -847,6 +852,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 ...',
@ -862,7 +869,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',
@ -872,7 +879,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',
@ -1043,7 +1050,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',
@ -1195,9 +1202,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',
@ -1208,6 +1215,7 @@ URL: [url]</p>',
'linked_to_this_version' => 'Linked to this version',
'link_alt_updatedocument' => 'If you would like to upload files bigger than the current maximum upload size, please use the alternative <a href="%s">upload page</a>.',
'link_document' => 'Link document',
'link_to' => '',
'link_to_version' => 'Attach to version',
'list_access_rights' => 'List all access rights ...',
'list_contains_no_access_docs' => 'The list contains more documents you have no access to and are not displayed.',
@ -1403,6 +1411,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.',
@ -1417,6 +1426,9 @@ URL: [url]</p>',
'no_workflows' => 'You have not created a workflow yet',
'no_workflow_available' => 'No workflow available',
'number_count' => 'number',
'n_of_m_approved' => '[approved]/[total] approved',
'n_of_m_reviewed' => '[reviewed]/[total] reviewed',
'n_of_m_revised' => '[revised]/[total] revised',
'objectcheck' => 'Folder/Document check',
'objects_without_attribute' => 'Objects without this attribute',
'object_check_critical' => 'Critical errors',
@ -1474,6 +1486,7 @@ If you still have problems to login, then please contact your administrator.',
'password_forgotten_title' => 'Password sent',
'password_mismatch_error' => 'Passwords mismatch',
'password_mismatch_error_title' => 'Passwords mismatch',
'password_never_expires' => 'Password never expires',
'password_repeat' => 'Repeat password',
'password_send' => 'Password send',
'password_send_text' => 'Your new password has been send to the given email address, if the login and email matches an existing user. If you do not receive an email within the next minutes, then make sure both login and email are correct and restart the process again.',
@ -1501,6 +1514,7 @@ If you still have problems to login, then please contact your administrator.',
'preview_txt' => 'Preview text',
'previous_state' => 'Previous state',
'previous_versions' => 'Previous versions',
'problematic_filename' => 'The filename contains either chars which are not allowed or may cause problems in some file systems or has the wrong extension. This filename is used when downloading the document and also by the webdav server.',
'process' => 'Process',
'process_without_user_group' => 'Processes without user/group',
'pt_BR' => 'Portugese (BR)',
@ -1619,11 +1633,14 @@ User: [username]<br />
URL: [url]</p>',
'removed_workflow_email_subject' => '[sitename]: [name] - Removed workflow from document version',
'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',
'reorder' => 'Reorder',
'reorder_documents_in_folder' => 'Assign new sequence numbers to all documents of a folder starting at 1.0',
'repaired' => 'repaired',
'repairing_objects' => 'Repairing documents and folders.',
'replace_content_email_body' => 'The last version of the document has been replaced.
@ -1922,6 +1939,7 @@ URL: [url]</p>',
'select_category' => 'Click to select category',
'select_created' => 'Click to select date of creation',
'select_documents_for_process' => 'Select documents',
'select_folder' => 'Select folder',
'select_group' => 'Select group',
'select_groups' => 'Click to select groups',
'select_grp_approvers' => 'Click to select group approver',
@ -1976,7 +1994,9 @@ If you did not receive a password, please use the password forgotten function on
'service_name' => 'Name of service',
'sessions' => 'Users online',
'setDateFromFile' => 'Take over date from imported file',
'setDateFromFile_desc' => 'Take over the date of the imported file as the date of the document in SeedDMS',
'setDateFromFolder' => 'Take over date from imported folder',
'setDateFromFolder_desc' => 'Take over the date of the imported directory as the date of the folder in SeedDMS',
'settings' => 'Settings',
'settings_activate_module' => 'Activate module',
'settings_activate_php_extension' => 'Activate PHP extension',
@ -2071,9 +2091,15 @@ If you did not receive a password, please use the password forgotten function on
'settings_defaultSearchMethod_desc' => 'Default search method, when a search is started by the search form in the main menu.',
'settings_defaultSearchMethod_valdatabase' => 'database',
'settings_defaultSearchMethod_valfulltext' => 'fulltext',
'settings_defaultThumbnailClick' => 'Action when clicking on thumbnail',
'settings_defaultThumbnailClick_desc' => 'This action will be executed when a thumbnail is clicked.',
'settings_defaultThumbnailClick_valdownload' => 'Download document',
'settings_defaultThumbnailClick_valviewonline' => 'View document online',
'settings_delete_install_folder' => 'In order to use SeedDMS, you must delete the file ENABLE_INSTALL_TOOL in the configuration directory',
'settings_disableChangePassword' => 'Disallow changing own password',
'settings_disableChangePassword_desc' => 'If checked the user cannot change his/her password. Turn this on if LDAP authentication is used. It prevents setting a database password and circumvent LDAP authentication.',
'settings_disableReceiptComment' => 'Disable comment for reception',
'settings_disableReceiptComment_desc' => 'Turning this on will disable comments for receptions.',
'settings_disableSelfEdit' => 'Disable Self Edit',
'settings_disableSelfEdit_desc' => 'If checked user cannot edit his own profile',
'settings_disable_install' => 'Delete file ENABLE_INSTALL_TOOL if possible',
@ -2139,6 +2165,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',
@ -2198,6 +2226,8 @@ If you did not receive a password, please use the password forgotten function on
'settings_encryptionKey' => 'Encryption key',
'settings_encryptionKey_desc' => 'This string is used for creating a unique identifier being added as a hidden field to a form in order to prevent CSRF attacks.',
'settings_error' => 'Error',
'settings_excludeFoldersDashboard' => 'Exclude folders from dashboard',
'settings_excludeFoldersDashboard_desc' => 'This folders will not be checked for documents shown on the dashboard. This can be useful for archived documents or documents in the trash.',
'settings_expandFolderTree' => 'Expand Folder Tree',
'settings_expandFolderTree_desc' => 'Expand Folder Tree',
'settings_expandFolderTree_val0' => 'start with tree hidden',
@ -2256,6 +2286,8 @@ If you did not receive a password, please use the password forgotten function on
'settings_logFileEnable_desc' => 'Enable/disable log file',
'settings_logFileMaxLevel' => 'Maximum log level',
'settings_logFileMaxLevel_desc' => 'All messages up to this level will be logged',
'settings_logFileRestApiMaxLevel' => 'Rest Api maximum log level',
'settings_logFileRestApiMaxLevel_desc' => 'All messages of the Rest Api up to this level will be logged',
'settings_logFileRotation' => 'Log File Rotation',
'settings_logFileRotation_desc' => 'The log file rotation',
'settings_loginFailure' => 'Login failure',
@ -2453,6 +2485,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',
@ -2523,6 +2556,7 @@ If you did not receive a password, please use the password forgotten function on
'splash_move_document' => 'Document moved',
'splash_move_folder' => 'Folder moved',
'splash_notinherit_access' => 'Access rights no longer inherited',
'splash_orig_filename_changed' => 'Original filename changed',
'splash_receipt_update_success' => 'Reception added successfully',
'splash_removed_from_clipboard' => 'Removed from clipboard',
'splash_rm_attribute' => 'Attribute removed',
@ -2582,6 +2616,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

@ -23,9 +23,11 @@
$text = array(
'2_factor_auth' => 'Autenticación de doble factor',
'2_factor_auth_code' => '',
'2_factor_auth_info' => '',
'2_fact_auth_current_secret' => '',
'2_fact_auth_new_secret' => '',
'2_fact_auth_qrcode' => '',
'2_fact_auth_secret' => '',
'abbr_day' => '',
'abbr_hour' => '',
@ -404,6 +406,7 @@ URL: [url]',
'docs_in_reception_no_access' => 'Documentos recibidos sin acceso por recipiente',
'docs_in_revision_disabled' => '',
'docs_in_revision_no_access' => 'Documentos en revisión sin acceso para el revisor',
'docs_with_link_to_itself' => '',
'docs_with_missing_revision_date' => '',
'document' => 'Documento',
'documentcontent' => 'Contenido del documento',
@ -566,6 +569,8 @@ URL: [url]',
'download_header_document_name' => '',
'download_header_document_no' => '',
'download_header_filename' => '',
'download_header_folder_name' => '',
'download_header_folder_no' => '',
'download_header_internal_version' => '',
'download_header_reviewer' => '',
'download_header_review_comment' => '',
@ -696,6 +701,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',
@ -979,6 +986,7 @@ URL: [url]',
'linked_to_this_version' => '',
'link_alt_updatedocument' => 'Si desea subir archivos mayores que el tamaño máximo actualmente permitido, por favor, utilice la <a href="%s">página de subida</a> alternativa.',
'link_document' => '',
'link_to' => '',
'link_to_version' => '',
'list_access_rights' => 'Listar los derechos de acceso',
'list_contains_no_access_docs' => '',
@ -1152,6 +1160,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.',
@ -1166,6 +1175,9 @@ URL: [url]',
'no_workflows' => '',
'no_workflow_available' => '',
'number_count' => '',
'n_of_m_approved' => '',
'n_of_m_reviewed' => '',
'n_of_m_revised' => '',
'objectcheck' => 'Chequeo de carpeta/documento',
'objects_without_attribute' => '',
'object_check_critical' => 'Errores críticos',
@ -1215,6 +1227,7 @@ Si continua teniendo problemas de acceso, por favor contacte con el administrado
'password_forgotten_title' => 'Envío de contraseña',
'password_mismatch_error' => '',
'password_mismatch_error_title' => '',
'password_never_expires' => '',
'password_repeat' => 'Repetir contraseña',
'password_send' => 'Envío de contraseña',
'password_send_text' => 'Su nueva contraseña fue enviada al e-mail registrado.',
@ -1242,6 +1255,7 @@ Si continua teniendo problemas de acceso, por favor contacte con el administrado
'preview_txt' => '',
'previous_state' => 'Estado anterior',
'previous_versions' => 'Versiones anteriores',
'problematic_filename' => '',
'process' => 'Proceso',
'process_without_user_group' => 'Procesos sin usuario/grupo',
'pt_BR' => 'Portuges (BR)',
@ -1305,11 +1319,14 @@ nURL: [url]',
'removed_workflow_email_body_html' => '',
'removed_workflow_email_subject' => '[sitename]: [name] - Eliminar flujo de trabajo de la versión del documento',
'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' => '',
'reorder' => '',
'reorder_documents_in_folder' => '',
'repaired' => 'Reparado',
'repairing_objects' => 'Reparando documentos y carpetas.',
'replace_content_email_body' => '',
@ -1487,6 +1504,7 @@ URL: [url]',
'select_category' => 'Haga Click para seleccionar categoría',
'select_created' => '',
'select_documents_for_process' => '',
'select_folder' => '',
'select_group' => 'Seleccionar Grupo',
'select_groups' => 'Haga Click para seleccionar grupos',
'select_grp_approvers' => 'Haga Click para seleccionar grupo de aprobadores',
@ -1534,7 +1552,9 @@ URL: [url]',
'service_name' => '',
'sessions' => '',
'setDateFromFile' => 'Obtiene la fecha del archivo importado',
'setDateFromFile_desc' => '',
'setDateFromFolder' => 'Obtiene la fecha de la carpeta importada',
'setDateFromFolder_desc' => '',
'settings' => 'Configuración',
'settings_activate_module' => 'Activar módulo',
'settings_activate_php_extension' => 'Activar extensión PHP',
@ -1629,9 +1649,15 @@ URL: [url]',
'settings_defaultSearchMethod_desc' => 'Método de búsqueda por defecto, cuando se inicia una búsqueda mediante el formulario en el menú principal',
'settings_defaultSearchMethod_valdatabase' => 'base de datos',
'settings_defaultSearchMethod_valfulltext' => 'Todo el texto',
'settings_defaultThumbnailClick' => '',
'settings_defaultThumbnailClick_desc' => '',
'settings_defaultThumbnailClick_valdownload' => '',
'settings_defaultThumbnailClick_valviewonline' => '',
'settings_delete_install_folder' => 'Para utilizar SeedDMS, debe eliminar el archivo ENABLE_INSTALL_TOOL de la carpeta de configuración',
'settings_disableChangePassword' => '',
'settings_disableChangePassword_desc' => '',
'settings_disableReceiptComment' => '',
'settings_disableReceiptComment_desc' => '',
'settings_disableSelfEdit' => 'Deshabilitar autoedición',
'settings_disableSelfEdit_desc' => 'Si está seleccionado el usuario no podrá editar su propio perfil',
'settings_disable_install' => 'Eliminar el archivo ENABLE_INSTALL_TOOL se es posible',
@ -1697,6 +1723,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' => '',
@ -1756,6 +1784,8 @@ URL: [url]',
'settings_encryptionKey' => 'Clave de cifrado',
'settings_encryptionKey_desc' => 'Esta cadena se utiliza para crear un identificador único añadido como campo oculto a formularios para prevenir ataques CSRF.',
'settings_error' => 'Error',
'settings_excludeFoldersDashboard' => '',
'settings_excludeFoldersDashboard_desc' => '',
'settings_expandFolderTree' => 'Expandir árbol de carpetas',
'settings_expandFolderTree_desc' => 'Expandir árbol de carpetas',
'settings_expandFolderTree_val0' => 'Comenzar con el árbol oculto',
@ -1814,6 +1844,8 @@ URL: [url]',
'settings_logFileEnable_desc' => 'Habilitar/Deshabilitar archivo de registro',
'settings_logFileMaxLevel' => '',
'settings_logFileMaxLevel_desc' => '',
'settings_logFileRestApiMaxLevel' => '',
'settings_logFileRestApiMaxLevel_desc' => '',
'settings_logFileRotation' => 'Rotación del archivo de registro',
'settings_logFileRotation_desc' => 'Rotación del archivo de registro',
'settings_loginFailure' => 'Fallo de acceso',
@ -2011,6 +2043,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',
@ -2081,6 +2114,7 @@ URL: [url]',
'splash_move_document' => '',
'splash_move_folder' => '',
'splash_notinherit_access' => '',
'splash_orig_filename_changed' => '',
'splash_receipt_update_success' => '',
'splash_removed_from_clipboard' => 'Eliminado del portapapeles',
'splash_rm_attribute' => 'Atributo eliminado',
@ -2140,6 +2174,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,13 +19,15 @@
// 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',
'2_factor_auth_code' => '',
'2_factor_auth_info' => 'Ce système requiert une authentification à deux facteurs. Cela nécessite linstallation de Google Authenticator sur votre téléphone mobile. Ci-dessous sont visibles deux QR codes. Celui de droite correspond à votre clé secrète actuelle. Celui de gauche permet de définir une nouvelle clé secrète. Lorsque vous définissez une nouvelle clé secrète, assurez-vous de la scanner avec Google Authenticator.',
'2_fact_auth_current_secret' => 'Clé secrète actuelle',
'2_fact_auth_new_secret' => 'Nouvelle clé secrète',
'2_fact_auth_qrcode' => '',
'2_fact_auth_secret' => 'Clé secrète',
'abbr_day' => 'j',
'abbr_hour' => 'h',
@ -433,6 +435,7 @@ URL : [url]</p>',
'docs_in_reception_no_access' => 'Documents en attente de réception sans accès du destinataire',
'docs_in_revision_disabled' => '',
'docs_in_revision_no_access' => 'Documents en révision sans accès du réviseur',
'docs_with_link_to_itself' => '',
'docs_with_missing_revision_date' => '',
'document' => 'Document',
'documentcontent' => 'Version de document',
@ -681,6 +684,8 @@ URL : [url]</p>',
'download_header_document_name' => 'Nom du document',
'download_header_document_no' => 'N° du document',
'download_header_filename' => 'Nom du fichier',
'download_header_folder_name' => '',
'download_header_folder_no' => '',
'download_header_internal_version' => 'Version interne',
'download_header_reviewer' => 'Examinateur',
'download_header_review_comment' => 'Commentaire de vérification',
@ -817,6 +822,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…',
@ -1163,6 +1170,7 @@ URL : [url]</p>',
'linked_to_this_version' => 'Lié à cette version',
'link_alt_updatedocument' => 'Pour déposer des fichiers de taille supérieure, utilisez la <a href="%s">page d\'ajout multiple</a>.',
'link_document' => 'Lien vers le document',
'link_to' => '',
'link_to_version' => 'Version',
'list_access_rights' => 'Liste des droits daccès…',
'list_contains_no_access_docs' => 'La liste contient des documents auxquels vous navez pas accès et qui ne sont donc pas affichés.',
@ -1358,6 +1366,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',
@ -1372,6 +1381,9 @@ URL : [url]</p>',
'no_workflows' => 'Vous navez pas encore créé de workflow',
'no_workflow_available' => 'Aucun workflow disponible',
'number_count' => '',
'n_of_m_approved' => '',
'n_of_m_reviewed' => '',
'n_of_m_revised' => '',
'objectcheck' => 'Vérification des dossiers et documents',
'objects_without_attribute' => '',
'object_check_critical' => 'Erreurs critiques',
@ -1427,6 +1439,7 @@ En cas de problème persistant, veuillez contacter votre administrateur.',
'password_forgotten_title' => 'Mot de passe envoyé',
'password_mismatch_error' => 'Les mots de passe ne correspondent pas',
'password_mismatch_error_title' => 'Les mots de passe ne correspondent pas',
'password_never_expires' => '',
'password_repeat' => 'Répétez le mot de passe',
'password_send' => 'Envoi du mot de passe',
'password_send_text' => 'Votre nouveau mot de passe a été envoyé à l\'adresse fournie (si l\'identifiant et l\'adresse e-mail correspondent à un utilisateur existant). Si vous ne recevez rien dans les minutes qui suivent, assurez-vous que l\'identifiant et l\'adresse e-mail sont corrects puis relancez le processus.',
@ -1454,6 +1467,7 @@ En cas de problème persistant, veuillez contacter votre administrateur.',
'preview_txt' => '',
'previous_state' => 'État précédent',
'previous_versions' => 'Versions précédentes',
'problematic_filename' => '',
'process' => 'Processus',
'process_without_user_group' => 'Processus sans utilisateur/groupe',
'pt_BR' => 'Portuguais (BR)',
@ -1572,11 +1586,14 @@ Utilisateur : [username]<br />
URL : [url]</p>',
'removed_workflow_email_subject' => '[sitename] : [name] - Workflow retiré de la version du doument',
'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' => '',
'reorder' => '',
'reorder_documents_in_folder' => '',
'repaired' => 'réparé',
'repairing_objects' => 'Réparation des documents et des dossiers.',
'replace_content_email_body' => 'La dernière version du document a été remplacée.
@ -1869,6 +1886,7 @@ URL : [url]</p>',
'select_category' => 'Cliquer pour choisir une catégorie',
'select_created' => '',
'select_documents_for_process' => '',
'select_folder' => '',
'select_group' => 'Sélectionner un groupe',
'select_groups' => 'Cliquer pour choisir un groupe',
'select_grp_approvers' => 'Cliquer pour choisir un groupe d\'approbateur',
@ -1921,7 +1939,9 @@ Nom : [username]
'service_name' => '',
'sessions' => 'Utilisateurs en ligne',
'setDateFromFile' => 'Reprendre la date du fichier importé',
'setDateFromFile_desc' => '',
'setDateFromFolder' => 'Reprendre la date du dossier importé',
'setDateFromFolder_desc' => '',
'settings' => 'Configuration',
'settings_activate_module' => 'Activez le module',
'settings_activate_php_extension' => 'Activez l\'extension PHP',
@ -2016,9 +2036,15 @@ Nom : [username]
'settings_defaultSearchMethod_desc' => 'Méthode de recherche par défaut, lorsque la recherche est exécutée depuis le moteur de recherche du menu principal',
'settings_defaultSearchMethod_valdatabase' => 'base de données',
'settings_defaultSearchMethod_valfulltext' => 'Plein texte (contenu)',
'settings_defaultThumbnailClick' => '',
'settings_defaultThumbnailClick_desc' => '',
'settings_defaultThumbnailClick_valdownload' => '',
'settings_defaultThumbnailClick_valviewonline' => '',
'settings_delete_install_folder' => 'Pour utiliser SeedDMS, vous devez supprimer le fichier ENABLE_INSTALL_TOOL dans le répertoire de configuration',
'settings_disableChangePassword' => '',
'settings_disableChangePassword_desc' => '',
'settings_disableReceiptComment' => '',
'settings_disableReceiptComment_desc' => '',
'settings_disableSelfEdit' => 'Désactiver auto modification',
'settings_disableSelfEdit_desc' => 'Si coché, l\'utilisateur ne peut pas éditer son profil',
'settings_disable_install' => 'Si possible, supprimer le fichier ENABLE_INSTALL_TOOL',
@ -2084,6 +2110,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' => '',
@ -2143,6 +2171,8 @@ Nom : [username]
'settings_encryptionKey' => 'Clé de cryptage',
'settings_encryptionKey_desc' => 'Cette chaîne est utilisée pour créer un identifiant unique étant ajouté comme champ masqué à un formulaire afin de prévenir des attaques CSRF.',
'settings_error' => 'Erreur',
'settings_excludeFoldersDashboard' => '',
'settings_excludeFoldersDashboard_desc' => '',
'settings_expandFolderTree' => 'Dérouler l\'arborescence des dossiers',
'settings_expandFolderTree_desc' => 'Dérouler l\'arborescence des dossiers',
'settings_expandFolderTree_val0' => 'Démarrer avec l\'arborescence cachée',
@ -2201,6 +2231,8 @@ Nom : [username]
'settings_logFileEnable_desc' => 'Active/désactive le fichier journal',
'settings_logFileMaxLevel' => '',
'settings_logFileMaxLevel_desc' => '',
'settings_logFileRestApiMaxLevel' => '',
'settings_logFileRestApiMaxLevel_desc' => '',
'settings_logFileRotation' => 'Rotation fichier journal',
'settings_logFileRotation_desc' => 'Rotation fichier journal',
'settings_loginFailure' => 'Max. échecs de connexion',
@ -2398,6 +2430,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',
@ -2468,6 +2501,7 @@ Nom : [username]
'splash_move_document' => 'Document déplacé',
'splash_move_folder' => 'Dossier déplacé',
'splash_notinherit_access' => 'Les droits daccès ne sont plus hérités',
'splash_orig_filename_changed' => '',
'splash_receipt_update_success' => 'Réception ajoutée avec succès',
'splash_removed_from_clipboard' => 'Supprimé du presse-papier',
'splash_rm_attribute' => 'Attribut supprimé',
@ -2527,6 +2561,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',
@ -2671,7 +2706,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.',
@ -2690,7 +2725,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

@ -23,9 +23,11 @@
$text = array(
'2_factor_auth' => 'Kétfaktoros azonosítás',
'2_factor_auth_code' => '',
'2_factor_auth_info' => 'A rendszernek két faktoros hitelesítése van. Szükséged lesz a Google Authenticator-ra a mobil telefonodon. Lejebb látható két QR kód. A jobb oldali a saját jelszavát, a baloldali egy új titkos jelszót tartalmaz. Ha új jelszót szeretne beállítani, szkennelje be újra a Goolge Authenticator-al.',
'2_fact_auth_current_secret' => '',
'2_fact_auth_new_secret' => '',
'2_fact_auth_qrcode' => '',
'2_fact_auth_secret' => 'Titkos',
'abbr_day' => '',
'abbr_hour' => '',
@ -404,6 +406,7 @@ URL: [url]',
'docs_in_reception_no_access' => '',
'docs_in_revision_disabled' => '',
'docs_in_revision_no_access' => '',
'docs_with_link_to_itself' => '',
'docs_with_missing_revision_date' => '',
'document' => 'Dokumentum',
'documentcontent' => '',
@ -560,6 +563,8 @@ URL: [url]',
'download_header_document_name' => '',
'download_header_document_no' => '',
'download_header_filename' => '',
'download_header_folder_name' => '',
'download_header_folder_no' => '',
'download_header_internal_version' => '',
'download_header_reviewer' => '',
'download_header_review_comment' => '',
@ -690,6 +695,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 ...',
@ -970,6 +977,7 @@ URL: [url]',
'linked_to_this_version' => '',
'link_alt_updatedocument' => 'Ha a jelenlegi maximális feltöltési méretnél nagyobb állományokat szeretne feltölteni, akkor használja az alternatív <a href="%s">feltöltő oldalt</a>.',
'link_document' => '',
'link_to' => '',
'link_to_version' => '',
'list_access_rights' => 'Összes jogosultság felsorolása...',
'list_contains_no_access_docs' => '',
@ -1143,6 +1151,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.',
@ -1157,6 +1166,9 @@ URL: [url]',
'no_workflows' => '',
'no_workflow_available' => '',
'number_count' => '',
'n_of_m_approved' => '',
'n_of_m_reviewed' => '',
'n_of_m_revised' => '',
'objectcheck' => 'Mappa/Dokumentum ellenőrzés',
'objects_without_attribute' => '',
'object_check_critical' => '',
@ -1206,6 +1218,7 @@ Amennyiben problémákba ütközik a bejelentkezés során, kérjük vegye fel a
'password_forgotten_title' => 'Jelszó küldés',
'password_mismatch_error' => '',
'password_mismatch_error_title' => '',
'password_never_expires' => '',
'password_repeat' => 'Jelszó mégegyszer',
'password_send' => 'Jelszó elküldve',
'password_send_text' => 'Új jelszót küld Önnek a megadott email címre, amennyiben a felhasználónév és az email cím megfelel egy létező felhasználónak. Amennyiben néhány percen belül nem kapja meg az email-t, akkor ellenőrizze a felhasználónevet és email címet és indítsa újra a folyamatot.',
@ -1233,6 +1246,7 @@ Amennyiben problémákba ütközik a bejelentkezés során, kérjük vegye fel a
'preview_txt' => '',
'previous_state' => 'Előző állapot',
'previous_versions' => 'Előző változatok',
'problematic_filename' => '',
'process' => 'Folyamat',
'process_without_user_group' => 'Felhasználó / csoport nélküli folyamatok',
'pt_BR' => 'Portugál (BR)',
@ -1296,11 +1310,14 @@ URL: [url]',
'removed_workflow_email_body_html' => '',
'removed_workflow_email_subject' => '[sitename]: [name] - Dokumentum változatból eltávolított munkafolyamat',
'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' => '',
'reorder' => '',
'reorder_documents_in_folder' => '',
'repaired' => 'javított',
'repairing_objects' => 'Dokumentumok és mappák helyreállítása',
'replace_content_email_body' => '',
@ -1477,6 +1494,7 @@ URL: [url]',
'select_category' => 'Kattintson a kategória kiválasztásához',
'select_created' => '',
'select_documents_for_process' => '',
'select_folder' => '',
'select_group' => 'Csoport kiválasztása',
'select_groups' => 'Kattintson a csoportok kijelöléséhez',
'select_grp_approvers' => 'Kattintson a csoport jóváhagyó kijelöléséhez',
@ -1524,7 +1542,9 @@ URL: [url]',
'service_name' => '',
'sessions' => '',
'setDateFromFile' => '',
'setDateFromFile_desc' => '',
'setDateFromFolder' => '',
'setDateFromFolder_desc' => '',
'settings' => 'Beállítások',
'settings_activate_module' => 'Modul aktiválása',
'settings_activate_php_extension' => 'PHP kiterjesztés aktiválása',
@ -1619,9 +1639,15 @@ URL: [url]',
'settings_defaultSearchMethod_desc' => '',
'settings_defaultSearchMethod_valdatabase' => 'adatbázis',
'settings_defaultSearchMethod_valfulltext' => '',
'settings_defaultThumbnailClick' => '',
'settings_defaultThumbnailClick_desc' => '',
'settings_defaultThumbnailClick_valdownload' => '',
'settings_defaultThumbnailClick_valviewonline' => '',
'settings_delete_install_folder' => 'A SeedDMS használatához törölnie kell a konfigurációs könyvtárban található ENABLE_INSTALL_TOOL állományt.',
'settings_disableChangePassword' => '',
'settings_disableChangePassword_desc' => '',
'settings_disableReceiptComment' => '',
'settings_disableReceiptComment_desc' => '',
'settings_disableSelfEdit' => 'Saját adatok szerkesztésének tiltása',
'settings_disableSelfEdit_desc' => 'Ha be van jelölve a felhasználó nem szerkesztheti saját profilját',
'settings_disable_install' => 'Törölje az ENABLE_INSTALL_TOOL állományt, ha lehetséges',
@ -1687,6 +1713,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' => '',
@ -1746,6 +1774,8 @@ URL: [url]',
'settings_encryptionKey' => 'Titkosító kulcs',
'settings_encryptionKey_desc' => 'Ez a karaktersorozat használható egyedi azonosító létrehozásához amely rejtett mezőként lesz hozzáadva az űrlapokhoz a CSRF támadások megelőzésére.',
'settings_error' => 'Hiba',
'settings_excludeFoldersDashboard' => '',
'settings_excludeFoldersDashboard_desc' => '',
'settings_expandFolderTree' => 'Mappa fastruktúra kibontása',
'settings_expandFolderTree_desc' => 'Mappa fastruktúra kibontása',
'settings_expandFolderTree_val0' => 'indulás rejtett fastruktúrával',
@ -1804,6 +1834,8 @@ URL: [url]',
'settings_logFileEnable_desc' => 'Naplóállomány engedélyezése/tiltása',
'settings_logFileMaxLevel' => '',
'settings_logFileMaxLevel_desc' => '',
'settings_logFileRestApiMaxLevel' => '',
'settings_logFileRestApiMaxLevel_desc' => '',
'settings_logFileRotation' => 'Naplóállomány forgatása',
'settings_logFileRotation_desc' => 'A naplóállomány forgatása',
'settings_loginFailure' => 'Bejelentkezési hiba',
@ -2001,6 +2033,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' => '',
@ -2071,6 +2104,7 @@ URL: [url]',
'splash_move_document' => '',
'splash_move_folder' => '',
'splash_notinherit_access' => '',
'splash_orig_filename_changed' => '',
'splash_receipt_update_success' => '',
'splash_removed_from_clipboard' => 'Eltávolítva a vágólapról',
'splash_rm_attribute' => 'Jellemző eltávolítva',
@ -2130,6 +2164,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,13 +19,15 @@
// 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 (490), atoz-chevara (835)
$text = array(
'2_factor_auth' => '',
'2_factor_auth_code' => '',
'2_factor_auth_info' => '',
'2_fact_auth_current_secret' => 'Kunci rahasi saat ini',
'2_fact_auth_new_secret' => '',
'2_fact_auth_qrcode' => '',
'2_fact_auth_secret' => 'Rahasia',
'abbr_day' => '',
'abbr_hour' => '',
@ -381,7 +383,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',
@ -413,6 +415,7 @@ URL: [url]</p>',
'docs_in_reception_no_access' => '',
'docs_in_revision_disabled' => '',
'docs_in_revision_no_access' => 'Dokumen dalam revisi tanpa akses oleh revisor',
'docs_with_link_to_itself' => '',
'docs_with_missing_revision_date' => '',
'document' => 'Dokumen',
'documentcontent' => 'Isi dokumen',
@ -615,6 +618,8 @@ URL: [url]</p>',
'download_header_document_name' => 'Nama dokumen',
'download_header_document_no' => 'Nomor Dokumen',
'download_header_filename' => 'Nama berkas',
'download_header_folder_name' => '',
'download_header_folder_no' => '',
'download_header_internal_version' => 'Int. versi',
'download_header_reviewer' => 'Pengulas',
'download_header_review_comment' => '',
@ -686,7 +691,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',
@ -746,6 +751,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...',
@ -962,7 +969,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' => '',
@ -1054,6 +1061,7 @@ URL: [url]</p>',
'linked_to_this_version' => 'Tertaut ke versi ini',
'link_alt_updatedocument' => '',
'link_document' => 'Tautan dokumen',
'link_to' => '',
'link_to_version' => 'Lampirkan ke versi',
'list_access_rights' => 'Daftar semua hak akses ...',
'list_contains_no_access_docs' => '',
@ -1236,6 +1244,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.',
@ -1250,6 +1259,9 @@ URL: [url]',
'no_workflows' => 'Anda belum membuat alur kerja',
'no_workflow_available' => 'Tidak ada alur kerja yang tersedia',
'number_count' => '',
'n_of_m_approved' => '',
'n_of_m_reviewed' => '',
'n_of_m_revised' => '',
'objectcheck' => 'Pemeriksaan Folder/Dokumen',
'objects_without_attribute' => '',
'object_check_critical' => 'Kesalahan kritis',
@ -1307,6 +1319,7 @@ Jika Anda masih mengalami masalah untuk login, silakan hubungi administrator And
'password_forgotten_title' => 'Kirim kata sandi',
'password_mismatch_error' => 'Kata sandi tidak cocok',
'password_mismatch_error_title' => 'Kata sandi tidak cocok',
'password_never_expires' => '',
'password_repeat' => 'Ulangi kata sandi',
'password_send' => 'Kata sandi terkirim',
'password_send_text' => 'Kata sandi baru Anda telah dikirim ke alamat email yang diberikan, jika login dan email cocok dengan pengguna yang ada. Jika Anda tidak menerima email dalam beberapa menit berikutnya, pastikan login dan email sudah benar dan mulai ulang prosesnya lagi.',
@ -1334,6 +1347,7 @@ Jika Anda masih mengalami masalah untuk login, silakan hubungi administrator And
'preview_txt' => '',
'previous_state' => '',
'previous_versions' => 'Versi sebelumnya',
'problematic_filename' => '',
'process' => 'Proses',
'process_without_user_group' => 'Proses tanpa pengguna/kelompok',
'pt_BR' => 'Portugis (BR)',
@ -1405,11 +1419,14 @@ URL: [url]',
'removed_workflow_email_body_html' => '',
'removed_workflow_email_subject' => '',
'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' => '',
'reorder' => '',
'reorder_documents_in_folder' => '',
'repaired' => 'diperbaiki',
'repairing_objects' => 'Memperbaiki dokumen dan folder.',
'replace_content_email_body' => '',
@ -1560,6 +1577,7 @@ URL: [url]',
'select_category' => 'Klik untuk memilih kategori',
'select_created' => '',
'select_documents_for_process' => '',
'select_folder' => '',
'select_group' => 'Pilih group',
'select_groups' => 'Klik untuk memilih groups',
'select_grp_approvers' => 'Klik untuk memilih group approver',
@ -1614,7 +1632,9 @@ Jika Anda tidak menerima kata sandi, silakan gunakan fitur lupa kata sandi di ha
'service_name' => '',
'sessions' => 'Pengguna Online',
'setDateFromFile' => 'Ambil alih tanggal dari file yang diimpor',
'setDateFromFile_desc' => '',
'setDateFromFolder' => 'Ambil alih tanggal dari folder yang diimpor',
'setDateFromFolder_desc' => '',
'settings' => 'Pengaturan',
'settings_activate_module' => 'Aktifkan modul',
'settings_activate_php_extension' => 'Aktifkan ekstensi PHP',
@ -1709,9 +1729,15 @@ Jika Anda tidak menerima kata sandi, silakan gunakan fitur lupa kata sandi di ha
'settings_defaultSearchMethod_desc' => 'Metode pencarian default, ketika pencarian dimulai dengan formulir pencarian di menu utama.',
'settings_defaultSearchMethod_valdatabase' => 'basis data',
'settings_defaultSearchMethod_valfulltext' => '',
'settings_defaultThumbnailClick' => '',
'settings_defaultThumbnailClick_desc' => '',
'settings_defaultThumbnailClick_valdownload' => '',
'settings_defaultThumbnailClick_valviewonline' => '',
'settings_delete_install_folder' => 'Untuk menggunakan SeedDMS, Anda harus menghapus file ENABLE_INSTALL_TOOL di direktori konfigurasi',
'settings_disableChangePassword' => '',
'settings_disableChangePassword_desc' => '',
'settings_disableReceiptComment' => '',
'settings_disableReceiptComment_desc' => '',
'settings_disableSelfEdit' => '',
'settings_disableSelfEdit_desc' => 'Jika dicentang, pengguna tidak dapat mengedit profilnya sendiri',
'settings_disable_install' => '',
@ -1777,6 +1803,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' => '',
@ -1836,6 +1864,8 @@ Jika Anda tidak menerima kata sandi, silakan gunakan fitur lupa kata sandi di ha
'settings_encryptionKey' => '',
'settings_encryptionKey_desc' => '',
'settings_error' => 'Galat',
'settings_excludeFoldersDashboard' => '',
'settings_excludeFoldersDashboard_desc' => '',
'settings_expandFolderTree' => '',
'settings_expandFolderTree_desc' => '',
'settings_expandFolderTree_val0' => '',
@ -1894,6 +1924,8 @@ Jika Anda tidak menerima kata sandi, silakan gunakan fitur lupa kata sandi di ha
'settings_logFileEnable_desc' => '',
'settings_logFileMaxLevel' => '',
'settings_logFileMaxLevel_desc' => '',
'settings_logFileRestApiMaxLevel' => '',
'settings_logFileRestApiMaxLevel_desc' => '',
'settings_logFileRotation' => '',
'settings_logFileRotation_desc' => '',
'settings_loginFailure' => 'Gagal masuk',
@ -2091,6 +2123,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',
@ -2161,6 +2194,7 @@ Jika Anda tidak menerima kata sandi, silakan gunakan fitur lupa kata sandi di ha
'splash_move_document' => 'Dokumen dipindahkan',
'splash_move_folder' => 'Folder dipindahkan',
'splash_notinherit_access' => '',
'splash_orig_filename_changed' => '',
'splash_receipt_update_success' => '',
'splash_removed_from_clipboard' => '',
'splash_rm_attribute' => 'Label dihapus',
@ -2220,6 +2254,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' => '',
@ -2411,7 +2446,7 @@ Jika Anda tidak menerima kata sandi, silakan gunakan fitur lupa kata sandi di ha
'versioning_file_creation_warning' => '',
'versioning_info' => 'Info versi',
'versiontolow' => 'Versi terlalu rendah',
'version_comment' => '',
'version_comment' => 'komen versi',
'version_comment_changed_email_body' => '',
'version_comment_changed_email_body_html' => '',
'version_comment_changed_email_subject' => '',

View File

@ -23,9 +23,11 @@
$text = array(
'2_factor_auth' => 'Autorizzazione a due fattori',
'2_factor_auth_code' => '',
'2_factor_auth_info' => 'Questo sistema usa autenticazione a due fattori. Sarà necessario il “Google Authenticator” sul tuo telephono cellulare. Qui potete vedere due codici QR. Quello di destra è il tuo segreto. è sulla sinistra chè un nuovo segreto. Se si imposta un nuovo segreto per assicurarsi si deve scansione con “Google Authenticator” di nuovo.',
'2_fact_auth_current_secret' => '',
'2_fact_auth_new_secret' => '',
'2_fact_auth_qrcode' => '',
'2_fact_auth_secret' => 'Segreto',
'abbr_day' => '',
'abbr_hour' => '',
@ -409,6 +411,7 @@ URL: [url]',
'docs_in_reception_no_access' => 'Documenti con ricezione senza accesso dai destinatari',
'docs_in_revision_disabled' => '',
'docs_in_revision_no_access' => 'Documenti in riesame senza accesso dai revisori',
'docs_with_link_to_itself' => '',
'docs_with_missing_revision_date' => '',
'document' => 'Documento',
'documentcontent' => 'Contenuto documento',
@ -570,6 +573,8 @@ URL: [url]',
'download_header_document_name' => '',
'download_header_document_no' => '',
'download_header_filename' => '',
'download_header_folder_name' => '',
'download_header_folder_no' => '',
'download_header_internal_version' => '',
'download_header_reviewer' => '',
'download_header_review_comment' => '',
@ -700,6 +705,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...',
@ -977,6 +984,7 @@ URL: [url]',
'linked_to_this_version' => 'Collegato a questa versione',
'link_alt_updatedocument' => 'Se vuoi caricare file più grandi del limite massimo attuale, usa la <a href="%s">pagina alternativa di upload</a>.',
'link_document' => 'Collegamento al documento',
'link_to' => '',
'link_to_version' => 'Collega alla versione',
'list_access_rights' => 'Elenca tutti i diritti di accesso...',
'list_contains_no_access_docs' => 'L\'elenco contiene più documenti ai quali non si ha accesso e non vengono visualizzati.',
@ -1150,6 +1158,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.',
@ -1164,6 +1173,9 @@ URL: [url]',
'no_workflows' => '',
'no_workflow_available' => 'Nessun flusso di lavoro disponibile',
'number_count' => '',
'n_of_m_approved' => '',
'n_of_m_reviewed' => '',
'n_of_m_revised' => '',
'objectcheck' => 'Controllo cartelle o documenti',
'objects_without_attribute' => '',
'object_check_critical' => 'Errori critici',
@ -1213,6 +1225,7 @@ Dovessero esserci ancora problemi al login, prego contatta l\'amministratore di
'password_forgotten_title' => 'Password inviata',
'password_mismatch_error' => '',
'password_mismatch_error_title' => '',
'password_never_expires' => '',
'password_repeat' => 'Ripetere password',
'password_send' => 'Invia la password',
'password_send_text' => 'La nuova password è stata inviata all\'indirizzo email fornito, nel caso in cui login ed email siano nel database e corrispondano ad un utente. Qualora non si fosse ricevuto alcun messaggio nei prossimi minuti, si prega di controllare che login ed email siano corretti e provare di nuovo.',
@ -1240,6 +1253,7 @@ Dovessero esserci ancora problemi al login, prego contatta l\'amministratore di
'preview_txt' => '',
'previous_state' => 'Stato precedente',
'previous_versions' => 'Versioni precedenti',
'problematic_filename' => '',
'process' => 'Processi',
'process_without_user_group' => 'Processi senza Utente/Gruppo',
'pt_BR' => 'Portoghese (BR)',
@ -1314,11 +1328,14 @@ URL: [url]',
'removed_workflow_email_body_html' => '',
'removed_workflow_email_subject' => '[sitename]: [name] - Flusso di lavoro rimosso dalla versione del documento',
'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' => '',
'reorder' => '',
'reorder_documents_in_folder' => '',
'repaired' => 'riparato',
'repairing_objects' => 'Riparazione documenti e cartelle in corso...',
'replace_content_email_body' => '',
@ -1518,6 +1535,7 @@ URL: [url]',
'select_category' => 'Clicca per selezionare la categoria',
'select_created' => '',
'select_documents_for_process' => '',
'select_folder' => '',
'select_group' => 'Seleziona gruppo',
'select_groups' => 'Clicca per selezionare i gruppi',
'select_grp_approvers' => 'Seleziona gruppo approvatore',
@ -1570,7 +1588,9 @@ Name: [username]
'service_name' => '',
'sessions' => 'Utenti online',
'setDateFromFile' => 'Prende la data dal file importato',
'setDateFromFile_desc' => '',
'setDateFromFolder' => 'Prende la data dalla cartella importata',
'setDateFromFolder_desc' => '',
'settings' => 'Impostazioni',
'settings_activate_module' => 'Attivazione modulo',
'settings_activate_php_extension' => 'Attivazione estensione PHP',
@ -1665,9 +1685,15 @@ Name: [username]
'settings_defaultSearchMethod_desc' => 'Metodo di ricerca predefinito, quando la ricerca viene avviata dal modulo di ricerca nel menu principale.',
'settings_defaultSearchMethod_valdatabase' => 'database',
'settings_defaultSearchMethod_valfulltext' => 'Testo intero',
'settings_defaultThumbnailClick' => '',
'settings_defaultThumbnailClick_desc' => '',
'settings_defaultThumbnailClick_valdownload' => '',
'settings_defaultThumbnailClick_valviewonline' => '',
'settings_delete_install_folder' => 'Per poter usare SeedDMS, devi cancellare il file ENABLE_INSTALL_TOOL nella cartella di configurazione.',
'settings_disableChangePassword' => '',
'settings_disableChangePassword_desc' => '',
'settings_disableReceiptComment' => '',
'settings_disableReceiptComment_desc' => '',
'settings_disableSelfEdit' => 'Disabilita auto-modifica',
'settings_disableSelfEdit_desc' => 'Se selezionato l\'utente non può modificare il proprio profilo',
'settings_disable_install' => 'Prova ad eliminare il file ENABLE_INSTALL_TOOL se possibile',
@ -1733,6 +1759,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' => '',
@ -1792,6 +1820,8 @@ Name: [username]
'settings_encryptionKey' => 'Chiave di criptazione',
'settings_encryptionKey_desc' => 'La chiave viene usata per creare un identificatore unico da aggiungere come campo nascosto ad un formulario per protezione da attacchi CSRF.',
'settings_error' => 'Errore',
'settings_excludeFoldersDashboard' => '',
'settings_excludeFoldersDashboard_desc' => '',
'settings_expandFolderTree' => 'Espandi l\'albero delle cartelle',
'settings_expandFolderTree_desc' => 'Espandi la struttura ad albero delle cartelle',
'settings_expandFolderTree_val0' => 'Inizia con l\'albero nascosto',
@ -1850,6 +1880,8 @@ Name: [username]
'settings_logFileEnable_desc' => 'Abilita/disabilita il file di registro',
'settings_logFileMaxLevel' => '',
'settings_logFileMaxLevel_desc' => '',
'settings_logFileRestApiMaxLevel' => '',
'settings_logFileRestApiMaxLevel_desc' => '',
'settings_logFileRotation' => 'Rotazione del file di registro',
'settings_logFileRotation_desc' => 'Abilita/disabilita la rotazione del file di registro',
'settings_loginFailure' => 'Login fallito',
@ -2047,6 +2079,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' => '',
@ -2117,6 +2150,7 @@ Name: [username]
'splash_move_document' => 'Documento spostato',
'splash_move_folder' => 'Cartella spostato',
'splash_notinherit_access' => 'I diritti di accesso non sono più ereditati',
'splash_orig_filename_changed' => '',
'splash_receipt_update_success' => 'Ricevuta aggiunta con successo',
'splash_removed_from_clipboard' => 'Rimosso dagli appunti',
'splash_rm_attribute' => 'Attributo rimosso',
@ -2176,6 +2210,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

@ -23,9 +23,11 @@
$text = array(
'2_factor_auth' => '이중 인증',
'2_factor_auth_code' => '',
'2_factor_auth_info' => '',
'2_fact_auth_current_secret' => '',
'2_fact_auth_new_secret' => '',
'2_fact_auth_qrcode' => '',
'2_fact_auth_secret' => '시크릿',
'abbr_day' => '',
'abbr_hour' => '',
@ -412,6 +414,7 @@ URL: [url]',
'docs_in_reception_no_access' => '',
'docs_in_revision_disabled' => '',
'docs_in_revision_no_access' => '',
'docs_with_link_to_itself' => '',
'docs_with_missing_revision_date' => '',
'document' => '문서',
'documentcontent' => '',
@ -566,6 +569,8 @@ URL: [url]',
'download_header_document_name' => '',
'download_header_document_no' => '',
'download_header_filename' => '',
'download_header_folder_name' => '',
'download_header_folder_no' => '',
'download_header_internal_version' => '',
'download_header_reviewer' => '',
'download_header_review_comment' => '',
@ -696,6 +701,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' => '',
@ -977,6 +984,7 @@ URL: [url]',
'linked_to_this_version' => '',
'link_alt_updatedocument' => '최대 업로드 크기보다 큰 파일을 업로드하려는 경우, 대체 업로드 페이지를 <a href="%s">upload page</a> 사용하십시오.',
'link_document' => '',
'link_to' => '',
'link_to_version' => '',
'list_access_rights' => '모든 접근 권한 나열',
'list_contains_no_access_docs' => '',
@ -1150,6 +1158,7 @@ URL [url]',
'no_groups' => '그룹이 없음',
'no_group_members' => '그룹 회원 이 없습니다.',
'no_linked_files' => '연결되지 않은 파일',
'no_mimetype' => '',
'no_previous_versions' => '다른 버전을 찾을 수 없습니다',
'no_receipt_needed' => '접수가 필요하지 않습니다',
'no_review_needed' => '검토중인 자료가 없습니다.',
@ -1164,6 +1173,9 @@ URL [url]',
'no_workflows' => '',
'no_workflow_available' => '사용 가능한 워크 플로우 없습니다.',
'number_count' => '',
'n_of_m_approved' => '',
'n_of_m_reviewed' => '',
'n_of_m_revised' => '',
'objectcheck' => '폴더 / 문서 확인',
'objects_without_attribute' => '',
'object_check_critical' => '치명적 오류',
@ -1205,6 +1217,7 @@ URL [url]',
'password_forgotten_title' => '비밀번호 전송',
'password_mismatch_error' => '',
'password_mismatch_error_title' => '',
'password_never_expires' => '',
'password_repeat' => '암호 반복',
'password_send' => '비밀번호 전송',
'password_send_text' => '로그인 및 이메일이 기존 사용자와 일치하는 경우 새 암호가 지정된 이메일 주소로 전송됩니다. 당신이 잠시후 이메일을 수신하지 못했으면 반드시 로그인 및 이메일 모두가 올바른지 확인하고 프로세스를 다시 시작 하세요.',
@ -1232,6 +1245,7 @@ URL [url]',
'preview_txt' => '',
'previous_state' => '이전 상태',
'previous_versions' => '이전 버전',
'problematic_filename' => '',
'process' => '',
'process_without_user_group' => '',
'pt_BR' => '포르투갈어 (BR)',
@ -1295,11 +1309,14 @@ URL: [url]',
'removed_workflow_email_body_html' => '',
'removed_workflow_email_subject' => '[sitename] : [name] - 문서 버전에서 제거 된 워크플로우',
'removeFolderFromDropFolder' => '',
'removeFolderFromDropFolder_desc' => '',
'remove_approval_log' => '',
'remove_from_clipboard' => '',
'remove_marked_files' => '마크 파일을 제거',
'remove_review_log' => '',
'remove_task' => '',
'reorder' => '',
'reorder_documents_in_folder' => '',
'repaired' => '복구',
'repairing_objects' => '문서 및 폴더 복구',
'replace_content_email_body' => '',
@ -1494,6 +1511,7 @@ URL : [url]',
'select_category' => '범주를 선택합니다',
'select_created' => '',
'select_documents_for_process' => '',
'select_folder' => '',
'select_group' => '',
'select_groups' => '그룹을 선택합니다',
'select_grp_approvers' => '그룹 승인을 선택합니다',
@ -1541,7 +1559,9 @@ URL : [url]',
'service_name' => '',
'sessions' => '',
'setDateFromFile' => '',
'setDateFromFile_desc' => '',
'setDateFromFolder' => '',
'setDateFromFolder_desc' => '',
'settings' => '설정',
'settings_activate_module' => '모듈 활성화',
'settings_activate_php_extension' => 'PHP 확장 활성화',
@ -1636,9 +1656,15 @@ URL : [url]',
'settings_defaultSearchMethod_desc' => '기본 검색 설정',
'settings_defaultSearchMethod_valdatabase' => '기본 검색 방법 설정',
'settings_defaultSearchMethod_valfulltext' => '기본 검색 방법 설정',
'settings_defaultThumbnailClick' => '',
'settings_defaultThumbnailClick_desc' => '',
'settings_defaultThumbnailClick_valdownload' => '',
'settings_defaultThumbnailClick_valviewonline' => '',
'settings_delete_install_folder' => 'SeedDMS을 사용하려면 구성 디렉토리의 파일 ENABLE_INSTALL_TOOL을 삭제해야합니다',
'settings_disableChangePassword' => '',
'settings_disableChangePassword_desc' => '',
'settings_disableReceiptComment' => '',
'settings_disableReceiptComment_desc' => '',
'settings_disableSelfEdit' => '자체 수정 불가',
'settings_disableSelfEdit_desc' => '확인시 사용자가 자신의 프로필을 편집 할 수 없음',
'settings_disable_install' => 'ENABLE_INSTALL_TOOL 삭제',
@ -1704,6 +1730,8 @@ URL : [url]',
'settings_enableLargeFileUpload_desc' => '설정하면, 브라우저가 설정 한 파일 크기 제한없이 jumploader라는 파일 업로드 자바 애플릿을 통해 사용할 수 있습니다. 또한 한 번에 여러 파일을 업로드 할 수 있습니다.',
'settings_enableLoginByEmail' => '',
'settings_enableLoginByEmail_desc' => '',
'settings_enableMemcached' => '',
'settings_enableMemcached_desc' => '',
'settings_enableMenuTasks' => '메뉴의 작업 목록 허용',
'settings_enableMenuTasks_desc' => '사용자의 모든 작업이 포함되어있는 메뉴 항목을 활성/비활성 합니다. 이것은 검토, 승인등이 필요한 문서를 포함 합니다',
'settings_enableMenuTransmittals' => '',
@ -1763,6 +1791,8 @@ URL : [url]',
'settings_encryptionKey' => '암호화 키',
'settings_encryptionKey_desc' => '이 문자열은 CSRF 공격을 방지하기 위해 formular에 숨겨진 필드로 추가되는 고유 식별자를 만드는 데 사용된다.',
'settings_error' => '오류',
'settings_excludeFoldersDashboard' => '',
'settings_excludeFoldersDashboard_desc' => '',
'settings_expandFolderTree' => '폴더 트리 확장',
'settings_expandFolderTree_desc' => '폴더 트리 확장',
'settings_expandFolderTree_val0' => '숨겨진 Tree로 시작',
@ -1821,6 +1851,8 @@ URL : [url]',
'settings_logFileEnable_desc' => '로그 파일 활성 / 비활성화',
'settings_logFileMaxLevel' => '',
'settings_logFileMaxLevel_desc' => '',
'settings_logFileRestApiMaxLevel' => '',
'settings_logFileRestApiMaxLevel_desc' => '',
'settings_logFileRotation' => '로그 파일 회전',
'settings_logFileRotation_desc' => '로그 파일 회전',
'settings_loginFailure' => '로그인 실패',
@ -2018,6 +2050,7 @@ URL : [url]',
'sign_out' => '로그 아웃',
'sign_out_user' => '사용자가 로그 아웃',
'site_brand' => '',
'skip_default_export_cols' => '',
'sk_SK' => '슬로바키아어',
'sort_by_date' => '',
'sort_by_expiration_date' => '',
@ -2088,6 +2121,7 @@ URL : [url]',
'splash_move_document' => '문서 옮겨짐',
'splash_move_folder' => '폴더 옮겨짐',
'splash_notinherit_access' => '',
'splash_orig_filename_changed' => '',
'splash_receipt_update_success' => '',
'splash_removed_from_clipboard' => '클립 보드에서 제거',
'splash_rm_attribute' => '속성 제거',
@ -2147,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

@ -23,9 +23,11 @@
$text = array(
'2_factor_auth' => 'ການກວດສອບແບບ 2 ປັດໃຈ',
'2_factor_auth_code' => '',
'2_factor_auth_info' => 'ລະບົບນີ້ໄຊ້ການກວດສອບແບບ 02 ປັດໃຈ. ເຈົ້າຈະຕ້ອງມີ Google Authenticator ໃນໂທລະສັບມືຖືຂອງທ່ານ. ດ້ານລຸ່ມແມ່ນມີ QR Codes ສອງແບບ ທາງດ້ານຂວາຈະມີຄວາມເປັນສ່ວນຕົວຂອງເຈົ້າ, ສ່ວນດ້ານຊ້າຍຂອງເຈົ້າແມ່ນຈະສາມາດຕັ້ງຄ່າຄວາມເປັນສ່ວນຕົວໄຫມ່. ຖ້າເຈົ້າຕັ້ງຄ່າຄວາມເປັນສ່ວນຕົວໄຫມ່ຮຽບຮ້ອຍ ແລ້ວນັ້ນໃຫ້ແນ່ໃຈວ່າໄດ້ສະແກນອີກຄັ້ງດ້ວຍ Google Authenticator',
'2_fact_auth_current_secret' => '',
'2_fact_auth_new_secret' => '',
'2_fact_auth_qrcode' => '',
'2_fact_auth_secret' => 'ຄວາມລັບ',
'abbr_day' => '',
'abbr_hour' => '',
@ -407,6 +409,7 @@ URL: [url]',
'docs_in_reception_no_access' => 'ເອກະສານທີ່ໄດ້ຮັບແມ່ນບໍ່ສາມາດເຂົ້າເບີ່ງໄດ້',
'docs_in_revision_disabled' => '',
'docs_in_revision_no_access' => 'ເອກະສານທີ້ແກ້ໄຂໂດຍບໍ່ຕ້ອງເຂົ້າໄຊ້ງານ',
'docs_with_link_to_itself' => '',
'docs_with_missing_revision_date' => '',
'document' => 'ຟື້ນທີ່ວ່າງໃນດິສ',
'documentcontent' => 'ເນື້ອຫາເອກະສານ',
@ -563,6 +566,8 @@ URL: [url]',
'download_header_document_name' => '',
'download_header_document_no' => '',
'download_header_filename' => '',
'download_header_folder_name' => '',
'download_header_folder_no' => '',
'download_header_internal_version' => '',
'download_header_reviewer' => '',
'download_header_review_comment' => '',
@ -693,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' => '',
@ -974,6 +981,7 @@ URL: [url]',
'linked_to_this_version' => 'ເຊື່ອມໂຍງກັບເວີຊັນນີ້ແລ້ວ',
'link_alt_updatedocument' => 'ຖ້າເຈົ້າຕ້ອງການອັບໂຫລດໄຟລທີ່ໄຫ່ຍກວ່າຂະໜາດອັບໂຫລດສູງສຸດໃນປັດຈຸບັນກະລຸນາໄຊ້ <a href="%s"> ອັບໂຫລດຢູ່ຫ້າເຟສ </a>',
'link_document' => '',
'link_to' => '',
'link_to_version' => 'ແນບໄປພ້ອມກັບເວີຊັນ',
'list_access_rights' => 'ສະແດງສິດທິການເຂົ້າເຖິງທັງໝົດ ...',
'list_contains_no_access_docs' => 'ລິດລາຍການປະກອບດ້ວຍເອກະສານເພີ່ມເຕີມທີ່ເຈົ້າບໍ່ສາມາດເຂົ້າເຖິງໄດ້ ແລະບໍ່ສະແດງ',
@ -1147,6 +1155,7 @@ URL: [url]',
'no_groups' => 'ບໍ່ມີກຸ່ມ',
'no_group_members' => 'ກຸ່ມນີ້ຍັງບໍ່ມີສະມາຊິກ',
'no_linked_files' => 'ບໍ່ມີໄຟລທີ່ເຊື່ອມໂຍງ',
'no_mimetype' => '',
'no_previous_versions' => 'ບໍ່ພົບເວີຊັນອື່ນ',
'no_receipt_needed' => 'ປະຈຸບັນນີ້ບໍ່ມີເອກະສານທີ່ຈະຕ້ອງຢືນຢັນກ່ຽວກັບການຮັບສິນຄ້າ',
'no_review_needed' => 'ບໍ່ມີເອກະສານທີຍັງຄ້າງທີລໍຖ້າກວດຄືນ',
@ -1161,6 +1170,9 @@ URL: [url]',
'no_workflows' => '',
'no_workflow_available' => 'ບໍ່ມີເວີກໂຟລທີ່ພ້ອມໄຊ້ງານ',
'number_count' => '',
'n_of_m_approved' => '',
'n_of_m_reviewed' => '',
'n_of_m_revised' => '',
'objectcheck' => 'ການກວດສອບໂຟລເດີ / ເອກະສານ',
'objects_without_attribute' => '',
'object_check_critical' => 'ຂໍ້ຜິດພາດທີ່ສຳຄັນ',
@ -1210,6 +1222,7 @@ URL: [url]',
'password_forgotten_title' => 'ສົ່ງລະຫັດຜ່ານ',
'password_mismatch_error' => '',
'password_mismatch_error_title' => '',
'password_never_expires' => '',
'password_repeat' => 'ຢຳລະຫັດຜ່ານ',
'password_send' => 'ສົ່ງລະຫັດຜ່ານ',
'password_send_text' => 'ລະຫັດຜ່ານໄຫມ່ຂອງເຈົ້າໄດ້ຖືກສົ່ງໄປຕາມທີ່ຢູ່ຂອງອີເມວ, ຖ້າການເຂົ້າລະບົບ ແລະອີເມວກົງກັບຜູ້ໄຊ້ທີມີຢູ່, ຖ້າເຈົ້າບໍ່ໄດ້ຮັບອີເມວພາຍຫຼັງນາທີທັດໄປ, ກວດຄືນໃຫ້ແນ່ໃຈວ່າທັ່ງການ Login ເຂົ້າສູ້ລະບົບ ແລະອີເມວວ່າຖືກຕ້ອງແລະເລີ່ມຕົ້ນດຳເນີນການໄຫມ່ອີກຄັ້ງ',
@ -1237,6 +1250,7 @@ URL: [url]',
'preview_txt' => '',
'previous_state' => 'ສະຖານະກ່ອນຫນ້າ',
'previous_versions' => 'ເວີຊັນກ່ອນໜ້າ',
'problematic_filename' => '',
'process' => 'ຂະບວນການ',
'process_without_user_group' => 'ຂະບວນການຍັງບໍ່ມີຜູ້ໄຊ້/ ກຸ່ມ',
'pt_BR' => 'ໂປຕຸເກດ(BR)',
@ -1311,11 +1325,14 @@ URL: [url]',
'removed_workflow_email_body_html' => '',
'removed_workflow_email_subject' => '[sitename]:[name] - ຍ້າຍການເຮັດວຽກ (ເວີກໂຟລ) ອອກຈາກເວີຊັ້ນຂອງເອກະສານ',
'removeFolderFromDropFolder' => 'ຍ້າຍໂຟລເດີຫຼັງຈາກນຳຂໍ້ມູນເຂົ້າ',
'removeFolderFromDropFolder_desc' => '',
'remove_approval_log' => '',
'remove_from_clipboard' => '',
'remove_marked_files' => 'ລົບໄຟລທີມີເຄື່ອງໝາຍໄວ້',
'remove_review_log' => '',
'remove_task' => '',
'reorder' => '',
'reorder_documents_in_folder' => '',
'repaired' => 'ການສ້ອມແປງ',
'repairing_objects' => 'ການສ້ອມແປງເອກະສານແລະໂຟລເດີ',
'replace_content_email_body' => '',
@ -1515,6 +1532,7 @@ URL: [url]',
'select_category' => 'ຄິກເພື່ອເລືອກປະເພດ',
'select_created' => '',
'select_documents_for_process' => '',
'select_folder' => '',
'select_group' => '',
'select_groups' => 'ຄິກເລືອກກຸ່ມ',
'select_grp_approvers' => 'ຄິກເພືອເລືອກຜູ້ອະນຸມັດກຸ່ມ',
@ -1567,7 +1585,9 @@ URL: [url]',
'service_name' => '',
'sessions' => 'ຜູ້ໄຊ້ອອນລາຍ',
'setDateFromFile' => '',
'setDateFromFile_desc' => '',
'setDateFromFolder' => '',
'setDateFromFolder_desc' => '',
'settings' => 'ການຕັ້ງຄ່າ',
'settings_activate_module' => 'ເປີດໄຊ້ງານໂມດູນ',
'settings_activate_php_extension' => 'ຂະຫຍາຍພື້ນທີການໄຊ້ງານຂອງ PHP',
@ -1662,9 +1682,15 @@ URL: [url]',
'settings_defaultSearchMethod_desc' => 'ວິທີການຄົ້ນຫາແບບເລີ້ມຕົ້ນ ເມືອການຄົ້ນຫາເລີ່ມຈາກແບບຟອມການຄົ້ນຫາໃນເມນູ',
'settings_defaultSearchMethod_valdatabase' => 'ຖານຂໍ້ມູນ',
'settings_defaultSearchMethod_valfulltext' => 'ຂໍ້ຄວາມເຕັມ',
'settings_defaultThumbnailClick' => '',
'settings_defaultThumbnailClick_desc' => '',
'settings_defaultThumbnailClick_valdownload' => '',
'settings_defaultThumbnailClick_valviewonline' => '',
'settings_delete_install_folder' => 'ໃນການໄຊ້ SeedDMS, ເຈົ້າຈະຕ້ອງລົບໄຟລ ເປີດໄຊ້ງານ_ຕິດຕັ້ງ_ເຄື່ອງມືໃນການບໍລິຫານ ການກຳນົດຄ່າ',
'settings_disableChangePassword' => '',
'settings_disableChangePassword_desc' => '',
'settings_disableReceiptComment' => '',
'settings_disableReceiptComment_desc' => '',
'settings_disableSelfEdit' => 'ແກ້ໄຂການປິດໄຊ້ງານດ້ວຍຕົວເອງ',
'settings_disableSelfEdit_desc' => 'ກວດຄືນເບິ່ງວ່າຍ້ອນຫຍັງຜູ້ນຳໄຊ້ຈື່ງບໍ່ສາມາດແກ້ໄຂໂປລໄຟລຂອງພວກເຂົາໄດ້',
'settings_disable_install' => 'ຖ້າເປັນໄປໄດ້ ລົບໄຟລເປີດໄຊ້ງານ-ຕິດຕັ້ງ-ເຄື່ອງມື ຖ້າເປັນໄປໄດ້',
@ -1730,6 +1756,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' => '',
@ -1789,6 +1817,8 @@ URL: [url]',
'settings_encryptionKey' => 'ກະແຈການເຂົ້າລະຫັດລັບ',
'settings_encryptionKey_desc' => 'ສະຕິງນີ້ໄຊ້ສຳຫຼັບສ້າງຕົວ',
'settings_error' => 'ຄວາມຜິດພາດ',
'settings_excludeFoldersDashboard' => '',
'settings_excludeFoldersDashboard_desc' => '',
'settings_expandFolderTree' => 'ຂະຫຍານທີໂຟລເດີ',
'settings_expandFolderTree_desc' => 'ຂະຫຍານທີໂຟລເດີ',
'settings_expandFolderTree_val0' => 'ການເລີ່ມຕົ້ນດ້ວຍສາຂາຍ່ອຍ',
@ -1847,6 +1877,8 @@ URL: [url]',
'settings_logFileEnable_desc' => 'ເປີດ/ປິດ ໃຊ້ວຽກໄຟລບັນທຶກ',
'settings_logFileMaxLevel' => '',
'settings_logFileMaxLevel_desc' => '',
'settings_logFileRestApiMaxLevel' => '',
'settings_logFileRestApiMaxLevel_desc' => '',
'settings_logFileRotation' => 'ການໝຸນແຟ້ມບັນທືກ',
'settings_logFileRotation_desc' => 'ການໝຸນແຟ້ມບັນທືກ',
'settings_loginFailure' => 'ຄວາມລົ້ມເຫຼວໃນການເຂົາເຖີງ',
@ -2044,6 +2076,7 @@ URL: [url]',
'sign_out' => 'ອອກຈາກລະບົບ',
'sign_out_user' => 'ອອກຈາກລະບົບຜູ້ໄຊ້',
'site_brand' => '',
'skip_default_export_cols' => '',
'sk_SK' => 'ສະໂລວາເກຍ',
'sort_by_date' => '',
'sort_by_expiration_date' => '',
@ -2114,6 +2147,7 @@ URL: [url]',
'splash_move_document' => 'ຍ້າຍເອກະສານແລ້ວ',
'splash_move_folder' => 'ຍ້າຍໂຟລເດີແລ້ວ',
'splash_notinherit_access' => '',
'splash_orig_filename_changed' => '',
'splash_receipt_update_success' => 'ການເພີ່ມຂໍ້ມູນໄດ້ສຳເລັດແລ້ວ',
'splash_removed_from_clipboard' => 'ຍ້າຍອອກຈາກຄິບບອດ',
'splash_rm_attribute' => 'ນຳແອັດທີບິວອອກແລ້ວ',
@ -2173,6 +2207,7 @@ URL: [url]',
'status_revision_sleeping' => 'ຢູ່ລະຫວ່າງດຳເນີນການ',
'status_revisor_removed' => 'ແກ້ໄຂຄຳອະທິບາຍອອກຈາກລາຍການ',
'status_unknown' => 'ບໍ່ຮູ້',
'storage' => '',
'storage_size' => 'ຂະໜາດພື້ນທີ່ເກັບຂໍ້ມູນ',
'subfolder_duplicate_name' => '',
'submit_2_fact_auth' => 'ເກັບຄວາມລັບໄວ້',

View File

@ -23,9 +23,11 @@
$text = array(
'2_factor_auth' => '2-trinns autentisering',
'2_factor_auth_code' => '',
'2_factor_auth_info' => 'Dette systemet håndhever 2-faktor autentisering. Du trenger Google Authenticator på mobiltelefonen din. Nedenfor ser du to QR-koder. Den rette er din nåværende hemmelighet. På venstre side kan du angi en ny hemmelighet. Hvis du angir en ny hemmelighet, må du huske å skanne den på nytt med Google Authenticator.',
'2_fact_auth_current_secret' => '',
'2_fact_auth_new_secret' => '',
'2_fact_auth_qrcode' => '',
'2_fact_auth_secret' => 'Hemmelig',
'abbr_day' => '',
'abbr_hour' => '',
@ -409,6 +411,7 @@ URL: [url]',
'docs_in_reception_no_access' => 'Dokumenter med mottak uten tilgang fra mottaker',
'docs_in_revision_disabled' => '',
'docs_in_revision_no_access' => 'Dokumenter i revisjon uten tilgang fra korrekturleser',
'docs_with_link_to_itself' => '',
'docs_with_missing_revision_date' => '',
'document' => 'Dokument',
'documentcontent' => 'Dokumentinnehold',
@ -577,6 +580,8 @@ URL: [url]',
'download_header_document_name' => '',
'download_header_document_no' => '',
'download_header_filename' => '',
'download_header_folder_name' => '',
'download_header_folder_no' => '',
'download_header_internal_version' => '',
'download_header_reviewer' => '',
'download_header_review_comment' => '',
@ -707,6 +712,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 ...',
@ -995,6 +1002,7 @@ URL: [url]',
'linked_to_this_version' => 'Link til denne versjonen',
'link_alt_updatedocument' => 'Om du vil laste opp filer som er større enn den aktuella størsta tillate størrelsen, bruk den alternative metoden for å laste opp filer <a href="%s">Alternativ opplasting</a>.',
'link_document' => 'Koblingsdokument',
'link_to' => '',
'link_to_version' => 'Vedlegg til versjonen',
'list_access_rights' => 'Liste over alle rettigheter...',
'list_contains_no_access_docs' => 'Listen inneholder flere dokumenter du ikke har tilgang til og ikke vises.',
@ -1168,6 +1176,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.',
@ -1182,6 +1191,9 @@ URL: [url]',
'no_workflows' => '',
'no_workflow_available' => 'Ingen arbeidsflyt tilgjengelig',
'number_count' => '',
'n_of_m_approved' => '',
'n_of_m_reviewed' => '',
'n_of_m_revised' => '',
'objectcheck' => 'Mappe/dokument sjekk',
'objects_without_attribute' => '',
'object_check_critical' => 'Kritisk feil!!',
@ -1225,6 +1237,7 @@ Om du fortsatt har problemer med innloggingen, kontakt admin.',
'password_forgotten_title' => 'Passord sendt',
'password_mismatch_error' => '',
'password_mismatch_error_title' => '',
'password_never_expires' => '',
'password_repeat' => 'Gjenta passord',
'password_send' => 'Passord sendt',
'password_send_text' => 'Ditt nye passord er blitt sendt til den oppgitte e-postadressen, hvis påloggingen og e-posten samsvarer med en eksisterende bruker. Hvis du ikke mottar en e-post i løpet av de neste minuttene, må du sørge for at både innlogging og e-post er riktig og start prosessen på nytt.',
@ -1252,6 +1265,7 @@ Om du fortsatt har problemer med innloggingen, kontakt admin.',
'preview_txt' => '',
'previous_state' => 'Tidligere status',
'previous_versions' => 'Tidligere versjoner',
'problematic_filename' => '',
'process' => 'Prosess',
'process_without_user_group' => 'Prosesser uten brukere/grupper',
'pt_BR' => 'Portugisisk (BR)',
@ -1326,11 +1340,14 @@ URL: [url]',
'removed_workflow_email_body_html' => '',
'removed_workflow_email_subject' => '[sitename]: [name] - Fjernet arbeidsflyt fra dokumentversjonen',
'removeFolderFromDropFolder' => 'Fjern mappe etter import',
'removeFolderFromDropFolder_desc' => '',
'remove_approval_log' => '',
'remove_from_clipboard' => '',
'remove_marked_files' => 'Fjern markerte filer',
'remove_review_log' => '',
'remove_task' => '',
'reorder' => '',
'reorder_documents_in_folder' => '',
'repaired' => 'reparert',
'repairing_objects' => 'Reparere dokumenter og mapper.',
'replace_content_email_body' => '',
@ -1530,6 +1547,7 @@ URL: [url]',
'select_category' => 'Klikk for å velge kategori',
'select_created' => '',
'select_documents_for_process' => '',
'select_folder' => '',
'select_group' => 'Klikk for å velge gruppe',
'select_groups' => 'Klikk for å velge grupper',
'select_grp_approvers' => 'Klikk for å velge gruppe godkjennere',
@ -1580,7 +1598,9 @@ Bruker: [username]
'service_name' => '',
'sessions' => 'Brukere innlogget',
'setDateFromFile' => 'Overta dato fra importert fil',
'setDateFromFile_desc' => '',
'setDateFromFolder' => 'Overta dato fra importert mappe',
'setDateFromFolder_desc' => '',
'settings' => 'Innstillinger',
'settings_activate_module' => 'Aktiver modul',
'settings_activate_php_extension' => 'Aktiver PHP-utvidelse',
@ -1675,9 +1695,15 @@ Bruker: [username]
'settings_defaultSearchMethod_desc' => 'Standard søkemetode, når et søk startes av søkeskjemaet i hovedmenyen.',
'settings_defaultSearchMethod_valdatabase' => 'database',
'settings_defaultSearchMethod_valfulltext' => 'fulltekst',
'settings_defaultThumbnailClick' => '',
'settings_defaultThumbnailClick_desc' => '',
'settings_defaultThumbnailClick_valdownload' => '',
'settings_defaultThumbnailClick_valviewonline' => '',
'settings_delete_install_folder' => 'For å bruke SeedDMS, må du slette filen ENABLE_INSTALL_TOOL i konfigurasjonsmappen',
'settings_disableChangePassword' => '',
'settings_disableChangePassword_desc' => '',
'settings_disableReceiptComment' => '',
'settings_disableReceiptComment_desc' => '',
'settings_disableSelfEdit' => 'Deaktiver selvredigering',
'settings_disableSelfEdit_desc' => 'Hvis merket kan brukeren ikke redigere sin egen profil',
'settings_disable_install' => 'Slett filen ENABLE_INSTALL_TOOL hvis mulig',
@ -1743,6 +1769,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' => '',
@ -1802,6 +1830,8 @@ Bruker: [username]
'settings_encryptionKey' => 'Krypteringsnøkkel',
'settings_encryptionKey_desc' => 'Denne strengen brukes til å lage en unik identifikator som blir lagt til som et skjult felt til et skjema for å forhindre CSRF-angrep.',
'settings_error' => 'Feil',
'settings_excludeFoldersDashboard' => '',
'settings_excludeFoldersDashboard_desc' => '',
'settings_expandFolderTree' => 'Utvid mappetreet',
'settings_expandFolderTree_desc' => 'Utvid mappetreet',
'settings_expandFolderTree_val0' => 'starte med treet gjemt',
@ -1860,6 +1890,8 @@ Bruker: [username]
'settings_logFileEnable_desc' => 'Aktiver/deaktiver loggfil',
'settings_logFileMaxLevel' => '',
'settings_logFileMaxLevel_desc' => '',
'settings_logFileRestApiMaxLevel' => '',
'settings_logFileRestApiMaxLevel_desc' => '',
'settings_logFileRotation' => 'Loggfil rotasjon',
'settings_logFileRotation_desc' => 'Loggfil rotasjon',
'settings_loginFailure' => 'Påloggingsfeil',
@ -2057,6 +2089,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' => '',
@ -2127,6 +2160,7 @@ Bruker: [username]
'splash_move_document' => 'Dokumentet flyttet',
'splash_move_folder' => 'Mappen flyttet',
'splash_notinherit_access' => 'Adgangsrettigheter arves ikke lenger',
'splash_orig_filename_changed' => '',
'splash_receipt_update_success' => 'Mottak ble lagt til',
'splash_removed_from_clipboard' => 'Fjernet fra utklippstavlen',
'splash_rm_attribute' => 'Egenskap fjernet',
@ -2186,6 +2220,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

@ -23,9 +23,11 @@
$text = array(
'2_factor_auth' => '2-factor-authenticatie',
'2_factor_auth_code' => '',
'2_factor_auth_info' => 'Dit systeem werkt met 2-factor-authenticatie. U heeft de Google Authenticator nodig op uw mobiele telfoon. Hieronder staan 2 QR-codes. De rechter is uw huidige geheime code. Met de linker kunt u een nieuwe geheime code instellen. Denk erom de nieuwe code opnieuw te scannen met Googke Authenticator.',
'2_fact_auth_current_secret' => '',
'2_fact_auth_new_secret' => '',
'2_fact_auth_qrcode' => '',
'2_fact_auth_secret' => 'Toegangscode 2-factor-authenticatie',
'abbr_day' => 'd',
'abbr_hour' => 'u',
@ -402,6 +404,7 @@ URL: [url]',
'docs_in_reception_no_access' => 'Documenten zonder toegang ontvanger',
'docs_in_revision_disabled' => '',
'docs_in_revision_no_access' => 'Documenten in revisie zonder toegang ontvanger',
'docs_with_link_to_itself' => '',
'docs_with_missing_revision_date' => '',
'document' => 'Document',
'documentcontent' => 'Documentinhoud',
@ -570,6 +573,8 @@ URL: [url]',
'download_header_document_name' => 'Naam document',
'download_header_document_no' => 'Document nr.',
'download_header_filename' => 'Filenaam',
'download_header_folder_name' => '',
'download_header_folder_no' => '',
'download_header_internal_version' => 'Interne versie',
'download_header_reviewer' => 'Beoordelaar',
'download_header_review_comment' => 'Commentaar bij beoordeling',
@ -700,6 +705,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 ...',
@ -988,6 +995,7 @@ URL: [url]',
'linked_to_this_version' => 'Bijlage bij deze versie',
'link_alt_updatedocument' => 'Als u bestanden wilt uploaden groter dan het huidige maximum, gebruik aub de alternatieve <a href="%s">upload pagina</a>.',
'link_document' => 'Link naar document',
'link_to' => '',
'link_to_version' => 'Bijlage(n) bij versie',
'list_access_rights' => 'Toegangsrechten',
'list_contains_no_access_docs' => 'Geen toegankelijke documenten',
@ -1160,6 +1168,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.',
@ -1174,6 +1183,9 @@ URL: [url]',
'no_workflows' => '',
'no_workflow_available' => 'Geen workflow beschikbaar',
'number_count' => '',
'n_of_m_approved' => '',
'n_of_m_reviewed' => '',
'n_of_m_revised' => '',
'objectcheck' => 'Mappen en documenten controleren',
'objects_without_attribute' => '',
'object_check_critical' => 'Ernstige fouten',
@ -1223,6 +1235,7 @@ Als u nog steed problemen ondervind met het inloggen, neem aub contact op met uw
'password_forgotten_title' => 'Wachtwoord verzonden',
'password_mismatch_error' => '',
'password_mismatch_error_title' => '',
'password_never_expires' => '',
'password_repeat' => 'Herhaal wachtwoord',
'password_send' => 'Wachtwoord verzonden',
'password_send_text' => 'Als het opgegeven gebruikersnaam en emailadres overeenkomen met een bestaande gebruiker is er een nieuw wachtwoord verzonden naar het opgegeven emailadres.
@ -1251,6 +1264,7 @@ Mocht u de komende minuten geen email ontvangen, probeer het dan nogmaals en con
'preview_txt' => '',
'previous_state' => 'Vorige staat',
'previous_versions' => 'Vorige versies',
'problematic_filename' => '',
'process' => 'Proces',
'process_without_user_group' => 'Proces zonder gebruikersgroep',
'pt_BR' => 'Portugees (BR)',
@ -1324,11 +1338,14 @@ URL: [url]',
'removed_workflow_email_body_html' => '',
'removed_workflow_email_subject' => '[sitename]: [name] - Workflow verwijderd van document versie',
'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' => '',
'reorder' => '',
'reorder_documents_in_folder' => '',
'repaired' => 'Gerepareerd',
'repairing_objects' => 'Documenten en mappen repareren.',
'replace_content_email_body' => '',
@ -1527,6 +1544,7 @@ URL: [url]',
'select_category' => 'klik om categorie te selecteren',
'select_created' => '',
'select_documents_for_process' => '',
'select_folder' => '',
'select_group' => 'Selecteer groep',
'select_groups' => 'Klik om groep te selecteren',
'select_grp_approvers' => 'Klik om beoordelaars te selecteren',
@ -1579,7 +1597,9 @@ Name: [username]
'service_name' => '',
'sessions' => 'sessies',
'setDateFromFile' => 'Gebruik de datum van de geïmporteerde file',
'setDateFromFile_desc' => '',
'setDateFromFolder' => 'Gebruik de datum van de geïmporteerde map',
'setDateFromFolder_desc' => '',
'settings' => 'Instellingen',
'settings_activate_module' => 'Activeer module',
'settings_activate_php_extension' => 'Activeer PHP uitbreiding',
@ -1674,9 +1694,15 @@ Name: [username]
'settings_defaultSearchMethod_desc' => 'Default zoekmethode = op documentnaam / fulltext-search',
'settings_defaultSearchMethod_valdatabase' => 'Default zoekmethode (Documentnaam)',
'settings_defaultSearchMethod_valfulltext' => 'Default fulltext-zoeken',
'settings_defaultThumbnailClick' => '',
'settings_defaultThumbnailClick_desc' => '',
'settings_defaultThumbnailClick_valdownload' => '',
'settings_defaultThumbnailClick_valviewonline' => '',
'settings_delete_install_folder' => 'Om SeedDMS te kunnen gebruiken moet het bestand ENABLE_INSTALL_TOOL uit de configuratiemap verwijderd worden.',
'settings_disableChangePassword' => '',
'settings_disableChangePassword_desc' => '',
'settings_disableReceiptComment' => '',
'settings_disableReceiptComment_desc' => '',
'settings_disableSelfEdit' => 'Uitschakelen Eigenprofiel wijzigen',
'settings_disableSelfEdit_desc' => 'Indien aangevinkt kan de gebruiker zijn eigen profiel niet wijzigen.',
'settings_disable_install' => 'Verwijder het bestand ENABLE_INSTALL_TOOL indien mogelijk',
@ -1742,6 +1768,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' => '',
@ -1801,6 +1829,8 @@ Name: [username]
'settings_encryptionKey' => 'Sleutel voor encryptie',
'settings_encryptionKey_desc' => 'Deze string wordt gebruikt om een unieke identificatie als onzichtbaar veld aan een formulier toe te voegen om CSRF aanvallen tegen te gaan.',
'settings_error' => 'Fout',
'settings_excludeFoldersDashboard' => '',
'settings_excludeFoldersDashboard_desc' => '',
'settings_expandFolderTree' => 'Uitvouwen mappenstructuur',
'settings_expandFolderTree_desc' => 'Uitvouwen mappenstructuur',
'settings_expandFolderTree_val0' => 'begin met verborgen structuur',
@ -1859,6 +1889,8 @@ Name: [username]
'settings_logFileEnable_desc' => 'Inschakelen/uitschakelen logbestand',
'settings_logFileMaxLevel' => '',
'settings_logFileMaxLevel_desc' => '',
'settings_logFileRestApiMaxLevel' => '',
'settings_logFileRestApiMaxLevel_desc' => '',
'settings_logFileRotation' => 'Rotering Logbestand',
'settings_logFileRotation_desc' => 'Rotering Logbestand',
'settings_loginFailure' => 'Login-fout',
@ -2056,6 +2088,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',
@ -2126,6 +2159,7 @@ Name: [username]
'splash_move_document' => 'Document verplaatst',
'splash_move_folder' => 'Map verplaatst',
'splash_notinherit_access' => 'Toegangsrechten worden niet meer overgeërfd',
'splash_orig_filename_changed' => '',
'splash_receipt_update_success' => 'Ontvangst succesvol toegevoegd',
'splash_removed_from_clipboard' => 'Verwijderd van het klembord',
'splash_rm_attribute' => 'Attribuut verwijderd',
@ -2185,6 +2219,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',

File diff suppressed because it is too large Load Diff

View File

@ -23,9 +23,11 @@
$text = array(
'2_factor_auth' => 'Autenticação de dois fatores',
'2_factor_auth_code' => '',
'2_factor_auth_info' => 'Este sistema impõe a autenticação de 2 fatores. Você precisará do Google Authenticator no seu celular. Abaixo você vê dois códigos QR. O caminho certo é o seu atual segredo. À esquerda, você pode definir um novo segredo. Se você definir um novo segredo, verifique novamente com o Google Authenticator.',
'2_fact_auth_current_secret' => '',
'2_fact_auth_new_secret' => '',
'2_fact_auth_qrcode' => '',
'2_fact_auth_secret' => 'Segredo',
'abbr_day' => '',
'abbr_hour' => '',
@ -409,6 +411,7 @@ URL: [url]',
'docs_in_reception_no_access' => 'Documentos com recepção sem acesso pelo destinatário',
'docs_in_revision_disabled' => '',
'docs_in_revision_no_access' => 'Documentos em revisão sem acesso por revisor',
'docs_with_link_to_itself' => '',
'docs_with_missing_revision_date' => '',
'document' => 'Documento',
'documentcontent' => 'Conteúdo do Documento',
@ -577,6 +580,8 @@ URL: [url]',
'download_header_document_name' => '',
'download_header_document_no' => '',
'download_header_filename' => '',
'download_header_folder_name' => '',
'download_header_folder_no' => '',
'download_header_internal_version' => '',
'download_header_reviewer' => '',
'download_header_review_comment' => '',
@ -707,6 +712,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',
@ -995,6 +1002,7 @@ URL: [url]',
'linked_to_this_version' => 'Vinculado a esta versão',
'link_alt_updatedocument' => 'Se você gostaria de fazer envio de arquivos maiores que o tamanho permitido, por favor use a página alternativa de <a href="%s">envio</a>.',
'link_document' => 'documento de ligação',
'link_to' => '',
'link_to_version' => 'Anexar à versão',
'list_access_rights' => 'Listar todos os direitos de acesso...',
'list_contains_no_access_docs' => 'A lista contém mais documentos aos quais você não tem acesso e não são exibidos.',
@ -1167,6 +1175,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.',
@ -1181,6 +1190,9 @@ URL: [url]',
'no_workflows' => '',
'no_workflow_available' => 'Nenhum fluxo de trabalho disponível',
'number_count' => '',
'n_of_m_approved' => '',
'n_of_m_reviewed' => '',
'n_of_m_revised' => '',
'objectcheck' => 'Verificação da Pasta/Documento',
'objects_without_attribute' => '',
'object_check_critical' => 'Erros críticos',
@ -1230,6 +1242,7 @@ Se você ainda tiver problemas para fazer o login, por favor, contate o administ
'password_forgotten_title' => 'Senha enviada',
'password_mismatch_error' => '',
'password_mismatch_error_title' => '',
'password_never_expires' => '',
'password_repeat' => 'Repetir a senha',
'password_send' => 'Senha enviada',
'password_send_text' => 'Sua nova senha foi enviada para o endereço de e-mail indicado, se o login e e-mail corresponde a um usuário existe. Se você não receber um e-mail nos próximos minutos, então certifique se login e e-mail estão corretos e reinicie o processo novamente.',
@ -1257,6 +1270,7 @@ Se você ainda tiver problemas para fazer o login, por favor, contate o administ
'preview_txt' => '',
'previous_state' => 'Estado anterior',
'previous_versions' => 'Versões anteriores',
'problematic_filename' => '',
'process' => 'Processos',
'process_without_user_group' => 'Processos sem usuário/grupo',
'pt_BR' => 'Português (BR)',
@ -1331,11 +1345,14 @@ URL: [url]',
'removed_workflow_email_body_html' => '',
'removed_workflow_email_subject' => '[sitename]: [name] - Fluxo de trabalho removido da versão do documento',
'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' => '',
'reorder' => '',
'reorder_documents_in_folder' => '',
'repaired' => 'reparado',
'repairing_objects' => 'Reparando documentos e pastas',
'replace_content_email_body' => '',
@ -1534,6 +1551,7 @@ URL: [url]',
'select_category' => 'Clique para selecionar a categoria',
'select_created' => '',
'select_documents_for_process' => '',
'select_folder' => '',
'select_group' => 'Selecione o grupo',
'select_groups' => 'Clique para selecionar os grupos',
'select_grp_approvers' => 'Clique para selecionar o grupo aprovador',
@ -1586,7 +1604,9 @@ Nome: [username]
'service_name' => '',
'sessions' => 'Online',
'setDateFromFile' => 'Assumir a data do arquivo importado',
'setDateFromFile_desc' => '',
'setDateFromFolder' => 'Assumir a data da pasta importada',
'setDateFromFolder_desc' => '',
'settings' => 'Configurações',
'settings_activate_module' => 'Ativar módulo',
'settings_activate_php_extension' => 'Ativar extensão PHP',
@ -1681,9 +1701,15 @@ Nome: [username]
'settings_defaultSearchMethod_desc' => 'Método de pesquisa padrão, quando uma pesquisa é iniciada pelo formulário de pesquisa no menu principal.',
'settings_defaultSearchMethod_valdatabase' => 'Banco de Dados',
'settings_defaultSearchMethod_valfulltext' => 'texto completo',
'settings_defaultThumbnailClick' => '',
'settings_defaultThumbnailClick_desc' => '',
'settings_defaultThumbnailClick_valdownload' => '',
'settings_defaultThumbnailClick_valviewonline' => '',
'settings_delete_install_folder' => 'Para utilizar Sistema GED, você deve excluir o arquivo ENABLE_INSTALL_TOOL do diretório de configuração',
'settings_disableChangePassword' => '',
'settings_disableChangePassword_desc' => '',
'settings_disableReceiptComment' => '',
'settings_disableReceiptComment_desc' => '',
'settings_disableSelfEdit' => 'Desativar Auto Editar',
'settings_disableSelfEdit_desc' => 'Se selecionado o usuário não poderá editar seu próprio perfil',
'settings_disable_install' => 'Elimine o arquivo ENABLE_INSTALL_TOOL se possível',
@ -1749,6 +1775,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' => '',
@ -1808,6 +1836,8 @@ Nome: [username]
'settings_encryptionKey' => 'Chave de criptografia',
'settings_encryptionKey_desc' => 'Esta cadeia é usada para a criação de um identificador único a ser adicionado como um campo oculto para formular, a fim de evitar ataques CSRF.',
'settings_error' => 'Erro',
'settings_excludeFoldersDashboard' => '',
'settings_excludeFoldersDashboard_desc' => '',
'settings_expandFolderTree' => 'Expandir a árvore de pastas',
'settings_expandFolderTree_desc' => 'Expanda a Árvore de Pastas',
'settings_expandFolderTree_val0' => 'começar com a árvore escondida',
@ -1866,6 +1896,8 @@ Nome: [username]
'settings_logFileEnable_desc' => 'Ativar/Dasativar arquivo log',
'settings_logFileMaxLevel' => '',
'settings_logFileMaxLevel_desc' => '',
'settings_logFileRestApiMaxLevel' => '',
'settings_logFileRestApiMaxLevel_desc' => '',
'settings_logFileRotation' => 'Rotação do Arquivo Log',
'settings_logFileRotation_desc' => 'A rotação de arquivo de log',
'settings_loginFailure' => 'Falha de login',
@ -2063,6 +2095,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' => '',
@ -2133,6 +2166,7 @@ Nome: [username]
'splash_move_document' => 'Documento movido',
'splash_move_folder' => 'Pasta movida',
'splash_notinherit_access' => 'Direitos de acesso não herdados',
'splash_orig_filename_changed' => '',
'splash_receipt_update_success' => 'Recepção adicionada com sucesso',
'splash_removed_from_clipboard' => 'Remover da área de transferência',
'splash_rm_attribute' => 'Atributo removido',
@ -2192,6 +2226,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

@ -23,9 +23,11 @@
$text = array(
'2_factor_auth' => '',
'2_factor_auth_code' => '',
'2_factor_auth_info' => '',
'2_fact_auth_current_secret' => '',
'2_fact_auth_new_secret' => '',
'2_fact_auth_qrcode' => '',
'2_fact_auth_secret' => '',
'abbr_day' => '',
'abbr_hour' => '',
@ -409,6 +411,7 @@ URL: [url]',
'docs_in_reception_no_access' => '',
'docs_in_revision_disabled' => '',
'docs_in_revision_no_access' => '',
'docs_with_link_to_itself' => '',
'docs_with_missing_revision_date' => '',
'document' => 'Document',
'documentcontent' => 'Continut Document',
@ -565,6 +568,8 @@ URL: [url]',
'download_header_document_name' => '',
'download_header_document_no' => '',
'download_header_filename' => '',
'download_header_folder_name' => '',
'download_header_folder_no' => '',
'download_header_internal_version' => '',
'download_header_reviewer' => '',
'download_header_review_comment' => '',
@ -695,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' => 'Se incarca extensiile',
@ -976,6 +983,7 @@ URL: [url]',
'linked_to_this_version' => '',
'link_alt_updatedocument' => 'Dacă doriți să încărcați fișiere mai mari decât dimensiunea maximă curentă de încărcare, vă rugăm să folosiți alternativa <a href="%s">pagină de încărcare</a>.',
'link_document' => '',
'link_to' => '',
'link_to_version' => '',
'list_access_rights' => 'Listeaza toate drepturile de acces',
'list_contains_no_access_docs' => '',
@ -1149,6 +1157,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.',
@ -1163,6 +1172,9 @@ URL: [url]',
'no_workflows' => '',
'no_workflow_available' => 'Nici un workflow disponibil',
'number_count' => '',
'n_of_m_approved' => '',
'n_of_m_reviewed' => '',
'n_of_m_revised' => '',
'objectcheck' => 'Verificare folder/document',
'objects_without_attribute' => '',
'object_check_critical' => '',
@ -1212,6 +1224,7 @@ Dacă aveți în continuare probleme la autentificare, vă rugăm să contactaț
'password_forgotten_title' => 'Parola a fost trimisă',
'password_mismatch_error' => '',
'password_mismatch_error_title' => '',
'password_never_expires' => '',
'password_repeat' => 'Repetați parola',
'password_send' => 'Parola a fost trimisă',
'password_send_text' => 'Noua dumneavoastră parolă a fost trimisă la adresa de e-mail furnizată, în cazul în care campurile de login și email se potrivesc cu un utilizator existent. Dacă nu primiți un e-mail în următoarele minute, asigurați-vă că atât campul de login cât și email sunt corecte și incercați din nou procesul.',
@ -1239,6 +1252,7 @@ Dacă aveți în continuare probleme la autentificare, vă rugăm să contactaț
'preview_txt' => '',
'previous_state' => 'Stare precedentă',
'previous_versions' => 'Versiune precedentă',
'problematic_filename' => '',
'process' => '',
'process_without_user_group' => '',
'pt_BR' => 'Portugheză (BR)',
@ -1302,11 +1316,14 @@ URL: [url]',
'removed_workflow_email_body_html' => '',
'removed_workflow_email_subject' => '[sitename]: [name] - Workflow eliminat din versiunea documentului',
'removeFolderFromDropFolder' => '',
'removeFolderFromDropFolder_desc' => '',
'remove_approval_log' => '',
'remove_from_clipboard' => '',
'remove_marked_files' => 'Eliminați fișierele marcate',
'remove_review_log' => '',
'remove_task' => '',
'reorder' => '',
'reorder_documents_in_folder' => '',
'repaired' => 'reparat',
'repairing_objects' => 'Reparare documente și foldere.',
'replace_content_email_body' => '',
@ -1501,6 +1518,7 @@ URL: [url]',
'select_category' => 'Click pentru a selecta categoria',
'select_created' => '',
'select_documents_for_process' => '',
'select_folder' => '',
'select_group' => 'Selecteaza grupul',
'select_groups' => 'Click pentru a selecta grupuri',
'select_grp_approvers' => 'Click pentru a selecta grupul de aprobatori',
@ -1548,7 +1566,9 @@ URL: [url]',
'service_name' => '',
'sessions' => '',
'setDateFromFile' => '',
'setDateFromFile_desc' => '',
'setDateFromFolder' => '',
'setDateFromFolder_desc' => '',
'settings' => 'Setări',
'settings_activate_module' => 'Activați modulul',
'settings_activate_php_extension' => 'Activați extensia PHP',
@ -1643,9 +1663,15 @@ URL: [url]',
'settings_defaultSearchMethod_desc' => 'Metoda de cautare implicita cand cautarea a fost initiata prin formularul de cautare din meniul principal',
'settings_defaultSearchMethod_valdatabase' => 'baza de date',
'settings_defaultSearchMethod_valfulltext' => 'Text complet',
'settings_defaultThumbnailClick' => '',
'settings_defaultThumbnailClick_desc' => '',
'settings_defaultThumbnailClick_valdownload' => '',
'settings_defaultThumbnailClick_valviewonline' => '',
'settings_delete_install_folder' => 'Pentru a utiliza SeedDMS, trebuie să ștergeți fișierul ENABLE_INSTALL_TOOL din directorul de configurare',
'settings_disableChangePassword' => '',
'settings_disableChangePassword_desc' => '',
'settings_disableReceiptComment' => '',
'settings_disableReceiptComment_desc' => '',
'settings_disableSelfEdit' => 'Dezactivați Auto Editarea',
'settings_disableSelfEdit_desc' => 'Dacă este bifată, utilizatorul nu va putea să-și editeze profilul',
'settings_disable_install' => 'Ștergeți fișierul ENABLE_INSTALL_TOOL dacă este posibil',
@ -1711,6 +1737,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' => '',
@ -1770,6 +1798,8 @@ URL: [url]',
'settings_encryptionKey' => 'Cheia de criptare',
'settings_encryptionKey_desc' => 'Acest șir este utilizat pentru crearea unui identificator unic ce este adăugat ca un câmp ascuns pentru un formular, cu scopul de a preveni atacurile CSRF.',
'settings_error' => 'Eroare',
'settings_excludeFoldersDashboard' => '',
'settings_excludeFoldersDashboard_desc' => '',
'settings_expandFolderTree' => 'Expandați ierarhia Folderului',
'settings_expandFolderTree_desc' => 'Expandați ierarhia Folderului',
'settings_expandFolderTree_val0' => 'începeți cu ierarhia ascunsă',
@ -1828,6 +1858,8 @@ URL: [url]',
'settings_logFileEnable_desc' => 'Activare/dezactivare log fișier',
'settings_logFileMaxLevel' => '',
'settings_logFileMaxLevel_desc' => '',
'settings_logFileRestApiMaxLevel' => '',
'settings_logFileRestApiMaxLevel_desc' => '',
'settings_logFileRotation' => 'Rotire Log fișiser',
'settings_logFileRotation_desc' => 'Rotirea Log-ului fișierului',
'settings_loginFailure' => 'Eșec Autentificare',
@ -2025,6 +2057,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' => '',
@ -2095,6 +2128,7 @@ URL: [url]',
'splash_move_document' => '',
'splash_move_folder' => '',
'splash_notinherit_access' => '',
'splash_orig_filename_changed' => '',
'splash_receipt_update_success' => '',
'splash_removed_from_clipboard' => 'Eliminat din clipboard',
'splash_rm_attribute' => 'Atribut eliminat',
@ -2154,6 +2188,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

@ -23,9 +23,11 @@
$text = array(
'2_factor_auth' => 'Двухфакторная аутентификация',
'2_factor_auth_code' => '',
'2_factor_auth_info' => 'Использовать усиленную проверку подлинности',
'2_fact_auth_current_secret' => '',
'2_fact_auth_new_secret' => '',
'2_fact_auth_qrcode' => '',
'2_fact_auth_secret' => 'Кдюч двухфакторной аутентификации',
'abbr_day' => '',
'abbr_hour' => '',
@ -409,6 +411,7 @@ URL: [url]',
'docs_in_reception_no_access' => '',
'docs_in_revision_disabled' => '',
'docs_in_revision_no_access' => '',
'docs_with_link_to_itself' => '',
'docs_with_missing_revision_date' => '',
'document' => 'Документ',
'documentcontent' => 'Содержание документа',
@ -565,6 +568,8 @@ URL: [url]',
'download_header_document_name' => '',
'download_header_document_no' => '',
'download_header_filename' => '',
'download_header_folder_name' => '',
'download_header_folder_no' => '',
'download_header_internal_version' => '',
'download_header_reviewer' => '',
'download_header_review_comment' => '',
@ -695,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' => 'Загрузка расширений',
@ -976,6 +983,7 @@ URL: [url]',
'linked_to_this_version' => '',
'link_alt_updatedocument' => 'Для загрузки файлов, превышающих ограничение размера, используйте <a href="%s">другой способ</a>.',
'link_document' => '',
'link_to' => '',
'link_to_version' => '',
'list_access_rights' => 'Показать все права доступа',
'list_contains_no_access_docs' => '',
@ -1148,6 +1156,7 @@ URL: [url]',
'no_groups' => 'Нет групп',
'no_group_members' => 'Группа не имеет членов',
'no_linked_files' => 'Нет связанных документов',
'no_mimetype' => '',
'no_previous_versions' => 'Нет предыдущих версий',
'no_receipt_needed' => 'Нет документов, нуждающихся в подтверждении получения',
'no_review_needed' => 'Рецензия не требуется',
@ -1162,6 +1171,9 @@ URL: [url]',
'no_workflows' => '',
'no_workflow_available' => 'Отсутствует процесс',
'number_count' => '',
'n_of_m_approved' => '',
'n_of_m_reviewed' => '',
'n_of_m_revised' => '',
'objectcheck' => 'Проверка целостности',
'objects_without_attribute' => '',
'object_check_critical' => '',
@ -1209,6 +1221,7 @@ URL: [url]',
'password_forgotten_title' => 'Пароль выслан',
'password_mismatch_error' => '',
'password_mismatch_error_title' => '',
'password_never_expires' => '',
'password_repeat' => 'Повторите пароль',
'password_send' => 'Пароль выслан',
'password_send_text' => 'Пароль отправлен',
@ -1236,6 +1249,7 @@ URL: [url]',
'preview_txt' => '',
'previous_state' => 'Предыдущее состояние',
'previous_versions' => 'Предыдущие версии',
'problematic_filename' => '',
'process' => '',
'process_without_user_group' => '',
'pt_BR' => 'Portugese (BR)',
@ -1304,11 +1318,14 @@ URL: [url]',
'removed_workflow_email_body_html' => '',
'removed_workflow_email_subject' => '[sitename]: удалён процесс из версии документа «[name]»',
'removeFolderFromDropFolder' => '',
'removeFolderFromDropFolder_desc' => '',
'remove_approval_log' => '',
'remove_from_clipboard' => '',
'remove_marked_files' => 'Удалить выбранные файлы',
'remove_review_log' => '',
'remove_task' => '',
'reorder' => '',
'reorder_documents_in_folder' => '',
'repaired' => 'исправлено',
'repairing_objects' => 'Восстановление каталогов и документов',
'replace_content_email_body' => '',
@ -1508,6 +1525,7 @@ URL: [url]',
'select_category' => 'Выберите категорию',
'select_created' => '',
'select_documents_for_process' => '',
'select_folder' => '',
'select_group' => 'Выберите группу',
'select_groups' => 'Выберите группы',
'select_grp_approvers' => 'Выберите утверждающую группу',
@ -1555,7 +1573,9 @@ URL: [url]',
'service_name' => '',
'sessions' => '',
'setDateFromFile' => '',
'setDateFromFile_desc' => '',
'setDateFromFolder' => '',
'setDateFromFolder_desc' => '',
'settings' => 'Настройки',
'settings_activate_module' => 'Активировать модуль',
'settings_activate_php_extension' => 'Активировать расширение PHP',
@ -1650,9 +1670,15 @@ URL: [url]',
'settings_defaultSearchMethod_desc' => 'Метод поиска по умолчанию, когда поиск начинается с поисковой формы главного меню.',
'settings_defaultSearchMethod_valdatabase' => 'база данных',
'settings_defaultSearchMethod_valfulltext' => 'полнотекстовый',
'settings_defaultThumbnailClick' => '',
'settings_defaultThumbnailClick_desc' => '',
'settings_defaultThumbnailClick_valdownload' => '',
'settings_defaultThumbnailClick_valviewonline' => '',
'settings_delete_install_folder' => 'Удалите ENABLE_INSTALL_TOOL в каталоге конфигурации, для того что бы начать использовать систему',
'settings_disableChangePassword' => '',
'settings_disableChangePassword_desc' => '',
'settings_disableReceiptComment' => '',
'settings_disableReceiptComment_desc' => '',
'settings_disableSelfEdit' => 'Отключить собственное редактирование',
'settings_disableSelfEdit_desc' => 'Если включено, пользователи не смогут изменять информацию о себе.',
'settings_disable_install' => 'Удалить ENABLE_INSTALL_TOOL, если возможно',
@ -1718,6 +1744,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' => '',
@ -1777,6 +1805,8 @@ URL: [url]',
'settings_encryptionKey' => 'Ключ шифрования',
'settings_encryptionKey_desc' => 'Строка используется для создания уникального идентификатора, добавляемого как скрытые поля к формулярам, для предотвращения CSRF-атак.',
'settings_error' => 'Ошибка',
'settings_excludeFoldersDashboard' => '',
'settings_excludeFoldersDashboard_desc' => '',
'settings_expandFolderTree' => 'Разворачивать дерево каталогов',
'settings_expandFolderTree_desc' => 'Разворачивать дерево каталогов.',
'settings_expandFolderTree_val0' => 'Начинать со свёрнутого дерева',
@ -1835,6 +1865,8 @@ URL: [url]',
'settings_logFileEnable_desc' => 'Включить/отключить журнал.',
'settings_logFileMaxLevel' => '',
'settings_logFileMaxLevel_desc' => '',
'settings_logFileRestApiMaxLevel' => '',
'settings_logFileRestApiMaxLevel_desc' => '',
'settings_logFileRotation' => 'Ротация журнала',
'settings_logFileRotation_desc' => 'Ротация файла журнала.',
'settings_loginFailure' => 'Не удалось войти',
@ -2032,6 +2064,7 @@ URL: [url]',
'sign_out' => 'Выйти',
'sign_out_user' => 'Пользовательский выход',
'site_brand' => '',
'skip_default_export_cols' => '',
'sk_SK' => 'Slovak',
'sort_by_date' => 'Сортировка по дате',
'sort_by_expiration_date' => '',
@ -2102,6 +2135,7 @@ URL: [url]',
'splash_move_document' => '',
'splash_move_folder' => '',
'splash_notinherit_access' => '',
'splash_orig_filename_changed' => '',
'splash_receipt_update_success' => '',
'splash_removed_from_clipboard' => 'Удалён из буфера обмена',
'splash_rm_attribute' => 'Атрибут удалён',
@ -2161,6 +2195,7 @@ URL: [url]',
'status_revision_sleeping' => 'В ожидании рецензии',
'status_revisor_removed' => 'Ревизор удален из списка',
'status_unknown' => 'Неизвестный',
'storage' => '',
'storage_size' => 'Размер хранилища',
'subfolder_duplicate_name' => '',
'submit_2_fact_auth' => '',

View File

@ -23,9 +23,11 @@
$text = array(
'2_factor_auth' => '2-faktorové overovanie',
'2_factor_auth_code' => '',
'2_factor_auth_info' => 'This system enforces 2 factor authentication. You will need the Google Authenticator on your mobile phone. Below you see two QR codes. The right one is your current secret. On the left you can set a new secret. If you set a new secret make sure to rescan it with Google Authenticator.',
'2_fact_auth_current_secret' => '',
'2_fact_auth_new_secret' => '',
'2_fact_auth_qrcode' => '',
'2_fact_auth_secret' => 'Tajný',
'abbr_day' => '',
'abbr_hour' => '',
@ -409,6 +411,7 @@ URL: [url]',
'docs_in_reception_no_access' => 'Documents with reception without access by recipient',
'docs_in_revision_disabled' => '',
'docs_in_revision_no_access' => 'Documents in revision without access by revisor',
'docs_with_link_to_itself' => '',
'docs_with_missing_revision_date' => '',
'document' => 'Dokument',
'documentcontent' => 'Obsah dokumentu',
@ -577,6 +580,8 @@ URL: [url]',
'download_header_document_name' => '',
'download_header_document_no' => '',
'download_header_filename' => '',
'download_header_folder_name' => '',
'download_header_folder_no' => '',
'download_header_internal_version' => '',
'download_header_reviewer' => '',
'download_header_review_comment' => '',
@ -707,6 +712,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 ...',
@ -995,6 +1002,7 @@ URL: [url]',
'linked_to_this_version' => 'Prepojené s touto verziou',
'link_alt_updatedocument' => 'If you would like to upload files bigger than the current maximum upload size, please use the alternative <a href="%s">upload page</a>.',
'link_document' => '',
'link_to' => '',
'link_to_version' => 'Pripojiť k verzii',
'list_access_rights' => 'Zobraziť všetky prístupové práva',
'list_contains_no_access_docs' => 'Zoznam obsahuje viac dokumentov, ku ktorým nemáte prístup a nie sú zobrazené.',
@ -1168,6 +1176,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.',
@ -1182,6 +1191,9 @@ URL: [url]',
'no_workflows' => '',
'no_workflow_available' => 'Nie je k dispozícii žiaden workflow',
'number_count' => '',
'n_of_m_approved' => '',
'n_of_m_reviewed' => '',
'n_of_m_revised' => '',
'objectcheck' => 'Kontrola Adresárov/Dokumentov',
'objects_without_attribute' => '',
'object_check_critical' => 'Kritické chyby',
@ -1231,6 +1243,7 @@ If you have still problems to login, then please contact your administrator.',
'password_forgotten_title' => 'Heslo bolo odoslané',
'password_mismatch_error' => '',
'password_mismatch_error_title' => '',
'password_never_expires' => '',
'password_repeat' => 'Zopakovať heslo',
'password_send' => 'Odoslať heslo',
'password_send_text' => 'Your new password has been send to the given email address, if the login and email matches an existing user. If you do not receive an email within the next minutes, then make sure both login and email are correct and restart the process again.',
@ -1258,6 +1271,7 @@ If you have still problems to login, then please contact your administrator.',
'preview_txt' => '',
'previous_state' => 'Predchádzajúci stav',
'previous_versions' => 'Predošlé verzie',
'problematic_filename' => '',
'process' => 'Proces',
'process_without_user_group' => 'Procesy bez používateľa/skupiny',
'pt_BR' => 'Portugalčina',
@ -1332,11 +1346,14 @@ URL: [url]',
'removed_workflow_email_body_html' => '',
'removed_workflow_email_subject' => '[sitename]: [name] - Removed workflow from document version',
'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' => '',
'reorder' => '',
'reorder_documents_in_folder' => '',
'repaired' => 'opravené',
'repairing_objects' => 'Oprava dokumentov a zložiek.',
'replace_content_email_body' => '',
@ -1536,6 +1553,7 @@ URL: [url]',
'select_category' => 'Vyber kategóriu',
'select_created' => '',
'select_documents_for_process' => '',
'select_folder' => '',
'select_group' => 'Vybrať skupinu',
'select_groups' => 'Kliknutím vyberte skupiny',
'select_grp_approvers' => 'Kliknutím vyberte schvaľovateľa skupiny',
@ -1588,7 +1606,9 @@ Meno: [username]
'service_name' => '',
'sessions' => 'Používatelia online',
'setDateFromFile' => 'Prebrať dátumy z importovaných súborov',
'setDateFromFile_desc' => '',
'setDateFromFolder' => 'Prebrať dátumy z importovaných zložiek',
'setDateFromFolder_desc' => '',
'settings' => 'Nastavenia',
'settings_activate_module' => 'Aktivovať modul',
'settings_activate_php_extension' => 'Aktivovať PHP rozšírenie',
@ -1683,9 +1703,15 @@ Meno: [username]
'settings_defaultSearchMethod_desc' => 'Default search method, when a search is started by the search form in the main menu.',
'settings_defaultSearchMethod_valdatabase' => 'databáza',
'settings_defaultSearchMethod_valfulltext' => 'fulltext',
'settings_defaultThumbnailClick' => '',
'settings_defaultThumbnailClick_desc' => '',
'settings_defaultThumbnailClick_valdownload' => '',
'settings_defaultThumbnailClick_valviewonline' => '',
'settings_delete_install_folder' => 'In order to use SeedDMS, you must delete the file ENABLE_INSTALL_TOOL in the configuration directory',
'settings_disableChangePassword' => '',
'settings_disableChangePassword_desc' => '',
'settings_disableReceiptComment' => '',
'settings_disableReceiptComment_desc' => '',
'settings_disableSelfEdit' => 'Disable Self Edit',
'settings_disableSelfEdit_desc' => 'If checked user cannot edit his own profile',
'settings_disable_install' => 'Delete file ENABLE_INSTALL_TOOL if possible',
@ -1751,6 +1777,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' => '',
@ -1810,6 +1838,8 @@ Meno: [username]
'settings_encryptionKey' => 'Encryption key',
'settings_encryptionKey_desc' => 'This string is used for creating a unique identifier being added as a hidden field to a form in order to prevent CSRF attacks.',
'settings_error' => 'Chyba',
'settings_excludeFoldersDashboard' => '',
'settings_excludeFoldersDashboard_desc' => '',
'settings_expandFolderTree' => 'Rozbaliť',
'settings_expandFolderTree_desc' => 'Rozbaliť strom zložiek',
'settings_expandFolderTree_val0' => 'začať so skrytou stromovou štruktúrou',
@ -1868,6 +1898,8 @@ Meno: [username]
'settings_logFileEnable_desc' => 'Povoliť/zakázať log súbor',
'settings_logFileMaxLevel' => '',
'settings_logFileMaxLevel_desc' => '',
'settings_logFileRestApiMaxLevel' => '',
'settings_logFileRestApiMaxLevel_desc' => '',
'settings_logFileRotation' => 'Log File Rotation',
'settings_logFileRotation_desc' => 'The log file rotation',
'settings_loginFailure' => 'Prihlásenie zlyhalo',
@ -2065,6 +2097,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' => '',
@ -2135,6 +2168,7 @@ Meno: [username]
'splash_move_document' => 'Dokument bol presunutý',
'splash_move_folder' => 'Zložka bola presunutá',
'splash_notinherit_access' => 'Prístupové práva sa už nededia',
'splash_orig_filename_changed' => '',
'splash_receipt_update_success' => 'Reception added successfully',
'splash_removed_from_clipboard' => 'Odstránené zo schránky',
'splash_rm_attribute' => 'Atribút bol odstránený',
@ -2194,6 +2228,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

@ -23,10 +23,12 @@
$text = array(
'2_factor_auth' => '2-faktors autentisering',
'2_factor_auth_code' => '',
'2_factor_auth_info' => 'För stöd av 2-faktors autentisering behöver du Google Authenticator installerad din mobiltelefon.
Nedan ser du två QR-koder. Den högra är din hemliga kod och till vänster kan du skapa en ny kod. Om du skapar en ny kod måste du skanna den nytt med Google Authenticator.',
'2_fact_auth_current_secret' => '',
'2_fact_auth_new_secret' => '',
'2_fact_auth_qrcode' => '',
'2_fact_auth_secret' => 'Hemlighet',
'abbr_day' => '',
'abbr_hour' => '',
@ -410,6 +412,7 @@ URL: [url]',
'docs_in_reception_no_access' => 'Dokument med angiven mottagare som saknar behörighet till dokumentet',
'docs_in_revision_disabled' => '',
'docs_in_revision_no_access' => 'Dokument med angiven granskare som saknar behörighet till dokumentet',
'docs_with_link_to_itself' => '',
'docs_with_missing_revision_date' => '',
'document' => 'Dokument',
'documentcontent' => 'Dokumentinnehåll',
@ -571,6 +574,8 @@ URL: [url]',
'download_header_document_name' => '',
'download_header_document_no' => '',
'download_header_filename' => '',
'download_header_folder_name' => '',
'download_header_folder_no' => '',
'download_header_internal_version' => '',
'download_header_reviewer' => '',
'download_header_review_comment' => '',
@ -701,6 +706,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' => '',
@ -982,6 +989,7 @@ URL: [url]',
'linked_to_this_version' => 'Länkad till denna version',
'link_alt_updatedocument' => 'Om du vill ladda upp filer som är större än den aktuella största tillåtna storleken, använd dig av den alternativa metoden att ladda upp filer <a href="%s">Alternativ uppladdning</a>.',
'link_document' => '',
'link_to' => '',
'link_to_version' => 'Kopppla till version',
'list_access_rights' => 'Lista alla rättigheter...',
'list_contains_no_access_docs' => 'Listan innehåller fler dokument som inte visas då du saknar rättigheter till dessa.',
@ -1155,6 +1163,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.',
@ -1169,6 +1178,9 @@ URL: [url]',
'no_workflows' => '',
'no_workflow_available' => 'Arbetsflöde saknas',
'number_count' => '',
'n_of_m_approved' => '',
'n_of_m_reviewed' => '',
'n_of_m_revised' => '',
'objectcheck' => 'Kontroll av Katalog/Dokument',
'objects_without_attribute' => '',
'object_check_critical' => 'Kritiska fel',
@ -1215,6 +1227,7 @@ Om du fortfarande har problem med inloggningen, kontakta administratören.',
'password_forgotten_title' => 'Glömt lösenord',
'password_mismatch_error' => '',
'password_mismatch_error_title' => '',
'password_never_expires' => '',
'password_repeat' => 'Upprepa lösenord',
'password_send' => 'Lösenord skickat',
'password_send_text' => 'Ditt nya lösenord har skickats till den angivna e-postadressen, förutsatt att användarnamn och e-postadressen matchar en existerande användare. Om du inte får ett epost inom några minuter, kontrollera att användarnamn och e-postadressen är rätt. Begär ett nytt lösenord igen.',
@ -1242,6 +1255,7 @@ Om du fortfarande har problem med inloggningen, kontakta administratören.',
'preview_txt' => '',
'previous_state' => 'Föregående status',
'previous_versions' => 'Tidigare versioner',
'problematic_filename' => '',
'process' => 'Process',
'process_without_user_group' => 'Processer utan användare/grupp',
'pt_BR' => 'Portugisiska (BR)',
@ -1305,11 +1319,14 @@ URL: [url]',
'removed_workflow_email_body_html' => '',
'removed_workflow_email_subject' => '[sitename]: [name] - Arbetsflöde borttaget från dokumentversion',
'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' => '',
'reorder' => '',
'reorder_documents_in_folder' => '',
'repaired' => 'reparerat',
'repairing_objects' => 'Reparerar dokument och kataloger.',
'replace_content_email_body' => '',
@ -1509,6 +1526,7 @@ URL: [url]',
'select_category' => 'Klicka för att välja en kategori',
'select_created' => '',
'select_documents_for_process' => '',
'select_folder' => '',
'select_group' => 'Välj grupp',
'select_groups' => 'Välj grupper',
'select_grp_approvers' => 'Välj en grupp som ska godkänna',
@ -1561,7 +1579,9 @@ Kommentar: [comment]',
'service_name' => '',
'sessions' => 'Användare online',
'setDateFromFile' => '',
'setDateFromFile_desc' => '',
'setDateFromFolder' => '',
'setDateFromFolder_desc' => '',
'settings' => 'Inställningar',
'settings_activate_module' => 'Aktivera modul',
'settings_activate_php_extension' => 'Aktivera PHP-extension',
@ -1656,9 +1676,15 @@ Kommentar: [comment]',
'settings_defaultSearchMethod_desc' => 'Standard sökmetod, när en sökning startas i sökformuläret i huvudmenyn.',
'settings_defaultSearchMethod_valdatabase' => 'databas',
'settings_defaultSearchMethod_valfulltext' => 'fulltext',
'settings_defaultThumbnailClick' => '',
'settings_defaultThumbnailClick_desc' => '',
'settings_defaultThumbnailClick_valdownload' => '',
'settings_defaultThumbnailClick_valviewonline' => '',
'settings_delete_install_folder' => 'För att kunna använda LetoDMS måste du ta bort filen ENABLE_INSTALL_TOOL som finns i konfigurationsmappen.',
'settings_disableChangePassword' => '',
'settings_disableChangePassword_desc' => '',
'settings_disableReceiptComment' => '',
'settings_disableReceiptComment_desc' => '',
'settings_disableSelfEdit' => 'Inaktivera själveditering',
'settings_disableSelfEdit_desc' => 'Om ikryssad kan användare inte ändra sin egen profil.',
'settings_disable_install' => 'Ta bort filen ENABLE_INSTALL_TOOL, om det är möjligt.',
@ -1724,6 +1750,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' => '',
@ -1783,6 +1811,8 @@ Kommentar: [comment]',
'settings_encryptionKey' => 'Krypteringsnyckel',
'settings_encryptionKey_desc' => 'Denna sträng används för att generera en unik identifierare, som är inrymd som ett dolt fält i ett formulär. Det används för att förhindra CSRF-attacker.',
'settings_error' => 'Fel',
'settings_excludeFoldersDashboard' => '',
'settings_excludeFoldersDashboard_desc' => '',
'settings_expandFolderTree' => 'Expandera katalogträd',
'settings_expandFolderTree_desc' => 'Expandera katalogträd',
'settings_expandFolderTree_val0' => 'Börja med dolt träd',
@ -1841,6 +1871,8 @@ Kommentar: [comment]',
'settings_logFileEnable_desc' => 'Aktivera/Inaktivera loggfil',
'settings_logFileMaxLevel' => '',
'settings_logFileMaxLevel_desc' => '',
'settings_logFileRestApiMaxLevel' => '',
'settings_logFileRestApiMaxLevel_desc' => '',
'settings_logFileRotation' => 'Loggfils-rotation',
'settings_logFileRotation_desc' => 'Loggfils-rotation',
'settings_loginFailure' => 'Fel vid inloggning',
@ -2038,6 +2070,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' => '',
@ -2108,6 +2141,7 @@ Kommentar: [comment]',
'splash_move_document' => 'Dokumentet flyttat',
'splash_move_folder' => 'Katalogen flyttad',
'splash_notinherit_access' => '',
'splash_orig_filename_changed' => '',
'splash_receipt_update_success' => 'Meddelande tillagt',
'splash_removed_from_clipboard' => 'Borttaget från urklipp',
'splash_rm_attribute' => 'Attribut har tagits bort',
@ -2167,6 +2201,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

@ -23,9 +23,11 @@
$text = array(
'2_factor_auth' => 'İki faktörlü yetkilendirme',
'2_factor_auth_code' => '',
'2_factor_auth_info' => '',
'2_fact_auth_current_secret' => '',
'2_fact_auth_new_secret' => '',
'2_fact_auth_qrcode' => '',
'2_fact_auth_secret' => '',
'abbr_day' => '',
'abbr_hour' => '',
@ -404,6 +406,7 @@ URL: [url]',
'docs_in_reception_no_access' => '',
'docs_in_revision_disabled' => '',
'docs_in_revision_no_access' => '',
'docs_with_link_to_itself' => '',
'docs_with_missing_revision_date' => '',
'document' => 'Doküman',
'documentcontent' => 'Döküman İçeriği',
@ -559,6 +562,8 @@ URL: [url]',
'download_header_document_name' => '',
'download_header_document_no' => '',
'download_header_filename' => '',
'download_header_folder_name' => '',
'download_header_folder_no' => '',
'download_header_internal_version' => '',
'download_header_reviewer' => '',
'download_header_review_comment' => '',
@ -689,6 +694,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',
@ -968,6 +975,7 @@ URL: [url]',
'linked_to_this_version' => '',
'link_alt_updatedocument' => 'Mevcut maksimum yükleme boyutundan daha büyük dosya yüklemek istiyorsanız <a href="%s">alternatif yükleme sayfası için tıklayın</a>.',
'link_document' => '',
'link_to' => '',
'link_to_version' => '',
'list_access_rights' => 'Tüm erişim haklarini listele',
'list_contains_no_access_docs' => '',
@ -1141,6 +1149,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.',
@ -1155,6 +1164,9 @@ URL: [url]',
'no_workflows' => '',
'no_workflow_available' => 'Uygun iş akışı yok',
'number_count' => '',
'n_of_m_approved' => '',
'n_of_m_reviewed' => '',
'n_of_m_revised' => '',
'objectcheck' => 'Klasör/Doküman kontrol',
'objects_without_attribute' => '',
'object_check_critical' => '',
@ -1206,6 +1218,7 @@ Giriş yaparken halen sorun yaşıyorsanız lütfen sistem yöneticinizle görü
'password_forgotten_title' => 'Parola gönderildi',
'password_mismatch_error' => '',
'password_mismatch_error_title' => '',
'password_never_expires' => '',
'password_repeat' => 'Parolayı tekrar giriniz',
'password_send' => 'Parola gönderildi',
'password_send_text' => 'Kullanıcı adı ve e-posta adresiniz eşleştiyse yeni parolanız belirttiğiniz e-posta adresinize gönderilmiş olacaktır. Eğer birkaç dakika içerisinde e-posta adresinize mesaj gelmezse kullanıcı adı ve sisteme kayıtlı e-posta adresinizin doğru olduğundan emin olarak işlemi tekrarlayınız.',
@ -1233,6 +1246,7 @@ Giriş yaparken halen sorun yaşıyorsanız lütfen sistem yöneticinizle görü
'preview_txt' => '',
'previous_state' => 'Önceki durum',
'previous_versions' => 'Önceki versiyonlar',
'problematic_filename' => '',
'process' => 'İşlem',
'process_without_user_group' => '',
'pt_BR' => 'Portekizce',
@ -1296,11 +1310,14 @@ URL: [url]',
'removed_workflow_email_body_html' => '',
'removed_workflow_email_subject' => '[sitename]: [name] - Doküman versiyonundan iş akışı silindi',
'removeFolderFromDropFolder' => '',
'removeFolderFromDropFolder_desc' => '',
'remove_approval_log' => '',
'remove_from_clipboard' => '',
'remove_marked_files' => 'İşaretli dosyaları sil',
'remove_review_log' => '',
'remove_task' => '',
'reorder' => '',
'reorder_documents_in_folder' => '',
'repaired' => 'onarıldı',
'repairing_objects' => 'Doküman ve klasörler onarılıyor.',
'replace_content_email_body' => '',
@ -1478,6 +1495,7 @@ URL: [url]',
'select_category' => 'Kategori seçmek için tıklayın',
'select_created' => '',
'select_documents_for_process' => '',
'select_folder' => '',
'select_group' => 'Grup Seç',
'select_groups' => 'Grup seçmek için tıklayın',
'select_grp_approvers' => 'Grup onaylayıcı seçmek için tıklayın',
@ -1525,7 +1543,9 @@ URL: [url]',
'service_name' => '',
'sessions' => '',
'setDateFromFile' => '',
'setDateFromFile_desc' => '',
'setDateFromFolder' => '',
'setDateFromFolder_desc' => '',
'settings' => 'Ayarlar',
'settings_activate_module' => 'Modülü etkinleştir',
'settings_activate_php_extension' => 'PHP uzantısını etkinleştir',
@ -1620,9 +1640,15 @@ URL: [url]',
'settings_defaultSearchMethod_desc' => '',
'settings_defaultSearchMethod_valdatabase' => 'veritabanı',
'settings_defaultSearchMethod_valfulltext' => '',
'settings_defaultThumbnailClick' => '',
'settings_defaultThumbnailClick_desc' => '',
'settings_defaultThumbnailClick_valdownload' => '',
'settings_defaultThumbnailClick_valviewonline' => '',
'settings_delete_install_folder' => 'SeedDMS kullanabilmeniz için konfigürasyon (conf) dizini içindeki ENABLE_INSTALL_TOOL dosyasını silmelisiniz',
'settings_disableChangePassword' => '',
'settings_disableChangePassword_desc' => '',
'settings_disableReceiptComment' => '',
'settings_disableReceiptComment_desc' => '',
'settings_disableSelfEdit' => 'Kendi kendine Düzenlemeyi Kapat',
'settings_disableSelfEdit_desc' => 'Seçilirse kullanıcı kendi profil ayarlarını değiştiremez.',
'settings_disable_install' => 'ENABLE_INSTALL_TOOL dosyasını silmeyi dene',
@ -1688,6 +1714,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' => '',
@ -1747,6 +1775,8 @@ URL: [url]',
'settings_encryptionKey' => 'Şifreleme anahtarı',
'settings_encryptionKey_desc' => 'Bu string, CSRF ataklarını önlemek için eşsiz id olarak kaydedilir.',
'settings_error' => 'Hata',
'settings_excludeFoldersDashboard' => '',
'settings_excludeFoldersDashboard_desc' => '',
'settings_expandFolderTree' => 'Klasör Ağacını Genişlet',
'settings_expandFolderTree_desc' => 'Klasör Ağacını Genişlet',
'settings_expandFolderTree_val0' => 'ağaç yapısı gizli olarak başlat',
@ -1805,6 +1835,8 @@ URL: [url]',
'settings_logFileEnable_desc' => 'Log dosyasını etkinleştir/devredışı bırak',
'settings_logFileMaxLevel' => '',
'settings_logFileMaxLevel_desc' => '',
'settings_logFileRestApiMaxLevel' => '',
'settings_logFileRestApiMaxLevel_desc' => '',
'settings_logFileRotation' => 'Log Dosyası rotasyonu',
'settings_logFileRotation_desc' => 'Log dosyasını seçeceğiniz zaman dilimine göre ayrı ayrı kaydet',
'settings_loginFailure' => 'Hatalı giriş sayısı',
@ -2002,6 +2034,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' => '',
@ -2072,6 +2105,7 @@ URL: [url]',
'splash_move_document' => '',
'splash_move_folder' => '',
'splash_notinherit_access' => '',
'splash_orig_filename_changed' => '',
'splash_receipt_update_success' => '',
'splash_removed_from_clipboard' => 'Panodan silindi',
'splash_rm_attribute' => 'Nitelik silindi',
@ -2131,6 +2165,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

@ -23,9 +23,11 @@
$text = array(
'2_factor_auth' => '',
'2_factor_auth_code' => '',
'2_factor_auth_info' => '',
'2_fact_auth_current_secret' => '',
'2_fact_auth_new_secret' => '',
'2_fact_auth_qrcode' => '',
'2_fact_auth_secret' => '',
'abbr_day' => '',
'abbr_hour' => '',
@ -409,6 +411,7 @@ URL: [url]',
'docs_in_reception_no_access' => '',
'docs_in_revision_disabled' => '',
'docs_in_revision_no_access' => '',
'docs_with_link_to_itself' => '',
'docs_with_missing_revision_date' => '',
'document' => 'Документ',
'documentcontent' => '',
@ -564,6 +567,8 @@ URL: [url]',
'download_header_document_name' => '',
'download_header_document_no' => '',
'download_header_filename' => '',
'download_header_folder_name' => '',
'download_header_folder_no' => '',
'download_header_internal_version' => '',
'download_header_reviewer' => '',
'download_header_review_comment' => '',
@ -694,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' => '',
@ -975,6 +982,7 @@ URL: [url]',
'linked_to_this_version' => '',
'link_alt_updatedocument' => 'Для завантаження файлів, які перевищують обмеження розміру, використовуйте <a href="%s">інший метод</a>.',
'link_document' => '',
'link_to' => '',
'link_to_version' => '',
'list_access_rights' => 'Повний список прав...',
'list_contains_no_access_docs' => '',
@ -1147,6 +1155,7 @@ URL: [url]',
'no_groups' => 'Немає груп',
'no_group_members' => 'Група не має членів',
'no_linked_files' => 'Немає пов\'язаних документів',
'no_mimetype' => '',
'no_previous_versions' => 'Немає попередніх версій',
'no_receipt_needed' => 'Немає документів, які потребують підтвердження отримання',
'no_review_needed' => 'Рецензія не потрібна',
@ -1161,6 +1170,9 @@ URL: [url]',
'no_workflows' => '',
'no_workflow_available' => 'Немає доступних процесів',
'number_count' => '',
'n_of_m_approved' => '',
'n_of_m_reviewed' => '',
'n_of_m_revised' => '',
'objectcheck' => 'Перевірка каталогу чи документа',
'objects_without_attribute' => '',
'object_check_critical' => '',
@ -1208,6 +1220,7 @@ URL: [url]',
'password_forgotten_title' => 'Пароль вислано',
'password_mismatch_error' => '',
'password_mismatch_error_title' => '',
'password_never_expires' => '',
'password_repeat' => 'Повторіть пароль',
'password_send' => 'Пароль відіслано',
'password_send_text' => 'Пароль відіслано.',
@ -1235,6 +1248,7 @@ URL: [url]',
'preview_txt' => '',
'previous_state' => 'Попередній стан',
'previous_versions' => 'Попередні версії',
'problematic_filename' => '',
'process' => '',
'process_without_user_group' => '',
'pt_BR' => 'Portugese (BR)',
@ -1303,11 +1317,14 @@ URL: [url]',
'removed_workflow_email_body_html' => '',
'removed_workflow_email_subject' => '[sitename]: видалено процес з версії документа «[name]»',
'removeFolderFromDropFolder' => '',
'removeFolderFromDropFolder_desc' => '',
'remove_approval_log' => '',
'remove_from_clipboard' => '',
'remove_marked_files' => 'Видалити обрані файли',
'remove_review_log' => '',
'remove_task' => '',
'reorder' => '',
'reorder_documents_in_folder' => '',
'repaired' => 'виправлено',
'repairing_objects' => 'Відновлення каталогів і документів',
'replace_content_email_body' => '',
@ -1500,6 +1517,7 @@ URL: [url]',
'select_category' => 'Оберіть категорію',
'select_created' => '',
'select_documents_for_process' => '',
'select_folder' => '',
'select_group' => '',
'select_groups' => 'Оберіть групи',
'select_grp_approvers' => 'Оберіть групу затверджувачів',
@ -1547,7 +1565,9 @@ URL: [url]',
'service_name' => '',
'sessions' => '',
'setDateFromFile' => '',
'setDateFromFile_desc' => '',
'setDateFromFolder' => '',
'setDateFromFolder_desc' => '',
'settings' => 'Налаштування',
'settings_activate_module' => 'Активувати модуль',
'settings_activate_php_extension' => 'Активувати розширення PHP',
@ -1642,9 +1662,15 @@ URL: [url]',
'settings_defaultSearchMethod_desc' => 'Метод пошуку за замовчуванням, коли пошук починається з пошукової форми головного меню.',
'settings_defaultSearchMethod_valdatabase' => 'база даних',
'settings_defaultSearchMethod_valfulltext' => 'повнотекстовий',
'settings_defaultThumbnailClick' => '',
'settings_defaultThumbnailClick_desc' => '',
'settings_defaultThumbnailClick_valdownload' => '',
'settings_defaultThumbnailClick_valviewonline' => '',
'settings_delete_install_folder' => 'Видаліть ENABLE_INSTALL_TOOL в каталозі конфігурації для того, щоби почати використовувати систему',
'settings_disableChangePassword' => '',
'settings_disableChangePassword_desc' => '',
'settings_disableReceiptComment' => '',
'settings_disableReceiptComment_desc' => '',
'settings_disableSelfEdit' => 'Відключити власне редагування',
'settings_disableSelfEdit_desc' => 'Якщо ввімкнено, користувачі не зможуть змінювати інформацію про себе.',
'settings_disable_install' => 'Видалити ENABLE_INSTALL_TOOL, якщо можливо',
@ -1710,6 +1736,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' => '',
@ -1769,6 +1797,8 @@ URL: [url]',
'settings_encryptionKey' => 'Ключ шифрування',
'settings_encryptionKey_desc' => 'Рядок використовується для створення унікального ідентифікатора, який додається як приховане поле до формулярів, для запобігання CSRF-атак.',
'settings_error' => 'Помилка',
'settings_excludeFoldersDashboard' => '',
'settings_excludeFoldersDashboard_desc' => '',
'settings_expandFolderTree' => 'Розгортати дерево каталогів',
'settings_expandFolderTree_desc' => 'Розгортати дерево каталогів.',
'settings_expandFolderTree_val0' => 'Починати із згорнутого дерева',
@ -1827,6 +1857,8 @@ URL: [url]',
'settings_logFileEnable_desc' => 'Увімкнути/вимкнути протоколювання (лог).',
'settings_logFileMaxLevel' => '',
'settings_logFileMaxLevel_desc' => '',
'settings_logFileRestApiMaxLevel' => '',
'settings_logFileRestApiMaxLevel_desc' => '',
'settings_logFileRotation' => 'Ротація журналу (протоколу)',
'settings_logFileRotation_desc' => 'Ротація файлу журналу.',
'settings_loginFailure' => 'Не вдалося увійти',
@ -2024,6 +2056,7 @@ URL: [url]',
'sign_out' => 'Вийти',
'sign_out_user' => 'Вихід користувача',
'site_brand' => '',
'skip_default_export_cols' => '',
'sk_SK' => 'Slovak',
'sort_by_date' => '',
'sort_by_expiration_date' => '',
@ -2094,6 +2127,7 @@ URL: [url]',
'splash_move_document' => '',
'splash_move_folder' => '',
'splash_notinherit_access' => '',
'splash_orig_filename_changed' => '',
'splash_receipt_update_success' => '',
'splash_removed_from_clipboard' => 'Видалити з буферу обміну',
'splash_rm_attribute' => 'Атрибут видалено',
@ -2153,6 +2187,7 @@ URL: [url]',
'status_revision_sleeping' => 'Ревізію призупинено',
'status_revisor_removed' => 'Ревізора видалено зі списку',
'status_unknown' => 'Невідомий',
'storage' => '',
'storage_size' => 'Розмір сховища',
'subfolder_duplicate_name' => '',
'submit_2_fact_auth' => '',

View File

@ -23,9 +23,11 @@
$text = array(
'2_factor_auth' => '双重认证',
'2_factor_auth_code' => '',
'2_factor_auth_info' => '该系统启用双重认证。您需要在手机上进行 Google 认证。下面你会看到两个 QR 码。正确的是你目前的密码。在左边你可以设置一个新的密码。如果您设置了新的密码,请重新扫描并通过 Google 认证。',
'2_fact_auth_current_secret' => '',
'2_fact_auth_new_secret' => '',
'2_fact_auth_qrcode' => '',
'2_fact_auth_secret' => '双重认证密码',
'abbr_day' => '',
'abbr_hour' => '',
@ -403,6 +405,7 @@ URL: [url]',
'docs_in_reception_no_access' => '收件人未访问接收到的文档',
'docs_in_revision_disabled' => '',
'docs_in_revision_no_access' => '修订人未访问带修订文档',
'docs_with_link_to_itself' => '',
'docs_with_missing_revision_date' => '',
'document' => '文档',
'documentcontent' => '文档内容',
@ -559,6 +562,8 @@ URL: [url]',
'download_header_document_name' => '',
'download_header_document_no' => '',
'download_header_filename' => '',
'download_header_folder_name' => '',
'download_header_folder_no' => '',
'download_header_internal_version' => '',
'download_header_reviewer' => '',
'download_header_review_comment' => '',
@ -697,6 +702,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' => '加载扩展',
@ -978,6 +985,7 @@ URL: [url]',
'linked_to_this_version' => '链接到版本',
'link_alt_updatedocument' => '超过20M大文件请选择<a href="%s">上传大文件</a>.',
'link_document' => '',
'link_to' => '',
'link_to_version' => '附加到版本',
'list_access_rights' => '列出所有的访问权限',
'list_contains_no_access_docs' => '这个列表包含了更多你无法访问的文件也没有显示出来。',
@ -1151,6 +1159,7 @@ URL: [url]',
'no_groups' => '无组别',
'no_group_members' => '该组没有成员',
'no_linked_files' => '无链接文件',
'no_mimetype' => '',
'no_previous_versions' => '无其它版本',
'no_receipt_needed' => '目前没有需要收据确认的文件',
'no_review_needed' => '无待校对的文件',
@ -1165,6 +1174,9 @@ URL: [url]',
'no_workflows' => '',
'no_workflow_available' => '工作流不可用',
'number_count' => '',
'n_of_m_approved' => '',
'n_of_m_reviewed' => '',
'n_of_m_revised' => '',
'objectcheck' => '文件夹/文件检查',
'objects_without_attribute' => '',
'object_check_critical' => '重大错误',
@ -1214,6 +1226,7 @@ URL: [url]',
'password_forgotten_title' => '密码已发送',
'password_mismatch_error' => '',
'password_mismatch_error_title' => '',
'password_never_expires' => '',
'password_repeat' => '重复密码',
'password_send' => '发送密码',
'password_send_text' => '您的新密码已通过邮件发送给您。若您尚未收到该邮件,请确认登陆用户名和对应的电子邮件填写是否正确,并重试。',
@ -1241,6 +1254,7 @@ URL: [url]',
'preview_txt' => '',
'previous_state' => 'Previous state',
'previous_versions' => '先前版本',
'problematic_filename' => '',
'process' => '进程',
'process_without_user_group' => '不含用户/组的进程',
'pt_BR' => '葡萄牙语',
@ -1309,11 +1323,14 @@ URL: [url]',
'removed_workflow_email_body_html' => '',
'removed_workflow_email_subject' => '[sitename]: [name] - 已从文档版本中移除工作流',
'removeFolderFromDropFolder' => '导入后删除文件夹',
'removeFolderFromDropFolder_desc' => '',
'remove_approval_log' => '',
'remove_from_clipboard' => '',
'remove_marked_files' => '删除选中的文件',
'remove_review_log' => '',
'remove_task' => '',
'reorder' => '',
'reorder_documents_in_folder' => '',
'repaired' => '已修复',
'repairing_objects' => '修复文件和文件夹',
'replace_content_email_body' => '',
@ -1483,6 +1500,7 @@ URL: [url]',
'select_category' => '选中分类',
'select_created' => '',
'select_documents_for_process' => '',
'select_folder' => '',
'select_group' => '选择用户组',
'select_groups' => '点击选择组',
'select_grp_approvers' => '点击选择组审批组',
@ -1535,7 +1553,9 @@ URL: [url]',
'service_name' => '',
'sessions' => '在线用户',
'setDateFromFile' => '导入文件接收日期',
'setDateFromFile_desc' => '',
'setDateFromFolder' => '导入文件夹接收日期',
'setDateFromFolder_desc' => '',
'settings' => '设置',
'settings_activate_module' => '启用模块',
'settings_activate_php_extension' => '启用 PHP 扩展',
@ -1630,9 +1650,15 @@ URL: [url]',
'settings_defaultSearchMethod_desc' => '在主菜单中启动检索时,设置默认的搜索方式',
'settings_defaultSearchMethod_valdatabase' => '数据库',
'settings_defaultSearchMethod_valfulltext' => '全文',
'settings_defaultThumbnailClick' => '',
'settings_defaultThumbnailClick_desc' => '',
'settings_defaultThumbnailClick_valdownload' => '',
'settings_defaultThumbnailClick_valviewonline' => '',
'settings_delete_install_folder' => '在使用 DMS 前您必须先删除配置目录config下的 ENABLE_INSTALL_TOOL 文件',
'settings_disableChangePassword' => '',
'settings_disableChangePassword_desc' => '',
'settings_disableReceiptComment' => '',
'settings_disableReceiptComment_desc' => '',
'settings_disableSelfEdit' => '禁用自编辑',
'settings_disableSelfEdit_desc' => '若勾选,则用户不能编辑自己的档案信息',
'settings_disable_install' => '如有可能,则删除 ENABLE_INSTALL_TOOL 文件',
@ -1698,6 +1724,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' => '',
@ -1757,6 +1785,8 @@ URL: [url]',
'settings_encryptionKey' => '加密密钥',
'settings_encryptionKey_desc' => '这个字符串用于创建一个唯一的标识符并作为一个隐藏字段添加到表单中以防止CSRF攻击。',
'settings_error' => '错误',
'settings_excludeFoldersDashboard' => '',
'settings_excludeFoldersDashboard_desc' => '',
'settings_expandFolderTree' => '展开文件夹树',
'settings_expandFolderTree_desc' => '展开文件夹树',
'settings_expandFolderTree_val0' => '启动时隐藏树形结构',
@ -1815,6 +1845,8 @@ URL: [url]',
'settings_logFileEnable_desc' => '启用 / 禁用日志文件',
'settings_logFileMaxLevel' => '',
'settings_logFileMaxLevel_desc' => '',
'settings_logFileRestApiMaxLevel' => '',
'settings_logFileRestApiMaxLevel_desc' => '',
'settings_logFileRotation' => '设置日志文件时间段',
'settings_logFileRotation_desc' => '日志文件时间段切换',
'settings_loginFailure' => '登录失败',
@ -2012,6 +2044,7 @@ URL: [url]',
'sign_out' => '登出',
'sign_out_user' => '退出登录',
'site_brand' => '',
'skip_default_export_cols' => '',
'sk_SK' => '斯洛伐克语',
'sort_by_date' => '日期排序',
'sort_by_expiration_date' => '',
@ -2082,6 +2115,7 @@ URL: [url]',
'splash_move_document' => '文档已迁移',
'splash_move_folder' => '文件夹已迁移',
'splash_notinherit_access' => '访问权不再继承',
'splash_orig_filename_changed' => '',
'splash_receipt_update_success' => '接收人添加成功',
'splash_removed_from_clipboard' => '已从剪切板删除',
'splash_rm_attribute' => '属性已移除',
@ -2141,6 +2175,7 @@ URL: [url]',
'status_revision_sleeping' => '等待',
'status_revisor_removed' => '从名单中删除校订人',
'status_unknown' => '未知',
'storage' => '',
'storage_size' => '存储大小',
'subfolder_duplicate_name' => '重复的文件夹',
'submit_2_fact_auth' => '保存秘钥',

View File

@ -23,9 +23,11 @@
$text = array(
'2_factor_auth' => '2階段認證',
'2_factor_auth_code' => '',
'2_factor_auth_info' => '此系統強制執行2階段身份驗證。您將需要在手機上使用Google Authenticator。在下面您可以看到兩個QR碼。正確的是您當前的秘密。在左側您可以設置一個新的秘密。如果您設置了新的機密請確保使用Google Authenticator重新掃描它。',
'2_fact_auth_current_secret' => '',
'2_fact_auth_new_secret' => '',
'2_fact_auth_qrcode' => '',
'2_fact_auth_secret' => '秘密',
'abbr_day' => '',
'abbr_hour' => '',
@ -409,6 +411,7 @@ $text = array(
'docs_in_reception_no_access' => '帶有收件人的文件,收件人無法訪問',
'docs_in_revision_disabled' => '',
'docs_in_revision_no_access' => '修訂中的文件,沒有修訂者可以訪問',
'docs_with_link_to_itself' => '',
'docs_with_missing_revision_date' => '',
'document' => '文件',
'documentcontent' => '文件內容',
@ -577,6 +580,8 @@ URL: [url]',
'download_header_document_name' => '',
'download_header_document_no' => '',
'download_header_filename' => '',
'download_header_folder_name' => '',
'download_header_folder_no' => '',
'download_header_internal_version' => '',
'download_header_reviewer' => '',
'download_header_review_comment' => '',
@ -707,6 +712,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' => '擴充套件讀取中',
@ -995,6 +1002,7 @@ URL: [url]',
'linked_to_this_version' => '連結到這個版本',
'link_alt_updatedocument' => '如果您要上傳的文件大於當前的最大上傳大小,請使用其他<a href="%s">上傳頁面</a>。',
'link_document' => '連結文件',
'link_to' => '',
'link_to_version' => '附加到版本',
'list_access_rights' => '列出權限',
'list_contains_no_access_docs' => '該列表包含更多您無法訪問且不會顯示的文檔。',
@ -1168,6 +1176,7 @@ URL: [url]',
'no_groups' => '無組別',
'no_group_members' => '該組沒有成員',
'no_linked_files' => '無連結檔',
'no_mimetype' => '',
'no_previous_versions' => '無其它版本',
'no_receipt_needed' => '當前沒有需要收據確認的文件。',
'no_review_needed' => '無待校對的文件',
@ -1182,6 +1191,9 @@ URL: [url]',
'no_workflows' => '',
'no_workflow_available' => '沒有可用的工作流程',
'number_count' => '',
'n_of_m_approved' => '',
'n_of_m_reviewed' => '',
'n_of_m_revised' => '',
'objectcheck' => '資料夾/檔檢查',
'objects_without_attribute' => '',
'object_check_critical' => '嚴重錯誤',
@ -1229,6 +1241,7 @@ URL: [url]',
'password_forgotten_title' => '密碼已寄出',
'password_mismatch_error' => '',
'password_mismatch_error_title' => '',
'password_never_expires' => '',
'password_repeat' => '重複輸入密碼',
'password_send' => '密碼寄出',
'password_send_text' => '如果登錄名和電子郵件與現有使用者匹配,則您的新密碼已發送到給定的電子郵件地址。如果您在接下來的幾分鐘內沒有收到電子郵件,請確保登錄名和電子郵件均正確無誤,然後重新啟動該過程。',
@ -1256,6 +1269,7 @@ URL: [url]',
'preview_txt' => '',
'previous_state' => '先前狀態',
'previous_versions' => '先前版本',
'problematic_filename' => '',
'process' => '處理',
'process_without_user_group' => '程序缺少使用者/群組',
'pt_BR' => '葡萄牙語',
@ -1330,11 +1344,14 @@ URL: [url]',
'removed_workflow_email_body_html' => '',
'removed_workflow_email_subject' => '[sitename]: [name] - 從文檔版本中刪除了工作流程',
'removeFolderFromDropFolder' => '導入後刪除文件夾',
'removeFolderFromDropFolder_desc' => '',
'remove_approval_log' => '',
'remove_from_clipboard' => '',
'remove_marked_files' => '刪除勾選的檔案',
'remove_review_log' => '',
'remove_task' => '',
'reorder' => '',
'reorder_documents_in_folder' => '',
'repaired' => '修復',
'repairing_objects' => '修復文檔和文件夾。',
'replace_content_email_body' => '',
@ -1534,6 +1551,7 @@ URL: [url]',
'select_category' => '選中分類',
'select_created' => '',
'select_documents_for_process' => '',
'select_folder' => '',
'select_group' => '選擇群',
'select_groups' => '點擊選擇組',
'select_grp_approvers' => '請點選審核人員群組',
@ -1586,7 +1604,9 @@ URL: [url]',
'service_name' => '',
'sessions' => '在線用戶',
'setDateFromFile' => '從導入的文件接管日期',
'setDateFromFile_desc' => '',
'setDateFromFolder' => '從導入的文件夾接管日期',
'setDateFromFolder_desc' => '',
'settings' => '設置',
'settings_activate_module' => '激活模塊',
'settings_activate_php_extension' => '激活PHP擴展',
@ -1681,9 +1701,15 @@ URL: [url]',
'settings_defaultSearchMethod_desc' => '默認搜索方法,當通過主菜單中的搜索表單開始搜索時。',
'settings_defaultSearchMethod_valdatabase' => '資料庫',
'settings_defaultSearchMethod_valfulltext' => '全文',
'settings_defaultThumbnailClick' => '',
'settings_defaultThumbnailClick_desc' => '',
'settings_defaultThumbnailClick_valdownload' => '',
'settings_defaultThumbnailClick_valviewonline' => '',
'settings_delete_install_folder' => '為了使用SeedDMS必須在配置目錄中刪除文件ENABLE_INSTALL_TOOL',
'settings_disableChangePassword' => '',
'settings_disableChangePassword_desc' => '',
'settings_disableReceiptComment' => '',
'settings_disableReceiptComment_desc' => '',
'settings_disableSelfEdit' => '禁用自我編輯',
'settings_disableSelfEdit_desc' => '如果選中,則用戶無法編輯自己的個人資料',
'settings_disable_install' => '如果可能刪除文件ENABLE_INSTALL_TOOL',
@ -1749,6 +1775,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' => '',
@ -1808,6 +1836,8 @@ URL: [url]',
'settings_encryptionKey' => '加密金鑰',
'settings_encryptionKey_desc' => '該字符串用於創建唯一的標識符該標識符作為隱藏字段添加到表單中以防止CSRF攻擊。',
'settings_error' => '錯誤',
'settings_excludeFoldersDashboard' => '',
'settings_excludeFoldersDashboard_desc' => '',
'settings_expandFolderTree' => '展開文件樹',
'settings_expandFolderTree_desc' => '展開文件樹',
'settings_expandFolderTree_val0' => '從隱藏的樹開始',
@ -1866,6 +1896,8 @@ URL: [url]',
'settings_logFileEnable_desc' => '啟用/禁用日誌文件',
'settings_logFileMaxLevel' => '',
'settings_logFileMaxLevel_desc' => '',
'settings_logFileRestApiMaxLevel' => '',
'settings_logFileRestApiMaxLevel_desc' => '',
'settings_logFileRotation' => '日誌文件輪換',
'settings_logFileRotation_desc' => '日誌文件輪換',
'settings_loginFailure' => '登錄失敗',
@ -2063,6 +2095,7 @@ URL: [url]',
'sign_out' => '登出',
'sign_out_user' => '登出使用者',
'site_brand' => '',
'skip_default_export_cols' => '',
'sk_SK' => '斯洛伐克語',
'sort_by_date' => '依日期排序',
'sort_by_expiration_date' => '',
@ -2133,6 +2166,7 @@ URL: [url]',
'splash_move_document' => '文件已移走',
'splash_move_folder' => '文件夾已移動',
'splash_notinherit_access' => '訪問權限不再繼承',
'splash_orig_filename_changed' => '',
'splash_receipt_update_success' => '接待已成功添加',
'splash_removed_from_clipboard' => '已從剪貼簿中刪除',
'splash_rm_attribute' => '屬性已刪除',
@ -2192,6 +2226,7 @@ URL: [url]',
'status_revision_sleeping' => '待定',
'status_revisor_removed' => '修訂者已從清單中刪除',
'status_unknown' => '未知',
'storage' => '',
'storage_size' => '存儲大小',
'subfolder_duplicate_name' => '子文件夾名稱重複',
'submit_2_fact_auth' => '保存秘密',

View File

@ -498,9 +498,20 @@ foreach($file_ary as $file) {
if($controller->hasHook('cleanUpDocument')) {
$controller->callHook('cleanUpDocument', $document, $file);
}
// Send notification to subscribers of folder.
if($notifier) {
// Send notification to subscribers of folder.
$notifier->sendNewDocumentMail($document, $user);
// Send notifcation to recipients of document
$content = $document->getLatestContent();
$status = $content->getStatus();
if ($status["status"] == S_RELEASED) {
if ($settings->_enableNotificationAppRev) {
if ($notifier) {
$notifier->sendToAllReceiptMail($content, $user);
}
}
}
}
if($settings->_removeFromDropFolder) {
if(file_exists($userfiletmp)) {

View File

@ -691,6 +691,44 @@ switch($command) {
}
break; /* }}} */
case 'setoriginalname': /* {{{ */
if($user && $user->isAdmin()) {
if(checkFormKey('setoriginalname')) {
$content = $dms->getDocumentContent($_REQUEST['contentid']);
if($content) {
$document = $content->getDocument();
if ($document->getAccessMode($user) >= M_READWRITE) {
$oldname = $content->getOriginalFileName();
if (!$content->setOriginalFilename($_REQUEST['name'])) {
header('Content-Type: application/json');
echo json_encode(array('success'=>false, 'message'=>'Error setting original file name', 'data'=>''));
} else {
if($fulltextservice && ($index = $fulltextservice->Indexer())) {
$lucenesearch = $fulltextservice->Search();
if($hit = $lucenesearch->getDocument($document->getId())) {
$index->reindexDocument($hit->id);
$index->commit();
}
}
header('Content-Type: application/json');
echo json_encode(array('success'=>true, 'message'=>getMLText('splash_orig_filename_changed'), 'data'=>''));
add_log_line("set original filename '".$_REQUEST['name']."' of document ".$document->getId().":".$content->getVersion());
}
} else {
header('Content-Type: application/json');
echo json_encode(array('success'=>false, 'message'=>getMLText('access_denied'), 'data'=>''));
}
} else {
header('Content-Type: application/json');
echo json_encode(array('success'=>false, 'message'=>getMLText('invalid_doc_id'), 'data'=>''));
}
} else {
header('Content-Type: application/json');
echo json_encode(array('success'=>false, 'message'=>getMLText('invalid_request_token'), 'data'=>''));
}
}
break; /* }}} */
case 'setmimetype': /* {{{ */
if($user && $user->isAdmin()) {
if(checkFormKey('setmimetype', 'GET')) {

View File

@ -111,6 +111,13 @@ if(!$controller()) {
$notifier->sendSubmittedApprovalMail($latestContent, $user, $approvelog ? $approvelog[0] : false);
if($controller->oldstatus != $controller->newstatus)
$notifier->sendChangedDocumentStatusMail($latestContent, $user, $controller->oldstatus);
if ($controller->newstatus == S_RELEASED) {
if ($settings->_enableNotificationAppRev) {
if ($notifier) {
$notifier->sendToAllReceiptMail($content, $user);
}
}
}
}
}

View File

@ -218,6 +218,3 @@ else if ($action == "removeattrvalue") {
}
header("Location:../out/out.AttributeMgr.php?attrdefid=".$attrdefid);
?>

View File

@ -28,16 +28,6 @@ include("../inc/inc.ClassSession.php");
include("../inc/inc.DBInit.php");
include("../inc/inc.ClassUI.php");
function _printMessage($heading, $message) {
UI::htmlStartPage($heading, "password");
UI::globalBanner();
UI::pageNavigation($heading);
UI::contentContainer($message."<p><a href=\"../out/out.Login.php\">" . getMLText("login") . "</a></p>\n");
UI::htmlEndPage();
return;
}
/* Check if the form data comes from a trusted request */
if(!checkFormKey('changepassword')) {
UI::exitError(getMLText("folder_title", array("foldername" => getMLText("invalid_request_token"))),getMLText("invalid_request_token"));

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

@ -75,5 +75,3 @@ $session->setSplashMsg(array('type'=>'success', 'msg'=>getMLText('splash_documen
add_log_line();
header("Location:../out/out.ViewDocument.php?documentid=".$documentid);
?>

View File

@ -1,114 +0,0 @@
<?php
// MyDMS. Document Management System
// Copyright (C) 2002-2005 Markus Westphal
// Copyright (C) 2006-2008 Malcolm Cowe
// Copyright (C) 2010-2016 Uwe Steinmann
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
include("../inc/inc.Settings.php");
include("../inc/inc.Utils.php");
include("../inc/inc.LogInit.php");
include("../inc/inc.Language.php");
include("../inc/inc.Init.php");
include("../inc/inc.Extension.php");
include("../inc/inc.DBInit.php");
include("../inc/inc.ClassUI.php");
include("../inc/inc.Authentication.php");
UI::htmlStartPage("Create Document Folder Index");
UI::globalNavigation();
UI::pageNavigation("Create Document Folder Index");
UI::contentHeading("Indexing Documents...");
if (!$user->isAdmin()) {
UI::contentContainer("<p>Permission denied.</p>");
UI::htmlPageEnd();
exit;
}
function getTime() {
if (function_exists('microtime')) {
$tm = microtime();
$tm = explode(' ', $tm);
return (float) sprintf('%f', $tm[1] + $tm[0]);
}
return time();
}
// ------------------------------------- Suche starten --------------------------------------------
UI::contentContainerStart();
$startTime = getTime();
$results = array();
//searchInFolder($startFolder);
//
// Construct the SQL query that will be used to search the database.
//
// Create the keyword search string. This search spans up to three columns
// in the database: keywords, name and comment.
//
// The base query.
//
$searchQuery = "SELECT `tblDocuments`.* FROM `tblDocuments` ";
// Send the search query to the database.
$resArr = $db->getResultArray($searchQuery);
// Assemble the results into an array of MyDMS Document objects.
if (!is_bool($resArr) && count($resArr)>0) {
echo "<ol>";
foreach($resArr as $docArr) {
$doc = new SeedDMS_Core_Document($docArr["id"],
$docArr["name"],
$docArr["comment"],
$docArr["date"],
$docArr["expires"],
$docArr["owner"],
$docArr["folder"],
$docArr["inheritAccess"],
$docArr["defaultAccess"],
$docArr["lockUser"],
$docArr["keywords"],
$docArr["sequence"]);
// Make sure that the folder search path is also updated.
$folder = $doc->getFolder();
$path = $folder->getPath();
$flist = "";
foreach ($path as $f) {
$flist .= ":".$f->getID();
}
if (strlen($flist)>1) {
$flist .= ":";
}
$queryStr = "UPDATE tblDocuments SET folderList = '" . $flist . "' WHERE id = ". $doc->getID();
$db->getResult($queryStr);
echo "<li>Updating docID '".$doc->getID()."' -- '".$flist."'</li>";
}
echo "</ol>";
}
$searchTime = getTime() - $startTime;
$searchTime = round($searchTime, 2);
echo "<p>";
printMLText("search_time", array("time" => $searchTime));
UI::contentContainerEnd();
UI::htmlEndPage();
?>

View File

@ -27,8 +27,12 @@ include("../inc/inc.Init.php");
include("../inc/inc.Extension.php");
include("../inc/inc.DBInit.php");
include("../inc/inc.ClassUI.php");
include("../inc/inc.ClassController.php");
include("../inc/inc.Authentication.php");
$tmp = explode('.', basename($_SERVER['SCRIPT_FILENAME']));
$controller = Controller::factory($tmp[1], array('dms'=>$dms, 'user'=>$user));
/* Check if the form data comes from a trusted request */
if(!checkFormKey('editattributes')) {
UI::exitError(getMLText("document_title", array("documentname" => getMLText("invalid_request_token"))),getMLText("invalid_request_token"));
@ -51,7 +55,6 @@ if (!is_object($document)) {
}
$folder = $document->getFolder();
$docPathHTML = getFolderPathHTML($folder, true). " / <a href=\"../out/out.ViewDocument.php?documentid=".$documentid."\">".$document->getName()."</a>";
if ($document->getAccessMode($user, 'editDocumentContentAttributes') < M_READWRITE) {
UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("access_denied"));
@ -73,120 +76,25 @@ foreach($version->getAttributes() as $ai=>$aa)
$oldattributes[$ai] = clone $aa;
$attributes = $_POST["attributes"];
if($attributes) {
foreach($attributes as $attrdefid=>$attribute) {
if($attrdef = $dms->getAttributeDefinition($attrdefid)) {
if($attribute) {
switch($attrdef->getType()) {
case SeedDMS_Core_AttributeDefinition::type_date:
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, $version, false)) {
$errmsg = getAttributeValidationText($attrdef->getValidationError(), $attrdef->getName(), $attribute);
UI::exitError(getMLText("document_title", array("documentname" => $document->getName())), $errmsg);
}
if(!isset($oldattributes[$attrdefid]) || $attribute != $oldattributes[$attrdefid]->getValue()) {
if(!$version->setAttributeValue($dms->getAttributeDefinition($attrdefid), $attribute)) {
UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("error_occured"));
}
}
} elseif($attrdef->getMinValues() > 0) {
UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("attr_min_values", array("attrname"=>$attrdef->getName())));
} elseif(isset($oldattributes[$attrdefid])) {
if(!$version->removeAttribute($dms->getAttributeDefinition($attrdefid)))
UI::exitError(getMLText("document_title", array("documentname" => $folder->getName())),getMLText("error_occured"));
}
}
$controller->setParam('document', $document);
$controller->setParam('version', $version);
$controller->setParam('attributes', $attributes);
if(!$controller()) {
$err = $controller->getErrorMsg();
if(is_string($err))
$errmsg = getMLText($err);
elseif(is_array($err)) {
$errmsg = getMLText($err[0], $err[1]);
} else {
$errmsg = $err;
}
UI::exitError(getMLText("document_title", array("documentname" => $document->getName())), $errmsg);
}
$newattributes = $version->getAttributes();
if($oldattributes) {
foreach($oldattributes as $attrdefid=>$attribute) {
if(!isset($newattributes[$attrdefid]) || $newattributes[$attrdefid]->getValueAsArray() !== $oldattributes[$attrdefid]->getValueAsArray()) {
if($notifier) {
$notifyList = $document->getNotifyList();
$subject = "attribute_changed_email_subject";
$message = "attribute_changed_email_body";
$params = array();
$params['name'] = $document->getName();
$params['version'] = $version->getVersion();
$params['attribute_name'] = $attribute->getAttributeDefinition()->getName();
$params['attribute_old_value'] = $oldattributes[$attrdefid]->getValue();
$params['attribute_new_value'] = isset($newattributes[$attrdefid]) ? $newattributes[$attrdefid]->getValue() : '';
$params['folder_path'] = $folder->getFolderPathPlain();
$params['username'] = $user->getFullName();
$params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID();
$params['sitename'] = $settings->_siteName;
$params['http_root'] = $settings->_httpRoot;
$notifier->toList($user, $notifyList["users"], $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION);
foreach ($notifyList["groups"] as $grp) {
$notifier->toGroup($user, $grp, $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION);
}
}
}
}
}
/* Check for new attributes which didn't have a value before */
if($newattributes) {
foreach($newattributes as $attrdefid=>$attribute) {
if(!isset($oldattributes[$attrdefid]) && $attribute) {
if($notifier) {
$notifyList = $document->getNotifyList();
$subject = "attribute_changed_email_subject";
$message = "attribute_changed_email_body";
$params = array();
$params['name'] = $document->getName();
$params['version'] = '';
$params['attribute_name'] = $dms->getAttributeDefinition($attrdefid)->getName();
$params['attribute_old_value'] = '';
$params['attribute_new_value'] = $attribute->getValue();
$params['folder_path'] = $folder->getFolderPathPlain();
$params['username'] = $user->getFullName();
$params['url'] = getBaseUrl().$settings->_httpRoot."out/out.ViewDocument.php?documentid=".$document->getID();
$params['sitename'] = $settings->_siteName;
$params['http_root'] = $settings->_httpRoot;
$notifier->toList($user, $notifyList["users"], $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION);
foreach ($notifyList["groups"] as $grp) {
$notifier->toGroup($user, $grp, $subject, $message, $params, SeedDMS_NotificationService::RECV_NOTIFICATION);
}
}
}
}
if($notifier) {
$notifier->sendChangedVersionAttributesMail($version, $user, $oldattributes);
}
add_log_line("?documentid=".$documentid);
header("Location:../out/out.DocumentVersionDetail.php?documentid=".$documentid."&version=".$versionid);
?>

View File

@ -53,7 +53,6 @@ if (!is_object($document)) {
}
$folder = $document->getFolder();
$docPathHTML = getFolderPathHTML($folder, true). " / <a href=\"../out/out.ViewDocument.php?documentid=".$documentid."\">".$document->getName()."</a>";
if ($document->getAccessMode($user, 'editDocument') < M_READWRITE) {
UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("access_denied"));
@ -129,7 +128,6 @@ $oldexpires = $document->getExpires();
$oldattributes = array();
foreach($document->getAttributes() as $ai=>$aa)
$oldattributes[$ai] = clone $aa;
//$oldattributes = $document->getAttributes();
$controller->setParam('fulltextservice', $fulltextservice);
$controller->setParam('document', $document);

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

@ -85,9 +85,16 @@ if ($overrideStatus != $overallStatus["status"]) {
if (!$content->setStatus($overrideStatus, $comment, $user)) {
UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("error_occured"));
} else {
// Send notification to subscribers.
if($notifier) {
if ($notifier) {
// Send notification to subscribers.
$notifier->sendChangedDocumentStatusMail($content, $user, $overallStatus["status"]);
// Send request for receipt notification
if ($overrideStatus == S_RELEASED) {
if ($settings->_enableNotificationAppRev) {
$notifier->sendToAllReceiptMail($content, $user);
}
}
}
}
}

View File

@ -31,15 +31,6 @@ include("../inc/inc.ClassUI.php");
include $settings->_rootDir . "languages/" . $settings->_language . "/lang.inc";
function _printMessage($heading, $message) {
UI::htmlStartPage($heading, "password");
UI::globalBanner();
UI::pageNavigation($heading);
UI::contentContainer($message."<p><a href=\"../out/out.Login.php\">" . getMLText("login") . "</a></p>\n");
UI::htmlEndPage();
return;
}
if (isset($_POST["email"])) {
$email = $_POST["email"];
}
@ -64,9 +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');
exit;
?>

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

@ -69,6 +69,8 @@ foreach ($docAccess["groups"] as $i=>$da) {
$accessIndex["g"][$da->getID()] = $da;
}
$status = $content->getStatus();
// Retrieve list of currently assigned recipients, along with
// their latest status.
$receiptStatus = $content->getReceiptStatus();
@ -137,10 +139,13 @@ foreach ($pIndRev as $p) {
// email error
break;
default:
// Send an email notification to the new recipient.
if($settings->_enableNotificationAppRev) {
if ($notifier) {
$notifier->sendAddReceiptMail($content, $user, $accessIndex["i"][$p]);
// Send an email notification to the new recipient only if the document
// is already released
if ($status["status"] == S_RELEASED) {
if($settings->_enableNotificationAppRev) {
if ($notifier) {
$notifier->sendAddReceiptMail($content, $user, $accessIndex["i"][$p]);
}
}
}
break;
@ -218,10 +223,13 @@ foreach ($pGrpRev as $p) {
// email error
break;
default:
// Send an email notification to the new recipient.
if($settings->_enableNotificationAppRev) {
if ($notifier) {
$notifier->sendAddReceiptMail($content, $user, $accessIndex["g"][$p]);
// Send an email notification to the new recipient only if the document
// is already released
if ($status["status"] == S_RELEASED) {
if($settings->_enableNotificationAppRev) {
if ($notifier) {
$notifier->sendAddReceiptMail($content, $user, $accessIndex["g"][$p]);
}
}
}
break;

View File

@ -55,15 +55,17 @@ 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();
}
$startdate = date('Y-m-d', $ts);
if(!$ts) {
UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("invalid_revision_date"));
}
$startdate = date('Y-m-d', $ts);
if(!$content->setRevisionDate($startdate)) {
UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("error_occured"));
if(!$content->setRevisionDate($startdate)) {
UI::exitError(getMLText("document_title", array("documentname" => $document->getName())),getMLText("error_occured"));
}
}
$folder = $document->getFolder();

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) {
@ -111,6 +104,7 @@ if ($action == "saveSettings")
setIntValue('previewWidthMenuList');
setIntValue('previewWidthDropFolderList');
setIntValue('previewWidthDetail');
setStrValue('defaultThumbnailClick');
setBoolValue('showFullPreview');
setBoolValue('convertToPdf');
setIntValue('maxItemsPerPage');
@ -199,6 +193,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");
@ -263,7 +258,7 @@ if ($action == "saveSettings")
setBoolValue("enableReceiptReject");
setBoolValue("disableReceiptComment");
setBoolValue("enableRevisionWorkflow");
setBoolValue("enableRevisionOnVoteReject");
setBoolValue("enableRevisionOneVoteReject");
setBoolValue("allowReviewerOnly");
setBoolValue("allowChangeRevAppInProcess");
setBoolValue("enableAdminRevApp");
@ -300,7 +295,7 @@ if ($action == "saveSettings")
// SETTINGS - ADVANCED - SERVER
setStrValue("coreDir");
setStrValue("luceneClassDir");
setIntValue("contentOffsetDir");
setStrValue("contentOffsetDir");
setIntValue("maxDirID");
setIntValue("updateNotifyTime");
setIntValue("maxExecutionTime");
@ -348,15 +343,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

@ -80,6 +80,3 @@ $session->setSplashMsg(array('type'=>'success', 'msg'=>getMLText('splash_transfe
add_log_line("?documentid=".$documentid);
header("Location:../out/out.ViewFolder.php?folderid=".$folder->getID());
?>

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();
@ -403,6 +435,15 @@ default:
$notifier->sendNewDocumentVersionMail($document, $user);
$notifier->sendChangedExpiryMail($document, $user, $oldexpires);
$status = $content->getStatus();
if ($status["status"] == S_RELEASED) {
if ($settings->_enableNotificationAppRev) {
if ($notifier) {
$notifier->sendToAllReceiptMail($content, $user);
}
}
}
}
if($settings->_removeFromDropFolder) {

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

@ -33,6 +33,7 @@ require_once("inc/inc.ClassUI.php");
$tmp = explode('.', basename($_SERVER['SCRIPT_FILENAME']));
$view = UI::factory($theme, $tmp[1], array('dms'=>$dms, 'user'=>$user));
$accessop = new SeedDMS_AccessOperation($dms, $user, $settings);
$folder = null;
if (isset($_GET["folderid"]) && is_numeric($_GET["folderid"])) {
@ -42,6 +43,7 @@ if (isset($_GET["folderid"]) && is_numeric($_GET["folderid"])) {
if($view) {
$view->setParam('accessobject', $accessop);
$view->setParam('folder', $folder);
$view->setParam('conversionmgr', $conversionmgr);
$view->setParam('previewWidthList', $settings->_previewWidthList);

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

@ -34,10 +34,7 @@ if (!$accessop->check_view_access($view, $_GET)) {
UI::exitError(getMLText("admin_tools"),getMLText("access_denied"));
}
$reposurl = $settings->_repositoryUrl;
$v = new SeedDMS_Version;
$extmgr = new SeedDMS_Extension_Mgr($settings->_rootDir."/ext", $settings->_cacheDir, $reposurl);
if(isset($_GET['currenttab']))
$currenttab = $_GET['currenttab'];
else
@ -52,10 +49,9 @@ if($view) {
$view->setParam('extdir', $settings->_rootDir."/ext");
$view->setParam('version', $v);
$view->setParam('accessobject', $accessop);
$view->setParam('extmgr', $extmgr);
$view->setParam('extmgr', $extMgr);
$view->setParam('currenttab', $currenttab);
$view->setParam('extname', $extname);
$view->setParam('reposurl', $reposurl);
$view($_GET);
exit;
}

View File

@ -39,8 +39,14 @@ if (!$accessop->check_view_access($view, $_GET)) {
$v = new SeedDMS_Version;
$versions = array();
if($settings->_proxyUrl)
$context = getStreamContext($settings->_proxyUrl, $settings->_proxyUser, $settings->_proxyPassword);
else
$context = null;
if(@ini_get('allow_url_fopen') == '1') {
$lines = @file('http://www.seeddms.org/latest?version='.$v->version(), FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES);
$lines = @file('http://www.seeddms.org/latest?version='.$v->version(), FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES, $context);
if($lines) {
foreach($lines as $line) {
$versions[] = explode(':', $line);
@ -48,14 +54,14 @@ if(@ini_get('allow_url_fopen') == '1') {
}
}
$reposurl = $settings->_repositoryUrl;
$extmgr = new SeedDMS_Extension_Mgr($settings->_rootDir."/ext", $settings->_cacheDir, $reposurl);
//$reposurl = $settings->_repositoryUrl;
//$extMgr = new SeedDMS_Extension_Mgr($settings->_rootDir."/ext", $settings->_cacheDir, $reposurl);
if($view) {
$view->setParam('version', $v);
$view->setParam('availversions', $versions);
$view->setParam('accessobject', $accessop);
$view->setParam('extmgr', $extmgr);
$view->setParam('extmgr', $extMgr);
$view($_GET);
exit;
}

View File

@ -31,7 +31,7 @@
*/
if (!isset($settings)) {
require_once "../inc/inc.Settings.php");
require_once "../inc/inc.Settings.php";
}
require_once "inc/inc.Utils.php";
require_once "inc/inc.LogInit.php";

View File

@ -29,51 +29,61 @@ 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;
$exportoptions = [];
if (isset($get["export_options"]) && $get["export_options"])
$exportoptions = $get["export_options"];
$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 +93,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 +118,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 +141,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 +184,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 +318,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 +328,6 @@ if($fullsearch) {
$rootFolder = $dms->getFolder($settings->_rootFolderID);
$startTime = getTime();
if($settings->_fullSearchEngine == 'lucene') {
Zend_Search_Lucene_Search_QueryParser::setDefaultEncoding('utf-8');
}
@ -358,6 +335,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 +345,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 +436,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 +472,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 +483,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 +530,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 +546,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,59 +560,42 @@ if($fullsearch) {
// if($status)
// $resultmode = 0x01;
if (isset($_GET["attributes"]))
$attributes = $_GET["attributes"];
if (isset($get["attributes"]))
$attributes = $get["attributes"];
else
$attributes = array();
foreach($attributes as $attrdefid=>$attribute) {
$attrdef = $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));
if($attrdef = $dms->getAttributeDefinition($attrdefid)) {
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));
}
}
}
}
}
//
// 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 +618,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) {
@ -724,7 +627,7 @@ if($fullsearch) {
}
}
}
}
// }
$dcount = 0;
if($resArr['docs']) {
foreach ($resArr['docs'] as $entry) {
@ -738,7 +641,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 +675,9 @@ 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('exportoptions', $exportoptions);
$view->setParam('marks', isset($get['marks']) ? $get['marks'] : array());
$view->setParam('newowner', $newowner);
$view->setParam('newreviewer', $newreviewer);
$view->setParam('newapprover', $newapprover);
@ -784,7 +689,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 +702,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) : '');
@ -841,7 +746,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

@ -2,7 +2,10 @@ RewriteEngine on
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
<Files ~ "^swagger\.yaml">
# Apache module
SetHandler application/x-httpd-php
# PHP FPM on Debian
#SetHandler "proxy:unix:/var/run/php/php8.2-fpm.sock|fcgi://localhost/"
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Methods "GET"

View File

@ -5,7 +5,7 @@ require_once("Log.php");
require_once("../inc/inc.Language.php");
require_once("../inc/inc.Utils.php");
$logger = getLogger('restapi-', PEAR_LOG_DEBUG);
$logger = getLogger('restapi-', (int) $settings->_logFileRestApiMaxLevel);
require_once("../inc/inc.Init.php");
require_once("../inc/inc.Extension.php");
@ -25,24 +25,21 @@ use Psr\Http\Server\MiddlewareInterface;
use DI\ContainerBuilder;
use Slim\Factory\AppFactory;
final class JsonRenderer
{
final class JsonRenderer { /* {{{ */
public function json(
ResponseInterface $response,
array $data = null
): ResponseInterface {
$response = $response->withHeader('Content-Type', 'application/json');
$response->getBody()->write(
(string)json_encode(
$data,
JSON_UNESCAPED_SLASHES | JSON_PARTIAL_OUTPUT_ON_ERROR
)
);
$response->getBody()->write(
(string)json_encode(
$data,
JSON_UNESCAPED_SLASHES | JSON_PARTIAL_OUTPUT_ON_ERROR
)
);
return $response;
}
}
} /* }}} */
final class SeedDMS_RestapiController { /* {{{ */
protected $container;
@ -254,7 +251,7 @@ final class SeedDMS_RestapiController { /* {{{ */
} /* }}} */
function doLogin($request, $response) { /* {{{ */
global $session;
// global $session;
$dms = $this->container->get('dms');
$settings = $this->container->get('config');
@ -403,11 +400,11 @@ final class SeedDMS_RestapiController { /* {{{ */
$id = $args['id'];
if($id == 0) {
return $this->renderer->json($response, array('success'=>true, 'message'=>'id is 0', 'data'=>''))->withStatus(200);
return $this->renderer->json($response, array('success'=>true, 'message'=>'Id is 0', 'data'=>''))->withStatus(200);
}
$root = $dms->getRootFolder();
if($root->getId() == $id) {
return $this->renderer->json($response, array('success'=>true, 'message'=>'id is root folder', 'data'=>''))->withStatus(200);
return $this->renderer->json($response, array('success'=>false, 'message'=>'Id is root folder', 'data'=>''))->withStatus(200);
}
$folder = $dms->getFolder($id);
if($folder) {
@ -1057,6 +1054,7 @@ final class SeedDMS_RestapiController { /* {{{ */
if ($mfolder->getAccessMode($userobj, 'addDocument') >= M_READWRITE) {
$params = $request->getQueryParams();
$docname = isset($params['name']) ? $params['name'] : '';
$comment = isset($params['comment']) ? $params['comment'] : '';
$keywords = isset($params['keywords']) ? $params['keywords'] : '';
$origfilename = isset($params['origfilename']) ? $params['origfilename'] : null;
$content = $request->getBody();
@ -1074,7 +1072,7 @@ final class SeedDMS_RestapiController { /* {{{ */
return $this->renderer->json($response, array('success'=>false, 'message'=>getMLText("document_duplicate_name"), 'data'=>''))->withStatus(409);
}
}
$res = $mfolder->addDocument($docname, '', 0, $userobj, '', array(), $temp, $origfilename ? $origfilename : basename($temp), $fileType, $userfiletype, 0);
$res = $mfolder->addDocument($docname, $comment, 0, $userobj, '', array(), $temp, $origfilename ? $origfilename : basename($temp), $fileType, $userfiletype, 0);
unlink($temp);
if($res) {
$doc = $res[0];
@ -1298,7 +1296,7 @@ final class SeedDMS_RestapiController { /* {{{ */
if(!($fh = @fopen($file, 'rb'))) {
return $this->renderer->json($response, array('success'=>false, 'message'=>'', 'data'=>''))->withStatus(500);
}
$stream = new \Slim\Http\Stream($fh); // create a stream instance for the response body
$stream = new \Slim\Psr7\Stream($fh); // create a stream instance for the response body
return $response->withHeader('Content-Type', $lc->getMimeType())
->withHeader('Content-Description', 'File Transfer')
@ -1374,7 +1372,7 @@ final class SeedDMS_RestapiController { /* {{{ */
if(!($fh = @fopen($file, 'rb'))) {
return $this->renderer->json($response, array('success'=>false, 'message'=>'', 'data'=>''))->withStatus(500);
}
$stream = new \Slim\Http\Stream($fh); // create a stream instance for the response body
$stream = new \Slim\Psr7\Stream($fh); // create a stream instance for the response body
return $response->withHeader('Content-Type', $lc->getMimeType())
->withHeader('Content-Description', 'File Transfer')
@ -1479,7 +1477,7 @@ final class SeedDMS_RestapiController { /* {{{ */
if(!($fh = @fopen($file, 'rb'))) {
return $this->renderer->json($response, array('success'=>false, 'message'=>'', 'data'=>''))->withStatus(500);
}
$stream = new \Slim\Http\Stream($fh); // create a stream instance for the response body
$stream = new \Slim\Psr7\Stream($fh); // create a stream instance for the response body
return $response->withHeader('Content-Type', $lc->getMimeType())
->withHeader('Content-Description', 'File Transfer')
@ -1625,7 +1623,7 @@ final class SeedDMS_RestapiController { /* {{{ */
if(!($fh = @fopen($file, 'rb'))) {
return $this->renderer->json($response, array('success'=>false, 'message'=>'', 'data'=>''))->withStatus(500);
}
$stream = new \Slim\Http\Stream($fh); // create a stream instance for the response body
$stream = new \Slim\Psr7\Stream($fh); // create a stream instance for the response body
return $response->withHeader('Content-Type', 'image/png')
->withHeader('Content-Description', 'File Transfer')
@ -1740,12 +1738,9 @@ final class SeedDMS_RestapiController { /* {{{ */
$dms = $this->container->get('dms');
$userobj = $this->container->get('userobj');
if(!$userobj) {
return $this->renderer->json($response, array('success'=>false, 'message'=>'Not logged in', 'data'=>''))->withStatus(403);
}
if(!$userobj->isAdmin()) {
return $this->renderer->json($response, array('success'=>false, 'message'=>'No access on document', 'data'=>''))->withStatus(403);
}
$check = $this->checkIfAdmin($request, $response);
if ($check !== true)
return $check;
if(!ctype_digit($args['id']) || $args['id'] == 0) {
return $this->renderer->json($response, array('success'=>false, 'message'=>'No document given', 'data'=>''))->withStatus(400);
@ -1983,7 +1978,6 @@ final class SeedDMS_RestapiController { /* {{{ */
// 'creationstartdate'=>array('hour'=>1, 'minute'=>0, 'second'=>0, 'year'=>date('Y')-1, 'month'=>date('m'), 'day'=>date('d')),
);
$resArr = $dms->search($sparams);
// $resArr = $dms->search($querystr, $limit, $offset, 'AND', $searchin, null, null, array(), array('hour'=>1, 'minute'=>0, 'second'=>0, 'year'=>date('Y')-1, 'month'=>date('m'), 'day'=>date('d')), array(), array(), array(), array(), array(), $objects);
if($resArr === false) {
return $this->renderer->json($response, array())->withStatus(200);
}
@ -2116,8 +2110,8 @@ final class SeedDMS_RestapiController { /* {{{ */
function checkIfAdmin($request, $response) { /* {{{ */
$dms = $this->container->get('dms');
if(!$this->container->has('userobj'))
echo "no user object";
// if(!$this->container->has('userobj'))
// echo "no user object";
if(!$this->container->has('userobj') || !($userobj = $this->container->get('userobj'))) {
return $this->renderer->json($response, ['success'=>false, 'message'=>'Not logged in', 'data'=>''])->withStatus(403);
@ -2170,7 +2164,7 @@ final class SeedDMS_RestapiController { /* {{{ */
$role = isset($params['role']) ? $params['role'] : 3;
$roleobj = $role == 'admin' ? SeedDMS_Core_Role::getInstance(1, $dms) : ($role == 'guest' ? SeedDMS_Core_Role::getInstance(2, $dms) : SeedDMS_Core_Role::getInstance($role, $dms));
if(!$roleobj) {
return $response->withJson(array('success'=>false, 'message'=>'Missing role', 'data'=>''), 400);
return $this->renderer->json($response, array('success'=>false, 'message'=>'Missing role', 'data'=>''), 400);
}
$newAccount = $dms->addUser($userName, seed_pass_hash($password), $fullname, $email, $language, $theme, $comment, $roleobj);
@ -2259,7 +2253,7 @@ final class SeedDMS_RestapiController { /* {{{ */
return $check;
$params = $request->getParsedBody();
if ($params['quota'] == null) {
if ($params['quota'] == null || !ctype_digit($params['quota'])) {
return $this->renderer->json($response, array('success'=>false, 'message'=>'You must supply a new quota', 'data'=>''))->withStatus(400);
}
@ -2285,7 +2279,8 @@ final class SeedDMS_RestapiController { /* {{{ */
return $this->renderer->json($response, array('success'=>false, 'message'=>'', 'data'=>'Could not change quota.'))->withStatus(404);
}
return $this->renderer->json($response, array('success'=>true, 'message'=>'', 'data'=>''))->withStatus(200);
$data = $this->__getUserData($account);
return $this->renderer->json($response, array('success'=>true, 'message'=>'', 'data'=>$data))->withStatus(200);
} /* }}} */
function changeUserHomefolder($request, $response, $args) { /* {{{ */
@ -2310,23 +2305,28 @@ final class SeedDMS_RestapiController { /* {{{ */
return;
}
if(!ctype_digit($args['folderid']) || $args['folderid'] == 0) {
if(!ctype_digit($args['folderid'])) {
return $this->renderer->json($response, array('success'=>false, 'message'=>'No homefolder given', 'data'=>''))->withStatus(400);
return;
}
$newHomefolder = $dms->getFolder($args['folderid']);
if (!$newHomefolder) {
return $this->renderer->json($response, array('success'=>false, 'message'=>'', 'data'=>'Folder not found.'))->withStatus(404);
return;
}
if($args['folderid'] == 0) {
$operation = $account->setHomeFolder(0);
} else {
$newHomefolder = $dms->getFolder($args['folderid']);
if (!$newHomefolder) {
return $this->renderer->json($response, array('success'=>false, 'message'=>'', 'data'=>'Folder not found.'))->withStatus(404);
return;
}
$operation = $account->setHomeFolder($newHomefolder->getId());
$operation = $account->setHomeFolder($newHomefolder->getId());
}
if (!$operation){
return $this->renderer->json($response, array('success'=>false, 'message'=>'', 'data'=>'Could not change homefolder.'))->withStatus(404);
}
return $this->renderer->json($response, array('success'=>true, 'message'=>'', 'data'=>''))->withStatus(200);
$data = $this->__getUserData($account);
return $this->renderer->json($response, array('success'=>true, 'message'=>'', 'data'=>$data))->withStatus(200);
} /* }}} */
function getUserById($request, $response, $args) { /* {{{ */
@ -2383,8 +2383,8 @@ final class SeedDMS_RestapiController { /* {{{ */
} /* }}} */
function getRoles($request, $response) { /* {{{ */
$dms = $this->container->dms;
$userobj = $this->container->userobj;
$dms = $this->container->get('dms');
$userobj = $this->container->get('userobj');
$check = $this->checkIfAdmin($request, $response);
if($check !== true)
return $check;
@ -2394,19 +2394,19 @@ final class SeedDMS_RestapiController { /* {{{ */
foreach($roles as $r)
$data[] = $this->__getRoleData($r);
return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$data), 200);
return $this->renderer->json($response, array('success'=>true, 'message'=>'', 'data'=>$data))->withStatus(200);
} /* }}} */
function createRole($request, $response) { /* {{{ */
$dms = $this->container->dms;
$userobj = $this->container->userobj;
$dms = $this->container->get('dms');
$userobj = $this->container->get('userobj');
$check = $this->checkIfAdmin($request, $response);
if($check !== true)
return $check;
$params = $request->getParsedBody();
if (empty($params['name'])) {
return $response->withJson(array('success'=>false, 'message'=>'Need a role name.', 'data'=>''), 400);
return $this->renderer->json($response, array('success'=>false, 'message'=>'Need a role name.', 'data'=>''))->withStatus(400);
}
$roleName = $params['name'];
@ -2414,16 +2414,16 @@ final class SeedDMS_RestapiController { /* {{{ */
$newRole = $dms->addRole($roleName, $roleType);
if ($newRole === false) {
return $response->withJson(array('success'=>false, 'message'=>'Role could not be created, maybe it already exists', 'data'=>''), 500);
return $this->renderer->json($response, array('success'=>false, 'message'=>'Role could not be created, maybe it already exists', 'data'=>''))->withStatus(500);
}
// $result = array('id'=>(int)$newGroup->getID());
return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$this->__getRoleData($newRole)), 201);
return $this->renderer->json($response, array('success'=>true, 'message'=>'', 'data'=>$this->__getRoleData($newRole)))->withStatus(201);
} /* }}} */
function deleteRole($request, $response, $args) { /* {{{ */
$dms = $this->container->dms;
$userobj = $this->container->userobj;
$dms = $this->container->get('dms');
$userobj = $this->container->get('userobj');
$check = $this->checkIfAdmin($request, $response);
if($check !== true)
@ -2431,18 +2431,18 @@ final class SeedDMS_RestapiController { /* {{{ */
if($role = $dms->getRole($args['id'])) {
if($result = $role->remove($userobj)) {
return $response->withJson(array('success'=>$result, 'message'=>'', 'data'=>''), 200);
return $this->renderer->json($response, array('success'=>$result, 'message'=>'', 'data'=>''))->withStatus(200);
} else {
return $response->withJson(array('success'=>$result, 'message'=>'Could not delete role', 'data'=>''), 500);
return $this->renderer->json($response, array('success'=>$result, 'message'=>'Could not delete role', 'data'=>''))->withStatus(500);
}
} else {
return $response->withJson(array('success'=>false, 'message'=>'No such role', 'data'=>''), 404);
return $this->renderer->json($response, array('success'=>false, 'message'=>'No such role', 'data'=>''))->withStatus(404);
}
} /* }}} */
function getRole($request, $response, $args) { /* {{{ */
$dms = $this->container->dms;
$userobj = $this->container->userobj;
$dms = $this->container->get('dms');
$userobj = $this->container->get('userobj');
$check = $this->checkIfAdmin($request, $response);
if($check !== true)
@ -2458,9 +2458,9 @@ final class SeedDMS_RestapiController { /* {{{ */
foreach ($role->getUsers() as $user) {
$data['users'][] = array('id' => (int)$user->getID(), 'login' => $user->getLogin());
}
return $response->withJson(array('success'=>true, 'message'=>'', 'data'=>$data), 200);
return $this->renderer->json($response, array('success'=>true, 'message'=>'', 'data'=>$data))->withStatus(200);
} else {
return $response->withJson(array('success'=>false, 'message'=>'No such role', 'data'=>''), 404);
return $this->renderer->json($response, array('success'=>false, 'message'=>'No such role', 'data'=>''))->withStatus(404);
}
} /* }}} */
@ -2530,6 +2530,7 @@ final class SeedDMS_RestapiController { /* {{{ */
$check = $this->checkIfAdmin($request, $response);
if($check !== true)
return $check;
if(ctype_digit($args['id']))
$group = $dms->getGroup($args['id']);
else {
@ -2552,21 +2553,21 @@ final class SeedDMS_RestapiController { /* {{{ */
$userobj = $this->container->get('userobj');
$check = $this->checkIfAdmin($request, $response);
if($check !== true)
if ($check !== true)
return $check;
if(ctype_digit($args['id']))
if (ctype_digit($args['id']))
$group = $dms->getGroup($args['id']);
else {
$group = $dms->getGroupByName($args['id']);
}
$params = $request->getParsedBody();
$params = $request->getParsedBody();
if (empty($params['userid'])) {
return $this->renderer->json($response, array('success'=>false, 'message'=>'Missing userid', 'data'=>''))->withStatus(400);
}
$userId = $params['userid'];
if(ctype_digit($userId))
if (ctype_digit($userId))
$user = $dms->getUser($userId);
else {
$user = $dms->getUserByLogin($userId);
@ -2578,20 +2579,16 @@ final class SeedDMS_RestapiController { /* {{{ */
$operationResult = false;
if ($operationType == 'add')
{
if ($operationType == 'add') {
$operationResult = $group->addUser($user);
}
if ($operationType == 'remove')
{
if ($operationType == 'remove') {
$operationResult = $group->removeUser($user);
}
if ($operationResult === false)
{
if ($operationResult === false) {
$message = 'Could not add user to the group.';
if ($operationType == 'remove')
{
if ($operationType == 'remove') {
$message = 'Could not remove user from group.';
}
return $this->renderer->json($response, array('success'=>false, 'message'=>'Something went wrong. ' . $message, 'data'=>''))->withStatus(500);
@ -2618,8 +2615,9 @@ final class SeedDMS_RestapiController { /* {{{ */
$userobj = $this->container->get('userobj');
$check = $this->checkIfAdmin($request, $response);
if($check !== true)
if ($check !== true)
return $check;
$params = $request->getParsedBody();
if (!isset($params['enable']))
{
@ -2656,12 +2654,9 @@ final class SeedDMS_RestapiController { /* {{{ */
$dms = $this->container->get('dms');
$userobj = $this->container->get('userobj');
if(!$userobj) {
return $this->renderer->json($response, array('success'=>false, 'message'=>'Not logged in', 'data'=>''))->withStatus(403);
}
if(!$userobj->isAdmin()) {
return $this->renderer->json($response, array('success'=>false, 'message'=>'No access on folder', 'data'=>''))->withStatus(403);
}
$check = $this->checkIfAdmin($request, $response);
if ($check !== true)
return $check;
if(!ctype_digit($args['id']) || $args['id'] == 0) {
return $this->renderer->json($response, array('success'=>false, 'message'=>'No folder given', 'data'=>''))->withStatus(400);
@ -2727,51 +2722,40 @@ final class SeedDMS_RestapiController { /* {{{ */
$params = $request->getParsedBody();
$userOrGroupIdInput = $params['id'];
if ($operationType == 'add')
{
if ($params['id'] == null)
{
if ($operationType == 'add') {
if ($params['id'] == null) {
return $this->renderer->json($response, array('success'=>false, 'message'=>'Please PUT the user or group Id', 'data'=>''))->withStatus(400);
}
if ($params['mode'] == null)
{
if ($params['mode'] == null) {
return $this->renderer->json($response, array('success'=>false, 'message'=>'Please PUT the access mode', 'data'=>''))->withStatus(400);
}
$modeInput = $params['mode'];
$mode = M_NONE;
if ($modeInput == 'read')
{
if ($modeInput == 'read') {
$mode = M_READ;
}
if ($modeInput == 'readwrite')
{
if ($modeInput == 'readwrite') {
$mode = M_READWRITE;
}
if ($modeInput == 'all')
{
if ($modeInput == 'all') {
$mode = M_ALL;
}
}
$userOrGroupId = $userOrGroupIdInput;
if(!ctype_digit($userOrGroupIdInput) && $userOrGroup == 'user')
{
if (!ctype_digit($userOrGroupIdInput) && $userOrGroup == 'user') {
$userOrGroupObj = $dms->getUserByLogin($userOrGroupIdInput);
}
if(!ctype_digit($userOrGroupIdInput) && $userOrGroup == 'group')
{
if (!ctype_digit($userOrGroupIdInput) && $userOrGroup == 'group') {
$userOrGroupObj = $dms->getGroupByName($userOrGroupIdInput);
}
if(ctype_digit($userOrGroupIdInput) && $userOrGroup == 'user')
{
if (ctype_digit($userOrGroupIdInput) && $userOrGroup == 'user') {
$userOrGroupObj = $dms->getUser($userOrGroupIdInput);
}
if(ctype_digit($userOrGroupIdInput) && $userOrGroup == 'group')
{
if (ctype_digit($userOrGroupIdInput) && $userOrGroup == 'group') {
$userOrGroupObj = $dms->getGroup($userOrGroupIdInput);
}
if (!$userOrGroupObj) {
@ -2781,29 +2765,23 @@ final class SeedDMS_RestapiController { /* {{{ */
$operationResult = false;
if ($operationType == 'add' && $userOrGroup == 'user')
{
if ($operationType == 'add' && $userOrGroup == 'user') {
$operationResult = $folder->addAccess($mode, $userOrGroupId, true);
}
if ($operationType == 'remove' && $userOrGroup == 'user')
{
if ($operationType == 'remove' && $userOrGroup == 'user') {
$operationResult = $folder->removeAccess($userOrGroupId, true);
}
if ($operationType == 'add' && $userOrGroup == 'group')
{
if ($operationType == 'add' && $userOrGroup == 'group') {
$operationResult = $folder->addAccess($mode, $userOrGroupId, false);
}
if ($operationType == 'remove' && $userOrGroup == 'group')
{
if ($operationType == 'remove' && $userOrGroup == 'group') {
$operationResult = $folder->removeAccess($userOrGroupId, false);
}
if ($operationResult === false)
{
if ($operationResult === false) {
$message = 'Could not add user/group access to this folder.';
if ($operationType == 'remove')
{
if ($operationType == 'remove') {
$message = 'Could not remove user/group access from this folder.';
}
return $this->renderer->json($response, array('success'=>false, 'message'=>'Something went wrong. ' . $message, 'data'=>''))->withStatus(500);
@ -2817,11 +2795,12 @@ final class SeedDMS_RestapiController { /* {{{ */
$dms = $this->container->get('dms');
$userobj = $this->container->get('userobj');
if(false === ($categories = $dms->getDocumentCategories())) {
if (false === ($categories = $dms->getDocumentCategories())) {
return $this->renderer->json($response, array('success'=>false, 'message'=>'Could not get categories', 'data'=>null))->withStatus(500);
}
$data = [];
foreach($categories as $category)
foreach ($categories as $category)
$data[] = $this->__getCategoryData($category);
return $this->renderer->json($response, array('success'=>true, 'message'=>'', 'data'=>$data))->withStatus(200);
@ -2831,12 +2810,12 @@ final class SeedDMS_RestapiController { /* {{{ */
$dms = $this->container->get('dms');
$userobj = $this->container->get('userobj');
if(!ctype_digit($args['id'])) {
if (!ctype_digit($args['id'])) {
return $this->renderer->json($response, array('success'=>false, 'message'=>'Invalid parameter', 'data'=>''))->withStatus(400);
}
$category = $dms->getDocumentCategory($args['id']);
if($category) {
if ($category) {
return $this->renderer->json($response, array('success'=>true, 'message'=>'', 'data'=>$this->__getCategoryData($category)))->withStatus(200);
} else {
return $this->renderer->json($response, array('success'=>false, 'message'=>'No such category', 'data'=>''))->withStatus(404);
@ -2849,7 +2828,7 @@ final class SeedDMS_RestapiController { /* {{{ */
$logger = $this->container->get('logger');
$check = $this->checkIfAdmin($request, $response);
if($check !== true)
if ($check !== true)
return $check;
$params = $request->getParsedBody();
@ -2858,7 +2837,7 @@ final class SeedDMS_RestapiController { /* {{{ */
}
$catobj = $dms->getDocumentCategoryByName($params['name']);
if($catobj) {
if ($catobj) {
return $this->renderer->json($response, array('success'=>false, 'message'=>'Category already exists', 'data'=>''))->withStatus(409);
} else {
if($data = $dms->addDocumentCategory($params['name'])) {
@ -2875,11 +2854,11 @@ final class SeedDMS_RestapiController { /* {{{ */
$userobj = $this->container->get('userobj');
$check = $this->checkIfAdmin($request, $response);
if($check !== true)
if ($check !== true)
return $check;
if($category = $dms->getDocumentCategory($args['id'])) {
if($result = $category->remove()) {
if ($category = $dms->getDocumentCategory($args['id'])) {
if ($result = $category->remove()) {
return $this->renderer->json($response, array('success'=>$result, 'message'=>'', 'data'=>''))->withStatus(200);
} else {
return $this->renderer->json($response, array('success'=>$result, 'message'=>'Could not delete category', 'data'=>''))->withStatus(500);
@ -2899,16 +2878,15 @@ final class SeedDMS_RestapiController { /* {{{ */
$userobj = $this->container->get('userobj');
$check = $this->checkIfAdmin($request, $response);
if($check !== true)
if ($check !== true)
return $check;
if(!ctype_digit($args['id'])) {
if (!ctype_digit($args['id'])) {
return $this->renderer->json($response, array('success'=>false, 'message'=>'Invalid parameter', 'data'=>''))->withStatus(400);
}
$params = $request->getParsedBody();
if (empty($params['name']))
{
if (empty($params['name'])) {
return $this->renderer->json($response, array('success'=>false, 'message'=>'You must supply a new name', 'data'=>''))->withStatus(400);
}
@ -2936,12 +2914,28 @@ final class SeedDMS_RestapiController { /* {{{ */
$attrdefs = $dms->getAllAttributeDefinitions();
$data = [];
foreach($attrdefs as $attrdef)
foreach ($attrdefs as $attrdef)
$data[] = $this->__getAttributeDefinitionData($attrdef);
return $this->renderer->json($response, array('success'=>true, 'message'=>'', 'data'=>$data))->withStatus(200);
} /* }}} */
function getAttributeDefinition($request, $response, $args) { /* {{{ */
$dms = $this->container->get('dms');
$userobj = $this->container->get('userobj');
if (!ctype_digit($args['id'])) {
return $this->renderer->json($response, array('success'=>false, 'message'=>'Invalid parameter', 'data'=>''))->withStatus(400);
}
$attrdef = $dms->getAttributeDefinition($args['id']);
if ($attrdef) {
return $this->renderer->json($response, array('success'=>true, 'message'=>'', 'data'=>$this->__getAttributeDefinitionData($attrdef)))->withStatus(200);
} else {
return $this->renderer->json($response, array('success'=>false, 'message'=>'No such attributedefinition', 'data'=>''))->withStatus(404);
}
} /* }}} */
/**
* Updates the name of an existing attribute definition
*
@ -2952,10 +2946,10 @@ final class SeedDMS_RestapiController { /* {{{ */
$userobj = $this->container->get('userobj');
$check = $this->checkIfAdmin($request, $response);
if($check !== true)
if ($check !== true)
return $check;
if(!ctype_digit($args['id'])) {
if (!ctype_digit($args['id'])) {
return $this->renderer->json($response, array('success'=>false, 'message'=>'Invalid parameter', 'data'=>''))->withStatus(400);
}
@ -2988,12 +2982,12 @@ final class SeedDMS_RestapiController { /* {{{ */
$userobj = $this->container->get('userobj');
$check = $this->checkIfAdmin($request, $response);
if($check !== true)
if ($check !== true)
return $check;
if(ctype_digit($args['id']))
if (ctype_digit($args['id'])) {
$folder = $dms->getFolder($args['id']);
else {
} else {
$folder = $dms->getFolderByName($args['id']);
}
if (!$folder) {
@ -3008,11 +3002,11 @@ final class SeedDMS_RestapiController { /* {{{ */
function getStatsTotal($request, $response) { /* {{{ */
$dms = $this->container->get('dms');
$check = $this->checkIfAdmin($request, $response);
if($check !== true)
if ($check !== true)
return $check;
$data = [];
foreach(array('docstotal', 'folderstotal', 'userstotal') as $type) {
foreach (array('docstotal', 'folderstotal', 'userstotal') as $type) {
$total = $dms->getStatisticalData($type);
$data[$type] = $total;
}
@ -3040,7 +3034,7 @@ final class SeedDMS_TestController { /* {{{ */
$logger = $this->container->get('logger');
$v = new SeedDMS_Version();
return $this->renderer->json($response, ['success'=>true, 'message'=>'This is '.$v->banner(), 'data'=>['major'=>$v->majorVersion(), 'minor'=>$v->minorVersion(), 'subminor'=>$v->subminorVersion()]]);
return $this->renderer->json($response, ['success'=>true, 'message'=>'This is '.$v->banner(), 'data'=>['major'=>$v->majorVersion(), 'minor'=>$v->minorVersion(), 'subminor'=>$v->subminorVersion(), 'version'=>$v->majorVersion().'.'.$v->minorVersion().'.'.$v->subminorVersion()]]);
} /* }}} */
} /* }}} */
@ -3141,7 +3135,7 @@ class RestapiAuthMiddleware implements MiddlewareInterface { /* {{{ */
$logger->log("Received preflight options request", PEAR_LOG_DEBUG);
} elseif(!in_array($path, array('/login')) && substr($path, 0, 6) != '/echo/' && $path != '/version') {
$userobj = null;
$logger->log(var_export($environment, true), PEAR_LOG_DEBUG);
// $logger->log(var_export($environment, true), PEAR_LOG_DEBUG);
if(!empty($environment['HTTP_AUTHORIZATION']) && !empty($settings->_apiKey) && !empty($settings->_apiUserId)) {
$logger->log("Authorization key: ".$environment['HTTP_AUTHORIZATION'], PEAR_LOG_DEBUG);
if($settings->_apiKey == $environment['HTTP_AUTHORIZATION']) {
@ -3293,6 +3287,11 @@ $app->addErrorMiddleware(true, true, true);
$app->add(new RestapiCorsMiddleware($container));
/* Without the BodyParsingMiddleware the body of PUT Request will
* not be parsed in Slim4
*/
$app->addBodyParsingMiddleware();
// Make CORS preflighted request possible
$app->options('/{routes:.+}', function ($request, $response, $args) {
return $response;
@ -3375,6 +3374,7 @@ $app->delete('/categories/{id}', \SeedDMS_RestapiController::class.':deleteCateg
$app->post('/categories', \SeedDMS_RestapiController::class.':createCategory');
$app->put('/categories/{id}/name', \SeedDMS_RestapiController::class.':changeCategoryName');
$app->get('/attributedefinitions', \SeedDMS_RestapiController::class.':getAttributeDefinitions');
$app->get('/attributedefinitions/{id}', \SeedDMS_RestapiController::class.':getAttributeDefinition');
$app->put('/attributedefinitions/{id}/name', \SeedDMS_RestapiController::class.':changeAttributeDefinitionName');
$app->get('/echo/{data}', \SeedDMS_TestController::class.':echoData');
$app->get('/version', \SeedDMS_TestController::class.':version');

View File

@ -13,9 +13,6 @@ info:
license:
name: "Apache 2.0"
url: "http://www.apache.org/licenses/LICENSE-2.0.html"
servers:
- url:
description: Current host server
host: "<?php echo $_SERVER['HTTP_HOST']; ?>"
basePath: "<?php echo $settings->_httpRoot; ?>restapi/index.php"
tags:
@ -406,6 +403,92 @@ paths:
$ref: "#/definitions/ApiResponse"
security:
- api_key: []
/users/{id}/quota:
put:
tags:
- "user"
summary: "Change quota of user by ID"
description: "Change the quota of a single user"
operationId: "changeUserQuota"
produces:
- "application/json"
consumes:
- "application/x-www-form-urlencoded"
parameters:
- name: "id"
in: "path"
description: "ID of user"
required: true
type: "integer"
format: "int64"
- name: "quota"
in: "formData"
required: true
type: "integer"
format: "int64"
description: "New quota"
responses:
"200":
description: "successful operation"
schema:
$ref: "#/definitions/ApiResponse"
"400":
description: "Invalid parameter"
schema:
$ref: "#/definitions/ApiResponse"
"403":
description: "No access"
schema:
$ref: "#/definitions/ApiResponse"
"404":
description: "User not found"
schema:
$ref: "#/definitions/ApiResponse"
security:
- api_key: []
/users/{id}/homefolder/{folderid}:
put:
tags:
- "user"
summary: "Change quota of user by ID"
description: "Change the quota of a single user"
operationId: "changeUserHomefolder"
produces:
- "application/json"
consumes:
- "application/x-www-form-urlencoded"
parameters:
- name: "id"
in: "path"
description: "ID of user"
required: true
type: "integer"
format: "int64"
- name: "folderid"
in: "path"
description: "ID of folder"
required: true
type: "integer"
format: "int64"
responses:
"200":
description: "successful operation"
schema:
$ref: "#/definitions/ApiResponse"
"400":
description: "Invalid parameter"
schema:
$ref: "#/definitions/ApiResponse"
"403":
description: "No access"
schema:
$ref: "#/definitions/ApiResponse"
"404":
description: "User or folder not found"
schema:
$ref: "#/definitions/ApiResponse"
security:
- api_key: []
/groups:
get:
tags:
@ -466,6 +549,161 @@ paths:
$ref: "#/definitions/ApiResponse"
security:
- api_key: []
/groups/{id}:
get:
tags:
- "group"
summary: "Find group by ID"
description: "Returns a single group"
operationId: "getGroupById"
produces:
- "application/json"
parameters:
- name: "id"
in: "path"
description: "ID of group to return"
required: true
type: "integer"
format: "int64"
responses:
"200":
description: "successful operation"
schema:
$ref: "#/definitions/ApiResponseUser"
"404":
description: "Group not found"
schema:
$ref: "#/definitions/ApiResponse"
security:
- api_key: []
delete:
tags:
- "group"
summary: "Delete group by ID"
description: "Delete a single group"
operationId: "deleteGroupById"
produces:
- "application/json"
parameters:
- name: "id"
in: "path"
description: "ID of group to delete"
required: true
type: "integer"
format: "int64"
responses:
"200":
description: "successful operation"
schema:
$ref: "#/definitions/ApiResponse"
"500":
description: "Error deleting group"
schema:
$ref: "#/definitions/ApiResponse"
"403":
description: "No access"
schema:
$ref: "#/definitions/ApiResponse"
"404":
description: "Group not found"
schema:
$ref: "#/definitions/ApiResponse"
security:
- api_key: []
/groups/{id}/addUser:
put:
tags:
- "group"
summary: "Add user to group"
description: "Adds an existing user as a new member of a group"
operationId: "addUserToGroup"
produces:
- "application/json"
consumes:
- "application/x-www-form-urlencoded"
parameters:
- name: "id"
in: "path"
description: "ID of group"
required: true
type: "integer"
format: "int64"
- name: "userid"
in: "formData"
description: "ID of user"
required: true
type: "integer"
format: "int64"
responses:
"200":
description: "successful operation"
schema:
$ref: "#/definitions/ApiResponse"
"400":
description: "Invalid parameter"
schema:
$ref: "#/definitions/ApiResponse"
"403":
description: "No access"
schema:
$ref: "#/definitions/ApiResponse"
"404":
description: "User or group not found"
schema:
$ref: "#/definitions/ApiResponse"
"500":
description: "Internal error"
schema:
$ref: "#/definitions/ApiResponse"
security:
- api_key: []
/groups/{id}/removeUser:
put:
tags:
- "group"
summary: "Remove user from group"
description: "Remove a user as a new member of a group"
operationId: "removeUserToGroup"
produces:
- "application/json"
consumes:
- "application/x-www-form-urlencoded"
parameters:
- name: "id"
in: "path"
description: "ID of group"
required: true
type: "integer"
format: "int64"
- name: "userid"
in: "formData"
description: "ID of user"
required: true
type: "integer"
format: "int64"
responses:
"200":
description: "successful operation"
schema:
$ref: "#/definitions/ApiResponse"
"400":
description: "Invalid parameter"
schema:
$ref: "#/definitions/ApiResponse"
"403":
description: "No access"
schema:
$ref: "#/definitions/ApiResponse"
"404":
description: "User or group not found"
schema:
$ref: "#/definitions/ApiResponse"
"500":
description: "Internal error"
schema:
$ref: "#/definitions/ApiResponse"
security:
- api_key: []
/document/{id}:
get:
tags:
@ -565,7 +803,8 @@ paths:
"200":
description: "preview image file"
schema:
type: "file"
type: "string"
format: "binary"
"403":
description: "No access"
schema:
@ -598,7 +837,8 @@ paths:
"200":
description: "content file"
schema:
type: "file"
type: "string"
format: "binary"
"403":
description: "No access"
schema:
@ -637,7 +877,8 @@ paths:
"200":
description: "attached file"
schema:
type: "file"
type: "string"
format: "binary"
"403":
description: "No access"
schema:
@ -676,7 +917,8 @@ paths:
"200":
description: "content file"
schema:
type: "file"
type: "string"
format: "binary"
"403":
description: "No access"
schema:
@ -1510,7 +1752,7 @@ paths:
produces:
- "application/json"
consumes:
- "application/x-www-form-urlencoded"
- "multipart/form-data"
parameters:
- name: "id"
in: "path"
@ -1557,6 +1799,53 @@ paths:
$ref: "#/definitions/ApiResponse"
security:
- api_key: []
/folder/{id}/owner/{userid}:
post:
tags:
- "folder"
summary: "Set owner of folder"
description: "Set owner of folder"
operationId: "setFolderOwner"
produces:
- "application/json"
consumes:
- "application/x-www-form-urlencoded"
parameters:
- name: "id"
in: "path"
description: "ID of folder."
type: "integer"
required: true
format: "int64"
- name: "userid"
in: "path"
description: "ID of user."
type: "integer"
required: true
format: "int64"
responses:
"201":
description: "successful operation"
schema:
$ref: "#/definitions/ApiResponse"
"400":
description: "No folder or user given"
schema:
$ref: "#/definitions/ApiResponse"
"403":
description: "No access"
schema:
$ref: "#/definitions/ApiResponse"
"404":
description: "Folder not found"
schema:
$ref: "#/definitions/ApiResponse"
"500":
description: "Internal error"
schema:
$ref: "#/definitions/ApiResponse"
security:
- api_key: []
/categories:
get:
tags:
@ -1782,15 +2071,21 @@ paths:
description: "Invalid status value"
security:
- api_key: []
/echo:
/echo/{data}:
get:
tags:
- "misc"
summary: "Return what was send in the body"
description: "Just returns the body content"
summary: "Return what was send in the path"
description: "Just returns the path"
operationId: "echoData"
produces:
- "application/json"
parameters:
- name: "data"
in: "path"
description: "Data to be echoed"
required: true
type: "string"
responses:
"200":
description: "successful operation"

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);
$extracontent['below_title'] = $this->getListRowPath($document);
$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 {
@ -717,7 +721,7 @@ background-image: linear-gradient(to bottom, #882222, #111111);;
$content .= '>';
$content .= $menuitem['label'];
if(!empty($menuitem['badge']))
$content .= '<span class="badge'.($menuitem['badge'] > 0 ? ' badge-info' : '').' badge-right">'.$menuitem['badge']."</span>";
$content .= '<span class="badge'.(isset($menuitem['badge-type']) ? ' badge-'.$menuitem['badge-type'] : ($menuitem['badge'] > 0 ? ' badge-info' : '')).' badge-right">'.$menuitem['badge']."</span>";
$content .= ' </a>'."\n";
$content .= " </li>\n";
}
@ -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')) {
@ -815,7 +820,10 @@ background-image: linear-gradient(to bottom, #882222, #111111);;
}
}
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'));
@ -838,6 +846,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']);
@ -899,7 +908,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'));
@ -1634,9 +1646,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">
@ -1651,7 +1663,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>
@ -2111,6 +2123,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 : '');
@ -2147,10 +2168,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;
@ -2170,10 +2200,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;
@ -2667,9 +2706,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;
@ -2678,6 +2717,22 @@ $(function() {
echo $text;
} /* }}} */
/**
* Wrap text in inline editing tags
*
* @param string text
*/
function printInlineEditOriginalName($text, $object){ /* {{{ */
if(!empty($this->params['settings']->_inlineEditing)) {
echo "<span class=\"editorigname editable\" contenteditable=\"true\"";
if($object->isType('documentcontent'))
echo " data-content=\"".$object->getId()."\" data-formtoken=\"".createFormKey('setoriginalname')."\"";
echo ">".$text;
echo "</span>\n";
} else
echo $text;
} /* }}} */
/**
* Print button with link for deleting a document
*
@ -3281,13 +3336,83 @@ $('body').on('click', '[id^=\"table-row-folder\"] td:nth-child(2)', function(ev)
$content .= '<span title="'.getOverallStatusText($status["status"]).': '.($workflow ? htmlspecialchars($workflow->getName()) : '').'">'.($workflowstate ? htmlspecialchars($workflowstate->getName()) : '').'</span>';
} else {
$content .= $this->getOverallStatusIcon($status['status']);
if($status['status'] == S_DRAFT_REV)
$content .= '<br>'.$this->documentListRowReviewBar($latestContent);
elseif($status['status'] == S_DRAFT_APP)
$content .= '<br>'.$this->documentListRowApprovalBar($latestContent);
elseif($status['status'] == S_IN_REVISION)
$content .= '<br>'.$this->documentListRowRevisionBar($latestContent);
}
$content .= "</div>";
return $content;
} /* }}} */
function documentListRowReceptionBar($latestContent) { /* {{{ */
$accessop = $this->params['accessobject'];
$content = '';
if($accessop->check_view_access($this, array('action'=>'receptionBar')) /*$owner->getID() == $user->getID()*/ && $receiptStatus = $latestContent->getReceiptStatus()) {
$rstat = array('-1'=>0, '0'=>0, '1'=>0, '-2'=>0);
$allcomments = array('-1'=>array(), '1'=>array());
foreach ($receiptStatus as $r) {
$rstat[''.$r['status']]++;
if($r['comment']) {
// $allcomments[''.$r['status']][] = htmlspecialchars($r['comment']);
$m5 = md5(trim($r['comment']));
if(isset($allcomments[''.$r['status']][$m5]))
$allcomments[''.$r['status']][$m5]['n']++;
else
$allcomments[''.$r['status']][$m5] = array('n'=>1, 'c'=>htmlspecialchars(trim($r['comment'])));
}
}
$totalreceipts = $rstat['-1'] + $rstat['0'] + $rstat['1'];
if($totalreceipts) {
$content .= "
<div class=\"progress\">
<div class=\"bar bar-success\" 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=\"bar bar-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>";
}
}
return $content;
} /* }}} */
function documentListRowReviewBar($latestContent) { /* {{{ */
$accessop = $this->params['accessobject'];
$content = '';
$stat = [];
if($accessop->check_view_access($this, array('action'=>'reviewBar')) /*$owner->getID() == $user->getID()*/ && $reviewStatus = $latestContent->getReviewStatus(1, $stat)) {
$content .= getMLText('n_of_m_reviewed', ['reviewed'=>$stat['1'], 'total'=>$stat["1"]+$stat["0"]]);
}
return $content;
} /* }}} */
function documentListRowApprovalBar($latestContent) { /* {{{ */
$accessop = $this->params['accessobject'];
$content = '';
$stat = [];
if($accessop->check_view_access($this, array('action'=>'approvalBar')) /*$owner->getID() == $user->getID()*/ && $approvalStatus = $latestContent->getApprovalStatus(1, $stat)) {
$content .= getMLText('n_of_m_approved', ['approved'=>$stat['1'], 'total'=>$stat["1"]+$stat["0"]]);
}
return $content;
} /* }}} */
function documentListRowRevisionBar($latestContent) { /* {{{ */
$accessop = $this->params['accessobject'];
$content = '';
$stat = [];
if($accessop->check_view_access($this, array('action'=>'revisionBar')) /*$owner->getID() == $user->getID()*/ && $revisionStatus = $latestContent->getRevisionStatus(1, $stat)) {
$content .= getMLText('n_of_m_revised', ['revised'=>$stat['1'], 'total'=>$stat["1"]+$stat["0"]]);
}
return $content;
} /* }}} */
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'];
@ -3317,7 +3442,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>';
@ -3350,6 +3478,8 @@ $('body').on('click', '[id^=\"table-row-folder\"] td:nth-child(2)', function(ev)
* @param object $document
* @param object $previewer
* @param boolean $skipcont set to true if embrasing tr shall be skipped
* In that case call documentListRowStart() before and documentListRowEnd()
* after this method.
* @param integer $version set to a value != 0 for a specific version, otherwise
* the latest version will be used
* @param integer $context specifies the type of list. Can be any value
@ -3367,6 +3497,7 @@ $('body').on('click', '[id^=\"table-row-folder\"] td:nth-child(2)', function(ev)
$enableClipboard = $this->params['enableclipboard'];
$accessop = $this->params['accessobject'];
$onepage = $this->params['onepage'];
$defaultthumbnailclick = $this->params['settings']->_defaultThumbnailClick ?? 'download';
$content = '';
@ -3396,19 +3527,20 @@ $('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;
else {
if($accessop->check_controller_access('Download', array('action'=>'version')))
$content .= "<a draggable=\"false\" href=\"".$this->params['settings']->_httpRoot."op/op.Download.php?documentid=".$docID."&version=".$version."\">";
$previewmode = $defaultthumbnailclick == 'viewonline' ? 'ViewOnline' : 'Download';
if($accessop->check_controller_access($previewmode, array('action'=>'version')))
$content .= "<a draggable=\"false\" href=\"".$this->params['settings']->_httpRoot."op/op.".$previewmode.".php?documentid=".$docID."&version=".$version."\">";
if($previewer && $previewer->hasPreview($latestContent)) {
$content .= "<img draggable=\"false\" class=\"mimeicon\" width=\"".$previewwidth."\" src=\"".$this->params['settings']->_httpRoot."op/op.Preview.php?documentid=".$document->getID()."&version=".$latestContent->getVersion()."&width=".$previewwidth."\" title=\"".htmlspecialchars($latestContent->getMimeType())."\">";
} else {
$content .= "<img draggable=\"false\" class=\"mimeicon\" width=\"".$previewwidth."\" src=\"".$this->getMimeIcon($latestContent->getFileType())."\" ".($previewwidth ? "width=\"".$previewwidth."\"" : "")."\" title=\"".htmlspecialchars($latestContent->getMimeType())."\">";
}
if($accessop->check_controller_access('Download', array('action'=>'version')))
if($accessop->check_controller_access($previewmode, array('action'=>'version')))
$content .= "</a>";
}
} else
@ -3461,7 +3593,7 @@ $('body').on('click', '[id^=\"table-row-folder\"] td:nth-child(2)', function(ev)
$content .= "<br />";
foreach($categories as $category) {
$color = $category->getColor() ? $category->getColor() : substr(md5($category->getName()), 0, 6);
$content .= "<span class=\"badge\" style=\"background-color: #".$color."; color: #".self::getContrastColor($color).";\">".$category->getName()."</span> ";
$content .= "<span class=\"badge\" style=\"background-color: #".$color."; color: #".self::getContrastColor($color).";\">".htmlspecialchars($category->getName())."</span> ";
}
}
if(!empty($extracontent['bottom_title']))
@ -3475,31 +3607,8 @@ $('body').on('click', '[id^=\"table-row-folder\"] td:nth-child(2)', function(ev)
$content .= "<td nowrap>";
$content .= $this->documentListRowStatus($latestContent);
if($accessop->check_view_access($this, array('action'=>'receptionBar')) /*$owner->getID() == $user->getID()*/ && $receiptStatus = $latestContent->getReceiptStatus()) {
$rstat = array('-1'=>0, '0'=>0, '1'=>0, '-2'=>0);
$allcomments = array('-1'=>array(), '1'=>array());
foreach ($receiptStatus as $r) {
$rstat[''.$r['status']]++;
if($r['comment']) {
// $allcomments[''.$r['status']][] = htmlspecialchars($r['comment']);
$m5 = md5(trim($r['comment']));
if(isset($allcomments[''.$r['status']][$m5]))
$allcomments[''.$r['status']][$m5]['n']++;
else
$allcomments[''.$r['status']][$m5] = array('n'=>1, 'c'=>htmlspecialchars(trim($r['comment'])));
}
}
$totalreceipts = $rstat['-1'] + $rstat['0'] + $rstat['1'];
if($totalreceipts) {
$content .= "
<div class=\"progress\">
<div class=\"bar bar-success\" 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=\"bar bar-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>";
}
}
$content .= "</small></td>";
// $content .= "<td>".$version."</td>";
$content .= $this->documentListRowReceptionBar($latestContent);
$content .= "</td>";
$content .= "<td>";
$content .= $this->documentListRowAction($document, $previewer, $skipcont, $version, $extracontent);
$content .= "</td>";
@ -3557,6 +3666,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'];
@ -3589,7 +3699,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);
@ -111,6 +111,8 @@ class SeedDMS_View_Clipboard extends SeedDMS_Theme_Style {
*/
public function documentClipboardRow($document, $previewer) { /* {{{ */
$dms = $this->params['dms'];
$accessop = $this->params['accessobject'];
$defaultthumbnailclick = $this->params['settings']->_defaultThumbnailClick ?? 'download';
$content = '';
$comment = $document->getComment();
@ -125,17 +127,23 @@ class SeedDMS_View_Clipboard extends SeedDMS_Theme_Style {
$content .= $this->documentListRowStart($document);
$content .= '<td>';
if (file_exists($dms->contentDir . $latestContent->getPath())) {
$content .= "<td><a draggable=\"false\" href=\"".$this->params['settings']->_httpRoot."op/op.Download.php?documentid=".$document->getID()."&version=".$version."\">";
$previewmode = $defaultthumbnailclick == 'viewonline' ? 'ViewOnline' : 'Download';
if($accessop->check_controller_access($previewmode, array('action'=>'version')))
$content .= "<a draggable=\"false\" href=\"".$this->params['settings']->_httpRoot."op/op.".$previewmode.".php?documentid=".$document->getID()."&version=".$version."\">";
if($previewer->hasPreview($latestContent)) {
$content .= "<img draggable=\"false\" class=\"mimeicon\" width=\"40\"src=\"".$this->params['settings']->_httpRoot."op/op.Preview.php?documentid=".$document->getID()."&version=".$latestContent->getVersion()."&width=40\" title=\"".htmlspecialchars($latestContent->getMimeType())."\">";
} else {
$content .= "<img draggable=\"false\" class=\"mimeicon\" src=\"".$this->getMimeIcon($latestContent->getFileType())."\" title=\"".htmlspecialchars($latestContent->getMimeType())."\">";
}
$content .= "</a></td>";
} else
$content .= "<td><img draggable=\"false\" class=\"mimeicon\" src=\"".$this->getMimeIcon($latestContent->getFileType())."\" title=\"".htmlspecialchars($latestContent->getMimeType())."\"></td>";
if($accessop->check_controller_access($previewmode, array('action'=>'version')))
$content .= "</a>";
} else {
$content .= "<img draggable=\"false\" class=\"mimeicon\" src=\"".$this->getMimeIcon($latestContent->getFileType())."\" title=\"".htmlspecialchars($latestContent->getMimeType())."\">";
}
$content .= '</td>';
$content .= "<td><a draggable=\"false\" href=\"out.ViewDocument.php?documentid=".$document->getID()."&showtree=".showtree()."\">" . htmlspecialchars($document->getName()) . "</a>";
/*
if($comment) {

View File

@ -200,6 +200,18 @@ class SeedDMS_View_DocumentVersionDetail extends SeedDMS_Theme_Style {
// $this->contentContainerStart();
?>
<table class="table table-condensed table-sm">
<?php
if($user->isAdmin()) {
echo "<tr>";
echo "<td>".getMLText("id").":</td>\n";
echo "<td>".htmlspecialchars($document->getID())."</td>\n";
echo "</tr>";
}
?>
<tr>
<td><?php printMLText("name");?>:</td>
<td><?php $this->printInlineEditDocumentName(htmlspecialchars($document->getName()), $document);?></td>
</tr>
<tr>
<td><?php printMLText("owner");?>:</td>
<td>
@ -326,6 +338,7 @@ class SeedDMS_View_DocumentVersionDetail extends SeedDMS_Theme_Style {
$this->columnEnd();
$this->columnStart(5);
print "<ul class=\"unstyled\">\n";
print "<li>".htmlspecialchars($version->getOriginalFileName())."</li>";
print "<li>".getMLText('version').": ".$version->getVersion()."</li>\n";
if ($file_exists)
@ -353,7 +366,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";
}
}
}
@ -600,7 +613,7 @@ class SeedDMS_View_DocumentVersionDetail extends SeedDMS_Theme_Style {
$this->contentHeading(getMLText("status"));
$this->contentContainerStart();
$statuslog = $version->getStatusLog();
echo "<table class=\"table table-condensed\"><thead>";
echo "<table class=\"table table-condensed table-sm\"><thead>";
echo "<th>".getMLText('date')."</th><th>".getMLText('status')."</th><th>".getMLText('user')."</th><th>".getMLText('comment')."</th></tr>\n";
echo "</thead><tbody>";
foreach($statuslog as $entry) {

View File

@ -140,7 +140,7 @@ $(document).ready( function() {
if(!$nodocumentformfields || !in_array('categories', $nodocumentformfields)) {
$options = array();
foreach($categories as $category) {
$options[] = array($category->getID(), $category->getName(), in_array($category, $document->getCategories()));
$options[] = array($category->getID(), htmlspecialchars($category->getName()), in_array($category, $document->getCategories()));
}
$this->formField(
getMLText("categories"),

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);
@ -232,7 +251,7 @@ class SeedDMS_View_ExtensionMgr extends SeedDMS_Theme_Style {
echo "</td>";
echo "<td>".$extconf['title'];
echo "<br /><small>".$extconf['description']."</small>";
echo "<br /><small>".getMLText('author').": <a href=\"mailto:".htmlspecialchars($extconf['author']['email'])."\">".$extconf['author']['name']."</a>, ".$extconf['author']['company']."</small>";
echo "<br /><small>".getMLText('author').": <a href=\"mailto:".htmlspecialchars($extconf['author']['email'])."\">".$extconf['author']['name']."</a>, ".(!empty($extconf['author']['company']) ? $extconf['author']['company'] : '')."</small>";
if($errmsgs)
echo "<div><img src=\"".$this->getImgPath("attention.gif")."\"> ".implode('<br /><img src="'.$this->getImgPath("attention.gif").'"> ', $errmsgs)."</div>";
echo "</td>";
@ -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) {
@ -275,7 +296,7 @@ class SeedDMS_View_ExtensionMgr extends SeedDMS_Theme_Style {
$extmgr = $this->params['extmgr'];
$extconf = $extmgr->getExtensionConfiguration();
$currenttab = $this->params['currenttab'];
$this->htmlStartPage(getMLText("admin_tools"));
$this->globalNavigation();
$this->contentStart();
@ -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

@ -31,6 +31,8 @@
*/
class SeedDMS_View_LogManagement extends SeedDMS_Theme_Style {
protected $logdir;
function filelist($entries, $mode) { /* {{{ */
$accessop = $this->params['accessobject'];
$print_header = true;

View File

@ -31,6 +31,18 @@
*/
class SeedDMS_View_ManageNotify extends SeedDMS_Theme_Style {
protected $dms;
protected $user;
protected $cachedir;
protected $previewwidth;
protected $timeout;
protected $xsendfile;
// Get list of subscriptions for documents or folders for user or groups
function getNotificationList($as_group, $folders) { /* {{{ */

View File

@ -93,7 +93,7 @@ $(document).ready( function() {
if($passwordexpiration > 0) {
print "<tr>\n";
print "<td>".getMLText("password_expiration")." : </td>\n";
print "<td>".htmlspecialchars($user->getPwdExpiration())."</td>\n";
print "<td>".htmlspecialchars($user->getPwdExpiration() ?? '')."</td>\n";
print "</tr>\n";
}
print "<tr>\n";

View File

@ -381,7 +381,7 @@ class SeedDMS_View_ObjectCheck extends SeedDMS_Theme_Style {
$class = ' class="error"';
}
}
print "<tr".$class."><td>".$doc->getId()."</td><td>".$version->getVersion()."</td><td>".$version->getOriginalFileName()."</td><td>".$version->getMimeType()."</td><td>".$version->getFileType()."</td>";
print "<tr".$class."><td>".$doc->getId()."</td><td>".$version->getVersion()."</td><td>".htmlspecialchars($version->getOriginalFileName())."</td><td>".$version->getMimeType()."</td><td>".$version->getFileType()."</td>";
echo "<td>";
echo $msg;
echo "</td>";
@ -702,6 +702,7 @@ class SeedDMS_View_ObjectCheck extends SeedDMS_Theme_Style {
$this->printDeleteFolderButtonJs();
$this->printDeleteDocumentButtonJs();
$this->printClickDocumentJs();
$this->printClickFolderJs();
?>
$(document).ready( function() {
$('body').on('click', 'ul.sidenav li a', function(ev){
@ -760,7 +761,6 @@ $(document).ready( function() {
$setchecksum = $this->params['setchecksum'];
$rootfolder = $this->params['rootfolder'];
$repairobjects = $this->params['repairobjects'];
$this->enableClipboard = $this->params['enableclipboard'];
$this->htmlStartPage(getMLText("admin_tools"));
$this->globalNavigation();
@ -784,7 +784,7 @@ $(document).ready( function() {
$menuitems = [];
$menuitems[] = array('label'=>getMLText('duplicate_content'), 'badge'=>count($duplicateversions), 'attributes'=>array(array('data-href', "#duplicate_content"), array('data-action', "listDuplicateContent")));
$menuitems[] = array('label'=>getMLText('duplicate_sequences'), 'badge'=>count($duplicatesequences), 'attributes'=>array(array('data-href', "#duplicate_sequences"), array('data-action', "listDuplicateSequence")));
$menuitems[] = array('label'=>getMLText('link_to_itself'), 'badge'=>count($docslinktoitself), 'attributes'=>array(array('data-href', "#link_to_itself"), array('data-action', "listLinkToItself")));
$menuitems[] = array('label'=>getMLText('docs_with_link_to_itself'), 'badge'=>count($docslinktoitself), 'attributes'=>array(array('data-href', "#link_to_itself"), array('data-action', "listLinkToItself")));
$menuitems[] = array('label'=>getMLText('docs_in_revision_no_access'), 'badge'=>count($docsinrevisionnoaccess), 'attributes'=>array(array('data-href', "#inrevision_no_access"), array('data-action', "listDocsInRevisionNoAccess")));
$menuitems[] = array('label'=>getMLText('docs_in_revision_disabled'), 'badge'=>count($docsinrevisiondisabled), 'attributes'=>array(array('data-href', "#inrevision_disabled"), array('data-action', "listDocsInRevisionDisabled")));
$menuitems[] = array('label'=>getMLText('docs_in_reception_no_access'), 'badge'=>count($docsinreceptionnoaccess), 'attributes'=>array(array('data-href', "#inreception_no_access"), array('data-action', "listDocsInReceptionNoAccess")));

View File

@ -117,7 +117,8 @@ $(document).ready(function() {
<form class="form-horizontal" method="post" action="../op/op.ReceiptDocument.php" id="form<?= $receipttype ?>" name="form<?= $receipttype ?>">
<?php echo createHiddenFieldWithKey('receiptdocument'); ?>
<?php
$this->contentContainerStart();
if (!$noreceiptcomment || $receiptreject)
$this->contentContainerStart();
if(!$noreceiptcomment) {
$this->formField(
getMLText("comment"),
@ -149,7 +150,8 @@ $(document).ready(function() {
} else {
echo '<input type="hidden" name="receiptStatus" value="1" />';
}
$this->contentContainerEnd();
if (!$noreceiptcomment || $receiptreject)
$this->contentContainerEnd();
$this->formSubmit(getMLText('submit_receipt'), $receipttype.'Receipt');
?>
<input type='hidden' name='receiptType' value='<?= $receipttype ?>'/>
@ -164,4 +166,3 @@ $(document).ready(function() {
$this->htmlEndPage();
} /* }}} */
}
?>

View File

@ -31,6 +31,10 @@
*/
class SeedDMS_View_Search extends SeedDMS_Theme_Style {
/*
*/
protected $query;
/**
* Mark search query sting in a given string
*
@ -57,12 +61,18 @@ $(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)
values[this.name] = 1;
});
$('input[name^=\"export_options\"]').each(function() {
values[this.name] = this.value;
});
$('select[name^=\"export_options\"]').each(function() {
values[this.name] = this.value;
});
url += '&'+$.param(values);
window.location.href = url;
});
@ -225,10 +235,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) {
@ -243,6 +255,16 @@ $(document).ready(function() {
}
}
}
if($extraheader = $this->callHook('extraDownloadFolderHeader'))
$downmgr->addFolderHeader($extraheader);
foreach($entries as $entry) {
if($entry->isType('folder')) {
if(empty($marks) || !empty($marks['F'.$entry->getId()])) {
$extracols = $this->callHook('extraDownloadFolderColumns', $entry);
$downmgr->addFolderItem($entry, $extracols);
}
}
}
$filename = tempnam(sys_get_temp_dir(), '');
if($includecontent) {
$downmgr->createArchive($filename);
@ -369,9 +391,9 @@ $(document).ready(function() {
}
}
if($removecategory) {
$this->setParam('batchmsg', getMLText('batch_remove_category_msg', ['count'=>$j, 'catname'=>$changecategory->getName()]));
$this->setParam('batchmsg', getMLText('batch_remove_category_msg', ['count'=>$j, 'catname'=>htmlspecialchars($changecategory->getName())]));
} else {
$this->setParam('batchmsg', getMLText('batch_add_category_msg', ['count'=>$j, 'catname'=>$changecategory->getName()]));
$this->setParam('batchmsg', getMLText('batch_add_category_msg', ['count'=>$j, 'catname'=>htmlspecialchars($changecategory->getName())]));
}
} else {
}
@ -455,6 +477,7 @@ $(document).ready(function() {
$enableRecursiveCount = $this->params['enableRecursiveCount'];
$maxRecursiveCount = $this->params['maxRecursiveCount'];
$settings = $this->params['settings'];
$accessobject = $this->params['accessobject'];
$request = $this->params['request'];
$fullsearch = $this->params['fullsearch'];
$facetsearch = $this->params['facetsearch'];
@ -538,6 +561,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">
@ -736,6 +765,8 @@ $(document).ready(function() {
$openfilterdlg = true;
if($status)
$openfilterdlg = true;
if($mimetype)
$openfilterdlg = true;
if($modifyenddate || $modifystartdate)
$openfilterdlg = true;
if($revisionstartdate || $revisionenddate)
@ -756,7 +787,7 @@ $(document).ready(function() {
$allcategories = $dms->getDocumentCategories();
if($allcategories) {
foreach($allcategories as $acategory) {
$options[] = array($acategory->getID(), $acategory->getName(), in_array($acategory->getId(), $tmpcatids));
$options[] = array($acategory->getID(), htmlspecialchars($acategory->getName()), in_array($acategory->getId(), $tmpcatids));
}
$this->formField(
getMLText("categories"),
@ -780,6 +811,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));
@ -796,6 +828,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())
@ -863,9 +911,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));
}
}
}
}
@ -1044,7 +1092,7 @@ $(document).ready(function() {
$options = array();
$allcategories = $dms->getDocumentCategories();
foreach($allcategories as $acategory) {
$options[] = array($acategory->getID(), $acategory->getName(), in_array($acategory->getId(), $tmpcatids));
$options[] = array($acategory->getID(), htmlspecialchars($acategory->getName()), in_array($acategory->getId(), $tmpcatids));
}
$this->formField(
getMLText("category_filter"),
@ -1550,6 +1598,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
@ -1560,8 +1616,8 @@ $(document).ready(function() {
/* Batch operations {{{ */
if($settings->_batchOperations && $total)
$this->contentHeading(getMLText('batch_operation'));
if($totaldocs) {
if(in_array('export', $settings->_batchOperations)) {
if(($totaldocs || $totalfolders) && in_array('export', $settings->_batchOperations)) {
if($accessobject->check_view_access($this, array('action'=>'export'))) {
ob_start();
$this->formField(
getMLText("include_content"),
@ -1573,6 +1629,20 @@ $(document).ready(function() {
'value'=>1,
)
);
$this->formField(
getMLText("skip_default_export_cols"),
array(
'element'=>'input',
'type'=>'checkbox',
'name'=>'skipdefaultcols',
'id'=>'skipdefaultcols',
'value'=>1,
)
);
$txt = $this->callHook('searchExportOptions');
if(is_string($txt)) {
echo $txt;
}
//$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();
@ -1583,6 +1653,7 @@ $(document).ready(function() {
/* All other batch operations are only allowed for admins */
if($user->isAdmin()) {
if($total && in_array('change_owner', $settings->_batchOperations)) {
if($accessobject->check_view_access($this, array('action'=>'change_owner'))) {
ob_start();
$users = $dms->getAllUsers();
$options = array();
@ -1608,8 +1679,10 @@ $(document).ready(function() {
$content = ob_get_clean();
$this->printAccordion(getMLText('batch_change_owner'), $content);
}
}
if($totaldocs && in_array('add_reviewer', $settings->_batchOperations)) {
if($accessobject->check_view_access($this, array('action'=>'add_reviewer'))) {
ob_start();
$users = $dms->getAllUsers();
$options = array();
@ -1634,8 +1707,10 @@ $(document).ready(function() {
$content = ob_get_clean();
$this->printAccordion(getMLText('batch_add_reviewer'), $content);
}
}
if($totaldocs && in_array('add_approver', $settings->_batchOperations)) {
if($accessobject->check_view_access($this, array('action'=>'add_approver'))) {
ob_start();
$users = $dms->getAllUsers();
$options = array();
@ -1660,8 +1735,10 @@ $(document).ready(function() {
$content = ob_get_clean();
$this->printAccordion(getMLText('batch_add_approver'), $content);
}
}
if($totaldocs && in_array('change_category', $settings->_batchOperations)) {
if($accessobject->check_view_access($this, array('action'=>'change_category'))) {
ob_start();
$cats = $dms->getDocumentCategories();
if($cats) {
@ -1698,6 +1775,7 @@ $(document).ready(function() {
$this->printAccordion(getMLText('batch_change_category'), $content);
}
}
}
}
// }}}

Some files were not shown because too many files have changed in this diff Show More