mirror of
https://codeberg.org/SeedDMS/paperless
synced 2024-11-26 07:22:08 +00:00
add page with list of stored views
This commit is contained in:
parent
0ee9bfee6b
commit
caf2e49d3b
|
@ -23,6 +23,8 @@ class SeedDMS_ExtPaperless extends SeedDMS_ExtBase { /* {{{ */
|
||||||
function init() { /* {{{ */
|
function init() { /* {{{ */
|
||||||
$GLOBALS['SEEDDMS_HOOKS']['initRestAPI'][] = new SeedDMS_ExtPaperless_RestAPI;
|
$GLOBALS['SEEDDMS_HOOKS']['initRestAPI'][] = new SeedDMS_ExtPaperless_RestAPI;
|
||||||
$GLOBALS['SEEDDMS_HOOKS']['view']['settings'][] = new SeedDMS_ExtPaperless_Settings;
|
$GLOBALS['SEEDDMS_HOOKS']['view']['settings'][] = new SeedDMS_ExtPaperless_Settings;
|
||||||
|
$GLOBALS['SEEDDMS_HOOKS']['view']['bootstrap'][] = new SeedDMS_ExtPaperless_Bootstrap;
|
||||||
|
$GLOBALS['SEEDDMS_HOOKS']['view']['style'][] = new SeedDMS_ExtPaperless_Bootstrap;
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
|
||||||
function main() { /* {{{ */
|
function main() { /* {{{ */
|
||||||
|
@ -56,6 +58,29 @@ class SeedDMS_ExtPaperless_Settings { /* {{{ */
|
||||||
}
|
}
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class containing methods for hooks when a
|
||||||
|
*
|
||||||
|
* @author Uwe Steinmann <uwe@steinmann.cx>
|
||||||
|
* @package SeedDMS
|
||||||
|
* @subpackage paperless
|
||||||
|
*/
|
||||||
|
class SeedDMS_ExtPaperless_Bootstrap { /* {{{ */
|
||||||
|
|
||||||
|
function userMenuItems($view, $menuitems) { /* {{{ */
|
||||||
|
$user = $view->getParam('user');
|
||||||
|
$settings = $view->getParam('settings');
|
||||||
|
$accessobject = $view->getParam('accessobject');
|
||||||
|
|
||||||
|
if(!$user->isGuest()) {
|
||||||
|
if (((new SeedDMS_Version())->version() < '6.0.0') || !$settings->_advancedAcl || $accessobject->check_view_access('PaperlessViews'))
|
||||||
|
$menuitems['paperless_views'] = array('link'=>$settings->_httpRoot.'ext/paperless/out/out.PaperlessViews.php', 'label'=>getMLText('paperless_views'));
|
||||||
|
}
|
||||||
|
return $menuitems;
|
||||||
|
} /* }}} */
|
||||||
|
|
||||||
|
} /* }}} */
|
||||||
|
|
||||||
use Psr\Container\ContainerInterface;
|
use Psr\Container\ContainerInterface;
|
||||||
|
|
||||||
class SeedDMS_ExtPaperless_Process_Folder { /* {{{ */
|
class SeedDMS_ExtPaperless_Process_Folder { /* {{{ */
|
||||||
|
@ -86,7 +111,14 @@ class SeedDMS_ExtPaperless_RestAPI_Controller { /* {{{ */
|
||||||
return array_count_values(preg_split($regEx,$string, -1, PREG_SPLIT_NO_EMPTY));
|
return array_count_values(preg_split($regEx,$string, -1, PREG_SPLIT_NO_EMPTY));
|
||||||
} /* }}} */
|
} /* }}} */
|
||||||
|
|
||||||
protected function __getDocumentData($document, $truncate_content=false) { /* {{{ */
|
/**
|
||||||
|
* Get data of document
|
||||||
|
*
|
||||||
|
* @param $document object
|
||||||
|
* @param bool $truncate_content set to true if content shall be truncated
|
||||||
|
* @param bool $full set to true for content from the file instead of the index
|
||||||
|
*/
|
||||||
|
protected function __getDocumentData($document, $truncate_content=false, $full=false) { /* {{{ */
|
||||||
$fulltextservice = $this->container->fulltextservice;
|
$fulltextservice = $this->container->fulltextservice;
|
||||||
$settings = $this->container->config;
|
$settings = $this->container->config;
|
||||||
$conversionmgr = $this->container->conversionmgr;
|
$conversionmgr = $this->container->conversionmgr;
|
||||||
|
@ -100,7 +132,7 @@ class SeedDMS_ExtPaperless_RestAPI_Controller { /* {{{ */
|
||||||
* does not have stop words anymore if a stop words file was
|
* does not have stop words anymore if a stop words file was
|
||||||
* configured during indexing.
|
* configured during indexing.
|
||||||
*/
|
*/
|
||||||
if(1) {
|
if($full) {
|
||||||
$txtpreviewer = new SeedDMS_Preview_TxtPreviewer($settings->_cacheDir, $settings->_cmdTimeout, $settings->_enableXsendfile);
|
$txtpreviewer = new SeedDMS_Preview_TxtPreviewer($settings->_cacheDir, $settings->_cmdTimeout, $settings->_enableXsendfile);
|
||||||
$txtpreviewer->setConversionMgr($conversionmgr);
|
$txtpreviewer->setConversionMgr($conversionmgr);
|
||||||
if(!$txtpreviewer->hasPreview($lc))
|
if(!$txtpreviewer->hasPreview($lc))
|
||||||
|
@ -633,23 +665,25 @@ class SeedDMS_ExtPaperless_RestAPI_Controller { /* {{{ */
|
||||||
/* tags__id__in is used when searching for documents by id */
|
/* tags__id__in is used when searching for documents by id */
|
||||||
if(isset($params['tags__id__all'])) {
|
if(isset($params['tags__id__all'])) {
|
||||||
$catids = explode(',', $params['tags__id__all']);
|
$catids = explode(',', $params['tags__id__all']);
|
||||||
foreach($catids as $catid)
|
foreach($catids as $catid) {
|
||||||
if($catid) {
|
if($catid) {
|
||||||
if($cat = $dms->getDocumentCategory($catid)) {
|
if($cat = $dms->getDocumentCategory($catid)) {
|
||||||
$categories[] = $cat;
|
$categories[] = $cat;
|
||||||
$categorynames[] = $cat->getName();
|
$categorynames[] = $cat->getName();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
/* tags__id__in is used when getting the documents of the inbox */
|
/* tags__id__in is used when getting the documents of the inbox */
|
||||||
if(isset($params['tags__id__in'])) {
|
if(isset($params['tags__id__in'])) {
|
||||||
$catids = explode(',', $params['tags__id__in']);
|
$catids = explode(',', $params['tags__id__in']);
|
||||||
if($catids) {
|
if($catids) {
|
||||||
foreach($catids as $catid)
|
foreach($catids as $catid) {
|
||||||
if($cat = $dms->getDocumentCategory($catid)) {
|
if($cat = $dms->getDocumentCategory($catid)) {
|
||||||
$categories[] = $cat;
|
$categories[] = $cat;
|
||||||
$categorynames[] = $cat->getName();
|
$categorynames[] = $cat->getName();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} elseif(isset($params['is_tagged']) && $params['is_tagged'] == '1') {
|
} elseif(isset($params['is_tagged']) && $params['is_tagged'] == '1') {
|
||||||
$categorynames[] = '*';
|
$categorynames[] = '*';
|
||||||
|
@ -867,7 +901,8 @@ class SeedDMS_ExtPaperless_RestAPI_Controller { /* {{{ */
|
||||||
$document = $dms->getDocument($args['id']);
|
$document = $dms->getDocument($args['id']);
|
||||||
if($document) {
|
if($document) {
|
||||||
if($document->getAccessMode($userobj) >= M_READ) {
|
if($document->getAccessMode($userobj) >= M_READ) {
|
||||||
$rec = $this->__getDocumentData($document, true);
|
/* get untruncated content from file */
|
||||||
|
$rec = $this->__getDocumentData($document, true, true);
|
||||||
return $response->withJson($rec, 200);
|
return $response->withJson($rec, 200);
|
||||||
} else {
|
} else {
|
||||||
return $response->withStatus(404);
|
return $response->withStatus(404);
|
||||||
|
|
24
lang.php
24
lang.php
|
@ -9,6 +9,18 @@ $__lang['en_GB'] = array(
|
||||||
'paperless_token_has_expired'=>'Token has expired. Login again before you proceed.',
|
'paperless_token_has_expired'=>'Token has expired. Login again before you proceed.',
|
||||||
'paperless_jwtsecret_not_set'=>'The secret for the JSON Web Token is not set. This is required for successful login.',
|
'paperless_jwtsecret_not_set'=>'The secret for the JSON Web Token is not set. This is required for successful login.',
|
||||||
'paperless_needs_fulltextsearch'=>'The extension needs fulltext search to be on.',
|
'paperless_needs_fulltextsearch'=>'The extension needs fulltext search to be on.',
|
||||||
|
'paperless_views'=>'Paperless',
|
||||||
|
'paperless_view_name'=>'Name',
|
||||||
|
'paperless_view_rules'=>'Rules',
|
||||||
|
'paperless_view_sort_by'=>'Sort by',
|
||||||
|
'paperless_view_dashboard'=>'Dashboard',
|
||||||
|
'paperless_view_sidebar'=>'Sidebar',
|
||||||
|
'paperless_view_rule_13'=>'Added until',
|
||||||
|
'paperless_view_rule_14'=>'Added from',
|
||||||
|
'paperless_view_rule_6'=>'Category',
|
||||||
|
'paperless_view_rule_3'=>'Correspondent',
|
||||||
|
'paperless_view_rule_19'=>'Title & Content',
|
||||||
|
'paperless_view_rule_20'=>'Advanced Search',
|
||||||
);
|
);
|
||||||
$__lang['de_DE'] = array(
|
$__lang['de_DE'] = array(
|
||||||
'paperless'=>'Paperless',
|
'paperless'=>'Paperless',
|
||||||
|
@ -20,5 +32,17 @@ $__lang['de_DE'] = array(
|
||||||
'paperless_token_has_expired'=>'Token abgelaufen. Melden Sie sich bitte neu an.',
|
'paperless_token_has_expired'=>'Token abgelaufen. Melden Sie sich bitte neu an.',
|
||||||
'paperless_jwtsecret_not_set'=>'Das Geheimnis des JSON Web Token ist nicht gesetzt. Dies ist für eine erfolgreiche Anmeldung erforderlich.',
|
'paperless_jwtsecret_not_set'=>'Das Geheimnis des JSON Web Token ist nicht gesetzt. Dies ist für eine erfolgreiche Anmeldung erforderlich.',
|
||||||
'paperless_needs_fulltextsearch'=>'Die Erweiterung erfordert eine konfigurierte Volltextsuche .',
|
'paperless_needs_fulltextsearch'=>'Die Erweiterung erfordert eine konfigurierte Volltextsuche .',
|
||||||
|
'paperless_views'=>'Paperless',
|
||||||
|
'paperless_view_name'=>'Name',
|
||||||
|
'paperless_view_rules'=>'Regeln',
|
||||||
|
'paperless_view_sort_by'=>'Sortiere nach',
|
||||||
|
'paperless_view_dashboard'=>'Dashboard',
|
||||||
|
'paperless_view_sidebar'=>'Sidebar',
|
||||||
|
'paperless_view_rule_13'=>'Hinzugefügt bis',
|
||||||
|
'paperless_view_rule_14'=>'Hinzugefügt von',
|
||||||
|
'paperless_view_rule_6'=>'Kategorie',
|
||||||
|
'paperless_view_rule_3'=>'Korrepondent',
|
||||||
|
'paperless_view_rule_19'=>'Titel & Inhalt',
|
||||||
|
'paperless_view_rule_20'=>'Erweiterte Suche',
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
69
out/out.PaperlessViews.php
Normal file
69
out/out.PaperlessViews.php
Normal file
|
@ -0,0 +1,69 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* MyDMS. Document Management System
|
||||||
|
* Copyright (C) 2002-2005 Markus Westphal
|
||||||
|
* Copyright (C) 2006-2008 Malcolm Cowe
|
||||||
|
* Copyright (C) 2010-2011 Matteo Lucarelli
|
||||||
|
* Copyright (C) 2010-2024 Uwe Steinmann
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
if(!empty($_SERVER['SEEDDMS_HOME']))
|
||||||
|
require_once($_SERVER['SEEDDMS_HOME'].'/inc/inc.Settings.php');
|
||||||
|
else
|
||||||
|
require_once("../../../inc/inc.Settings.php");
|
||||||
|
require_once("inc/inc.Utils.php");
|
||||||
|
require_once("inc/inc.LogInit.php");
|
||||||
|
require_once("inc/inc.Language.php");
|
||||||
|
require_once("inc/inc.Init.php");
|
||||||
|
require_once("inc/inc.Extension.php");
|
||||||
|
require_once("inc/inc.DBInit.php");
|
||||||
|
require_once("inc/inc.ClassUI.php");
|
||||||
|
require_once("inc/inc.Authentication.php");
|
||||||
|
|
||||||
|
require_once('ext/paperless/class.PaperlessView.php');
|
||||||
|
|
||||||
|
$tmp = explode('.', basename($_SERVER['SCRIPT_FILENAME']));
|
||||||
|
$view = UI::factory($theme, $tmp[1], array('dms' => $dms, 'user' => $user));
|
||||||
|
|
||||||
|
$v = new SeedDMS_Version();
|
||||||
|
if($v->majorVersion() > 5) {
|
||||||
|
$accessop = new SeedDMS_AccessOperation($dms, $user, $settings);
|
||||||
|
if (!$accessop->check_view_access($view, $_GET)) {
|
||||||
|
UI::exitError(getMLText("admin_tools"), getMLText("access_denied"));
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
$accessop = new SeedDMS_AccessOperation($dms, null, $user, $settings);
|
||||||
|
|
||||||
|
$pview = null;
|
||||||
|
if (isset($_GET["view"])) {
|
||||||
|
$pview = SeedDMS_PaperlessView::getInstance($_GET['view'], $dms);
|
||||||
|
}
|
||||||
|
|
||||||
|
if($view) {
|
||||||
|
$view->setParam('accessobject', $accessop);
|
||||||
|
$view->setParam('showtree', showtree());
|
||||||
|
$view->setParam('pview', $pview);
|
||||||
|
$view->setParam('fulltextservice', $fulltextservice);
|
||||||
|
$view->setParam('logger', $logger);
|
||||||
|
$view->setParam('conversionmgr', $conversionmgr);
|
||||||
|
$view->setParam('previewWidthList', $settings->_previewWidthList);
|
||||||
|
$view->setParam('previewconverters', $settings->_converters['preview']);
|
||||||
|
$view->setParam('timeout', $settings->_cmdTimeout);
|
||||||
|
$view($_GET);
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
357
views/bootstrap/class.PaperlessViews.php
Normal file
357
views/bootstrap/class.PaperlessViews.php
Normal file
|
@ -0,0 +1,357 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Implementation of PaperlessViews view
|
||||||
|
*
|
||||||
|
* @category DMS
|
||||||
|
* @package SeedDMS
|
||||||
|
* @license GPL 2
|
||||||
|
* @version @version@
|
||||||
|
* @author Uwe Steinmann <uwe@steinmann.cx>
|
||||||
|
* @copyright Copyright (C) 2017 Uwe Steinmann
|
||||||
|
* @version Release: @package_version@
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class which outputs the html page for PaperlessViews view
|
||||||
|
*
|
||||||
|
* @category DMS
|
||||||
|
* @package SeedDMS
|
||||||
|
* @author Uwe Steinmann <uwe@steinmann.cx>
|
||||||
|
* @copyright Copyright (C) 2017 Uwe Steinmann
|
||||||
|
* @version Release: @package_version@
|
||||||
|
*/
|
||||||
|
class SeedDMS_View_PaperlessViews extends SeedDMS_Bootstrap_Style {
|
||||||
|
|
||||||
|
function js() { /* {{{ */
|
||||||
|
$dms = $this->params['dms'];
|
||||||
|
$user = $this->params['user'];
|
||||||
|
$onepage = $this->params['onepage'];
|
||||||
|
header('Content-Type: application/javascript');
|
||||||
|
parent::jsTranslations(array('cancel', 'splash_move_document', 'confirm_move_document', 'move_document', 'confirm_transfer_link_document', 'transfer_content', 'link_document', 'splash_move_folder', 'confirm_move_folder', 'move_folder'));
|
||||||
|
?>
|
||||||
|
$(document).ready(function() {
|
||||||
|
$('body').on('click', '.view', function(ev){
|
||||||
|
ev.preventDefault();
|
||||||
|
$('#paperless_view.ajax').trigger('update', {view: $(this).data('view')});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
<?php
|
||||||
|
if($onepage) {
|
||||||
|
$this->printClickDocumentJs();
|
||||||
|
}
|
||||||
|
$this->printDeleteDocumentButtonJs();
|
||||||
|
} /* }}} */
|
||||||
|
|
||||||
|
protected function printListHeader($previewer, $order=false) { /* {{{ */
|
||||||
|
print "<table class=\"table table-condensed\">";
|
||||||
|
print "<thead>\n<tr>\n";
|
||||||
|
print "<th></th>\n";
|
||||||
|
if($order) {
|
||||||
|
$orderby = ''; //$this->params['orderby'];
|
||||||
|
$orderdir = ''; //$this->params['orderdir'];
|
||||||
|
|
||||||
|
print "<th><a data-action=\"".$order."\" data-orderby=\"n\" data-orderdir=\"".($orderdir == 'desc' ? '' : 'desc')."\">".getMLText("name")."</a> ".($orderby == 'n' || $orderby == '' ? ($orderdir == 'desc' ? '<i class="icon-arrow-up"></i>' : '<i class="icon-arrow-down"></i>') : '')." · <a data-action=\"".$order."\" data-orderby=\"u\" data-orderdir=\"".($orderdir == 'desc' ? '' : 'desc')."\">".getMLText("last_update")."</a> ".($orderby == 'u' ? ($orderdir == 'desc' ? '<i class="icon-arrow-up"></i>' : '<i class="icon-arrow-down"></i>') : '')." · <a data-action=\"".$order."\" data-orderby=\"e\" data-orderdir=\"".($orderdir == 'desc' ? '' : 'desc')."\">".getMLText("expires")."</a> ".($orderby == 'e' ? ($orderdir == 'desc' ? '<i class="icon-arrow-up"></i>' : '<i class="icon-arrow-down"></i>') : '')."</th>\n";
|
||||||
|
} else
|
||||||
|
print "<th>".getMLText("name")."</th>\n";
|
||||||
|
if($order)
|
||||||
|
print "<th><a data-action=\"".$order."\" data-orderby=\"s\" data-orderdir=\"".($orderdir == 'desc' ? '' : 'desc')."\">".getMLText("status")."</a>".($orderby == 's' ? " ".($orderdir == 'desc' ? '<i class="icon-arrow-up"></i>' : '<i class="icon-arrow-down"></i>') : '')."</th>\n";
|
||||||
|
else
|
||||||
|
print "<th>".getMLText("status")."</th>\n";
|
||||||
|
print "<th>".getMLText("action")."</th>\n";
|
||||||
|
print "</tr>\n</thead>\n<tbody>\n";
|
||||||
|
} /* }}} */
|
||||||
|
|
||||||
|
protected function printListFooter() { /* {{{ */
|
||||||
|
echo "</tbody>\n</table>";
|
||||||
|
} /* }}} */
|
||||||
|
|
||||||
|
private function getSearchParameter($data) { /* {{{ */
|
||||||
|
$dms = $this->params['dms'];
|
||||||
|
$user = $this->params['user'];
|
||||||
|
$settings = $this->params['settings'];
|
||||||
|
|
||||||
|
$categories = array();
|
||||||
|
$categorynames = array();
|
||||||
|
$astart = null;
|
||||||
|
$aend = null;
|
||||||
|
$mstart = null;
|
||||||
|
$mend = null;
|
||||||
|
$startfolder = $dms->getRootFolder();
|
||||||
|
$rootfolder = $dms->getRootFolder();
|
||||||
|
$cattrs = [];
|
||||||
|
$query = '';
|
||||||
|
foreach ($data['filter_rules'] as $rule) {
|
||||||
|
switch ($rule['rule_type']) {
|
||||||
|
case 3:
|
||||||
|
$correspondent = null;
|
||||||
|
if(!empty($settings->_extensions['paperless']['correspondentsattr']) && $attrdef = $dms->getAttributeDefinition($settings->_extensions['paperless']['correspondentsattr'])) {
|
||||||
|
$valueset = $attrdef->getValueSetAsArray();
|
||||||
|
if(isset($valueset[$rule['value']-1])) {
|
||||||
|
$correspondent = $valueset[$rule['value']-1];
|
||||||
|
$cattrs['attr_'.$attrdef->getId()] = $correspondent;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
$catid = (int) $rule['value'];
|
||||||
|
if($catid) {
|
||||||
|
if($cat = $dms->getDocumentCategory($catid)) {
|
||||||
|
$categories[] = $cat;
|
||||||
|
$categorynames[] = $cat->getName();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 13:
|
||||||
|
$aend = makeTsFromDate($rule['value']);
|
||||||
|
break;
|
||||||
|
case 14:
|
||||||
|
$astart = makeTsFromDate($rule['value']);
|
||||||
|
break;
|
||||||
|
case 19:
|
||||||
|
$query = $rule['value'];
|
||||||
|
break;
|
||||||
|
case 20:
|
||||||
|
$tmp = explode(',', $rule['value']);
|
||||||
|
foreach ($tmp as $t) {
|
||||||
|
if (substr($t, 0, 9) == 'created:[') {
|
||||||
|
$q = substr($t, 9, -1);
|
||||||
|
if($x = explode(' to ', $q, 2)) {
|
||||||
|
$astart = strtotime($x[0]);
|
||||||
|
$aend = strtotime($x[1])+86400;
|
||||||
|
}
|
||||||
|
} elseif (substr($t, 0, 7) == 'added:[') {
|
||||||
|
$q = substr($t, 7, -1);
|
||||||
|
if($x = explode(' to ', $q, 2)) {
|
||||||
|
$astart = strtotime($x[0]);
|
||||||
|
$aend = strtotime($x[1])+86400;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$query = $t;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return [$query, array('record_type'=>['document'], 'status'=>[2], 'user'=>[$user->getLogin()], 'category'=>$categorynames, 'created_start'=>$astart, 'created_end'=>$aend, 'modified_start'=>$mstart, 'modified_end'=>$mend, 'startFolder'=>$startfolder, 'rootFolder'=>$rootfolder, 'attributes'=>$cattrs)];
|
||||||
|
} /* }}} */
|
||||||
|
|
||||||
|
private function printList($data, $previewer) { /* {{{ */
|
||||||
|
$dms = $this->params['dms'];
|
||||||
|
$user = $this->params['user'];
|
||||||
|
$settings = $this->params['settings'];
|
||||||
|
$fulltextservice = $this->params['fulltextservice'];
|
||||||
|
$logger = $this->params['logger'];
|
||||||
|
|
||||||
|
$order = [];
|
||||||
|
$order['dir'] = $data['sort_reverse'] ? 'desc' : 'asc';
|
||||||
|
$orderfield = $data["sort_field"];
|
||||||
|
if(in_array($orderfield, ['modified', 'created', 'title']))
|
||||||
|
$order['by'] = $orderfield;
|
||||||
|
elseif($orderfield == 'added')
|
||||||
|
$order['by'] = 'created';
|
||||||
|
elseif($orderfield == 'archive_serial_number')
|
||||||
|
$order['by'] = 'id';
|
||||||
|
elseif($orderfield == 'correspondent__name') {
|
||||||
|
if(!empty($settings->_extensions['paperless']['correspondentsattr']) && $attrdef = $dms->getAttributeDefinition($settings->_extensions['paperless']['correspondentsattr'])) {
|
||||||
|
$order['by'] = 'attr_'.$attrdef->getId();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
list($query, $searchparams) = $this->getSearchParameter($data);
|
||||||
|
|
||||||
|
if($fulltextservice && $index = $fulltextservice->Indexer()) {
|
||||||
|
$lucenesearch = $fulltextservice->Search();
|
||||||
|
$limit = 10;
|
||||||
|
$offset = 0;
|
||||||
|
$logger->log('Query is '.$query, PEAR_LOG_DEBUG);
|
||||||
|
/*
|
||||||
|
$logger->log('User is '.$userobj->getLogin(), PEAR_LOG_DEBUG);
|
||||||
|
$logger->log('limit is '.$limit, PEAR_LOG_DEBUG);
|
||||||
|
$logger->log('offset is '.$offset, PEAR_LOG_DEBUG);
|
||||||
|
*/
|
||||||
|
$searchresult = $lucenesearch->search($query, $searchparams, array('limit'=>$limit, 'offset'=>$offset), $order, array('no_facets'=>true));
|
||||||
|
if($searchresult) {
|
||||||
|
$recs = array();
|
||||||
|
$facets = $searchresult['facets'];
|
||||||
|
$dcount = 0;
|
||||||
|
$fcount = 0;
|
||||||
|
if($searchresult['hits']) {
|
||||||
|
$allids = '';
|
||||||
|
$this->printListHeader($previewer);
|
||||||
|
foreach($searchresult['hits'] as $hit) {
|
||||||
|
if($hit['document_id'][0] == 'D') {
|
||||||
|
if($document = $dms->getDocument((int) substr($hit['document_id'], 1))) {
|
||||||
|
$document->verifyLastestContentExpriry();
|
||||||
|
$v = new SeedDMS_Version();
|
||||||
|
if($v->majorVersion() > 5) {
|
||||||
|
$document->checkForDueRevisionWorkflow($user);
|
||||||
|
}
|
||||||
|
|
||||||
|
$lc = $document->getLatestContent();
|
||||||
|
if($document->getAccessMode($user) >= M_READ && $lc) {
|
||||||
|
$txt = $this->callHook('documentListItem', $document, $previewer, false, 'opentasks');
|
||||||
|
if(is_string($txt))
|
||||||
|
echo $txt;
|
||||||
|
else {
|
||||||
|
/*
|
||||||
|
$errormsg = '';
|
||||||
|
$errorcls = '';
|
||||||
|
if(!$doc['error']) {
|
||||||
|
} else {
|
||||||
|
$errorcls = $doc['error'] < 0 ? " error" : ($doc['error'] === 0 ? " success" : "");
|
||||||
|
$errormsg = $doc['error'];
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
$extracontent = array();
|
||||||
|
$extracontent['below_title'] = $this->getListRowPath($document);
|
||||||
|
echo $this->documentListRowStart($document);
|
||||||
|
echo $this->documentListRow($document, $previewer, true, 0, $extracontent);
|
||||||
|
echo $this->documentListRowEnd($document);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$this->printListFooter();
|
||||||
|
$logger->log('Result is '.$allids, PEAR_LOG_DEBUG);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} /* }}} */
|
||||||
|
|
||||||
|
private function count($data) { /* {{{ */
|
||||||
|
$dms = $this->params['dms'];
|
||||||
|
$user = $this->params['user'];
|
||||||
|
$settings = $this->params['settings'];
|
||||||
|
$fulltextservice = $this->params['fulltextservice'];
|
||||||
|
$logger = $this->params['logger'];
|
||||||
|
|
||||||
|
list($query, $searchparams) = $this->getSearchParameter($data);
|
||||||
|
|
||||||
|
if($fulltextservice && $index = $fulltextservice->Indexer()) {
|
||||||
|
$lucenesearch = $fulltextservice->Search();
|
||||||
|
$limit = 10;
|
||||||
|
$offset = 0;
|
||||||
|
$logger->log('Query is '.$query, PEAR_LOG_DEBUG);
|
||||||
|
/*
|
||||||
|
$logger->log('User is '.$userobj->getLogin(), PEAR_LOG_DEBUG);
|
||||||
|
$logger->log('limit is '.$limit, PEAR_LOG_DEBUG);
|
||||||
|
$logger->log('offset is '.$offset, PEAR_LOG_DEBUG);
|
||||||
|
*/
|
||||||
|
$searchresult = $lucenesearch->search($query, $searchparams, array('limit'=>0, 'offset'=>0), [], array('no_facets'=>true));
|
||||||
|
if($searchresult) {
|
||||||
|
return $searchresult['count'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
} /* }}} */
|
||||||
|
|
||||||
|
public function list() { /* {{{ */
|
||||||
|
$dms = $this->params['dms'];
|
||||||
|
$user = $this->params['user'];
|
||||||
|
$settings = $this->params['settings'];
|
||||||
|
$pview = $this->params['pview'];
|
||||||
|
$cachedir = $this->params['cachedir'];
|
||||||
|
$conversionmgr = $this->params['conversionmgr'];
|
||||||
|
$previewwidth = $this->params['previewWidthList'];
|
||||||
|
$previewconverters = $this->params['previewconverters'];
|
||||||
|
$timeout = $this->params['timeout'];
|
||||||
|
|
||||||
|
$previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidth, $timeout);
|
||||||
|
if($conversionmgr)
|
||||||
|
$previewer->setConversionMgr($conversionmgr);
|
||||||
|
else
|
||||||
|
$previewer->setConverters($previewconverters);
|
||||||
|
|
||||||
|
if ($pview) {
|
||||||
|
$data = $pview->getView();
|
||||||
|
$this->printList($data, $previewer);
|
||||||
|
}
|
||||||
|
} /* }}} */
|
||||||
|
|
||||||
|
private function getFilterValue($rule) { /* {{{ */
|
||||||
|
$dms = $this->params['dms'];
|
||||||
|
$settings = $this->params['settings'];
|
||||||
|
|
||||||
|
switch($rule['rule_type']) {
|
||||||
|
case 13: // Added until
|
||||||
|
case 14: // Added from
|
||||||
|
return getReadableDate($rule['value']);
|
||||||
|
case 3: // Correspondent
|
||||||
|
if(!empty($settings->_extensions['paperless']['correspondentsattr']) && $attrdef = $dms->getAttributeDefinition($settings->_extensions['paperless']['correspondentsattr'])) {
|
||||||
|
$valueset = $attrdef->getValueSetAsArray();
|
||||||
|
if(isset($valueset[$rule['value']-1])) {
|
||||||
|
return $valueset[$rule['value']-1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return '???';
|
||||||
|
break;
|
||||||
|
case 6: // Category
|
||||||
|
return $dms->getDocumentCategory($rule['value'])->getName();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return $rule['value'];
|
||||||
|
}
|
||||||
|
} /* }}} */
|
||||||
|
|
||||||
|
public function show() { /* {{{ */
|
||||||
|
$dms = $this->params['dms'];
|
||||||
|
$user = $this->params['user'];
|
||||||
|
$settings = $this->params['settings'];
|
||||||
|
$session = $this->params['session'];
|
||||||
|
|
||||||
|
$area = 'my_account';
|
||||||
|
$this->htmlStartPage(getMLText("paperless_views"), '', '../../');
|
||||||
|
$this->globalNavigation();
|
||||||
|
$this->contentStart();
|
||||||
|
$this->pageNavigation(getMLText($area), $area);
|
||||||
|
$this->contentHeading(getMLText("paperless_views"));
|
||||||
|
|
||||||
|
$this->rowStart();
|
||||||
|
$this->columnStart(4);
|
||||||
|
$views = SeedDMS_PaperlessView::getAllInstances($user, $dms);
|
||||||
|
|
||||||
|
if($views) {
|
||||||
|
print "<table id=\"paperlessviews-table\" class=\"table table-condensed table-sm table-hover\">";
|
||||||
|
print "<thead>\n<tr>\n";
|
||||||
|
print "<th>".getMLText("paperless_view_name")."</th>\n";
|
||||||
|
print "<th>".getMLText("paperless_view_rules")."</th>\n";
|
||||||
|
print "</tr>\n</thead>\n<tbody>\n";
|
||||||
|
foreach($views as $view) {
|
||||||
|
$data = $view->getView();
|
||||||
|
$c = $this->count($data);
|
||||||
|
echo "<tr class=\"view\" data-view=\"".$data['id']."\"><td><strong>".$data['name']." (".$c.")</strong>";
|
||||||
|
echo "<br>".getMLText('paperless_view_sort_by').": ".$data['sort_field'];
|
||||||
|
if ($data['show_on_dashboard']) {
|
||||||
|
echo "<br>".getMLText('paperless_view_dashboard').': <i class="fa fa-check"></i>';
|
||||||
|
}
|
||||||
|
if ($data['show_in_sidebar']) {
|
||||||
|
echo "<br>".getMLText('paperless_view_sidebar').': <i class="fa fa-check"></i>';
|
||||||
|
}
|
||||||
|
echo "</td>";
|
||||||
|
echo "<td>";
|
||||||
|
foreach ($data['filter_rules'] as $rule) {
|
||||||
|
echo getMLText('paperless_view_rule_'.$rule['rule_type']).": ".$this->getFilterValue($rule)."<br>";
|
||||||
|
}
|
||||||
|
// echo "<pre>";
|
||||||
|
// print_r($data);
|
||||||
|
// echo "</pre>";
|
||||||
|
echo "</td>";
|
||||||
|
echo "</tr>";
|
||||||
|
}
|
||||||
|
echo "</tbody>\n</table>\n";
|
||||||
|
} else {
|
||||||
|
$this->infoMsg(getMLText('upload_area_no_secret_info'));
|
||||||
|
}
|
||||||
|
$this->columnEnd();
|
||||||
|
$this->columnStart(8);
|
||||||
|
echo '<div id="paperless_view" class="ajax" data-base="ext/paperless/" data-view="PaperlessViews" data-action="list"></div>';
|
||||||
|
$this->columnEnd();
|
||||||
|
$this->rowEnd();
|
||||||
|
|
||||||
|
$this->contentEnd();
|
||||||
|
$this->htmlEndPage();
|
||||||
|
} /* }}} */
|
||||||
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user