diff --git a/SeedDMS_Core/Core/inc.ClassDocument.php b/SeedDMS_Core/Core/inc.ClassDocument.php
index 956377a1d..fa2a40dc0 100644
--- a/SeedDMS_Core/Core/inc.ClassDocument.php
+++ b/SeedDMS_Core/Core/inc.ClassDocument.php
@@ -298,7 +298,7 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */
*/
function getDir() { /* {{{ */
if($this->_dms->maxDirID) {
- $dirid = (int) (($this->_id-1) / $this->_dms->maxDirID) + 1;
+ $dirid = (int) (($this->_id-1) / $this->_dms->maxDirID) + 1;
return $dirid."/".$this->_id."/";
} else {
return $this->_id."/";
@@ -1067,7 +1067,7 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */
* has no access list the returned array contains the two elements
* 'users' and 'groups' which are than empty. The methode returns false
* if the function fails.
- *
+ *
* @param integer $mode access mode (defaults to M_ANY)
* @param integer $op operation (defaults to O_EQ)
* @return array multi dimensional array or false in case of an error
@@ -2204,7 +2204,7 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */
$link = new SeedDMS_Core_DocumentLink($resArr["id"], $document, $target, $resArr["userID"], $resArr["public"]);
$user = $this->_dms->getLoggedInUser();
if($link->getAccessMode($user, $document, $target) >= M_READ)
- return $file;
+ return $link;
return null;
} /* }}} */
@@ -2356,7 +2356,7 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */
$queryStr = "SELECT * FROM `tblDocumentFiles` WHERE `document` = " . $this->_id;
if($version) {
$queryStr .= " AND (`version`=0 OR `version`=".(int) $version.")";
- }
+ }
$queryStr .= " ORDER BY ";
if($version) {
$queryStr .= "`version` DESC,";
@@ -2736,7 +2736,7 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */
/**
* Calculate the disk space including all versions of the document
- *
+ *
* This is done by using the internal database field storing the
* filesize of a document version.
*
@@ -2755,7 +2755,7 @@ class SeedDMS_Core_Document extends SeedDMS_Core_Object { /* {{{ */
/**
* Returns a list of events happend during the life of the document
- *
+ *
* This includes the creation of new versions, approval and reviews, etc.
*
* @return array list of events
@@ -3276,7 +3276,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */
/**
* Rewrites the complete status log
- *
+ *
* Attention: this function is highly dangerous.
* It removes an existing status log and rewrites it.
* This method was added for importing an xml dump.
@@ -3327,7 +3327,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */
* Returns the access mode similar to a document
*
* There is no real access mode for document content, so this is more
- * like a virtual access mode, derived from the status of the document
+ * like a virtual access mode, derived from the status of the document
* content. The function checks if {@link SeedDMS_Core_DMS::noReadForStatus}
* contains the status of the version and returns M_NONE if it exists and
* the user is not involved in a workflow or review/approval/revision.
@@ -3337,7 +3337,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */
* prevent access on the whole document if there is no accessible version.
*
* FIXME: This function only works propperly if $u is the currently logged in
- * user, because noReadForStatus will be set for this user.
+ * user, because noReadForStatus will be set for this user.
* FIXED: instead of using $dms->noReadForStatus it is take from the user's role
*
* @param object $u user
@@ -3527,7 +3527,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */
/**
* Rewrites the complete review log
- *
+ *
* Attention: this function is highly dangerous.
* It removes an existing review log and rewrites it.
* This method was added for importing an xml dump.
@@ -3655,7 +3655,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */
/**
* Rewrites the complete approval log
- *
+ *
* Attention: this function is highly dangerous.
* It removes an existing review log and rewrites it.
* This method was added for importing an xml dump.
@@ -5239,7 +5239,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */
$recs = $db->getResultArray($queryStr);
if (is_bool($recs) && !$recs)
return false;
- $this->_workflowState = new SeedDMS_Core_Workflow_State($recs[0]['id'], $recs[0]['name'], $recs[0]['maxtime'], $recs[0]['precondfunc'], $recs[0]['documentstatus']);
+ $this->_workflowState = new SeedDMS_Core_Workflow_State($recs[0]['id'], $recs[0]['name'], $recs[0]['maxtime'], $recs[0]['precondfunc'], $recs[0]['documentstatus']);
$this->_workflowState->setDMS($this->_document->_dms);
}
return $this->_workflowState;
@@ -5262,7 +5262,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */
$db->rollbackTransaction();
return false;
}
- $this->_workflow = $workflow;
+ $this->_workflow = $workflow;
if(!$this->setStatus(S_IN_WORKFLOW, "Added workflow '".$workflow->getName()."'", $user)) {
$db->rollbackTransaction();
return false;
@@ -5296,7 +5296,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */
return false;
if(!$recs)
return false;
- $this->_workflow = new SeedDMS_Core_Workflow($recs[0]['id'], $recs[0]['name'], $this->_document->_dms->getWorkflowState($recs[0]['initstate']), $recs[0]["layoutdata"]);
+ $this->_workflow = new SeedDMS_Core_Workflow($recs[0]['id'], $recs[0]['name'], $this->_document->_dms->getWorkflowState($recs[0]['initstate']), $recs[0]["layoutdata"]);
$this->_workflow->setDMS($this->_document->_dms);
}
return $this->_workflow;
@@ -5304,7 +5304,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */
/**
* Rewrites the complete workflow log
- *
+ *
* Attention: this function is highly dangerous.
* It removes an existing workflow log and rewrites it.
* This method was added for importing an xml dump.
@@ -5456,7 +5456,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */
if($recs[0]['parentworkflow'])
return $this->_document->_dms->getWorkflow($recs[0]['parentworkflow']);
-
+
return false;
} /* }}} */
@@ -5483,7 +5483,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */
if (!$db->getResult($queryStr)) {
return false;
}
- $this->_workflow = $subworkflow;
+ $this->_workflow = $subworkflow;
return true;
}
return true;
@@ -5530,7 +5530,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */
return false;
}
- $this->_workflow = $this->_document->_dms->getWorkflow($recs[0]['parentworkflow']);
+ $this->_workflow = $this->_document->_dms->getWorkflow($recs[0]['parentworkflow']);
$this->_workflow->setDMS($this->_document->_dms);
if($transition) {
@@ -5739,7 +5739,7 @@ class SeedDMS_Core_DocumentContent extends SeedDMS_Core_Object { /* {{{ */
return $nextstate;
}
return true;
-
+
} /* }}} */
/**
diff --git a/languages/nl_NL/lang.inc b/languages/nl_NL/lang.inc
index c6f3c40da..833995878 100644
--- a/languages/nl_NL/lang.inc
+++ b/languages/nl_NL/lang.inc
@@ -19,22 +19,22 @@
// along with this program; if not, write to the Free Software
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
//
-// Translators: Admin (745), gijsbertush (333), pepijn (45), reinoutdijkstra@hotmail.com (270)
+// Translators: Admin (745), gijsbertush (610), pepijn (45), reinoutdijkstra@hotmail.com (270)
$text = array(
-'2_factor_auth' => 'Twee-factor-authorisatie',
-'2_factor_auth_info' => 'Info 2-factor-authorisatie',
-'2_fact_auth_secret' => 'Toegangscode 2-factor-authorisatie',
-'accept' => 'Accept',
+'2_factor_auth' => '2-factor-authenticatie',
+'2_factor_auth_info' => 'Dit systeem werkt met 2-factor-authenticatie. U heeft de Google Authenticator nodig op uf 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_secret' => 'Toegangscode 2-factor-authenticatie',
+'accept' => 'Accepteren',
'access_control' => 'Toegangscontrole',
-'access_control_is_off' => 'Toegansgscontrole staat uit',
+'access_control_is_off' => 'Toegangscontrole staat uit',
'access_denied' => 'Geen toegang.',
'access_inheritance' => 'Toegang overgeërfd',
-'access_mode' => 'Toegang modus',
+'access_mode' => 'Toegangsmodus',
'access_mode_all' => 'Alle machtigingen',
'access_mode_none' => 'Geen toegang',
-'access_mode_read' => 'Lees rechten',
-'access_mode_readwrite' => 'Lees en Schrijf rechten',
+'access_mode_read' => 'Leesrechten',
+'access_mode_readwrite' => 'Lees- en Schrijf rechten',
'access_permission_changed_email' => 'Machtigingen gewijzigd',
'access_permission_changed_email_body' => 'Toestemming veranderd
Document: [naam]
@@ -47,14 +47,14 @@ URL: [url]',
'actions' => 'Acties',
'action_approve' => 'Goedkeuren',
'action_complete' => 'Compleet',
-'action_is_complete' => 'Is compleet',
-'action_is_not_complete' => 'Is niet compleet',
+'action_is_complete' => 'is compleet',
+'action_is_not_complete' => 'is niet compleet',
'action_reject' => 'Geweigerd',
'action_review' => 'Beoordelen',
-'action_revise' => 'Herzie',
+'action_revise' => 'Nog herzien',
'add' => 'Toevoegen',
'add_approval' => 'Verzend [Goedkeuring]',
-'add_attrdefgroup' => '',
+'add_attrdefgroup' => 'Voeg een nieuwe attribuutgroep toe',
'add_document' => 'Document toevoegen',
'add_document_link' => 'Link toevoegen',
'add_document_notify' => 'Notificatie toekennen',
@@ -88,20 +88,20 @@ URL: [url]',
'already_subscribed' => 'Al ingetekend',
'and' => 'en',
'apply' => 'Toepassen',
-'approvals_accepted' => '',
-'approvals_and_reviews_accepted' => '',
-'approvals_and_reviews_not_touched' => '',
-'approvals_and_reviews_rejected' => '',
-'approvals_not_touched' => '',
-'approvals_rejected' => '',
-'approvals_without_group' => '',
-'approvals_without_user' => '',
-'approval_deletion_email' => 'Goedkeuring verzoek verwijderd',
-'approval_deletion_email_body' => 'Vraag om goedkeuring verwijderd
+'approvals_accepted' => '[no_approvals] goedkeuringen',
+'approvals_and_reviews_accepted' => '[no_approvals] goedkeuringen en [no_reviews] geaccepteerde reviews',
+'approvals_and_reviews_not_touched' => '[no_approvals] goedkeuringen [no_reviews] reviews nog niet behandeld',
+'approvals_and_reviews_rejected' => '[no_approvals] goedkeuringen en [no_reviews] reviews afgekeurd',
+'approvals_not_touched' => '[no_approvals] goedkeuringen nog niet behandeld',
+'approvals_rejected' => '[no_approvals] goedkeuringen afgekeurd',
+'approvals_without_group' => 'Goedkeuringen zonder groep',
+'approvals_without_user' => 'Goedkeuringen zonder gebruiker',
+'approval_deletion_email' => 'Goedkeuringsverzoek verwijderd',
+'approval_deletion_email_body' => 'Approval request deleted
Document: [name]
-Versie: [version]
-Map: [folder_path]
-Gebruiker: [username]
+Version: [version]
+Parent folder: [folder_path]
+User: [username]
URL: [url]',
'approval_deletion_email_subject' => '[sitename]: [name] - Verzoek om goedkeuring verwijderd',
'approval_file' => 'Goedkeuring bestand',
@@ -131,12 +131,12 @@ URL: [url]',
'assign_approvers' => 'Aangewezen [Goedkeurders]',
'assign_reviewers' => 'Aangewezen [Controleurs]',
'assign_user_property_to' => 'Wijs gebruikers machtigingen toe aan',
-'assumed_released' => 'aangenomen status: Gepubliceerd',
-'attrdefgroup_management' => '',
-'attrdefgrp_show_detail' => '',
-'attrdefgrp_show_list' => '',
-'attrdefgrp_show_search' => '',
-'attrdefgrp_show_searchlist' => '',
+'assumed_released' => 'vermoedelijke status: Gepubliceerd',
+'attrdefgroup_management' => 'Beheer attribuut-definiities',
+'attrdefgrp_show_detail' => 'Details Beheer attribuut-definiities',
+'attrdefgrp_show_list' => 'Lijst van attribuut-definiities',
+'attrdefgrp_show_search' => 'Zoeken naar attribuut-definiities',
+'attrdefgrp_show_searchlist' => 'Lijst van gezochte attribuut-definiities',
'attrdef_exists' => 'Kenmerk definitie bestaat al',
'attrdef_info' => 'Kenmerk info',
'attrdef_in_use' => 'Kenmerk definitie nog in gebruikt',
@@ -171,18 +171,18 @@ URL: [url]',
'attribute_changed_email_subject' => '[sitename]: [name] - Attribuut gewijzigd',
'attribute_count' => 'Aantal maal gebruikt',
'attribute_value' => 'Waarde van het attribuut',
-'attribute_value_not_in_valueset' => '',
-'attr_malformed_boolean' => '',
-'attr_malformed_date' => '',
+'attribute_value_not_in_valueset' => 'Waarde van attribuut bestaat niet',
+'attr_malformed_boolean' => 'Foute vormgeving boolean',
+'attr_malformed_date' => 'Foute vormgeving datum',
'attr_malformed_email' => 'Foute vormgeving email',
-'attr_malformed_float' => '',
-'attr_malformed_int' => '',
-'attr_malformed_url' => 'Foute url',
+'attr_malformed_float' => 'Foute vormgeving getal',
+'attr_malformed_int' => 'Foute vormgeving geheel getal',
+'attr_malformed_url' => 'Foute vormgeving url',
'attr_max_values' => 'attribuut: maximale waarde',
'attr_min_values' => 'attribuut: minimale waarde',
-'attr_not_in_valueset' => '',
+'attr_not_in_valueset' => 'Attribuut bestaat niet',
'attr_no_regex_match' => 'De waarde van het attribuut komt niet overeen met de veelgebruikte uitdrukking (regular expression)',
-'attr_validation_error' => '',
+'attr_validation_error' => 'Attribuut niet geldig',
'at_least_n_users_of_group' => 'Minimaal [number_of_users] gebruikers van [group]',
'august' => 'augustus',
'authentication' => 'Authentificatie',
@@ -235,11 +235,11 @@ URL: [url]',
'checkedout_file_has_disappeared' => 'File is onvindbaar',
'checkedout_file_is_unchanged' => 'Checkout-document ongewijzigd',
'checkin_document' => 'Veranderd document',
-'checkoutpath_does_not_exist' => '',
+'checkoutpath_does_not_exist' => 'Checkout-pad bestaat niet',
'checkout_document' => 'Checkout-document',
'checkout_is_disabled' => 'Checkout is niet mogelijk',
-'choose_attrdef' => 'Selecteer een kenmerk definitie',
-'choose_attrdefgroup' => '',
+'choose_attrdef' => 'Kies een kenmerkdefinitie',
+'choose_attrdefgroup' => 'Kies een kenmerkdefinite-groep',
'choose_category' => 'Selecteer a.u.b.',
'choose_group' => 'Selecteer Groep',
'choose_role' => 'Selecteer een rol',
@@ -251,17 +251,17 @@ URL: [url]',
'choose_workflow' => 'Kies workflow',
'choose_workflow_action' => 'Kies workflow actie',
'choose_workflow_state' => 'kiest workflowstatus',
-'class_name' => '',
+'class_name' => 'naam vd Klasse',
'clear_cache' => 'Cache leegmaken',
'clear_clipboard' => 'Vrijgeven klembord',
-'clear_password' => '',
+'clear_password' => 'Verwijder het wachtwoord',
'clipboard' => 'Klembord',
'close' => 'Sluiten',
-'command' => '',
+'command' => 'Commando',
'comment' => 'Commentaar',
'comment_changed_email' => 'Gewijzigde email',
'comment_for_current_version' => 'Versie van het commentaar',
-'confirm_clear_cache' => '',
+'confirm_clear_cache' => 'Ja, ik wil de cache opschonen!',
'confirm_create_fulltext_index' => 'Ja, Ik wil de volledigetekst index opnieuw maken!',
'confirm_move_document' => 'Bevestig verplaatsing van document',
'confirm_move_folder' => 'Bevestig de verplaatsing van de map',
@@ -278,16 +278,16 @@ URL: [url]',
'confirm_rm_transmittal' => 'Bestig de verwijdering van de verzending',
'confirm_rm_transmittalitem' => 'Bevestig te verzenden item',
'confirm_rm_user' => 'Weet U zeker dat U de Gebruiker "[username]" wilt verwijderen?
Let op: deze handeling kan niet ongedaan worden gemaakt.',
-'confirm_rm_user_from_processes' => '',
+'confirm_rm_user_from_processes' => 'Weet U zeker dat U de Gebruiker "[username]" wilt verwijderen uit dit proces?
Let op: deze handeling kan niet ongedaan worden gemaakt.',
'confirm_rm_version' => 'Weet U zeker dat U deze versie van het document "[documentname]" wilt verwijderen?
Pas op: deze handeling kan niet ongedaan worden gemaakt.',
-'confirm_transfer_objects' => '',
+'confirm_transfer_objects' => 'Weet U zeker dat U de documenten, mappen etc. van gebruiker "[username]" wilt overzetten?
Let op: deze handeling kan niet ongedaan worden gemaakt.',
'confirm_update_transmittalitem' => 'Bevestig verandering van te verzenden item',
'content' => 'Welkomstpagina',
'continue' => 'Doorgaan',
'converter_new_cmd' => 'Wijziging: nieuw commando',
'converter_new_mimetype' => 'Wijziging: nieuw mimetype',
'copied_to_checkout_as' => 'Gekopieerd naar checkout als:',
-'create_download_link' => '',
+'create_download_link' => 'Maak een download-link',
'create_fulltext_index' => 'Creeer volledige tekst index',
'create_fulltext_index_warning' => 'U staat op het punt de volledigetekst opnieuw te indexeren. Dit kan behoorlijk veel tijd en snelheid vergen van het systeem. Als u zeker bent om opnieuw te indexeren, bevestig deze actie.',
'creation_date' => 'Aangemaakt',
@@ -300,7 +300,7 @@ URL: [url]',
'databasesearch' => 'Zoek in Database',
'date' => 'Datum',
'days' => 'Dagen',
-'debug' => '',
+'debug' => 'debug',
'december' => 'december',
'default_access' => 'Standaard toegang',
'default_keywords' => 'Beschikbare sleutelwoorden',
@@ -311,10 +311,10 @@ URL: [url]',
'de_DE' => 'Duits',
'disclaimer' => 'Dit is een beveiligde omgeving. Gebruik is alleen toegestaan voor geautoriseerde leden. Ongeautoriseerde toegang kan worden bestraft overeenkomstig (inter)nationale wetgeving.',
'discspace' => 'Schijfruimte',
-'docs_in_reception_no_access' => '',
-'docs_in_revision_no_access' => '',
+'docs_in_reception_no_access' => 'Documenten zonder toegang ontvanger',
+'docs_in_revision_no_access' => 'Documenten in revisie zonder toegang ontvanger',
'document' => 'Document',
-'documentcontent' => '',
+'documentcontent' => 'Documentinhoud',
'documents' => 'Documenten',
'documents_checked_out_by_you' => 'Door u in behandeling genomen documenten',
'documents_expired' => 'Verlopen documenten',
@@ -328,10 +328,10 @@ URL: [url]',
'documents_to_review' => 'Documenten die wachten op uw controle',
'documents_to_revise' => 'Te reviseren documenten',
'documents_user_expiration' => '',
-'documents_user_reception' => '',
+'documents_user_reception' => 'Documenten wachten op bestemming',
'documents_user_rejected' => 'documenten niet geaccepteerd door gebruiker',
'documents_user_requiring_attention' => 'Eigen documenten die (nog) aandacht behoeven',
-'documents_with_notification' => '',
+'documents_with_notification' => 'Documenten met notificatie',
'document_already_checkedout' => 'Al in behandeling genomen documenten',
'document_already_locked' => 'Dit document is al geblokkeerd',
'document_comment_changed_email' => 'Commentaar gewijzigd',
@@ -398,9 +398,16 @@ URL: [url]',
'does_not_expire' => 'Verloopt niet',
'does_not_inherit_access_msg' => 'Erft toegang',
'download' => 'Download',
-'download_links' => '',
-'download_link_email_body' => '',
-'download_link_email_subject' => '',
+'download_links' => 'Download-links',
+'download_link_email_body' => 'Klik op de link hieronder, dan begint de download vanvversie [version] van het document
+\'[docname]\'.
+
+[url]
+
+De link is geldig tot [valid].
+
+[comment]',
+'download_link_email_subject' => 'Onderwerp',
'do_object_repair' => 'Repareer alle mappen en documenten.',
'do_object_setchecksum' => 'Set checksum',
'do_object_setfilesize' => 'Voer bestandgrootte in',
@@ -409,16 +416,16 @@ URL: [url]',
'draft_pending_approval' => 'Draft - in afwachting van goedkeuring',
'draft_pending_review' => 'Draft - in afwachting van controle',
'drag_icon_here' => 'Versleep icoon van de folder of bestand hier!',
-'dropfolderdir_missing' => '',
-'dropfolder_file' => 'Bestand van dropfolder',
-'dropfolder_folder' => 'Map van de drop-map',
+'dropfolderdir_missing' => 'Uw persoonlijke map om files te droppen (dropfolder) bestaat niet op de server! Vraag de administrator om deze aan te maken.',
+'dropfolder_file' => 'Bestand in dropfolder',
+'dropfolder_folder' => 'Map in dropfolder',
'dropupload' => 'Snel toevoegen',
-'drop_files_here' => 'Sleep bestanden hierheen!',
-'dump_creation' => 'DB dump aanmaken',
+'drop_files_here' => 'Sleep bestanden hierheen',
+'dump_creation' => 'DB-dump aanmaken',
'dump_creation_warning' => 'M.b.v. deze functie maakt U een DB dump file. het bestand wordt opgeslagen in uw data-map op de Server',
'dump_list' => 'Bestaande dump bestanden',
'dump_remove' => 'Verwijder dump bestand',
-'duplicates' => 'Duplicaat',
+'duplicates' => 'Dubbelen',
'duplicate_content' => 'Dubbele inhoud',
'edit' => 'Wijzigen',
'edit_attributes' => 'Bewerk attributen',
@@ -429,10 +436,10 @@ URL: [url]',
'edit_document_props' => 'Wijzig document',
'edit_event' => 'Activiteit wijzigen',
'edit_existing_access' => 'Wijzig toegangslijst',
-'edit_existing_attribute_groups' => '',
+'edit_existing_attribute_groups' => 'Bewerk attribuutgroepen',
'edit_existing_notify' => 'Wijzig Notificatie lijst',
'edit_folder_access' => 'Wijzig toegang',
-'edit_folder_attrdefgrp' => '',
+'edit_folder_attrdefgrp' => 'Bewerk de groep van attributen',
'edit_folder_notify' => 'Map Notificatie Lijst',
'edit_folder_props' => 'Wijzig Map eigenschappen',
'edit_group' => 'Wijzig Groep',
@@ -440,14 +447,14 @@ URL: [url]',
'edit_transmittal_props' => 'Opmerkingen bij verzending',
'edit_user' => 'Wijzig gebruiker',
'edit_user_details' => 'Wijzig gebruiker Details',
-'edit_version' => '',
-'el_GR' => 'Griek',
+'edit_version' => 'Bewerk versie',
+'el_GR' => 'Grieks',
'email' => 'E-mail',
'email_error_title' => 'Geen email ingevoerd',
'email_footer' => 'U kunt altijd uw e-mail instellingen wijzigen via de \'Mijn Account\' opties',
'email_header' => 'Dit is een automatisch gegenereerd bericht van de DMS server.',
'email_not_given' => 'Voer aub een geldig email adres in.',
-'empty_attribute_group_list' => '',
+'empty_attribute_group_list' => 'Lege lijst van attributen',
'empty_folder_list' => 'Geen documenten of mappen',
'empty_notify_list' => 'Geen gegevens',
'en_GB' => 'Engels (GB)',
@@ -455,33 +462,33 @@ URL: [url]',
'error' => 'Fout',
'error_add_aro' => 'Verzoek om toegang toegevoegd',
'error_add_permission' => 'Voeg permissie toe',
-'error_cleared_cache' => '',
-'error_importfs' => '',
+'error_cleared_cache' => 'Fout bij het leegmaken van de cache',
+'error_importfs' => 'Fout bij het importeren van form file systeem',
'error_no_document_selected' => 'Geen document geselecteerd',
'error_no_folder_selected' => 'Geen map geselecteerd',
'error_occured' => 'Er is een fout opgetreden',
-'error_remove_document' => '',
-'error_remove_folder' => '',
+'error_remove_document' => 'Fout bij het verwijderen van document',
+'error_remove_folder' => 'Fout bij het verwijderen van map',
'error_remove_permission' => 'Verwijder permissie',
'error_toogle_permission' => 'Wijzig permissie',
'error_transfer_document' => '',
'es_ES' => 'Spaans',
-'event_details' => 'Activiteit details',
-'exclude_items' => 'Sluit iems uit',
+'event_details' => 'Activiteit-details',
+'exclude_items' => 'Sluit iets uit',
'expired' => 'Verlopen',
-'expired_at_date' => '',
+'expired_at_date' => 'Verloopdatum',
'expired_documents' => '',
'expires' => 'Verloopt',
'expire_by_date' => 'Vervaldatum',
-'expire_in_1d' => '',
-'expire_in_1h' => '',
+'expire_in_1d' => 'Vervalt binnen 1 dag',
+'expire_in_1h' => 'Vervalt binnen 1 uur',
'expire_in_1m' => 'Vervalt binnen 1 maand',
'expire_in_1w' => 'Vervalt binnen 1 week',
'expire_in_1y' => 'Vervalt binnen 1 jaar',
-'expire_in_2h' => '',
+'expire_in_2h' => 'Vervalt binnen 2 uur',
'expire_in_2y' => 'Vervalt binnen 2 jaar',
-'expire_today' => '',
-'expire_tomorrow' => '',
+'expire_today' => 'Vervalt vandaag',
+'expire_tomorrow' => 'Vervalt morgen',
'expiry_changed_email' => 'Verloopdatum gewijzigd',
'expiry_changed_email_body' => 'Vervaldatum gewijzigd
Document: [name]
@@ -503,7 +510,7 @@ URL: [url]',
'folder' => 'Map',
'folders' => 'Mappen',
'folders_and_documents_statistic' => 'Inhoudsopgave',
-'folders_with_notification' => '',
+'folders_with_notification' => 'Mappen met notificatie',
'folder_comment_changed_email' => 'Commentaar gewijzigd',
'folder_comment_changed_email_body' => 'Commentaar gewijzigd
Map: [name]
@@ -545,16 +552,16 @@ URL: [url]',
'fr_FR' => 'Frans',
'fullsearch' => 'Zoek in volledige tekst',
'fullsearch_hint' => 'Volledige tekst index',
-'fulltextsearch_disabled' => '',
+'fulltextsearch_disabled' => 'Fulltext-zoeken uitgeschakeld',
'fulltext_converters' => 'Index document conversie',
'fulltext_info' => 'Volledige tekst index info',
-'global_attributedefinitiongroups' => '',
+'global_attributedefinitiongroups' => 'Kennmerk-definitie groepen',
'global_attributedefinitions' => 'Kenmerk definities',
'global_default_keywords' => 'Algemene sleutelwoorden',
-'global_document_categories' => 'Categorieen',
+'global_document_categories' => 'Categorieën',
'global_workflows' => 'Workflows',
-'global_workflow_actions' => 'Workflow acties',
-'global_workflow_states' => 'Workflow status',
+'global_workflow_actions' => 'Workflow-acties',
+'global_workflow_states' => 'Workflow-status',
'group' => 'Groep',
'groups' => 'Groepen',
'group_approval_summary' => 'Groep [Goedkeuring] samenvatting',
@@ -566,36 +573,36 @@ URL: [url]',
'group_review_summary' => 'Groep Beoordeling samenvatting',
'guest_login' => 'Login als Gast',
'guest_login_disabled' => 'Gast login is uitgeschakeld.',
-'hash' => '',
+'hash' => 'Hashcode',
'help' => 'Help',
'home_folder' => 'Thuismap',
-'hook_name' => '',
+'hook_name' => 'Naam vd hook',
'hourly' => 'Elk uur',
-'hours' => 'uren',
+'hours' => 'uur',
'hr_HR' => 'Kroatisch',
-'human_readable' => 'Leesbaar Archief',
+'human_readable' => 'Leesbaar archief',
'hu_HU' => 'Hongaars',
'id' => 'ID',
'identical_version' => 'Nieuwe versie is identiek aan de huidige versie',
'import' => 'Importeer',
-'importfs' => '',
+'importfs' => 'Importeer van bestandssysteem',
'import_fs' => 'Importeer van bestandssysteem',
-'import_fs_warning' => 'Dit werkt alleen voor mappen in de drop-map. Alle mappen en bestanden worden recursief geimporteerd. Bestanden worden onmiddelijk vrijgegeven.',
+'import_fs_warning' => 'Dit werkt alleen in de dropfolder. Mappen en bestanden worden recursief geïmporteerd. Bestanden worden direct ter beschikking gesteld.',
'include_content' => 'inclusief inhoud',
'include_documents' => 'Inclusief documenten',
'include_subdirectories' => 'Inclusief submappen',
'indexing_tasks_in_queue' => 'Indexerings taken in wachtrij',
-'index_done' => '',
-'index_error' => '',
+'index_done' => 'Indexering gereed',
+'index_error' => 'Fout bij indexering',
'index_folder' => 'Inhoud',
-'index_pending' => '',
-'index_waiting' => '',
+'index_pending' => 'Indexering moet nog gebeuren',
+'index_waiting' => 'Indexering wacht',
'individuals' => 'Individuen',
'indivіduals_in_groups' => 'Individuen in groepen',
'inherited' => 'overgeerfd',
'inherits_access_copy_msg' => 'Kopie lijst overerfde toegang',
'inherits_access_empty_msg' => 'Begin met lege toegangslijst',
-'inherits_access_msg' => 'Toegang is (over/ge)erfd..',
+'inherits_access_msg' => 'Toegang is (over/ge)erfd.',
'internal_error' => 'Interne fout',
'internal_error_exit' => 'Interne fout. Niet mogelijk om verzoek uit de voeren.',
'invalid_access_mode' => 'Foutmelding: verkeerde toegangsmode',
@@ -604,7 +611,7 @@ URL: [url]',
'invalid_create_date_end' => 'Foutieve eind-datum voor het maken van een periode.',
'invalid_create_date_start' => 'Foutieve begin-datum voor het maken van een periode.',
'invalid_doc_id' => 'Foutief Document ID',
-'invalid_dropfolder_folder' => '',
+'invalid_dropfolder_folder' => 'Ongeldige dropfolder-map',
'invalid_expiration_date_end' => 'Foute expiratiedatum',
'invalid_expiration_date_start' => 'Foute startdatum',
'invalid_file_id' => 'Foutief Bestand ID',
@@ -626,13 +633,13 @@ URL: [url]',
'is_hidden' => 'Afschermen van Gebruikerslijst',
'it_IT' => 'Italiaans',
'january' => 'januari',
-'js_form_error' => '',
-'js_form_errors' => '',
-'js_invalid_email' => '',
+'js_form_error' => 'Fout in JavaScript',
+'js_form_errors' => 'Fouten in JavaScript',
+'js_invalid_email' => 'Ongeldige email',
'js_no_approval_group' => 'Selecteer a.u.b. een Goedkeuring Groep',
'js_no_approval_status' => 'Selecteer a.u.b. een Goedkeuring Status',
'js_no_comment' => 'Er zijn geen commentaren',
-'js_no_currentpwd' => '',
+'js_no_currentpwd' => 'Geen geldig wachtwoord',
'js_no_email' => 'Voer uw e-mail adres in',
'js_no_file' => 'Selecteer een bestand',
'js_no_keywords' => 'Specificeer een aantal sleutelwoorden',
@@ -646,8 +653,8 @@ URL: [url]',
'js_pwd_not_conf' => 'Wachtwoord en bevestigingswachtwoord zijn niet identiek',
'js_select_user' => 'Selecteer een Gebruiker',
'js_select_user_or_group' => 'Selecteer tenminste een Gebruiker of Groep',
-'js_unequal_passwords' => '',
-'july' => 'july',
+'js_unequal_passwords' => 'Ongelijke wachtwoorden',
+'july' => 'juli',
'june' => 'juni',
'keep' => 'Behouden',
'keep_doc_status' => 'Behoud status document',
@@ -662,14 +669,14 @@ URL: [url]',
'librarydoc' => 'Bibliotheek',
'linked_documents' => 'Gerelateerde Documenten',
'linked_files' => 'Bijlagen',
-'linked_to_current_version' => '',
-'linked_to_document' => 'Gekoppeld aan document',
-'linked_to_this_version' => '',
+'linked_to_current_version' => 'Bijlagen bij huidige versie',
+'linked_to_document' => 'Bijlage(n) bij document',
+'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 upload pagina.',
-'link_to_version' => '',
-'list_access_rights' => 'Oplijsten toegangsrechten',
-'list_contains_no_access_docs' => '',
-'list_hooks' => '',
+'link_to_version' => 'Bijlage(n) bij versie',
+'list_access_rights' => 'Toegangsrechten',
+'list_contains_no_access_docs' => 'Geen toegankelijke documenten',
+'list_hooks' => 'Hooks',
'local_file' => 'Lokaal bestand',
'locked_by' => 'In gebruik door',
'lock_document' => 'Blokkeer',
@@ -697,30 +704,30 @@ URL: [url]',
'march' => 'maart',
'max_upload_size' => 'Maximale upload omvang voor ieder bestand',
'may' => 'mei',
-'menu_dropfolder' => '',
+'menu_dropfolder' => 'Dropfolder',
'mimetype' => 'MIME Type',
-'minutes' => 'Minuten',
+'minutes' => 'minuten',
'misc' => 'Diversen',
'missing_checksum' => 'Controlesom ontbreekt',
'missing_file' => 'File ontbreekt',
'missing_filesize' => 'Bestandsgrootte ontbreekt',
-'missing_reception' => '',
+'missing_reception' => 'Ontvanger ontbreekt',
'missing_request_object' => 'Gevraagd object ontbreekt',
'missing_transition_user_group' => 'Gebruiker / groep ontbreekt voor de overdracht',
-'monday' => 'Maandag',
-'monday_abbr' => 'Ma',
+'monday' => 'maandag',
+'monday_abbr' => 'ma',
'monthly' => 'Maandelijks',
-'month_view' => 'Maand Overzicht',
+'month_view' => 'Maandoverzicht',
'move' => 'Verplaats',
'move_clipboard' => 'Verplaats klembord',
'move_document' => 'Verplaats document',
-'move_folder' => 'Verplaats Map',
+'move_folder' => 'Map verplaatsen',
'my_account' => 'Mijn Account',
'my_documents' => 'Mijn Documenten',
'my_transmittals' => 'Mijn zendingen',
'name' => 'Naam',
'needs_workflow_action' => 'Dit document vereist uw aandacht. Bekijk deze onder het tabblad workflows.',
-'network_drive' => '',
+'network_drive' => 'Networkdrive',
'never' => 'Nooit',
'new' => 'Nieuw',
'new_attrdef' => 'Voeg kenmerk definitie toe',
@@ -780,7 +787,7 @@ URL: [url]',
'no_default_keywords' => 'Geen Sleutelwoorden beschikbaar',
'no_docs_checked_out' => 'Geen documenten in gebruik genomen',
'no_docs_locked' => 'Geen documenten in gebruik.',
-'no_docs_rejected' => '',
+'no_docs_rejected' => 'Geen documenten geweigerd',
'no_docs_to_approve' => 'Er zijn momenteel geen documenten die goedkeuring behoeven.',
'no_docs_to_look_at' => 'Geen documenten die aandacht behoeven.',
'no_docs_to_receipt' => 'Geen documenten te ontvangen',
@@ -802,8 +809,8 @@ URL: [url]',
'no_version_modification' => 'Geen versiewijziging',
'no_workflow_available' => 'Geen workflow beschikbaar',
'objectcheck' => 'Map/Document controle',
-'object_check_critical' => '',
-'object_check_warning' => '',
+'object_check_critical' => 'Ernstige fouten',
+'object_check_warning' => 'Waarschuwingen',
'obsolete' => 'verouderd',
'october' => 'oktober',
'old' => 'Oude',
@@ -850,36 +857,42 @@ Mocht u de komende minuten geen email ontvangen, probeer het dan nogmaals en con
'password_wrong' => 'Verkeerd wachtwoord',
'pdf_converters' => '',
'pending_approvals' => 'Wachten op goedkeuring',
-'pending_receipt' => '',
+'pending_receipt' => 'Wachten op ontvangs',
'pending_reviews' => 'Wachten op beoordeling',
-'pending_revision' => '',
+'pending_revision' => 'Wachten op herziening',
'pending_workflows' => 'Wachten op workflow',
'personal_default_keywords' => 'Persoonlijke sleutelwoorden',
-'pl_PL' => 'Polen',
+'pl_PL' => 'Pools',
'possible_substitutes' => 'Mogelijke alternatieven',
-'preset_expires' => 'Standaard vervaltermijn',
+'preset_expires' => 'Preset verloopt',
'preview' => 'Voorbeeld',
'preview_converters' => 'Converters',
-'preview_images' => '',
+'preview_images' => 'Voorbeelden',
'preview_markdown' => 'Voorbeeld in Markdown',
'preview_pdf' => '',
'preview_plain' => 'Voorbeeld in platte tekst',
'previous_state' => 'Vorige staat',
'previous_versions' => 'Vorige versies',
-'process' => '',
-'process_without_user_group' => '',
+'process' => 'Proces',
+'process_without_user_group' => 'Proces zonder gebruikersgroep',
'pt_BR' => 'Portugees (BR)',
'quota' => 'Quotum',
'quota_exceeded' => 'Uw data quotum is overschreden met [bytes].',
'quota_is_disabled' => 'Quota support is momenteel niet actief in de eigenschappen. Een user-quotum instellen zal geen effect hebben tot quota actief zijn',
'quota_warning' => 'Uw maximale datagebruik is overschreden met [bytes]. Gelieve documenten of eerdere versies te verwijderen.',
-'receipts_accepted' => '',
-'receipts_not_touched' => '',
-'receipts_rejected' => '',
-'receipts_without_group' => '',
-'receipts_without_user' => '',
-'receipt_deletion_email_body' => '',
-'receipt_deletion_email_subject' => '',
+'receipts_accepted' => '[no_receipts] ontvangen en geaccepteerd',
+'receipts_not_touched' => '[no_receipts] ontvangen, nog niet behandeld',
+'receipts_rejected' => '[no_receipts] ontvangen, geweigerd',
+'receipts_without_group' => '[no_receipts] ontvangen, geen groep',
+'receipts_without_user' => '[no_receipts] ontvangen, geen gebruiker',
+'receipt_deletion_email_body' => 'Gebruiker is verwijderd uit de lijst van ontvangers
+Document: [name]
+Versie: [version]
+Bovenliggende map: [folder_path]
+Ontvanger: [recipient]
+Gebruiker: [username]
+URL: [url]',
+'receipt_deletion_email_subject' => '[sitename]: [name] - Ontvanger verwijderd',
'receipt_log' => 'Log ontvangst',
'receipt_request_email_body' => 'Verzoek ontvangen
Document: [name]
@@ -890,13 +903,13 @@ URL: [url]',
'receipt_request_email_subject' => '[sitename]: [name] – Verzoek ontvangen',
'receipt_status' => 'Status ontvangst',
'receipt_summary' => 'Samenvatting',
-'receipt_update_failed' => '',
-'reception' => '',
-'reception_acknowleged' => '',
-'reception_noaction' => '',
-'reception_rejected' => '',
+'receipt_update_failed' => 'Update ontvangst mislukt',
+'reception' => 'bestemming',
+'reception_acknowleged' => 'bestemming OK',
+'reception_noaction' => 'Geen actie',
+'reception_rejected' => 'bestemming geweigerd',
'recipients' => 'Ontvangers',
-'redraw' => '',
+'redraw' => 'Nogmaals weergeven',
'refresh' => 'Verversen',
'rejected' => 'Afgewezen',
'released' => 'Gepubliceerd',
@@ -917,7 +930,7 @@ Bovenliggende map: [folder_path]
Gebruiker: [username]
URL: [url]',
'removed_workflow_email_subject' => '[sitename]: [name] - Workflow verwijderd van document versie',
-'removeFolderFromDropFolder' => 'Verwijder de map na de import',
+'removeFolderFromDropFolder' => 'Map verwijderen uit Dropfilder',
'remove_marked_files' => 'Geselecteerde bestanden zijn verwijderd',
'repaired' => 'Gerepareerd',
'repairing_objects' => 'Documenten en mappen repareren.',
@@ -931,7 +944,7 @@ Gebruiker: [username]
URL: [url]',
'request_workflow_action_email_subject' => '[sitename]: [name] - Workflow – actie vereist',
'reset_checkout' => 'Beëindig het gebruik van het document',
-'restrict_access' => '',
+'restrict_access' => 'Toegang beperken',
'results_page' => 'Resultaten pagina',
'return_from_subworkflow' => 'Terug uit subworkflow',
'return_from_subworkflow_email_body' => 'Terug uit subworkflow
@@ -947,11 +960,11 @@ URL: [url]',
'reviewers' => 'Beoordelaars',
'reviewer_already_assigned' => 'is reeds aangewezen als beoordelaar',
'reviewer_already_removed' => 'is reeds verwijderd uit het beoordelingsproces of heeft reeds een beoordeling uitgevoerd',
-'reviews_accepted' => '',
-'reviews_not_touched' => '',
-'reviews_rejected' => '',
-'reviews_without_group' => '',
-'reviews_without_user' => '',
+'reviews_accepted' => '[no_reviews] reviews geaccepteerd',
+'reviews_not_touched' => '[no_reviews] reviews niet geopend',
+'reviews_rejected' => '[no_reviews] reviews geweigerd',
+'reviews_without_group' => 'reviews zonder groep',
+'reviews_without_user' => 'reviews zonder gebruiker',
'review_deletion_email' => 'Beoordelingsverzoek verwijderd',
'review_deletion_email_body' => 'Beoordelingsverzoek verwijderd
Document: [name]
@@ -985,12 +998,12 @@ URL: [url]',
'review_update_failed' => 'Fout: bijwerken status beoordeling mislukt.',
'revise_document' => 'Document herzien',
'revise_document_on' => 'Volgende herziening van document op [date]',
-'revisions_accepted' => '',
-'revisions_not_touched' => '',
-'revisions_pending' => '',
-'revisions_rejected' => '',
-'revisions_without_group' => '',
-'revisions_without_user' => '',
+'revisions_accepted' => '[no_revisions] revisies geaccepteerd',
+'revisions_not_touched' => '[no_revisions] revisies geopend',
+'revisions_pending' => '[no_revisions] revisies in afwachting',
+'revisions_rejected' => '[no_revisions] revisies geweigerd',
+'revisions_without_group' => '[no_revisions] revisies zonder groep',
+'revisions_without_user' => '[no_revisions] revisies zonder gebruiker',
'revision_date' => 'Datum revisie',
'revision_log' => 'Log herziening',
'revision_request_email_body' => 'Verzoek tot herziening
@@ -1016,12 +1029,12 @@ Gebruiker: [username]
URL: [url]',
'rewind_workflow_email_subject' => '[sitename]: [name] - Workflow is teruggezet',
'rewind_workflow_warning' => 'Als u de workflow terugzet naar oorspronkelijke staat, dan wordt de workflow historie voor dit document verwijderd en onherstelbaar.',
-'rm_attrdef' => 'Verwijder kenmerk definitie',
-'rm_attrdefgroup' => '',
-'rm_default_keyword_category' => 'Verwijder Categorie',
-'rm_document' => 'Verwijder Document',
+'rm_attrdef' => 'Verwijder kenmerkdefinitie',
+'rm_attrdefgroup' => 'Verwijder kenmerkdefinitie-groep',
+'rm_default_keyword_category' => 'Verwijder categorie',
+'rm_document' => 'Verwijder document',
'rm_document_category' => 'Verwijder categorie',
-'rm_event' => '',
+'rm_event' => 'Verwijder gebeurtenis',
'rm_file' => 'Verwijder bestand',
'rm_folder' => 'Verwijder map',
'rm_from_clipboard' => 'Verwijder van klembord',
@@ -1030,7 +1043,7 @@ URL: [url]',
'rm_transmittal' => 'Verwijder de verzending',
'rm_transmittalitem' => 'Verwijder verzonden item',
'rm_user' => 'Verwijder deze Gebruiker',
-'rm_user_from_processes' => '',
+'rm_user_from_processes' => 'Verwijder gebruiker uit het proces',
'rm_version' => 'Verwijder versie',
'rm_workflow' => 'Verwijder workflwo',
'rm_workflow_action' => 'Verwijder workflow actie',
@@ -1041,8 +1054,8 @@ URL: [url]',
'role_guest' => 'Gast',
'role_info' => 'Informtie over de rol',
'role_management' => 'Rol-management',
-'role_name' => 'Naam vd Rol',
-'role_type' => '',
+'role_name' => 'Naam vd rol',
+'role_type' => 'Type rol',
'role_user' => 'Gebruiker',
'ro_RO' => 'Roemeens',
'run_subworkflow' => 'Voer sub workflow uit',
@@ -1068,7 +1081,7 @@ URL: [url]',
'search_mode_or' => 'tenminste 1 woord',
'search_no_results' => 'Er zijn geen documenten gevonden die aan uw zoekvraag voldoen',
'search_query' => 'Zoeken naar',
-'search_report' => '[count] documenten en [foldercount] mappen gevonden in [searchtime] sec.',
+'search_report' => '[doccount] documenten en [foldercount] mappen gevonden in [searchtime] sec.',
'search_report_fulltext' => '[doccount] documenten gevonden',
'search_resultmode' => 'Zoek resultaat',
'search_resultmode_both' => 'Documenten en mappen',
@@ -1077,14 +1090,14 @@ URL: [url]',
'search_time' => 'Verstreken tijd: [time] sec.',
'seconds' => 'seconden',
'selection' => 'Selectie',
-'select_attrdefgrp_show' => '',
+'select_attrdefgrp_show' => 'Toon attribut definities-groep',
'select_category' => 'klik om categorie te selecteren',
'select_groups' => 'Klik om groep te selecteren',
'select_grp_approvers' => 'Klik om beoordelaars te selecteren',
'select_grp_ind_approvers' => 'Klik om beoordelaars te selecteren',
-'select_grp_ind_notification' => 'Klik om groep beoordelaar te selecteren',
-'select_grp_ind_recipients' => '',
-'select_grp_ind_reviewers' => 'Klik om groep beoordelaar te selecteren',
+'select_grp_ind_notification' => 'Selecteerd de groep',
+'select_grp_ind_recipients' => 'Selecteer de groep',
+'select_grp_ind_reviewers' => 'Selecteer de groep',
'select_grp_ind_revisors' => '',
'select_grp_notification' => 'Klik voor groepsnotificatiebeoordelaars',
'select_grp_recipients' => 'Klik om groep beoordelaar te selecteren',
@@ -1098,10 +1111,15 @@ URL: [url]',
'select_one' => 'Selecteer een',
'select_users' => 'Klik om gebruikers te selecteren',
'select_workflow' => 'Selecteer workflow',
-'send_email' => '',
-'send_login_data' => '',
-'send_login_data_body' => '',
-'send_login_data_subject' => '',
+'send_email' => 'Verstuur email',
+'send_login_data' => 'Verstuur Login-data',
+'send_login_data_body' => 'Login data
+
+Login: [login]
+Name: [username]
+
+[comment]',
+'send_login_data_subject' => 'Onderwerp',
'send_test_mail' => 'Testmail versturen',
'september' => 'september',
'sequence' => 'Volgorde',
@@ -1109,15 +1127,15 @@ URL: [url]',
'seq_end' => 'Op het einde',
'seq_keep' => 'Behoud Positie',
'seq_start' => 'Eerste positie',
-'sessions' => '',
+'sessions' => 'sessies',
'settings' => 'Instellingen',
'settings_activate_module' => 'Activeer module',
'settings_activate_php_extension' => 'Activeer PHP uitbreiding',
'settings_adminIP' => 'Beheer IP',
'settings_adminIP_desc' => 'Indien ingesteld kan de beheerder alleen vanaf het ingestelde IP adres inloggen. Leeg laten om controle te vermijden. Opmerking: Werkt alleen met lokale authenticatie (Geen LDAP)',
'settings_Advanced' => 'Uitgebreid',
-'settings_advancedAcl' => '',
-'settings_advancedAcl_desc' => '',
+'settings_advancedAcl' => 'Advanced Access control',
+'settings_advancedAcl_desc' => 'Advanced Access control staat het uit- en inschakelen van bepaalde modules toe. Het kan niet gebruikt worden voor het beheer van toegangsrechten van documenten en mappen.',
'settings_apache_mod_rewrite' => 'Apache - Module Rewrite',
'settings_Authentication' => 'Authenticatie instellingen',
'settings_autoLoginUser' => 'Automatische login',
@@ -1126,15 +1144,15 @@ URL: [url]',
=> ,
=> ,
=>',
-'settings_available_languages' => 'Beschikbare talen',
-'settings_available_languages_desc' => '',
+'settings_available_languages' => 'Beschikbare vertalingen',
+'settings_available_languages_desc' => 'Alleen de geselecteerde vertalingen worden beschikbaar in het taal-selectie-menu. De default-taal (EN) wordt altijd geladen.',
'settings_backupDir' => 'Instellingen backupmap',
'settings_backupDir_desc' => 'Instellingen backupmap',
'settings_cacheDir' => 'cache directory',
'settings_cacheDir_desc' => 'Waar de voorbeeld afbeeldingen zijn opgeslagen (het is het beste om te kiezen voor een pad, welke niet toegankelijk is door uw webserver)',
-'settings_Calendar' => 'Kalender instellingen',
-'settings_calendarDefaultView' => 'Kalender Standaard overzicht',
-'settings_calendarDefaultView_desc' => 'Kalender standaard overzicht',
+'settings_Calendar' => 'Instellingen van de agenda',
+'settings_calendarDefaultView' => 'Standaard overzicht agenda',
+'settings_calendarDefaultView_desc' => 'Pagina per dag/week/maand',
'settings_cannot_disable' => 'Bestand ENABLE_INSTALL_TOOL kon niet verwijderd worden',
'settings_checkOutDir' => 'Instellingen Checkoutmap',
'settings_checkOutDir_desc' => 'Instellingen Checkoutmap',
@@ -1144,8 +1162,8 @@ URL: [url]',
'settings_contentDir_desc' => 'Waar de verzonden bestande opgeslagen worden (Kan het beste een map zijn die niet benaderbaar is voor de webserver.)',
'settings_contentOffsetDir' => 'Inhouds Basis Map',
'settings_contentOffsetDir_desc' => 'Om de beperkingen van het onderliggende bestandssysteem te omzeilen, is een nieuwe mappenstructuur bedacht dat binnen de inhoudsmap (Inhoudsmap) bestaat. Hiervoor is een map nodig als basis. Gebruikelijk is om dit de standaardwaarde te laten, 1048576, maar kan elke waarde of tekst bevatten dat nog niet bestaat binnen de (Inhoudsmap)',
-'settings_convertToPdf' => '',
-'settings_convertToPdf_desc' => '',
+'settings_convertToPdf' => 'Document converteren naar PDF',
+'settings_convertToPdf_desc' => 'Als een document niet geschikt is voor Preview, wordt het geconverteerd naar PDF.',
'settings_cookieLifetime' => 'Cookie Life time',
'settings_cookieLifetime_desc' => 'Hoe lang een cookie moet worden behouden. Indien ingesteld op 0 worden de cookies verwijderd bij het afsluiten van de browser.',
'settings_coreDir' => 'Core letoDMS map',
@@ -1167,12 +1185,12 @@ URL: [url]',
'settings_dbUser' => 'Gebruikersnaam',
'settings_dbUser_desc' => 'De gebruikersnaam voor toegang tot de datbase ingevoerd tijdens de installatie. Verander de waarde niet tenzij echt nodig, bijvoorbeeld bij verplaatsing van de database naar een ander systeem.',
'settings_dbVersion' => 'Database schema te oud',
-'settings_defaultAccessDocs' => '',
-'settings_defaultAccessDocs_desc' => '',
-'settings_defaultSearchMethod' => 'Default zoekmethode',
-'settings_defaultSearchMethod_desc' => 'Default zoekmethode',
-'settings_defaultSearchMethod_valdatabase' => 'Default zoekmethode (database)',
-'settings_defaultSearchMethod_valfulltext' => 'Default fulltext-zoekmethode',
+'settings_defaultAccessDocs' => 'Standaard toegangsrechten voor nieuwe documenten',
+'settings_defaultAccessDocs_desc' => 'Als een nieuw document wordt gecreëerd, worden dit de nieuwe toegangsrechten.',
+'settings_defaultSearchMethod' => 'Standaard zoekmethode',
+'settings_defaultSearchMethod_desc' => 'Default zoekmethode = op documentnaam / fulltext-search',
+'settings_defaultSearchMethod_valdatabase' => 'Default zoekmethode (Documentnaam)',
+'settings_defaultSearchMethod_valfulltext' => 'Default fulltext-zoeken',
'settings_delete_install_folder' => 'Om SeedDMS te kunnen gebruiken moet het bestand ENABLE_INSTALL_TOOL uit de configuratiemap verwijderd worden.',
'settings_disableSelfEdit' => 'Uitschakelen Eigenprofiel wijzigen',
'settings_disableSelfEdit_desc' => 'Indien aangevinkt kan de gebruiker zijn eigen profiel niet wijzigen.',
@@ -1181,59 +1199,59 @@ URL: [url]',
'settings_dropFolderDir' => 'Pad voor drop folder',
'settings_dropFolderDir_desc' => 'Dit pad kan gebruikt worden voor dropfiles op de server en hier vanaf te importeren in plaats van uploaden via de browser.',
'settings_Edition' => 'Uitgave instellingen',
-'settings_editOnlineFileTypes' => 'Instellingen Filetypes',
-'settings_editOnlineFileTypes_desc' => 'Online zoekmethoden bewerken',
-'settings_enable2FactorAuthentication' => '',
-'settings_enable2FactorAuthentication_desc' => '',
+'settings_editOnlineFileTypes' => 'Online bewerken van de volgende filetypes',
+'settings_editOnlineFileTypes_desc' => 'Bestanden met één van de volgende extensies kunnen online bewerkt worden (ALLEEN KLEINE LETTERS GEBRUIKEN!)',
+'settings_enable2FactorAuthentication' => 'Schakel 2-factor-authenticatie in',
+'settings_enable2FactorAuthentication_desc' => 'In/Uitschakelen 2-factor-authenticatie. Gebruikers moeten Google Authenticator op hun mobile telefoon installeren.',
'settings_enableAcknowledgeWorkflow' => 'Aanzetten Workflow-stappen',
'settings_enableAcknowledgeWorkflow_desc' => 'Aanzetten workflow-stappen',
-'settings_enableAdminReceipt' => '',
-'settings_enableAdminReceipt_desc' => '',
+'settings_enableAdminReceipt' => 'Sta ontvangst van documenten door admins toe',
+'settings_enableAdminReceipt_desc' => 'Inschakelen als u admins documenten wilt laten ontvangen',
'settings_enableAdminRevApp' => 'Inschakelen Beheer Contr/Beoord',
'settings_enableAdminRevApp_desc' => 'Uitvinken om beheerder niet te tonen als controleerder/beoordeler',
-'settings_enableCalendar' => 'Inschakelen Kalendar',
-'settings_enableCalendar_desc' => 'Inschakelen/uitschakelen kalender',
+'settings_enableCalendar' => 'Agenda inschakelen',
+'settings_enableCalendar_desc' => 'Inschakelen/uitschakelen agenda',
'settings_enableClipboard' => 'Activeer klembord',
'settings_enableClipboard_desc' => 'Activeer/ blokkeer het klembord',
-'settings_enableConverting' => 'Inschakelen Conversie',
-'settings_enableConverting_desc' => 'Inschakelen/uitschakelen conversie van bestanden',
-'settings_enableDropFolderList' => '',
-'settings_enableDropFolderList_desc' => '',
+'settings_enableConverting' => 'Documenten converteren',
+'settings_enableConverting_desc' => 'Inschakelen/uitschakelen conversie van bestanden naar PDF',
+'settings_enableDropFolderList' => 'Inschakelen van de lijst van files in dropfolder.',
+'settings_enableDropFolderList_desc' => 'De lijst van files in Dropfolder zichtbaar maken in het menu',
'settings_enableDropUpload' => 'Inschakelen Snelle Upload',
'settings_enableDropUpload_desc' => 'Aanzetten DropUpload',
'settings_enableDuplicateDocNames' => 'Sta duplicaten van documentnamen toe',
'settings_enableDuplicateDocNames_desc' => 'Staat het toe om documentnamen te dupliceren in een folder.',
-'settings_enableEmail' => 'Inschakelen E-mail',
+'settings_enableEmail' => 'E-mail inschakelen',
'settings_enableEmail_desc' => 'Inschakelen/uitschakelen automatische email notificatie',
-'settings_enableFolderTree' => 'Inschakelen Mappenstructuur',
+'settings_enableFolderTree' => 'Mappenstructuur tonen',
'settings_enableFolderTree_desc' => 'Uitschakelen om de mappenstructuur niet te tonen',
-'settings_enableFullSearch' => 'Inschakelen volledigetekst zoekopdracht',
+'settings_enableFullSearch' => 'Volledige-tekst zoeken',
'settings_enableFullSearch_desc' => 'Inschakelen zoeken in volledigetekst',
-'settings_enableGuestAutoLogin' => 'Gast login automatisch aanzetten',
+'settings_enableGuestAutoLogin' => 'Gastlogin automatisch aanzetten',
'settings_enableGuestAutoLogin_desc' => 'Gastlogin automatisch aanzetten',
-'settings_enableGuestLogin' => 'Inschakelen Gast login',
+'settings_enableGuestLogin' => 'Inschakelen Gastlogin',
'settings_enableGuestLogin_desc' => 'Als U iemand wilt laten inloggen als gast, schakel deze optie in. Opmerking: Gast login kan het beste alleen in een beveiligde omgeving ingeschakeld worden',
'settings_enableHelp' => 'Hulp aanzetten',
'settings_enableHelp_desc' => 'Hulp aanzetten',
-'settings_enableLanguageSelector' => 'Activeer Taal instellen',
+'settings_enableLanguageSelector' => 'Taal activerenen',
'settings_enableLanguageSelector_desc' => 'Laat selector zien voor taalinterface, nadat gebruikers inloggen.',
-'settings_enableLargeFileUpload' => 'Inschakelen groot bestand upload',
+'settings_enableLargeFileUpload' => 'Grote bestanden uploaden',
'settings_enableLargeFileUpload_desc' => 'Indien ingeschakeld, is bestandsupload ook beschikbaar via een java applet jumploader genaamd zonder een bestandsgrootte limiet door de browser. Het staat ook toe om meerdere bestanden in een keer te versturen.',
'settings_enableMenuTasks' => 'Menu-taken aanzetten',
'settings_enableMenuTasks_desc' => 'Menu-taken aanzetten',
-'settings_enableMultiUpload' => '',
-'settings_enableMultiUpload_desc' => '',
-'settings_enableNotificationAppRev' => 'Inschakelen controleur/beoordeler notificatie',
+'settings_enableMultiUpload' => 'Multi-upload',
+'settings_enableMultiUpload_desc' => 'Bij multiupload kunnen tegelijkertijd verschillende bestanden worden geüpload. Ieder bestand wordt een nieuw document.',
+'settings_enableNotificationAppRev' => 'Notificeren controleur/beoordeler',
'settings_enableNotificationAppRev_desc' => 'Vink aan om een notificatie te versturen naar de controleur/beoordeler als een nieuw document versie is toegevoegd.',
'settings_enableNotificationWorkflow' => 'Workflow-notificatie aanzetten',
'settings_enableNotificationWorkflow_desc' => 'Workflow-notificatie aanzetten',
-'settings_enableOwnerNotification' => 'Inschakelen eigenaarnotificatie standaard',
-'settings_enableOwnerNotification_desc' => 'Inschakelen van notificatie naar de eigenaar als een document is toegevoegd.',
-'settings_enableOwnerReceipt' => '',
-'settings_enableOwnerReceipt_desc' => '',
+'settings_enableOwnerNotification' => 'Standaard eigenaar notificeren',
+'settings_enableOwnerNotification_desc' => 'Inschakelen van notificatie naar de eigenaar als een document wordt toegevoegd.',
+'settings_enableOwnerReceipt' => 'Laten weten wat er met het document gebeurt aan eigenaar',
+'settings_enableOwnerReceipt_desc' => 'Inschakelen als u wilt dat de eigenaar van het document op de lijst van ontvangers komt.',
'settings_enableOwnerRevApp' => 'Beoordeling / goedkeuring voor eigenaar toestaan',
'settings_enableOwnerRevApp_desc' => 'Activeer dit als de eigenaar van een document genoteerd staat as beoordelaar/ goedkeurder en voor workflow overdrachten.',
-'settings_enablePasswordForgotten' => 'Inschakelen wachtwoord vergeten',
+'settings_enablePasswordForgotten' => '\'wachtwoord vergeten\' aanzetten',
'settings_enablePasswordForgotten_desc' => 'Inschakelen om een wachtwoord via mail te versturen als de gebruiker een nieuw wachtwoord heeft ingesteld.',
'settings_enableRecursiveCount' => 'Document/ map teller herhalen toestaan',
'settings_enableRecursiveCount_desc' => 'If turned on, the number of documents and folders in the folder view will be determined by counting all objects by recursively processing the folders and counting those documents and folders the user is allowed to access.',
@@ -1241,14 +1259,14 @@ URL: [url]',
'settings_enableRevisionWorkflow_desc' => 'Herzieningsworkflow aanzetten',
'settings_enableSelfRevApp' => 'Beoordeling/ goedkeuring toestaan voor ingelogde gebruikers',
'settings_enableSelfRevApp_desc' => 'Schakel in indien the huidig ingelogde gebruiker wordt toegewezen als goedkeurder/ beoordelaar en voor workflow overgangen.',
-'settings_enableSessionList' => '',
-'settings_enableSessionList_desc' => '',
-'settings_enableThemeSelector' => 'Selecteer thema',
+'settings_enableSessionList' => 'Lijst van gebruikers online',
+'settings_enableSessionList_desc' => 'Laat zien welke gebruikers online zijn',
+'settings_enableThemeSelector' => 'Thema selecteren',
'settings_enableThemeSelector_desc' => 'Schakel thema selectie op de aanmeldpagina uit',
-'settings_enableUpdateReceipt' => '',
-'settings_enableUpdateReceipt_desc' => '',
-'settings_enableUpdateRevApp' => '',
-'settings_enableUpdateRevApp_desc' => '',
+'settings_enableUpdateReceipt' => 'Veranderen van bestaande bestemming toestaan',
+'settings_enableUpdateReceipt_desc' => 'Mag de gebruiker die een bestemming heeft opgesteld, zijn beslissing wijzigen?',
+'settings_enableUpdateRevApp' => 'Wijzig bestaande review/goedkeuring',
+'settings_enableUpdateRevApp_desc' => 'Mag de gebruiker die een review//goedkeuring heeft gegeven, zijn beslissing wijzigen (zolang de huidige stap in de workflow nog duurt)?',
'settings_enableUserImage' => 'Inschakelen Gebruikersplaatjes',
'settings_enableUserImage_desc' => 'Inschakelen Gebruikerplaatjes',
'settings_enableUsersView' => 'Inschakelen Gebruikers overzicht',
@@ -1268,9 +1286,9 @@ URL: [url]',
'settings_Extensions' => 'Uitbreidingen',
'settings_extraPath' => 'Extra PHP include Path',
'settings_extraPath_desc' => 'Pad naar extra software. Dit pad bevat bv. het adodb pad of de extra pear packages.',
-'settings_firstDayOfWeek' => 'Eerste weekdag',
-'settings_firstDayOfWeek_desc' => 'Eerste dag van de week',
-'settings_footNote' => 'Onderschrift',
+'settings_firstDayOfWeek' => 'Eerste dag van de week',
+'settings_firstDayOfWeek_desc' => 'Eerste dag van de (werk)week',
+'settings_footNote' => 'Subtitel',
'settings_footNote_desc' => 'Bericht om onderop elke pagina te tonen',
'settings_fullSearchEngine' => 'Instellingen Fulltextsearch',
'settings_fullSearchEngine_desc' => 'Instellingen Fulltextsearch',
@@ -1294,8 +1312,8 @@ URL: [url]',
'settings_install_welcome_text' => '
Wees er zeker van dat u een bestand, genaamd \'ENABLE_INSTALL_TOOL\', gemaakt heeft in de configuratiemap, voordat u de installatie van letDMS begint, anders zal de installatie niet werken. Op een Unix-Syteem kan dit makkelijk gedaan worden met \'touch conf/ENABLE_INSTALL_TOOL\'. Verwijder het bestand nadat de installatie afgerond is.
letoDMS heeft weinig installatievoorwaarden. U heeft een mysql database en een php-geschikte web server nodig. Voor de lucene volledige tekst zoekfunctie, moet Zend framework geinstalleerd zijn op schijf en gevonden worden door php. Vanaf versie 3.2.0 van letoDMS zal ADOdb geen deel meer uitmaken van de uitgave. Een kopie kan van http://adodb.sourceforge.net gehaald en geinstalleerd worden. Het pad kan later opgegeven worden tijdens de installatie.
Als u de database voor de installatie wilt aanmaken, dan kunt u het handmatig met uw favoriete gereedschap aanmaken. optioneel kan een database met gebruikerstoegang gemaakt worden en importeer een van de database dumps in de configuratiemap. Met het installatiescript kan dit ook, maar hiervoor is database toegang nodig met voldoende rechten om een database aan te maken.
', 'settings_install_welcome_title' => 'Welkom bij de installatie van letoDMS', 'settings_install_zendframework' => 'Installeer Zend Framework, als u volledigetekst zoekmechanisme wilt gebruiken', -'settings_language' => 'Standaard taal', -'settings_language_desc' => 'Standaard taal (naam van de submap in map "languages")', +'settings_language' => 'Standaardtaal', +'settings_language_desc' => 'Standaardtaal (naam van de submap in map "languages")', 'settings_libraryFolder' => 'Bibliotheekmap', 'settings_libraryFolder_desc' => 'In deze map kunnen documenten worden opgeslagen. Hiermee worden nieuwe documenten gecreëerd.', 'settings_logFileEnable' => 'Inschakelen Logbestand', @@ -1316,10 +1334,10 @@ URL: [url]', 'settings_maxItemsPerPage_desc' => '', 'settings_maxRecursiveCount' => 'Max. nummers of recursieve document/map telling', 'settings_maxRecursiveCount_desc' => 'Dit is het maximum aantal documenten of mappen dat zal worden gecontroleerd voor toegangsrechten bij recursieve objecten telling. Als dit aantal is overschreden, zal het aantal documenten en mappen in de het map overzicht worden geschat.', -'settings_maxSizeForFullText' => '', -'settings_maxSizeForFullText_desc' => '', -'settings_maxUploadSize' => '', -'settings_maxUploadSize_desc' => '', +'settings_maxSizeForFullText' => 'Maximum bestandsgrootte voor onmiddellijke indexering', +'settings_maxSizeForFullText_desc' => 'Alle nieuwe documenten kleiner dan deze waarde worden direct na het uploaden geïndexeerd. In alle andere gevallen worden alleen de metadata geïndexeerd.', +'settings_maxUploadSize' => 'Maximale omvang voor uploaden', +'settings_maxUploadSize_desc' => 'Dit is de maximale omvang voor te uploaden bestanden. Dat geldt voor bestanden en bijlagen.', 'settings_more_settings' => 'Meer instellingen. Standaard login: admin/admin', 'settings_notfound' => 'Niet gevonden', 'settings_Notification' => 'Notificatie instellingen', @@ -1356,12 +1374,12 @@ URL: [url]', 'settings_previewWidthList_desc' => 'Breedte van het voorbeeld weergegeven in lijsten', 'settings_previewWidthMenuList' => '', 'settings_previewWidthMenuList_desc' => '', -'settings_printDisclaimer' => 'Print Vrijwaring', -'settings_printDisclaimer_desc' => 'Indien ingeschakeld zal het vrijwarings bericht in de lang.inc bestanden worden getoond onderop de pagina', +'settings_printDisclaimer' => 'Vrijwaring afdrukken', +'settings_printDisclaimer_desc' => 'Indien ingeschakeld zal het vrijwaringsbericht bestanden worden getoond onderaan de pagina', 'settings_quota' => 'Gebruikersquotum', 'settings_quota_desc' => 'Het maximum aantal bytes een gebruiker op de schijf mag schrijven. Stel deze in op 0 voor een onbeperkte schijfruimte. Deze waarde kan worden overschreven voor elk gebruik in zijn profiel.', 'settings_removeFromDropFolder' => 'Verwijder het bestand uit de dropfolder na een succesvolle upload', -'settings_removeFromDropFolder_desc' => '', +'settings_removeFromDropFolder_desc' => 'Verwijder het bestand uit de dropfolder na een succesvolle upload', 'settings_restricted' => 'Beperkte toegang', 'settings_restricted_desc' => 'Sta alleen gebruiker toe om in te loggen die in de database zijn opgenomen (ongeacht succesvolle authenticatie met LDAP)', 'settings_rootDir' => 'Basismap', @@ -1371,15 +1389,15 @@ URL: [url]', 'settings_SaveError' => 'Opslagfout Configuratiebestand', 'settings_Server' => 'Server instellingen', 'settings_showFullPreview' => 'Toon volledige document', -'settings_showFullPreview_desc' => '', +'settings_showFullPreview_desc' => 'In/Uitschakelen preview van alle pagina\'s van het document.', 'settings_showMissingTranslations' => 'Ontbrekende vertalingen weergeven', 'settings_showMissingTranslations_desc' => 'Geef alle ontbrekende vertalingen onder aan de pagina weer. De gebruiker kan een verzoek tot vertaling indienen dat wordt opgeslagen als csv bestand. Let op! Zet deze functie niet aan in productieomgevingen!', -'settings_showSingleSearchHit' => '', -'settings_showSingleSearchHit_desc' => '', +'settings_showSingleSearchHit' => 'Spring rechtstreeks naar het enkele zoekresultaat', +'settings_showSingleSearchHit_desc' => 'Als er maar één zoekresultaat is, wordt dat in detail getoond.', 'settings_Site' => 'Web Locatie', -'settings_siteDefaultPage' => 'Locatie standaard pagina', -'settings_siteDefaultPage_desc' => 'Standaard pagina bij inloggen. Indien leeg is out/out.ViewFolder.php de standaard', -'settings_siteName' => 'Locatie Naam', +'settings_siteDefaultPage' => 'Locatie standaardpagina', +'settings_siteDefaultPage_desc' => 'Standaardpagina bij inloggen. Indien leeg is out/out.ViewFolder.php de standaard', +'settings_siteName' => 'Naam van de site', 'settings_siteName_desc' => 'Naam van de Locatie dat wordt gebruikt in de titel van de paginas. Standaard: letoDMS', 'settings_SMTP' => 'SMTP Server instellingen', 'settings_smtpPassword' => 'SMTP Server paswoord', @@ -1406,8 +1424,8 @@ URL: [url]', 'settings_start_install' => 'Begin installatie', 'settings_stopWordsFile' => 'Pad naar bestand met nietindex woorden', 'settings_stopWordsFile_desc' => 'Als volledigetekst zoekopdracht is ingeschakeld, bevat dit bestand woorden die niet geindexeerd zullen worden.', -'settings_strictFormCheck' => 'Stricte Form Controle', -'settings_strictFormCheck_desc' => 'Stricte formuleer controle. Indien ingeschakeld, worden alle velden in het formulier gecontroleer op een waarde. Indien uitgeschakeld, worden de meeste commentaar en invoervelden optioneel. Commentaren zijn altijd benodigd bij een review of modificatie van een documentstatus', +'settings_strictFormCheck' => 'Strikte formaatcontrole', +'settings_strictFormCheck_desc' => 'Strikte controle op het juiste formaat. Indien ingeschakeld, worden alle velden in het formulier gecontroleer op een waarde. Indien uitgeschakeld, worden de meeste commentaar en invoervelden opgevat als optioneel. Commentaren zijn altijd nodig bij een review of modificatie van een documentstatus', 'settings_suggestionvalue' => 'Voorgestelde waarde', 'settings_System' => 'Systeem', 'settings_theme' => 'Standaard thema', @@ -1423,7 +1441,7 @@ URL: [url]', 'settings_versioningFileName' => 'Versieinformatie Bestandsnaam', 'settings_versioningFileName_desc' => 'De naam van het versie informatie bestand gemaakt door het backupgereedschap', 'settings_versiontolow' => 'Versie te laag', -'settings_viewOnlineFileTypes' => 'Bekijk Online Bestandstypen', +'settings_viewOnlineFileTypes' => 'De volgende bestandstypen online bekijken', 'settings_viewOnlineFileTypes_desc' => 'Bestanden met een van de volgende extensies kunnen online bekeken worden (GEBRUIK ALLEEN KLEINE LETTERS)', 'settings_workflowMode' => 'Workflow mode', 'settings_workflowMode_desc' => 'De uitgebreide workflow maakt het mogelijk om uw eigen workflow op te geven voor documentversies.', @@ -1448,53 +1466,53 @@ URL: [url]', 'splash_add_group_member' => 'Nieuwe groepslid toegevoegd', 'splash_add_role' => 'Nieuwe rol toegevoegd', 'splash_add_to_transmittal' => 'Toevoegen aan verzending', -'splash_add_transmittal' => '', +'splash_add_transmittal' => 'Verzending toegevoegd', 'splash_add_user' => 'Nieuwe gebruiker toegevoegd', -'splash_cleared_cache' => '', +'splash_cleared_cache' => 'Cache leeggemaakt', 'splash_cleared_clipboard' => 'Klembord leeg gemaakt', 'splash_document_added' => 'Nieuw document toegevoegd', 'splash_document_checkedout' => 'Document in gebruik genomen', 'splash_document_edited' => 'Document opgeslagen', -'splash_document_indexed' => '', +'splash_document_indexed' => 'Document geïndexeerd', 'splash_document_locked' => 'Document vergrendeld', 'splash_document_unlocked' => 'Document ontgrendeld', 'splash_edit_attribute' => 'Attribuut opgeslagen', -'splash_edit_event' => '', +'splash_edit_event' => 'Gebeurtenis opgeslagen', 'splash_edit_group' => 'Groep opgeslagen', 'splash_edit_role' => 'Rol opgeslagen', 'splash_edit_user' => 'Gebruiker opgeslagen', 'splash_error_add_to_transmittal' => 'Fout: toevoeging aan verzending', -'splash_error_rm_download_link' => '', -'splash_error_send_download_link' => '', +'splash_error_rm_download_link' => 'Fout bij verwijderen download-link', +'splash_error_send_download_link' => 'Fout bij verzenden download-link', 'splash_folder_edited' => 'Opslaan mapwijzigingen', -'splash_importfs' => '', +'splash_importfs' => 'Geïmporteerd: [docs] documenten en [folders] mappen', 'splash_invalid_folder_id' => 'Ongeldige map ID', 'splash_invalid_searchterm' => 'Ongeldige zoekterm', 'splash_moved_clipboard' => 'Klembord verplaatst naar de huidige map', 'splash_move_document' => 'Document verplaatst', 'splash_move_folder' => 'Map verplaatst', -'splash_receipt_update_success' => '', +'splash_receipt_update_success' => 'Ontvangst succesvol toegevoegd', 'splash_removed_from_clipboard' => 'Verwijderd van het klembord', 'splash_rm_attribute' => 'Attribuut verwijderd', 'splash_rm_document' => 'Document verwijderd', -'splash_rm_download_link' => '', +'splash_rm_download_link' => 'Download-link verwijderd', 'splash_rm_folder' => 'Map verwijderd', 'splash_rm_group' => 'Groep verwijderd', 'splash_rm_group_member' => 'Lid van de groep verwijderd', 'splash_rm_role' => 'Rol verwijderd', 'splash_rm_transmittal' => 'Verzending verwijderd', 'splash_rm_user' => 'Gebruiker verwijderd', -'splash_rm_user_processes' => '', -'splash_saved_file' => '', -'splash_save_user_data' => '', -'splash_send_download_link' => '', -'splash_send_login_data' => '', +'splash_rm_user_processes' => 'Gebruiker uit alle processen verwijderd', +'splash_saved_file' => 'Bestand opgeslagen', +'splash_save_user_data' => 'Gebruikersgegevens opgeslagen', +'splash_send_download_link' => 'Download-link verzonden', +'splash_send_login_data' => 'Login-gegevens verzonden', 'splash_settings_saved' => 'Instellingen opgeslagen', 'splash_substituted_user' => 'Invallers gebruiker', 'splash_switched_back_user' => 'Teruggeschakeld naar de oorspronkelijke gebruiker', 'splash_toogle_group_manager' => 'Group manager toogled', 'splash_transfer_document' => '', -'splash_transfer_objects' => '', +'splash_transfer_objects' => 'Objecten overgedragen', 'state_and_next_state' => 'staat/ volgende staat', 'statistic' => 'Statistieken', 'status' => 'Status', @@ -1517,7 +1535,7 @@ URL: [url]', 'status_revisor_removed' => 'Verwijderd', 'status_unknown' => 'Onbekend', 'storage_size' => 'Omvang opslag', -'submit_2_fact_auth' => '', +'submit_2_fact_auth' => '2-factor-authentificatie verstuurd', 'submit_approval' => 'Verzend [Goedkeuring]', 'submit_login' => 'Log in', 'submit_password' => 'Nieuw wachtwoord instellen', @@ -1526,7 +1544,7 @@ URL: [url]', 'submit_review' => 'Verzend Beoordeling', 'submit_revision' => 'Herziening verzenden', 'submit_userinfo' => 'Wijzigingen opslaan', -'subsribe_timelinefeed' => '', +'subsribe_timelinefeed' => 'Subscribe to timeline feed', 'substitute_to_user' => 'Switch naar \'[username]\'', 'substitute_user' => 'Invaller/ vervanger Gebruiker', 'success_add_aro' => 'Access request object added', @@ -1537,13 +1555,13 @@ URL: [url]', 'sunday_abbr' => 'zo', 'sv_SE' => 'Zweeds', 'switched_to' => 'Overgeschakeld naar', -'takeOverAttributeValue' => '', +'takeOverAttributeValue' => 'Onthoud de waarde van het attribuut', 'takeOverGrpApprover' => 'Onthoud de laatste groep goedkeurders', 'takeOverGrpReviewer' => 'Onthoud de laatste groep herzieners', 'takeOverIndApprover' => 'Onthoud de laatste groep individuele goedkeurders', 'takeOverIndReviewer' => 'Onthoud de laatste groep individuele herzieners', 'tasks' => 'taken', -'temp_jscode' => '', +'temp_jscode' => 'Tijdelijke jscode', 'testmail_body' => 'Deze mail dient enkel voor het testen van de mail configuratie van SeedDMS', 'testmail_subject' => 'Test mail', 'theme' => 'Thema', @@ -1563,18 +1581,18 @@ URL: [url]', 'timeline_skip_status_change_1' => 'wacht op goedkeuring', 'timeline_skip_status_change_2' => 'gepubliceerd', 'timeline_skip_status_change_3' => 'binnen de workflow', -'timeline_skip_status_change_4' => '', -'timeline_skip_status_change_5' => '', +'timeline_skip_status_change_4' => 'in revisie', +'timeline_skip_status_change_5' => 'concept', 'timeline_status_change' => 'Versie [version]: [status]', 'to' => 'aan', 'toggle_manager' => 'Wijzig Beheerder', -'toggle_qrcode' => '', +'toggle_qrcode' => 'Tonen/Verbergen QR-code', 'to_before_from' => 'De einddatum mag niet voor de startdatum liggen', 'transfer_document' => 'Document overdragen', 'transfer_no_read_access' => '', 'transfer_no_write_access' => '', -'transfer_objects' => '', -'transfer_objects_to_user' => '', +'transfer_objects' => 'Objecten overdragen', +'transfer_objects_to_user' => 'Objecten overdragen aan gebruiker', 'transfer_to_user' => '', 'transition_triggered_email' => 'Workflow-overgang geactiveerd', 'transition_triggered_email_body' => 'Workflow Overgang @@ -1599,9 +1617,9 @@ URL: [url]', 'tr_TR' => 'Turks', 'tuesday' => 'dinsdag', 'tuesday_abbr' => 'di', -'type_of_hook' => '', +'type_of_hook' => 'Soort hook', 'type_to_search' => 'zoeken naar', -'uk_UA' => 'Oekraïne', +'uk_UA' => 'Oekraïens', 'under_folder' => 'In map', 'unknown_attrdef' => 'Onbekende attribuut definitie', 'unknown_command' => 'Opdracht niet herkend.', @@ -1634,12 +1652,12 @@ URL: [url]', 'uploading_zerosize' => 'Uploaden van een leeg bestand. Upload wordt geannuleerd.', 'used_discspace' => 'Gebruike schijf ruimte', 'user' => 'Gebruiker', -'userid_groupid' => 'Gebruiker id/Groep id', +'userid_groupid' => 'GebruikerID / Groep ID', 'users' => 'Gebruikers', 'users_and_groups' => 'Gebruikers / Groepen', 'users_done_work' => 'Uitgevoerd werk gebruikers', 'user_exists' => 'Gebruiker bestaat reeds.', -'user_group' => 'Gebruiker/Groep', +'user_group' => 'Gebruiker / Groep', 'user_group_management' => 'Gebruikers / Groepen beheer', 'user_image' => 'Afbeelding', 'user_info' => 'Gebruikers informatie', @@ -1650,7 +1668,7 @@ URL: [url]', 'use_comment_of_document' => 'Gebruik reactie van document', 'use_default_categories' => 'Gebruik voorgedefinieerde categorieen', 'use_default_keywords' => 'Gebruik bestaande sleutelwoorden', -'valid_till' => '', +'valid_till' => 'Geldig tot', 'version' => 'Versie', 'versioning_file_creation' => 'Aanmaken bestand versies', 'versioning_file_creation_warning' => 'Met deze handeling maakt U een bestand aan die de versie voortgang informatie van een compleet DMS bevat. Na het aanmaken wordt ieder bestand opgeslagen in de document map.', @@ -1673,23 +1691,23 @@ URL: [url]', 'weeks' => 'Weken', 'week_view' => 'Week Overzicht', 'workflow' => 'Workflow', -'workflows_involded' => '', +'workflows_involded' => 'Betrokken bij workflows', 'workflow_actions_management' => 'Workflow actiebeheer', 'workflow_action_in_use' => 'Deze actie wordt momenteel gebruikt door een workflow', 'workflow_action_name' => 'Naam', 'workflow_editor' => 'Workflow editor', 'workflow_group_summary' => 'Groepssamenvatting', -'workflow_has_cycle' => '', +'workflow_has_cycle' => 'Workflow heeft cyclus', 'workflow_initstate' => 'Begin status', 'workflow_in_use' => 'Deze workflow wordt momenteel gebruikt door documenten.', -'workflow_layoutdata_saved' => '', +'workflow_layoutdata_saved' => 'Sla de layout op', 'workflow_management' => 'Workflow beheer', 'workflow_name' => 'Naam', -'workflow_no_doc_rejected_state' => '', -'workflow_no_doc_released_state' => '', -'workflow_no_initial_state' => '', +'workflow_no_doc_rejected_state' => 'Het document ma in deze fase van de workflow niet geweigerd worden!', +'workflow_no_doc_released_state' => 'Het document ma in deze fase van de workflow niet gesloten worden', +'workflow_no_initial_state' => 'Gen enkele overdracht begint met de startfase van de workflow', 'workflow_no_states' => 'U moet eerst workflow-statussen definiëren, voordat u een workflow toevoegt.', -'workflow_save_layout' => '', +'workflow_save_layout' => 'Sla de layout op', 'workflow_state' => 'workflow_states_managementWorkflow status beheer', 'workflow_states_management' => 'Workflow status beheer', 'workflow_state_docstatus' => 'Document status', diff --git a/restapi/index.php b/restapi/index.php index da9bb0fff..1b7d7c424 100644 --- a/restapi/index.php +++ b/restapi/index.php @@ -5,756 +5,945 @@ include("../inc/inc.Settings.php"); include("../inc/inc.Extension.php"); include("../inc/inc.Init.php"); include("../inc/inc.DBInit.php"); -//require_once "SeedDMS/Core.php"; -require_once "SeedDMS/Preview.php"; - -//$db = new SeedDMS_Core_DatabaseAccess($settings->_dbDriver, $settings->_dbHostname, $settings->_dbUser, $settings->_dbPass, $settings->_dbDatabase); -//$db->connect() or die ("Could not connect to db-server \"" . $settings->_dbHostname . "\""); -//$dms = new SeedDMS_Core_DMS($db, $settings->_contentDir.$settings->_contentOffsetDir); if(USE_PHP_SESSION) { - session_start(); - $userobj = null; - if(isset($_SESSION['userid'])) - $userobj = $dms->getUser($_SESSION['userid']); - elseif($settings->_enableGuestLogin) - $userobj = $dms->getUser($settings->_guestID); - else - exit; - $dms->setUser($userobj); + session_start(); + $userobj = null; + if(isset($_SESSION['userid'])) + $userobj = $dms->getUser($_SESSION['userid']); + elseif($settings->_enableGuestLogin) + $userobj = $dms->getUser($settings->_guestID); + else + exit; + $dms->setUser($userobj); } else { - require_once("../inc/inc.ClassSession.php"); - $session = new SeedDMS_Session($db); - if (isset($_COOKIE["mydms_session"])) { - $dms_session = $_COOKIE["mydms_session"]; - if(!$resArr = $session->load($dms_session)) { - /* Delete Cookie */ - setcookie("mydms_session", $dms_session, time()-3600, $settings->_httpRoot); - if($settings->_enableGuestLogin) - $userobj = $dms->getUser($settings->_guestID); - else - exit; - } + require_once("../inc/inc.ClassSession.php"); + $session = new SeedDMS_Session($db); + if (isset($_COOKIE["mydms_session"])) { + $dms_session = $_COOKIE["mydms_session"]; + if(!$resArr = $session->load($dms_session)) { + /* Delete Cookie */ + setcookie("mydms_session", $dms_session, time()-3600, $settings->_httpRoot); + if($settings->_enableGuestLogin) + $userobj = $dms->getUser($settings->_guestID); + else + exit; + } - /* Load user data */ - $userobj = $dms->getUser($resArr["userID"]); - if (!is_object($userobj)) { - /* Delete Cookie */ - setcookie("mydms_session", $dms_session, time()-3600, $settings->_httpRoot); - if($settings->_enableGuestLogin) - $userobj = $dms->getUser($settings->_guestID); - else - exit; - } - if($userobj->isAdmin()) { - if($resArr["su"]) { - $userobj = $dms->getUser($resArr["su"]); - } - } - $dms->setUser($userobj); - } + /* Load user data */ + $userobj = $dms->getUser($resArr["userID"]); + if (!is_object($userobj)) { + /* Delete Cookie */ + setcookie("mydms_session", $dms_session, time()-3600, $settings->_httpRoot); + if($settings->_enableGuestLogin) + $userobj = $dms->getUser($settings->_guestID); + else + exit; + } + if($userobj->isAdmin()) { + if($resArr["su"]) { + $userobj = $dms->getUser($resArr["su"]); + } + } + $dms->setUser($userobj); + } } - -#require 'Slim/Slim.php'; require "vendor/autoload.php"; -#\Slim\Slim::registerAutoloader(); + +function __getLatestVersionData($lc) { /* {{{ */ + $document = $lc->getDocument(); + $data = array( + 'type'=>'document', + 'id'=>(int)$document->getId(), + 'date'=>date('Y-m-d H:i:s', $document->getDate()), + 'name'=>$document->getName(), + 'comment'=>$document->getComment(), + 'keywords'=>$document->getKeywords(), + 'mimetype'=>$lc->getMimeType(), + 'version'=>$lc->getVersion(), + 'size'=>$lc->getFileSize(), + ); + $cats = $document->getCategories(); + if($cats) { + $c = array(); + foreach($cats as $cat) { + $c[] = array('id'=>(int)$cat->getID(), 'name'=>$cat->getName()); + } + $data['categories'] = $c; + } + $attributes = $document->getAttributes(); + if($attributes) { + $attrvalues = array(); + foreach($attributes as $attrdefid=>$attribute) + $attrvalues[] = array('id'=>(int)$attrdefid, 'value'=>$attribute->getValue()); + $data['attributes'] = $attrvalues; + } + $attributes = $lc->getAttributes(); + if($attributes) { + $attrvalues = array(); + foreach($attributes as $attrdefid=>$attribute) + $attrvalues[] = array('id'=>(int)$attrdefid, 'value'=>$attribute->getValue()); + $data['version-attributes'] = $attrvalues; + } + return $data; +} /* }}} */ + +function __getFolderData($folder) { /* {{{ */ + $data = array( + 'type'=>'folder', + 'id'=>$folder->getID(), + 'name'=>$folder->getName(), + 'comment'=>$folder->getComment(), + 'date'=>date('Y-m-d H:i:s', $folder->getDate()), + ); + $attributes = $folder->getAttributes(); + if($attributes) { + $attrvalues = array(); + foreach($attributes as $attrdefid=>$attribute) + $attrvalues[] = array('id'=>(int)$attrdefid, 'value'=>$attribute->getValue()); + $data['attributes'] = $attrvalues; + } + return $data; +} /* }}} */ function doLogin() { /* {{{ */ - global $app, $dms, $userobj, $session, $settings; + global $app, $dms, $userobj, $session, $settings; - $username = $app->request()->post('user'); - $password = $app->request()->post('pass'); + $username = $app->request()->post('user'); + $password = $app->request()->post('pass'); - $userobj = $dms->getUserByLogin($username); - if(!$userobj || md5($password) != $userobj->getPwd()) { - if(USE_PHP_SESSION) { - unset($_SESSION['userid']); - } else { - setcookie("mydms_session", $session->getId(), time()-3600, $settings->_httpRoot); - } - $app->response()->header('Content-Type', 'application/json'); - echo json_encode(array('success'=>false, 'message'=>'Login failed', 'data'=>'')); - } else { - if(USE_PHP_SESSION) { - $_SESSION['userid'] = $userobj->getId(); - } else { - if(!$id = $session->create(array('userid'=>$userobj->getId(), 'theme'=>$userobj->getTheme(), 'lang'=>$userobj->getLanguage()))) { - exit; - } + $userobj = $dms->getUserByLogin($username); + $user = null; - // Set the session cookie. - if($settings->_cookieLifetime) - $lifetime = time() + intval($settings->_cookieLifetime); - else - $lifetime = 0; - setcookie("mydms_session", $id, $lifetime, $settings->_httpRoot); - $dms->setUser($userobj); - } - $app->response()->header('Content-Type', 'application/json'); - echo json_encode(array('success'=>true, 'message'=>'', 'data'=>$userobj->getId())); - } + /* Authenticate against LDAP server {{{ */ + if (!$user && isset($settings->_ldapHost) && strlen($settings->_ldapHost)>0) { + require_once("../inc/inc.ClassLdapAuthentication.php"); + $authobj = new SeedDMS_LdapAuthentication($dms, $settings); + $user = $authobj->authenticate($username, $password); + } /* }}} */ + + /* Authenticate against SeedDMS database {{{ */ + if(!$user) { + require_once("../inc/inc.ClassDbAuthentication.php"); + $authobj = new SeedDMS_DbAuthentication($dms, $settings); + $user = $authobj->authenticate($username, $password); + } /* }}} */ + + if(!$user) { + if(USE_PHP_SESSION) { + unset($_SESSION['userid']); + } else { + setcookie("mydms_session", $session->getId(), time()-3600, $settings->_httpRoot); + } + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>false, 'message'=>'Login failed', 'data'=>'')); + } else { + if(USE_PHP_SESSION) { + $_SESSION['userid'] = $userobj->getId(); + } else { + if(!$id = $session->create(array('userid'=>$userobj->getId(), 'theme'=>$userobj->getTheme(), 'lang'=>$userobj->getLanguage()))) { + exit; + } + + // Set the session cookie. + if($settings->_cookieLifetime) + $lifetime = time() + intval($settings->_cookieLifetime); + else + $lifetime = 0; + setcookie("mydms_session", $id, $lifetime, $settings->_httpRoot); + $dms->setUser($userobj); + } + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>true, 'message'=>'', 'data'=>$userobj->getId())); + } } /* }}} */ function doLogout() { /* {{{ */ - global $app, $dms, $userobj, $session, $settings; + global $app, $dms, $userobj, $session, $settings; - if(USE_PHP_SESSION) { - unset($_SESSION['userid']); - } else { - setcookie("mydms_session", $session->getId(), time()-3600, $settings->_httpRoot); - } - $userobj = null; - $app->response()->header('Content-Type', 'application/json'); - echo json_encode(array('success'=>true, 'message'=>'', 'data'=>'')); + if(USE_PHP_SESSION) { + unset($_SESSION['userid']); + } else { + setcookie("mydms_session", $session->getId(), time()-3600, $settings->_httpRoot); + } + $userobj = null; + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>true, 'message'=>'', 'data'=>'')); } /* }}} */ function setFullName() { /* {{{ */ - global $app, $dms, $userobj; + global $app, $dms, $userobj; - if(!$userobj) { - $app->response()->header('Content-Type', 'application/json'); - echo json_encode(array('success'=>false, 'message'=>'Not logged in', 'data'=>'')); - } - $userobj->setFullName($app->request()->put('fullname')); - echo json_encode(array('success'=>true, 'message'=>'', 'data'=>$userobj->getFullName())); + if(!$userobj) { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>false, 'message'=>'Not logged in', 'data'=>'')); + return; + } + + $userobj->setFullName($app->request()->put('fullname')); + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>true, 'message'=>'', 'data'=>$userobj->getFullName())); } /* }}} */ function setEmail($id) { /* {{{ */ - global $app, $dms, $userobj; + global $app, $dms, $userobj; - if(!$userobj) { - $app->response()->header('Content-Type', 'application/json'); - echo json_encode(array('success'=>false, 'message'=>'Not logged in', 'data'=>'')); - } - $userobj->setEmail($app->request()->put('fullname')); - echo json_encode(array('success'=>true, 'message'=>'', 'data'=>$userid)); + if(!$userobj) { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>false, 'message'=>'Not logged in', 'data'=>'')); + return; + } + + $userobj->setEmail($app->request()->put('fullname')); + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>true, 'message'=>'', 'data'=>$userid)); } /* }}} */ function getLockedDocuments() { /* {{{ */ - global $app, $dms, $userobj; + global $app, $dms, $userobj; - if(false !== ($documents = $dms->getDocumentsLockedByUser($userobj))) { - $documents = SeedDMS_Core_DMS::filterAccess($documents, $userobj, M_READ); - foreach($documents as $document) { - $lc = $document->getLatestContent(); - $recs[] = array( - 'type'=>'document', - 'id'=>$document->getId(), - 'date'=>$document->getDate(), - 'name'=>$document->getName(), - 'mimetype'=>$lc->getMimeType(), - 'version'=>$lc->getVersion(), - 'size'=>$lc->getFileSize(), - 'comment'=>$document->getComment(), - 'keywords'=>$document->getKeywords(), - ); - } - $app->response()->header('Content-Type', 'application/json'); - echo json_encode(array('success'=>true, 'message'=>'', 'data'=>$recs)); - } else { - $app->response()->header('Content-Type', 'application/json'); - echo json_encode(array('success'=>false, 'message'=>'', 'data'=>'')); - } + if(false !== ($documents = $dms->getDocumentsLockedByUser($userobj))) { + $documents = SeedDMS_Core_DMS::filterAccess($documents, $userobj, M_READ); + $recs = array(); + foreach($documents as $document) { + $lc = $document->getLatestContent(); + if($lc) { + $recs[] = __getLatestVersionData($lc); + } + } + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>true, 'message'=>'', 'data'=>$recs)); + } else { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>false, 'message'=>'', 'data'=>'')); + } } /* }}} */ -function getFolder($id) { /* {{{ */ - global $app, $dms, $userobj; - $forcebyname = $app->request()->get('forcebyname'); - if(is_numeric($id) && empty($forcebyname)) - $folder = $dms->getFolder($id); - else { - $parentid = $app->request()->get('parentid'); - $folder = $dms->getFolderByName($id, $parentid); - } - if($folder) { - if($folder->getAccessMode($userobj) >= M_READ) { - $app->response()->header('Content-Type', 'application/json'); - $data = array( - 'id'=>$folder->getID(), - 'name'=>$folder->getName() - ); - echo json_encode(array('success'=>true, 'message'=>'', 'data'=>$data)); - } else { - $app->response()->status(404); - } - } else { - $app->response()->status(404); - } +function getFolder($id = null) { /* {{{ */ + global $app, $dms, $userobj, $settings; + $forcebyname = $app->request()->get('forcebyname'); + + if ($id === null) + $folder = $dms->getFolder($settings->_rootFolderID); + else if(is_numeric($id) && empty($forcebyname)) + $folder = $dms->getFolder($id); + else { + $parentid = $app->request()->get('parentid'); + $folder = $dms->getFolderByName($id, $parentid); + } + if($folder) { + if($folder->getAccessMode($userobj) >= M_READ) { + $data = __getFolderData($folder); + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>true, 'message'=>'', 'data'=>$data)); + } else { + $app->response()->status(404); + } + } else { + $app->response()->status(404); + } } /* }}} */ function getFolderParent($id) { /* {{{ */ - global $app, $dms, $userobj; - if($id == 0) { - echo json_encode(array('success'=>true, 'message'=>'id is 0', 'data'=>'')); - return; - } - $root = $dms->getRootFolder(); - if($root->getId() == $id) { - echo json_encode(array('success'=>true, 'message'=>'id is root folder', 'data'=>'')); - return; - } - $folder = $dms->getFolder($id); - $parent = $folder->getParent(); - if($parent) { - $rec = array('type'=>'folder', 'id'=>$parent->getId(), 'name'=>$parent->getName()); - echo json_encode(array('success'=>true, 'message'=>'', 'data'=>$rec)); - } else { - echo json_encode(array('success'=>false, 'message'=>'', 'data'=>'')); - } + global $app, $dms, $userobj; + if($id == 0) { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>true, 'message'=>'id is 0', 'data'=>'')); + return; + } + $root = $dms->getRootFolder(); + if($root->getId() == $id) { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>true, 'message'=>'id is root folder', 'data'=>'')); + return; + } + $folder = $dms->getFolder($id); + $parent = $folder->getParent(); + if($parent) { + $rec = __getFolderData($parent); + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>true, 'message'=>'', 'data'=>$rec)); + } else { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>false, 'message'=>'', 'data'=>'')); + } } /* }}} */ function getFolderPath($id) { /* {{{ */ - global $app, $dms, $userobj; - if($id == 0) { - echo json_encode(array('success'=>true, 'message'=>'id is 0', 'data'=>'')); - return; - } - $folder = $dms->getFolder($id); + global $app, $dms, $userobj; + if($id == 0) { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>true, 'message'=>'id is 0', 'data'=>'')); + return; + } + $folder = $dms->getFolder($id); - $path = $folder->getPath(); - $data = array(); - foreach($path as $element) { - $data[] = array('id'=>$element->getId(), 'name'=>htmlspecialchars($element->getName())); - } - echo json_encode(array('success'=>true, 'message'=>'', 'data'=>$data)); + $path = $folder->getPath(); + $data = array(); + foreach($path as $element) { + $data[] = array('id'=>$element->getId(), 'name'=>$element->getName()); + } + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>true, 'message'=>'', 'data'=>$data)); } /* }}} */ function getFolderAttributes($id) { /* {{{ */ - global $app, $dms, $userobj; - $folder = $dms->getFolder($id); + global $app, $dms, $userobj; + $folder = $dms->getFolder($id); - if($folder) { - if ($folder->getAccessMode($userobj) >= M_READ) { - $recs = array(); - $attributes = $folder->getAttributes(); - foreach($attributes as $attribute) { - $recs[] = array( - 'id'=>$attribute->getId(), - 'value'=>$attribute->getValue(), - 'name'=>$attribute->getAttributeDefinition()->getName(), - ); - } - $app->response()->header('Content-Type', 'application/json'); - echo json_encode(array('success'=>true, 'message'=>'', 'data'=>$recs)); - } else { - $app->response()->status(404); - } - } + if($folder) { + if ($folder->getAccessMode($userobj) >= M_READ) { + $recs = array(); + $attributes = $folder->getAttributes(); + foreach($attributes as $attribute) { + $recs[] = array( + 'id'=>$attribute->getId(), + 'value'=>$attribute->getValue(), + 'name'=>$attribute->getAttributeDefinition()->getName(), + ); + } + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>true, 'message'=>'', 'data'=>$recs)); + } else { + $app->response()->status(404); + } + } } /* }}} */ function getFolderChildren($id) { /* {{{ */ - global $app, $dms, $userobj; - if($id == 0) { - $folder = $dms->getRootFolder(); - $recs = array(array('type'=>'folder', 'id'=>$folder->getId(), 'name'=>$folder->getName())); - $app->response()->header('Content-Type', 'application/json'); - echo json_encode(array('success'=>true, 'message'=>'', 'data'=>$recs)); - } else { - $folder = $dms->getFolder($id); - if($folder) { - if($folder->getAccessMode($userobj) >= M_READ) { - $recs = array(); - $subfolders = $folder->getSubFolders(); - $subfolders = SeedDMS_Core_DMS::filterAccess($subfolders, $userobj, M_READ); - foreach($subfolders as $subfolder) { - $recs[] = array( - 'type'=>'folder', - 'id'=>$subfolder->getId(), - 'name'=>htmlspecialchars($subfolder->getName()), - 'comment'=>$subfolder->getComment(), - 'date'=>$subfolder->getDate(), - ); - } - $documents = $folder->getDocuments(); - $documents = SeedDMS_Core_DMS::filterAccess($documents, $userobj, M_READ); - foreach($documents as $document) { - $lc = $document->getLatestContent(); - if($lc) { - $recs[] = array( - 'type'=>'document', - 'id'=>$document->getId(), - 'date'=>$document->getDate(), - 'name'=>htmlspecialchars($document->getName()), - 'mimetype'=>$lc->getMimeType(), - 'version'=>$lc->getVersion(), - 'size'=>$lc->getFileSize(), - 'comment'=>$document->getComment(), - 'keywords'=>$document->getKeywords(), - ); - } - } - $app->response()->header('Content-Type', 'application/json'); - echo json_encode(array('success'=>true, 'message'=>'', 'data'=>$recs)); - } else { - $app->response()->header('Content-Type', 'application/json'); - echo json_encode(array('success'=>false, 'message'=>'No access', 'data'=>'')); - } - } else { - $app->response()->status(404); - } - } + global $app, $dms, $userobj; + if($id == 0) { + $folder = $dms->getRootFolder(); + $recs = array(__getFolderData($folder)); + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>true, 'message'=>'', 'data'=>$recs)); + } else { + $folder = $dms->getFolder($id); + if($folder) { + if($folder->getAccessMode($userobj) >= M_READ) { + $recs = array(); + $subfolders = $folder->getSubFolders(); + $subfolders = SeedDMS_Core_DMS::filterAccess($subfolders, $userobj, M_READ); + foreach($subfolders as $subfolder) { + $recs[] = __getFolderData($subfolder); + } + $documents = $folder->getDocuments(); + $documents = SeedDMS_Core_DMS::filterAccess($documents, $userobj, M_READ); + foreach($documents as $document) { + $lc = $document->getLatestContent(); + if($lc) { + $recs[] = __getLatestVersionData($lc); + } + } + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>true, 'message'=>'', 'data'=>$recs)); + } else { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>false, 'message'=>'No access', 'data'=>'')); + } + } else { + $app->response()->status(404); + } + } } /* }}} */ function createFolder($id) { /* {{{ */ - global $app, $dms, $userobj; + global $app, $dms, $userobj; - if(!$userobj) { - $app->response()->header('Content-Type', 'application/json'); - echo json_encode(array('success'=>false, 'message'=>'Not logged in', 'data'=>'')); - } + if(!$userobj) { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>false, 'message'=>'Not logged in', 'data'=>'')); + return; + } - if($id == 0) { - echo json_encode(array('success'=>true, 'message'=>'id is 0', 'data'=>'')); - return; - } - $parent = $dms->getFolder($id); - if($parent) { - if($name = $app->request()->post('name')) { - $comment = $app->request()->post('comment'); - $attributes = $app->request()->post('attributes'); - $newattrs = array(); - foreach($attributes as $attrname=>$attrvalue) { - $attrdef = $dms->getAttributeDefinitionByName($attrname); - if($attrdef) { - $newattrs[$attrdef->getID()] = $attrvalue; - } - } - if($folder = $parent->addSubFolder($name, $comment, $userobj, 0, $newattrs)) { + if($id == 0) { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>true, 'message'=>'id is 0', 'data'=>'')); + return; + } + $parent = $dms->getFolder($id); + if($parent) { + if($name = $app->request()->post('name')) { + $comment = $app->request()->post('comment'); + $attributes = $app->request()->post('attributes'); + $newattrs = array(); + if($attributes) { + foreach($attributes as $attrname=>$attrvalue) { + $attrdef = $dms->getAttributeDefinitionByName($attrname); + if($attrdef) { + $newattrs[$attrdef->getID()] = $attrvalue; + } + } + } + if($folder = $parent->addSubFolder($name, $comment, $userobj, 0, $newattrs)) { - $rec = array('id'=>$folder->getId(), 'name'=>$folder->getName(), 'comment'=>$folder->getComment()); - echo json_encode(array('success'=>true, 'message'=>'', 'data'=>$rec)); - } else { - echo json_encode(array('success'=>false, 'message'=>'', 'data'=>'')); - } - } else { - echo json_encode(array('success'=>false, 'message'=>'', 'data'=>'')); - } - } else { - echo json_encode(array('success'=>false, 'message'=>'', 'data'=>'')); - } + $rec = array('id'=>$folder->getId(), 'name'=>$folder->getName(), 'comment'=>$folder->getComment()); + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>true, 'message'=>'', 'data'=>$rec)); + } else { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>false, 'message'=>'', 'data'=>'')); + } + } else { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>false, 'message'=>'', 'data'=>'')); + } + } else { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>false, 'message'=>'', 'data'=>'')); + } } /* }}} */ -function moveFolder($id) { /* {{{ */ - global $app, $dms, $userobj; +function moveFolder($id, $folderid) { /* {{{ */ + global $app, $dms, $userobj; - if(!$userobj) { - $app->response()->header('Content-Type', 'application/json'); - echo json_encode(array('success'=>false, 'message'=>'Not logged in', 'data'=>'')); - } + if(!$userobj) { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>false, 'message'=>'Not logged in', 'data'=>'')); + return; + } - $mfolder = $dms->getFolder($id); - if($mfolder) { - if ($mfolder->getAccessMode($userobj) >= M_READ) { - $folderid = $app->request()->post('dest'); - if($folder = $dms->getFolder($folderid)) { - if($folder->getAccessMode($userobj) >= M_READWRITE) { - if($mfolder->setParent($folder)) { - $app->response()->header('Content-Type', 'application/json'); - echo json_encode(array('success'=>true, 'message'=>'', 'data'=>'')); - } else { - $app->response()->header('Content-Type', 'application/json'); - echo json_encode(array('success'=>false, 'message'=>'Error moving folder', 'data'=>'')); - } - } else { - $app->response()->header('Content-Type', 'application/json'); - echo json_encode(array('success'=>false, 'message'=>'No access on destination folder', 'data'=>'')); - } - } else { - $app->response()->header('Content-Type', 'application/json'); - echo json_encode(array('success'=>false, 'message'=>'No destination folder', 'data'=>'')); - } - } else { - $app->response()->header('Content-Type', 'application/json'); - echo json_encode(array('success'=>false, 'message'=>'No access', 'data'=>'')); - } - } else { - $app->response()->header('Content-Type', 'application/json'); - echo json_encode(array('success'=>false, 'message'=>'No folder', 'data'=>'')); - } + $mfolder = $dms->getFolder($id); + if($mfolder) { + if ($mfolder->getAccessMode($userobj) >= M_READ) { + if($folder = $dms->getFolder($folderid)) { + if($folder->getAccessMode($userobj) >= M_READWRITE) { + if($mfolder->setParent($folder)) { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>true, 'message'=>'', 'data'=>'')); + } else { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>false, 'message'=>'Error moving folder', 'data'=>'')); + } + } else { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>false, 'message'=>'No access on destination folder', 'data'=>'')); + } + } else { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>false, 'message'=>'No destination folder', 'data'=>'')); + } + } else { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>false, 'message'=>'No access', 'data'=>'')); + } + } else { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>false, 'message'=>'No folder', 'data'=>'')); + } } /* }}} */ function deleteFolder($id) { /* {{{ */ - global $app, $dms, $userobj; + global $app, $dms, $userobj; - if(!$userobj) { - $app->response()->header('Content-Type', 'application/json'); - echo json_encode(array('success'=>false, 'message'=>'Not logged in', 'data'=>'')); - } + if(!$userobj) { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>false, 'message'=>'Not logged in', 'data'=>'')); + return; + } - if($id == 0) { - echo json_encode(array('success'=>true, 'message'=>'id is 0', 'data'=>'')); - return; - } - $mfolder = $dms->getFolder($id); - if($mfolder) { - if ($mfolder->getAccessMode($userobj) >= M_READWRITE) { - if($mfolder->remove()) { - $app->response()->header('Content-Type', 'application/json'); - echo json_encode(array('success'=>true, 'message'=>'', 'data'=>'')); - } else { - $app->response()->header('Content-Type', 'application/json'); - echo json_encode(array('success'=>false, 'message'=>'Error deleting folder', 'data'=>'')); - } - } else { - $app->response()->header('Content-Type', 'application/json'); - echo json_encode(array('success'=>false, 'message'=>'No access', 'data'=>'')); - } - } else { - $app->response()->header('Content-Type', 'application/json'); - echo json_encode(array('success'=>false, 'message'=>'No folder', 'data'=>'')); - } + if($id == 0) { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>true, 'message'=>'id is 0', 'data'=>'')); + return; + } + $mfolder = $dms->getFolder($id); + if($mfolder) { + if ($mfolder->getAccessMode($userobj) >= M_READWRITE) { + if($mfolder->remove()) { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>true, 'message'=>'', 'data'=>'')); + } else { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>false, 'message'=>'Error deleting folder', 'data'=>'')); + } + } else { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>false, 'message'=>'No access', 'data'=>'')); + } + } else { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>false, 'message'=>'No folder', 'data'=>'')); + } } /* }}} */ function uploadDocument($id) { /* {{{ */ - global $app, $dms, $userobj; + global $app, $dms, $userobj; - if(!$userobj) { - $app->response()->header('Content-Type', 'application/json'); - echo json_encode(array('success'=>false, 'message'=>'Not logged in', 'data'=>'')); - } + if(!$userobj) { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>false, 'message'=>'Not logged in', 'data'=>'')); + return; + } - if($id == 0) { - echo json_encode(array('success'=>true, 'message'=>'id is 0', 'data'=>'')); - return; - } - $mfolder = $dms->getFolder($id); - if($mfolder) { - if ($mfolder->getAccessMode($userobj) >= M_READWRITE) { - $docname = $app->request()->get('name'); - $origfilename = $app->request()->get('origfilename'); - $content = $app->getInstance()->request()->getBody(); - $temp = tempnam('/tmp', 'lajflk'); - $handle = fopen($temp, "w"); - fwrite($handle, $content); - fclose($handle); - $finfo = finfo_open(FILEINFO_MIME_TYPE); - $userfiletype = finfo_file($finfo, $temp); - $fileType = ".".pathinfo($origfilename, PATHINFO_EXTENSION); - finfo_close($finfo); - $res = $mfolder->addDocument($docname, '', 0, $userobj, '', array(), $temp, $origfilename ? $origfilename : basename($temp), $fileType, $userfiletype, 0); - unlink($temp); - if($res) { - $doc = $res[0]; - $rec = array('id'=>$doc->getId(), 'name'=>$doc->getName()); - $app->response()->header('Content-Type', 'application/json'); - echo json_encode(array('success'=>true, 'message'=>'Upload succeded', 'data'=>$rec)); - } else { - $app->response()->header('Content-Type', 'application/json'); - echo json_encode(array('success'=>false, 'message'=>'Upload failed', 'data'=>'')); - } - } else { - $app->response()->header('Content-Type', 'application/json'); - echo json_encode(array('success'=>false, 'message'=>'No access', 'data'=>'')); - } - } else { - $app->response()->header('Content-Type', 'application/json'); - echo json_encode(array('success'=>false, 'message'=>'No folder', 'data'=>'')); - } + if($id == 0) { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>true, 'message'=>'id is 0', 'data'=>'')); + return; + } + $mfolder = $dms->getFolder($id); + if($mfolder) { + if ($mfolder->getAccessMode($userobj) >= M_READWRITE) { + $docname = $app->request()->params('name'); + $keywords = $app->request()->params('keywords'); +// $categories = $app->request()->params('categories') ? $app->request()->params('categories') : []; +// $attributes = $app->request()->params('attributes') ? $app->request()->params('attributes') : []; + $origfilename = $app->request()->params('origfilename'); + if (count($_FILES) == 0) + { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>false, 'message'=>'No file detected', 'data'=>'')); + return; + } + $file_info = reset($_FILES); + if ($origfilename == null) + $origfilename = $file_info['name']; + if (trim($docname) == '') + $docname = $origfilename; + $temp = $file_info['tmp_name']; + $finfo = finfo_open(FILEINFO_MIME_TYPE); + $userfiletype = finfo_file($finfo, $temp); + $fileType = ".".pathinfo($origfilename, PATHINFO_EXTENSION); + finfo_close($finfo); + $res = $mfolder->addDocument($docname, '', 0, $userobj, $keywords, array(), $temp, $origfilename ? $origfilename : basename($temp), $fileType, $userfiletype, 0); +// addDocumentCategories($res, $categories); +// setDocumentAttributes($res, $attributes); + + unlink($temp); + if($res) { + $doc = $res[0]; + $rec = array('id'=>$doc->getId(), 'name'=>$doc->getName()); + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>true, 'message'=>'Upload succeded', 'data'=>$rec)); + } else { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>false, 'message'=>'Upload failed', 'data'=>'')); + } + } else { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>false, 'message'=>'No access', 'data'=>'')); + } + } else { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>false, 'message'=>'No folder', 'data'=>'')); + } +} /* }}} */ + +/** + * Old upload method which uses put instead of post + */ +function uploadDocumentPut($id) { /* {{{ */ + global $app, $dms, $userobj; + + if(!$userobj) { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>false, 'message'=>'Not logged in', 'data'=>'')); + return; + } + + if($id == 0) { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>true, 'message'=>'id is 0', 'data'=>'')); + return; + } + $mfolder = $dms->getFolder($id); + if($mfolder) { + if ($mfolder->getAccessMode($userobj) >= M_READWRITE) { + $docname = $app->request()->get('name'); + $origfilename = $app->request()->get('origfilename'); + $content = $app->getInstance()->request()->getBody(); + $temp = tempnam('/tmp', 'lajflk'); + $handle = fopen($temp, "w"); + fwrite($handle, $content); + fclose($handle); + $finfo = finfo_open(FILEINFO_MIME_TYPE); + $userfiletype = finfo_file($finfo, $temp); + $fileType = ".".pathinfo($origfilename, PATHINFO_EXTENSION); + finfo_close($finfo); + $res = $mfolder->addDocument($docname, '', 0, $userobj, '', array(), $temp, $origfilename ? $origfilename : basename($temp), $fileType, $userfiletype, 0); + unlink($temp); + if($res) { + $doc = $res[0]; + $rec = array('id'=>$doc->getId(), 'name'=>$doc->getName()); + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>true, 'message'=>'Upload succeded', 'data'=>$rec)); + } else { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>false, 'message'=>'Upload failed', 'data'=>'')); + } + } else { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>false, 'message'=>'No access', 'data'=>'')); + } + } else { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>false, 'message'=>'No folder', 'data'=>'')); + } +} /* }}} */ + +function uploadDocumentFile($documentId) { /* {{{ */ + global $app, $dms, $userobj; + + if(!$userobj) { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>false, 'message'=>'Not logged in', 'data'=>'')); + return; + } + + if($documentId == 0) { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>true, 'message'=>'id is 0', 'data'=>'')); + return; + } + $document = $dms->getDocument($documentId); + if($document) { + if ($document->getAccessMode($userobj) >= M_READWRITE) { + $docname = $app->request()->params('name'); + $keywords = $app->request()->params('keywords'); + $origfilename = $app->request()->params('origfilename'); + $comment = $app->request()->params('comment'); + $version = $app->request()->params('version') == '' ? 0 : $app->request()->params('version'); + $public = $app->request()->params('public') == '' ? 'false' : $app->request()->params('public'); + if (count($_FILES) == 0) + { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>false, 'message'=>'No file detected', 'data'=>'')); + return; + } + $file_info = reset($_FILES); + if ($origfilename == null) + $origfilename = $file_info['name']; + if (trim($docname) == '') + $docname = $origfilename; + $temp = $file_info['tmp_name']; + $finfo = finfo_open(FILEINFO_MIME_TYPE); + $userfiletype = finfo_file($finfo, $temp); + $fileType = ".".pathinfo($origfilename, PATHINFO_EXTENSION); + finfo_close($finfo); + $res = $document->addDocumentFile($docname, $comment, $userobj, $temp, + $origfilename ? $origfilename : utf8_basename($temp), + $fileType, $userfiletype, $version, $public); + unlink($temp); + if($res) { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>true, 'message'=>'Upload succeded', 'data'=>$res)); + } else { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>false, 'message'=>'Upload failed', 'data'=>'')); + } + } else { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>false, 'message'=>'No access', 'data'=>'')); + } + } else { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>false, 'message'=>'No such document', 'data'=>'')); + } } /* }}} */ function getDocument($id) { /* {{{ */ - global $app, $dms, $userobj; - $document = $dms->getDocument($id); - if($document) { - if ($document->getAccessMode($userobj) >= M_READ) { - $lc = $document->getLatestContent(); - $app->response()->header('Content-Type', 'application/json'); - $data = array( - 'id'=>$id, - 'name'=>htmlspecialchars($document->getName()), - 'comment'=>htmlspecialchars($document->getComment()), - 'date'=>$document->getDate(), - 'mimetype'=>$lc->getMimeType(), - 'version'=>$lc->getVersion(), - 'orig_filename'=>$lc->getOriginalFileName(), - 'size'=>$lc->getFileSize(), - 'keywords'=>htmlspecialchars($document->getKeywords()), - ); - $app->response()->header('Content-Type', 'application/json'); - echo json_encode(array('success'=>true, 'message'=>'', 'data'=>$data)); - } else { - $app->response()->header('Content-Type', 'application/json'); - echo json_encode(array('success'=>false, 'message'=>'No access', 'data'=>'')); - } - } else { - $app->response()->header('Content-Type', 'application/json'); - echo json_encode(array('success'=>false, 'message'=>'No document', 'data'=>'')); - } + global $app, $dms, $userobj; + $document = $dms->getDocument($id); + if($document) { + if ($document->getAccessMode($userobj) >= M_READ) { + $lc = $document->getLatestContent(); + if($lc) { + $data = __getLatestVersionData($lc); + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>true, 'message'=>'', 'data'=>$data)); + } else { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>false, 'message'=>'No access', 'data'=>'')); + } + } else { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>false, 'message'=>'No access', 'data'=>'')); + } + } else { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>false, 'message'=>'No document', 'data'=>'')); + } } /* }}} */ function deleteDocument($id) { /* {{{ */ - global $app, $dms, $userobj; - $document = $dms->getDocument($id); - if($document) { - if ($document->getAccessMode($userobj) >= M_READWRITE) { - if($document->remove()) { - $app->response()->header('Content-Type', 'application/json'); - echo json_encode(array('success'=>true, 'message'=>'', 'data'=>'')); - } else { - $app->response()->header('Content-Type', 'application/json'); - echo json_encode(array('success'=>false, 'message'=>'Error removing document', 'data'=>'')); - } - } else { - $app->response()->header('Content-Type', 'application/json'); - echo json_encode(array('success'=>false, 'message'=>'No access', 'data'=>'')); - } - } else { - $app->response()->header('Content-Type', 'application/json'); - echo json_encode(array('success'=>false, 'message'=>'No document', 'data'=>'')); - } + global $app, $dms, $userobj; + $document = $dms->getDocument($id); + if($document) { + if ($document->getAccessMode($userobj) >= M_READWRITE) { + if($document->remove()) { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>true, 'message'=>'', 'data'=>'')); + } else { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>false, 'message'=>'Error removing document', 'data'=>'')); + } + } else { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>false, 'message'=>'No access', 'data'=>'')); + } + } else { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>false, 'message'=>'No document', 'data'=>'')); + } } /* }}} */ -function moveDocument($id) { /* {{{ */ - global $app, $dms, $userobj; - $document = $dms->getDocument($id); - if($document) { - if ($document->getAccessMode($userobj) >= M_READ) { - $folderid = $app->request()->post('dest'); - if($folder = $dms->getFolder($folderid)) { - if($folder->getAccessMode($userobj) >= M_READWRITE) { - if($document->setFolder($folder)) { - $app->response()->header('Content-Type', 'application/json'); - echo json_encode(array('success'=>true, 'message'=>'', 'data'=>'')); - } else { - $app->response()->header('Content-Type', 'application/json'); - echo json_encode(array('success'=>false, 'message'=>'Error moving document', 'data'=>'')); - } - } else { - $app->response()->header('Content-Type', 'application/json'); - echo json_encode(array('success'=>false, 'message'=>'No access on destination folder', 'data'=>'')); - } - } else { - $app->response()->header('Content-Type', 'application/json'); - echo json_encode(array('success'=>false, 'message'=>'No destination folder', 'data'=>'')); - } - } else { - $app->response()->header('Content-Type', 'application/json'); - echo json_encode(array('success'=>false, 'message'=>'No access', 'data'=>'')); - } - } else { - $app->response()->header('Content-Type', 'application/json'); - echo json_encode(array('success'=>false, 'message'=>'No document', 'data'=>'')); - } +function moveDocument($id, $folderid) { /* {{{ */ + global $app, $dms, $userobj; + $document = $dms->getDocument($id); + if($document) { + if ($document->getAccessMode($userobj) >= M_READ) { + if($folder = $dms->getFolder($folderid)) { + if($folder->getAccessMode($userobj) >= M_READWRITE) { + if($document->setFolder($folder)) { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>true, 'message'=>'', 'data'=>'')); + } else { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>false, 'message'=>'Error moving document', 'data'=>'')); + } + } else { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>false, 'message'=>'No access on destination folder', 'data'=>'')); + } + } else { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>false, 'message'=>'No destination folder', 'data'=>'')); + } + } else { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>false, 'message'=>'No access', 'data'=>'')); + } + } else { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>false, 'message'=>'No document', 'data'=>'')); + } } /* }}} */ function getDocumentContent($id) { /* {{{ */ - global $app, $dms, $userobj; - $document = $dms->getDocument($id); + global $app, $dms, $userobj; + $document = $dms->getDocument($id); - if($document) { - if ($document->getAccessMode($userobj) >= M_READ) { - $lc = $document->getLatestContent(); - $app->response()->header('Content-Type', $lc->getMimeType()); - $app->response()->header("Content-Disposition: filename=\"" . $document->getName().$lc->getFileType() . "\""); - $app->response()->header("Content-Length", filesize($dms->contentDir . $lc->getPath())); - $app->response()->header("Expires", "0"); - $app->response()->header("Cache-Control", "no-cache, must-revalidate"); - $app->response()->header("Pragma", "no-cache"); + if($document) { + if ($document->getAccessMode($userobj) >= M_READ) { + $lc = $document->getLatestContent(); - readfile($dms->contentDir . $lc->getPath()); - } else { - $app->response()->status(404); - } - } + if (pathinfo($document->getName(), PATHINFO_EXTENSION) == $lc->getFileType()) + $filename = $document->getName(); + else + $filename = $document->getName().$lc->getFileType(); + + $app->response()->header('Content-Type', $lc->getMimeType()); + $app->response()->header("Content-Disposition", "filename=\"" . $filename . "\""); + $app->response()->header("Content-Length", filesize($dms->contentDir . $lc->getPath())); + $app->response()->header("Expires", "0"); + $app->response()->header("Cache-Control", "no-cache, must-revalidate"); + $app->response()->header("Pragma", "no-cache"); + + readfile($dms->contentDir . $lc->getPath()); + } else { + $app->response()->status(404); + } + } } /* }}} */ function getDocumentVersions($id) { /* {{{ */ - global $app, $dms, $userobj; - $document = $dms->getDocument($id); + global $app, $dms, $userobj; + $document = $dms->getDocument($id); - if($document) { - if ($document->getAccessMode($userobj) >= M_READ) { - $recs = array(); - $lcs = $document->getContent(); - foreach($lcs as $lc) { - $recs[] = array( - 'version'=>$lc->getVersion(), - 'date'=>$lc->getDate(), - 'mimetype'=>$lc->getMimeType(), - 'size'=>$lc->getFileSize(), - 'comment'=>htmlspecialchars($lc->getComment()), - ); - } - $app->response()->header('Content-Type', 'application/json'); - echo json_encode(array('success'=>true, 'message'=>'', 'data'=>$recs)); - } else { - $app->response()->header('Content-Type', 'application/json'); - echo json_encode(array('success'=>false, 'message'=>'No access', 'data'=>'')); - } - } else { - $app->response()->header('Content-Type', 'application/json'); - echo json_encode(array('success'=>false, 'message'=>'No such document', 'data'=>'')); - } + if($document) { + if ($document->getAccessMode($userobj) >= M_READ) { + $recs = array(); + $lcs = $document->getContent(); + foreach($lcs as $lc) { + $recs[] = array( + 'version'=>$lc->getVersion(), + 'date'=>$lc->getDate(), + 'mimetype'=>$lc->getMimeType(), + 'size'=>$lc->getFileSize(), + 'comment'=>$lc->getComment(), + ); + } + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>true, 'message'=>'', 'data'=>$recs)); + } else { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>false, 'message'=>'No access', 'data'=>'')); + } + } else { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>false, 'message'=>'No such document', 'data'=>'')); + } } /* }}} */ function getDocumentVersion($id, $version) { /* {{{ */ - global $app, $dms, $userobj; - $document = $dms->getDocument($id); + global $app, $dms, $userobj; + $document = $dms->getDocument($id); - if($document) { - if ($document->getAccessMode($userobj) >= M_READ) { - $lc = $document->getContentByVersion($version); - $app->response()->header('Content-Type', $lc->getMimeType()); - $app->response()->header("Content-Disposition", "filename=\"" . $document->getName().$lc->getFileType() . "\""); - $app->response()->header("Content-Length", filesize($dms->contentDir . $lc->getPath())); - $app->response()->header("Expires", "0"); - $app->response()->header("Cache-Control", "no-cache, must-revalidate"); - $app->response()->header("Pragma", "no-cache"); + if($document) { + if ($document->getAccessMode($userobj) >= M_READ) { + $lc = $document->getContentByVersion($version); + $app->response()->header('Content-Type', $lc->getMimeType()); + $app->response()->header("Content-Disposition", "filename=\"" . $document->getName().$lc->getFileType() . "\""); + $app->response()->header("Content-Length", filesize($dms->contentDir . $lc->getPath())); + $app->response()->header("Expires", "0"); + $app->response()->header("Cache-Control", "no-cache, must-revalidate"); + $app->response()->header("Pragma", "no-cache"); - readfile($dms->contentDir . $lc->getPath()); - } else { - $app->response()->status(404); - } - } + readfile($dms->contentDir . $lc->getPath()); + } else { + $app->response()->status(404); + } + } } /* }}} */ function getDocumentFiles($id) { /* {{{ */ - global $app, $dms, $userobj; - $document = $dms->getDocument($id); + global $app, $dms, $userobj; + $document = $dms->getDocument($id); - if($document) { - if ($document->getAccessMode($userobj) >= M_READ) { - $recs = array(); - $files = $document->getDocumentFiles(); - foreach($files as $file) { - $recs[] = array( - 'id'=>$file->getId(), - 'name'=>$file->getName(), - 'date'=>$file->getDate(), - 'mimetype'=>$file->getMimeType(), - 'comment'=>$file->getComment(), - ); - } - $app->response()->header('Content-Type', 'application/json'); - echo json_encode(array('success'=>true, 'message'=>'', 'data'=>$recs)); - } else { - $app->response()->status(404); - } - } + if($document) { + if ($document->getAccessMode($userobj) >= M_READ) { + $recs = array(); + $files = $document->getDocumentFiles(); + foreach($files as $file) { + $recs[] = array( + 'id'=>$file->getId(), + 'name'=>$file->getName(), + 'date'=>$file->getDate(), + 'mimetype'=>$file->getMimeType(), + 'comment'=>$file->getComment(), + ); + } + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>true, 'message'=>'', 'data'=>$recs)); + } else { + $app->response()->status(404); + } + } } /* }}} */ function getDocumentFile($id, $fileid) { /* {{{ */ - global $app, $dms, $userobj; - $document = $dms->getDocument($id); + global $app, $dms, $userobj; + $document = $dms->getDocument($id); - if($document) { - if ($document->getAccessMode($userobj) >= M_READ) { - $file = $document->getDocumentFile($fileid); - $app->response()->header('Content-Type', $file->getMimeType()); - $app->response()->header("Content-Disposition", "filename=\"" . $document->getName().$file->getFileType() . "\""); - $app->response()->header("Content-Length", filesize($dms->contentDir . $file->getPath())); - $app->response()->header("Expires", "0"); - $app->response()->header("Cache-Control", "no-cache, must-revalidate"); - $app->response()->header("Pragma", "no-cache"); + if($document) { + if ($document->getAccessMode($userobj) >= M_READ) { + $file = $document->getDocumentFile($fileid); + $app->response()->header('Content-Type', $file->getMimeType()); + $app->response()->header("Content-Disposition", "filename=\"" . $document->getName().$file->getFileType() . "\""); + $app->response()->header("Content-Length", filesize($dms->contentDir . $file->getPath())); + $app->response()->header("Expires", "0"); + $app->response()->header("Cache-Control", "no-cache, must-revalidate"); + $app->response()->header("Pragma", "no-cache"); - readfile($dms->contentDir . $file->getPath()); - } else { - $app->response()->status(404); - } - } + readfile($dms->contentDir . $file->getPath()); + } else { + $app->response()->status(404); + } + } } /* }}} */ function getDocumentLinks($id) { /* {{{ */ - global $app, $dms, $userobj; - $document = $dms->getDocument($id); + global $app, $dms, $userobj; + $document = $dms->getDocument($id); - if($document) { - if ($document->getAccessMode($userobj) >= M_READ) { - $recs = array(); - $links = $document->getDocumentLinks(); - foreach($links as $link) { - $recs[] = array( - 'id'=>$link->getId(), - 'target'=>$link->getTarget(), - 'public'=>$link->isPublic(), - ); - } - $app->response()->header('Content-Type', 'application/json'); - echo json_encode(array('success'=>true, 'message'=>'', 'data'=>$recs)); - } else { - $app->response()->status(404); - } - } + if($document) { + if ($document->getAccessMode($userobj) >= M_READ) { + $recs = array(); + $links = $document->getDocumentLinks(); + foreach($links as $link) { + $recs[] = array( + 'id'=>$link->getId(), + 'target'=>$link->getTarget(), + 'public'=>$link->isPublic(), + ); + } + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>true, 'message'=>'', 'data'=>$recs)); + } else { + $app->response()->status(404); + } + } } /* }}} */ function getDocumentAttributes($id) { /* {{{ */ - global $app, $dms, $userobj; - $document = $dms->getDocument($id); + global $app, $dms, $userobj; + $document = $dms->getDocument($id); - if($document) { - if ($document->getAccessMode($userobj) >= M_READ) { - $recs = array(); - $attributes = $document->getAttributes(); - foreach($attributes as $attribute) { - $recs[] = array( - 'id'=>$attribute->getId(), - 'value'=>$attribute->getValue(), - 'name'=>$attribute->getAttributeDefinition()->getName(), - ); - } - $app->response()->header('Content-Type', 'application/json'); - echo json_encode(array('success'=>true, 'message'=>'', 'data'=>$recs)); - } else { - $app->response()->status(404); - } - } + if($document) { + if ($document->getAccessMode($userobj) >= M_READ) { + $recs = array(); + $attributes = $document->getAttributes(); + foreach($attributes as $attribute) { + $recs[] = array( + 'id'=>$attribute->getId(), + 'value'=>$attribute->getValue(), + 'name'=>$attribute->getAttributeDefinition()->getName(), + ); + } + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>true, 'message'=>'', 'data'=>$recs)); + } else { + $app->response()->status(404); + } + } } /* }}} */ function getDocumentPreview($id, $version=0, $width=0) { /* {{{ */ - global $app, $dms, $userobj, $settings; - $document = $dms->getDocument($id); + global $app, $dms, $userobj, $settings; + require_once "SeedDMS/Preview.php"; + $document = $dms->getDocument($id); - if($document) { - if ($document->getAccessMode($userobj) >= M_READ) { - if($version) - $object = $document->getContentByVersion($version); - else - $object = $document->getLatestContent(); - if(!$object) - exit; - - if(!empty($width)) - $previewer = new SeedDMS_Preview_Previewer($settings->_cacheDir, $width); - else - $previewer = new SeedDMS_Preview_Previewer($settings->_cacheDir); - if(!$previewer->hasPreview($object)) - $previewer->createPreview($object); - $app->response()->header('Content-Type', 'image/png'); - $app->response()->header("Content-Disposition", "filename=\"preview-" . $document->getID()."-".$object->getVersion()."-".$width.".png" . "\""); - $app->response()->header("Content-Length", $previewer->getFilesize($object)); -// $app->response()->header("Expires", "0"); -// $app->response()->header("Cache-Control", "no-cache, must-revalidate"); -// $app->response()->header("Pragma", "no-cache"); + if($document) { + if ($document->getAccessMode($userobj) >= M_READ) { + if($version) + $object = $document->getContentByVersion($version); + else + $object = $document->getLatestContent(); + if(!$object) + exit; - $previewer->getPreview($object); - } else { - $app->response()->status(404); - } - } + if(!empty($width)) + $previewer = new SeedDMS_Preview_Previewer($settings->_cacheDir, $width); + else + $previewer = new SeedDMS_Preview_Previewer($settings->_cacheDir); + if(!$previewer->hasPreview($object)) + $previewer->createPreview($object); + $app->response()->header('Content-Type', 'image/png'); + $app->response()->header("Content-Disposition", "filename=\"preview-" . $document->getID()."-".$object->getVersion()."-".$width.".png" . "\""); + $app->response()->header("Content-Length", $previewer->getFilesize($object)); +// $app->response()->header("Expires", "0"); +// $app->response()->header("Cache-Control", "no-cache, must-revalidate"); +// $app->response()->header("Pragma", "no-cache"); + + $previewer->getPreview($object); + } else { + $app->response()->status(404); + } + } } /* }}} */ function getAccount() { /* {{{ */ - global $app, $dms, $userobj; - if($userobj) { - $account = array(); - $account['id'] = $userobj->getId(); - $account['login'] = $userobj->getLogin(); - $account['fullname'] = $userobj->getFullName(); - $account['email'] = $userobj->getEmail(); - $account['language'] = $userobj->getLanguage(); - $account['theme'] = $userobj->getTheme(); - $account['role'] = $userobj->getRole(); - $account['comment'] = $userobj->getComment(); - $account['isguest'] = $userobj->isGuest(); - $account['isadmin'] = $userobj->isAdmin(); - $app->response()->header('Content-Type', 'application/json'); - echo json_encode(array('success'=>true, 'message'=>'', 'data'=>$account)); - } else { - $app->response()->header('Content-Type', 'application/json'); - echo json_encode(array('success'=>false, 'message'=>'Not logged in', 'data'=>'')); - } + global $app, $dms, $userobj; + if($userobj) { + $account = array(); + $account['id'] = $userobj->getId(); + $account['login'] = $userobj->getLogin(); + $account['fullname'] = $userobj->getFullName(); + $account['email'] = $userobj->getEmail(); + $account['language'] = $userobj->getLanguage(); + $account['theme'] = $userobj->getTheme(); + $account['role'] = $userobj->getRole(); + $account['comment'] = $userobj->getComment(); + $account['isguest'] = $userobj->isGuest(); + $account['isadmin'] = $userobj->isAdmin(); + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>true, 'message'=>'', 'data'=>$account)); + } else { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>false, 'message'=>'Not logged in', 'data'=>'')); + } } /* }}} */ /** @@ -764,104 +953,90 @@ function getAccount() { /* {{{ */ * return a list of words only. */ function doSearch() { /* {{{ */ - global $app, $dms, $userobj; + global $app, $dms, $userobj; - $querystr = $app->request()->get('query'); - $mode = $app->request()->get('mode'); - if(!$limit = $app->request()->get('limit')) - $limit = 5; - $resArr = $dms->search($querystr); - $entries = array(); - $count = 0; - if($resArr['folders']) { - foreach ($resArr['folders'] as $entry) { - if ($entry->getAccessMode($userobj) >= M_READ) { - $entries[] = $entry; - $count++; - } - if($count >= $limit) - break; - } - } - $count = 0; - if($resArr['docs']) { - foreach ($resArr['docs'] as $entry) { - $lc = $entry->getLatestContent(); - if ($entry->getAccessMode($userobj) >= M_READ && $lc) { - $entries[] = $entry; - $count++; - } - if($count >= $limit) - break; - } - } + $querystr = $app->request()->get('query'); + $mode = $app->request()->get('mode'); + if(!$limit = $app->request()->get('limit')) + $limit = 5; + $resArr = $dms->search($querystr); + $entries = array(); + $count = 0; + if($resArr['folders']) { + foreach ($resArr['folders'] as $entry) { + if ($entry->getAccessMode($userobj) >= M_READ) { + $entries[] = $entry; + $count++; + } + if($count >= $limit) + break; + } + } + $count = 0; + if($resArr['docs']) { + foreach ($resArr['docs'] as $entry) { + $lc = $entry->getLatestContent(); + if ($entry->getAccessMode($userobj) >= M_READ && $lc) { + $entries[] = $entry; + $count++; + } + if($count >= $limit) + break; + } + } - switch($mode) { - case 'typeahead'; - $recs = array(); - foreach ($entries as $entry) { - /* Passing anything back but a string does not work, because - * the process function of bootstrap.typeahead needs an array of - * strings. - * - * As a quick solution to distingish folders from documents, the - * name will be preceeded by a 'F' or 'D' + switch($mode) { + case 'typeahead'; + $recs = array(); + foreach ($entries as $entry) { + /* Passing anything back but a string does not work, because + * the process function of bootstrap.typeahead needs an array of + * strings. + * + * As a quick solution to distingish folders from documents, the + * name will be preceeded by a 'F' or 'D' - $tmp = array(); - if(get_class($entry) == 'SeedDMS_Core_Document') { - $tmp['type'] = 'folder'; - } else { - $tmp['type'] = 'document'; - } - $tmp['id'] = $entry->getID(); - $tmp['name'] = $entry->getName(); - $tmp['comment'] = $entry->getComment(); - */ - if(get_class($entry) == 'SeedDMS_Core_Document') { - $recs[] = 'D'.$entry->getName(); - } else { - $recs[] = 'F'.$entry->getName(); - } - } - if($recs) -// array_unshift($recs, array('type'=>'', 'id'=>0, 'name'=>$querystr, 'comment'=>'')); - array_unshift($recs, ' '.$querystr); - $app->response()->header('Content-Type', 'application/json'); - echo json_encode($recs); - //echo json_encode(array('success'=>true, 'message'=>'', 'data'=>$recs)); - break; - default: - $recs = array(); - foreach ($entries as $entry) { - if(get_class($entry) == 'SeedDMS_Core_Document') { - $document = $entry; - $lc = $document->getLatestContent(); - $recs[] = array( - 'type'=>'document', - 'id'=>$document->getId(), - 'date'=>$document->getDate(), - 'name'=>$document->getName(), - 'mimetype'=>$lc->getMimeType(), - 'version'=>$lc->getVersion(), - 'size'=>$lc->getFileSize(), - 'comment'=>$document->getComment(), - 'keywords'=>$document->getKeywords(), - ); - } elseif(get_class($entry) == 'SeedDMS_Core_Folder') { - $folder = $entry; - $recs[] = array( - 'type'=>'folder', - 'id'=>$folder->getId(), - 'name'=>$folder->getName(), - 'comment'=>$folder->getComment(), - 'date'=>$folder->getDate(), - ); - } - } - $app->response()->header('Content-Type', 'application/json'); - echo json_encode(array('success'=>true, 'message'=>'', 'data'=>$recs)); - break; - } + $tmp = array(); + if(get_class($entry) == 'SeedDMS_Core_Document') { + $tmp['type'] = 'folder'; + } else { + $tmp['type'] = 'document'; + } + $tmp['id'] = $entry->getID(); + $tmp['name'] = $entry->getName(); + $tmp['comment'] = $entry->getComment(); + */ + if(get_class($entry) == 'SeedDMS_Core_Document') { + $recs[] = 'D'.$entry->getName(); + } else { + $recs[] = 'F'.$entry->getName(); + } + } + if($recs) +// array_unshift($recs, array('type'=>'', 'id'=>0, 'name'=>$querystr, 'comment'=>'')); + array_unshift($recs, ' '.$querystr); + $app->response()->header('Content-Type', 'application/json'); + echo json_encode($recs); + //echo json_encode(array('success'=>true, 'message'=>'', 'data'=>$recs)); + break; + default: + $recs = array(); + foreach ($entries as $entry) { + if(get_class($entry) == 'SeedDMS_Core_Document') { + $document = $entry; + $lc = $document->getLatestContent(); + if($lc) { + $recs[] = __getLatestVersionData($lc); + } + } elseif(get_class($entry) == 'SeedDMS_Core_Folder') { + $folder = $entry; + $recs[] = __getFolderData($folder); + } + } + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>true, 'message'=>'', 'data'=>$recs)); + break; + } } /* }}} */ /** @@ -869,64 +1044,51 @@ function doSearch() { /* {{{ */ * */ function doSearchByAttr() { /* {{{ */ - global $app, $dms, $userobj; + global $app, $dms, $userobj; - $attrname = $app->request()->get('name'); - $query = $app->request()->get('value'); - if(!$limit = $app->request()->get('limit')) - $limit = 50; - $attrdef = $dms->getAttributeDefinitionByName($attrname); - $entries = array(); - if($attrdef) { - $resArr = $attrdef->getObjects($query, $limit); - if($resArr['folders']) { - foreach ($resArr['folders'] as $entry) { - if ($entry->getAccessMode($userobj) >= M_READ) { - $entries[] = $entry; - } - } - } - if($resArr['docs']) { - foreach ($resArr['docs'] as $entry) { - if ($entry->getAccessMode($userobj) >= M_READ) { - $entries[] = $entry; - } - } - } - } - $recs = array(); - foreach ($entries as $entry) { - if(get_class($entry) == 'SeedDMS_Core_Document') { - $document = $entry; - $lc = $document->getLatestContent(); - $recs[] = array( - 'type'=>'document', - 'id'=>$document->getId(), - 'date'=>$document->getDate(), - 'name'=>$document->getName(), - 'mimetype'=>$lc->getMimeType(), - 'version'=>$lc->getVersion(), - 'size'=>$lc->getFileSize(), - 'comment'=>$document->getComment(), - 'keywords'=>$document->getKeywords(), - ); - } elseif(get_class($entry) == 'SeedDMS_Core_Folder') { - $folder = $entry; - $recs[] = array( - 'type'=>'folder', - 'id'=>$folder->getId(), - 'name'=>$folder->getName(), - 'comment'=>$folder->getComment(), - 'date'=>$folder->getDate(), - ); - } - } - $app->response()->header('Content-Type', 'application/json'); - echo json_encode(array('success'=>true, 'message'=>'', 'data'=>$recs)); + $attrname = $app->request()->get('name'); + $query = $app->request()->get('value'); + if(!$limit = $app->request()->get('limit')) + $limit = 50; + $attrdef = $dms->getAttributeDefinitionByName($attrname); + $entries = array(); + if($attrdef) { + $resArr = $attrdef->getObjects($query, $limit); + if($resArr['folders']) { + foreach ($resArr['folders'] as $entry) { + if ($entry->getAccessMode($userobj) >= M_READ) { + $entries[] = $entry; + } + } + } + if($resArr['docs']) { + foreach ($resArr['docs'] as $entry) { + if ($entry->getAccessMode($userobj) >= M_READ) { + $entries[] = $entry; + } + } + } + } + $recs = array(); + foreach ($entries as $entry) { + if(get_class($entry) == 'SeedDMS_Core_Document') { + $document = $entry; + $lc = $document->getLatestContent(); + if($lc) { + $recs[] = __getLatestVersionData($lc); + } + } elseif(get_class($entry) == 'SeedDMS_Core_Folder') { + $folder = $entry; + $recs[] = __getFolderData($folder); + } + } + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>true, 'message'=>'', 'data'=>$recs)); } /* }}} */ function checkIfAdmin() { /* {{{ */ global $app, $dms, $userobj; + if(!$userobj) { $app->response()->header('Content-Type', 'application/json'); echo json_encode(array('success'=>false, 'message'=>'Not logged in', 'data'=>'')); @@ -953,8 +1115,8 @@ function createAccount() { /* {{{ */ $language = $app->request()->post('language'); $theme = $app->request()->post('theme'); $comment = $app->request()->post('comment'); - - $newAccount = $dms->addUser($userName, $password, $fullname, $email, $language, $theme, $comment); + + $newAccount = $dms->addUser($userName, $password, $fullname, $email, $language, $theme, $comment); if ($newAccount === false) { $app->response()->header('Content-Type', 'application/json'); @@ -984,7 +1146,7 @@ function changeAccountPassword($id) { /* {{{ */ { $app->response()->header('Content-Type', 'application/json'); echo json_encode(array('success'=>false, 'message'=>'You must PUT a new password', 'data'=>'')); - return; + return; } $newPassword = $app->request()->put('password'); @@ -999,16 +1161,16 @@ function changeAccountPassword($id) { /* {{{ */ * User not found */ if (!$account) { - $app->response()->status(404); - return; + $app->response()->status(404); + return; } $operation = $account->setPwd($newPassword); if (!$operation){ - $app->response()->header('Content-Type', 'application/json'); - echo json_encode(array('success'=>false, 'message'=>'', 'data'=>'Could not change password.')); - return; + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>false, 'message'=>'', 'data'=>'Could not change password.')); + return; } $app->response()->header('Content-Type', 'application/json'); @@ -1053,22 +1215,22 @@ function setDisabledAccount($id) { /* {{{ */ { $app->response()->header('Content-Type', 'application/json'); echo json_encode(array('success'=>false, 'message'=>'You must PUT a disabled state', 'data'=>'')); - return; + return; } - + $isDisabled = false; $status = $app->request()->put('disable'); if ($status == 'true' || $status == '1') { $isDisabled = true; } - + if(is_numeric($id)) $account = $dms->getUser($id); else { $account = $dms->getUserByLogin($id); } - + if($account) { $account->setDisabled($isDisabled); $data = array(); @@ -1090,8 +1252,8 @@ function createGroup() { /* {{{ */ checkIfAdmin(); $groupName = $app->request()->post('name'); $comment = $app->request()->post('comment'); - - $newGroup = $dms->addGroup($groupName, $comment); + + $newGroup = $dms->addGroup($groupName, $comment); if ($newGroup === false) { $app->response()->header('Content-Type', 'application/json'); @@ -1134,18 +1296,18 @@ function getGroup($id) { /* {{{ */ function changeGroupMembership($id, $operationType) { /* {{{ */ global $app, $dms, $userobj; checkIfAdmin(); - + if(is_numeric($id)) $group = $dms->getGroup($id); else { $group = $dms->getGroupByName($id); } - + if ($app->request()->put('userid') == null) { $app->response()->header('Content-Type', 'application/json'); echo json_encode(array('success'=>false, 'message'=>'Please PUT the userid', 'data'=>'')); - return; + return; } $userId = $app->request()->put('userid'); if(is_numeric($userId)) @@ -1153,12 +1315,12 @@ function changeGroupMembership($id, $operationType) { /* {{{ */ else { $user = $dms->getUserByLogin($userId); } - + if (!($group && $user)) { $app->response()->status(404); } - $operationResult = false; + $operationResult = false; if ($operationType == 'add') { @@ -1168,7 +1330,7 @@ function changeGroupMembership($id, $operationType) { /* {{{ */ { $operationResult = $group->removeUser($user); } - + if ($operationResult === false) { $app->response()->header('Content-Type', 'application/json'); @@ -1177,6 +1339,7 @@ function changeGroupMembership($id, $operationType) { /* {{{ */ { $message = 'Could not remove user from group.'; } + $app->response()->header('Content-Type', 'application/json'); echo json_encode(array('success'=>false, 'message'=>'Something went wrong. ' . $message, 'data'=>'')); return; } @@ -1198,7 +1361,7 @@ function addUserToGroup($id) { /* {{{ */ } /* }}} */ function removeUserFromGroup($id) { /* {{{ */ - changeGroupMembership($id, 'remove'); + changeGroupMembership($id, 'remove'); } /* }}} */ function setFolderInheritsAccess($id) { /* {{{ */ @@ -1208,22 +1371,22 @@ function setFolderInheritsAccess($id) { /* {{{ */ { $app->response()->header('Content-Type', 'application/json'); echo json_encode(array('success'=>false, 'message'=>'You must PUT an "enable" value', 'data'=>'')); - return; + return; } - + $inherit = false; $status = $app->request()->put('enable'); if ($status == 'true' || $status == '1') { $inherit = true; } - + if(is_numeric($id)) $folder = $dms->getFolder($id); else { $folder = $dms->getFolderByName($id); } - + if($folder) { $folder->setInheritAccess($inherit); $folderId = $folder->getId(); @@ -1247,17 +1410,17 @@ function addGroupAccessToFolder($id) { /* {{{ */ } /* }}} */ function removeUserAccessFromFolder($id) { /* {{{ */ - changeFolderAccess($id, 'remove', 'user'); + changeFolderAccess($id, 'remove', 'user'); } /* }}} */ function removeGroupAccessFromFolder($id) { /* {{{ */ - changeFolderAccess($id, 'remove', 'group'); + changeFolderAccess($id, 'remove', 'group'); } /* }}} */ function changeFolderAccess($id, $operationType, $userOrGroup) { /* {{{ */ global $app, $dms, $userobj; checkIfAdmin(); - + if(is_numeric($id)) $folder = $dms->getfolder($id); else { @@ -1267,66 +1430,66 @@ function changeFolderAccess($id, $operationType, $userOrGroup) { /* {{{ */ $app->response()->status(404); return; } - + $userOrGroupIdInput = $app->request()->put('id'); if ($operationType == 'add') { - if ($app->request()->put('id') == null) - { - $app->response()->header('Content-Type', 'application/json'); - echo json_encode(array('success'=>false, 'message'=>'Please PUT the user or group Id', 'data'=>'')); - return; - } + if ($app->request()->put('id') == null) + { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>false, 'message'=>'Please PUT the user or group Id', 'data'=>'')); + return; + } - if ($app->request()->put('mode') == null) - { - $app->response()->header('Content-Type', 'application/json'); - echo json_encode(array('success'=>false, 'message'=>'Please PUT the access mode', 'data'=>'')); - return; - } + if ($app->request()->put('mode') == null) + { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>false, 'message'=>'Please PUT the access mode', 'data'=>'')); + return; + } - $modeInput = $app->request()->put('mode'); + $modeInput = $app->request()->put('mode'); - $mode = M_NONE; - if ($modeInput == 'read') - { - $mode = M_READ; - } - if ($modeInput == 'readwrite') - { - $mode = M_READWRITE; - } - if ($modeInput == 'all') - { - $mode = M_ALL; - } - } + $mode = M_NONE; + if ($modeInput == 'read') + { + $mode = M_READ; + } + if ($modeInput == 'readwrite') + { + $mode = M_READWRITE; + } + if ($modeInput == 'all') + { + $mode = M_ALL; + } + } $userOrGroupId = $userOrGroupIdInput; if(!is_numeric($userOrGroupIdInput) && $userOrGroup == 'user') { - $userOrGroupObj = $dms->getUserByLogin($userOrGroupIdInput); + $userOrGroupObj = $dms->getUserByLogin($userOrGroupIdInput); } if(!is_numeric($userOrGroupIdInput) && $userOrGroup == 'group') { - $userOrGroupObj = $dms->getGroupByName($userOrGroupIdInput); + $userOrGroupObj = $dms->getGroupByName($userOrGroupIdInput); } if(is_numeric($userOrGroupIdInput) && $userOrGroup == 'user') { - $userOrGroupObj = $dms->getUser($userOrGroupIdInput); + $userOrGroupObj = $dms->getUser($userOrGroupIdInput); } if(is_numeric($userOrGroupIdInput) && $userOrGroup == 'group') { - $userOrGroupObj = $dms->getGroup($userOrGroupIdInput); + $userOrGroupObj = $dms->getGroup($userOrGroupIdInput); } if (!$userOrGroupObj) { $app->response()->status(404); return; - } - $userOrGroupId = $userOrGroupObj->getId(); + } + $userOrGroupId = $userOrGroupObj->getId(); - $operationResult = false; + $operationResult = false; if ($operationType == 'add' && $userOrGroup == 'user') { @@ -1345,7 +1508,7 @@ function changeFolderAccess($id, $operationType, $userOrGroup) { /* {{{ */ { $operationResult = $folder->removeAccess($userOrGroupId, false); } - + if ($operationResult === false) { $app->response()->header('Content-Type', 'application/json'); @@ -1354,6 +1517,7 @@ function changeFolderAccess($id, $operationType, $userOrGroup) { /* {{{ */ { $message = 'Could not remove user/group access from this folder.'; } + $app->response()->header('Content-Type', 'application/json'); echo json_encode(array('success'=>false, 'message'=>'Something went wrong. ' . $message, 'data'=>'')); return; } @@ -1363,46 +1527,186 @@ function changeFolderAccess($id, $operationType, $userOrGroup) { /* {{{ */ echo json_encode(array('success'=>true, 'message'=>'', 'data'=>$data)); } /* }}} */ +function getCategories() { /* {{{ */ + global $app, $dms, $userobj; + + $categories = $dms->getDocumentCategories(); + $data = []; + foreach($categories as $category) + $data[] = ['id' => $category->getId(), 'name' => $category->getName()]; + + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>true, 'message'=>'', 'data'=>$data)); +} /* }}} */ + +function addCategory() { /* {{{ */ + global $app, $dms, $userobj; + checkIfAdmin(); + + $category = $app->request()->params("category"); + if ($category == null) { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>false, 'message'=>'Need a category.', 'data'=>'')); + return; + } + + $catobj = $dms->getDocumentCategoryByName($category); + if($catobj) { + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>false, 'message'=>'Category already exists', 'data'=>'')); + } else { + $data = $dms->addDocumentCategory($category); + + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>true, 'message'=>'', 'data'=>$data)); + } +} /* }}} */ + +function deleteCategory($id) { /* {{{ */ + global $app, $dms, $userobj; + checkIfAdmin(); + + $categories = new SeedDMS_Core_DocumentCategory($id, null); + $result = $categories->remove(); + $data = null; + + $app->response()->header('Content-Type', 'application/json'); + echo json_encode(array('success'=>$result, 'message'=>'', 'data'=>$data)); +} /* }}} */ + +/** + * Updates the name of an existing category + * + * @param