From f63315f6c0f44e24913c1fb61807416e8b48960d Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 6 May 2021 12:17:32 +0200 Subject: [PATCH 1/4] move version details in own method showVersionDetails() --- views/bootstrap/class.ViewDocument.php | 268 ++++++++++++++----------- 1 file changed, 147 insertions(+), 121 deletions(-) diff --git a/views/bootstrap/class.ViewDocument.php b/views/bootstrap/class.ViewDocument.php index 881142216..0d9ef7d95 100644 --- a/views/bootstrap/class.ViewDocument.php +++ b/views/bootstrap/class.ViewDocument.php @@ -449,13 +449,13 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Theme_Style { if(is_string($item)) echo "
  • ".$item."
  • "; elseif(is_array($item)) { - echo "
  • ".(!empty($item['icon']) ? " " : "").getMLText($item['label'])."
  • "; + echo ">".(!empty($item['icon']) ? " " : "").''.getMLText($item['label']).""; } } print ""; @@ -477,6 +477,150 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Theme_Style { print ""; } /* }}} */ + protected function showVersionDetails($latestContent) { /* {{{ */ + $dms = $this->params['dms']; + $user = $this->params['user']; + $folder = $this->params['folder']; + $accessop = $this->params['accessobject']; + $viewonlinefiletypes = $this->params['viewonlinefiletypes']; + $enableownerrevapp = $this->params['enableownerrevapp']; + $workflowmode = $this->params['workflowmode']; + $cachedir = $this->params['cachedir']; + $previewwidthlist = $this->params['previewWidthList']; + $previewwidthdetail = $this->params['previewWidthDetail']; + $previewconverters = $this->params['previewConverters']; + $timeout = $this->params['timeout']; + $xsendfile = $this->params['xsendfile']; + + // verify if file exists + $file_exists=file_exists($dms->contentDir . $latestContent->getPath()); + + $status = $latestContent->getStatus(); + +// print ""; +// print "\n\n"; +// print "\n"; +// print "\n"; +// print "\n"; +// print "\n"; + +// print "\n"; + +// print ""; +// print "\n
    ".htmlspecialchars($latestContent->getOriginalFileName())."
    "; + $this->contentHeading(htmlspecialchars($latestContent->getOriginalFileName())); + $this->rowStart(); + $this->columnStart(4); + $previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidthdetail, $timeout, $xsendfile); + $previewer->setConverters($previewconverters); + $previewer->createPreview($latestContent); + if ($file_exists) { + if ($viewonlinefiletypes && (in_array(strtolower($latestContent->getFileType()), $viewonlinefiletypes) || in_array(strtolower($latestContent->getMimeType()), $viewonlinefiletypes))) { + print "getDocument()->getId()."&version=". $latestContent->getVersion()."\">"; + } else { + print "getDocument()->getId()."&version=".$latestContent->getVersion()."\">"; + } + } + if($previewer->hasPreview($latestContent)) { + print("getDocument()->getID()."&version=".$latestContent->getVersion()."&width=".$previewwidthdetail."\" title=\"".htmlspecialchars($latestContent->getMimeType())."\">"); + } else { + print "getMimeIcon($latestContent->getFileType())."\" title=\"".htmlspecialchars($latestContent->getMimeType())."\">"; + } + if ($file_exists) { + print ""; + } +// print ""; + $this->columnEnd(); + $this->columnStart(4); + print "
      \n"; + print "
    • ".getMLText('version').": ".$latestContent->getVersion()."
    • \n"; + + if ($file_exists) + print "
    • ". SeedDMS_Core_File::format_filesize($latestContent->getFileSize()) .", ".htmlspecialchars($latestContent->getMimeType())."
    • "; + else print "
    • ".getMLText("document_deleted")."
    • "; + + $updatingUser = $latestContent->getUser(); + print "
    • ".getMLText("uploaded_by")." getEmail())."\">".htmlspecialchars($updatingUser->getFullName())."
    • "; + print "
    • ".getLongReadableDate($latestContent->getDate())."
    • "; + + print "
    • ".getMLText('status').": ".getOverallStatusText($status["status"]); + if ( $status["status"]==S_DRAFT_REV || $status["status"]==S_DRAFT_APP || $status["status"]==S_IN_WORKFLOW || $status["status"]==S_EXPIRED ){ + print "
      getDocument()->hasExpired()?" class=\"warning\" ":"").">".(!$latestContent->getDocument()->getExpires() ? getMLText("does_not_expire") : getMLText("expires").": ".getReadableDate($latestContent->getDocument()->getExpires())).""; + } + print "
    • "; + print "
    \n"; + + $txt = $this->callHook('showVersionComment', $latestContent); + if($txt) { + echo $txt; + } else { + if($latestContent->getComment()) + print "

    ".htmlspecialchars($latestContent->getComment())."

    "; + } + print "
      \n"; + $this->printVersionAttributes($folder, $latestContent); + print "
    "; +// print "
    "; + + $this->columnEnd(); + $this->columnStart(4); + if ($file_exists){ + $items = array(); + $items[] = array('link'=>"../op/op.Download.php?documentid=".$latestContent->getDocument()->getId()."&version=".$latestContent->getVersion(), 'icon'=>'download', 'label'=>'download'); + if ($viewonlinefiletypes && (in_array(strtolower($latestContent->getFileType()), $viewonlinefiletypes) || in_array(strtolower($latestContent->getMimeType()), $viewonlinefiletypes))) + $items[] = array('link'=>"../op/op.ViewOnline.php?documentid=".$latestContent->getDocument()->getId()."&version=". $latestContent->getVersion(), 'icon'=>'eye', 'label'=>'view_online', 'target'=>'_blank'); + if($newitems = $this->callHook('extraVersionViews', $latestContent)) + $items = array_merge($items, $newitems); + if($items) { + $this->showActions($items); + } + } + + $items = array(); + if ($file_exists){ + if($accessop->mayEditVersion()) { + $items[] = array('link'=>"../out/out.EditOnline.php?documentid=".$latestContent->getDocument()->getId()."&version=".$latestContent->getVersion(), 'icon'=>'edit', 'label'=>'edit_version'); + } + } + /* Only admin has the right to remove version in any case or a regular + * user if enableVersionDeletion is on + */ + if($accessop->mayRemoveVersion()) { + $items[] = array('link'=>"../out/out.RemoveVersion.php?documentid=".$latestContent->getDocument()->getId()."&version=".$latestContent->getVersion(), 'icon'=>'remove', 'label'=>'rm_version'); + } + if($accessop->mayOverwriteStatus()) { + $items[] = array('link'=>"../out/out.OverrideContentStatus.php?documentid=".$latestContent->getDocument()->getId()."&version=".$latestContent->getVersion(), 'icon'=>'align-justify', 'label'=>'change_status'); + } + if($workflowmode == 'traditional' || $workflowmode == 'traditional_only_approval') { + // Allow changing reviewers/approvals only if not reviewed + if($accessop->maySetReviewersApprovers()) { + $items[] = array('link'=>"../out/out.SetReviewersApprovers.php?documentid=".$latestContent->getDocument()->getId()."&version=".$latestContent->getVersion(), 'icon'=>'edit', 'label'=>'change_assignments'); + } + } elseif($workflowmode == 'advanced') { + if($accessop->maySetWorkflow()) { + if(!$workflow) { + $items[] = array('link'=>"../out/out.SetWorkflow.php?documentid=".$latestContent->getDocument()->getId()."&version=".$latestContent->getVersion(), 'icon'=>'random', 'label'=>'set_workflow'); + } + } + } + if($accessop->mayEditComment()) { + $items[] = array('link'=>"out.EditComment.php?documentid=".$latestContent->getDocument()->getId()."&version=".$latestContent->getVersion(), 'icon'=>'comment', 'label'=>'edit_comment'); + } + if($accessop->mayEditAttributes()) { + $items[] = array('link'=>"out.EditAttributes.php?documentid=".$latestContent->getDocument()->getId()."&version=".$latestContent->getVersion(), 'icon'=>'edit', 'label'=>'edit_attributes'); + } + + if($newitems = $this->callHook('extraVersionActions', $latestContent)) + $items = array_merge($items, $newitems); + if($items) { + $this->showActions($items); + } + +// echo "
    \n"; + $this->columnEnd(); + $this->rowEnd(); + } /* }}} */ + function show() { /* {{{ */ parent::show(); @@ -559,7 +703,6 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Theme_Style { $this->infoMsg(getMLText('needs_workflow_action')); } - $status = $latestContent->getStatus(); $reviewStatus = $latestContent->getReviewStatus(); $approvalStatus = $latestContent->getApprovalStatus(); @@ -631,125 +774,8 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Theme_Style { if(is_string($txt)) echo $txt; - // verify if file exists - $file_exists=file_exists($dms->contentDir . $latestContent->getPath()); - $this->contentContainerStart(); - print ""; - print "\n\n"; - print "\n"; -// print "\n"; -// print "\n"; -// print "\n"; - print "\n"; - print "\n"; - print "\n"; - - print "\n"; - -// print ""; - print "\n
    ".htmlspecialchars($latestContent->getOriginalFileName())."".getMLText("file")."".getMLText("comment")."
    "; - $previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidthdetail, $timeout, $xsendfile); - $previewer->setConverters($previewconverters); - $previewer->createPreview($latestContent); - if ($file_exists) { - if ($viewonlinefiletypes && (in_array(strtolower($latestContent->getFileType()), $viewonlinefiletypes) || in_array(strtolower($latestContent->getMimeType()), $viewonlinefiletypes))) { - print "getDocument()->getId()."&version=". $latestContent->getVersion()."\">"; - } else { - print "getDocument()->getId()."&version=".$latestContent->getVersion()."\">"; - } - } - if($previewer->hasPreview($latestContent)) { - print("getDocument()->getID()."&version=".$latestContent->getVersion()."&width=".$previewwidthdetail."\" title=\"".htmlspecialchars($latestContent->getMimeType())."\">"); - } else { - print "getMimeIcon($latestContent->getFileType())."\" title=\"".htmlspecialchars($latestContent->getMimeType())."\">"; - } - if ($file_exists) { - print ""; - } - print "
      \n"; - print "
    • ".getMLText('version').": ".$latestContent->getVersion()."
    • \n"; - - if ($file_exists) - print "
    • ". SeedDMS_Core_File::format_filesize($latestContent->getFileSize()) .", ".htmlspecialchars($latestContent->getMimeType())."
    • "; - else print "
    • ".getMLText("document_deleted")."
    • "; - - $updatingUser = $latestContent->getUser(); - print "
    • ".getMLText("uploaded_by")." getEmail())."\">".htmlspecialchars($updatingUser->getFullName())."
    • "; - print "
    • ".getLongReadableDate($latestContent->getDate())."
    • "; - - print "
    • ".getMLText('status').": ".getOverallStatusText($status["status"]); - if ( $status["status"]==S_DRAFT_REV || $status["status"]==S_DRAFT_APP || $status["status"]==S_IN_WORKFLOW || $status["status"]==S_EXPIRED ){ - print "
      hasExpired()?" class=\"warning\" ":"").">".(!$document->getExpires() ? getMLText("does_not_expire") : getMLText("expires").": ".getReadableDate($document->getExpires())).""; - } - print "
    • "; - print "
    \n"; - - $txt = $this->callHook('showVersionComment', $latestContent); - if($txt) { - echo $txt; - } else { - if($latestContent->getComment()) - print "

    ".htmlspecialchars($latestContent->getComment())."

    "; - } - print "
      \n"; - $this->printVersionAttributes($folder, $latestContent); - print "
    "; -// print "
    "; - - if ($file_exists){ - $items = array(); - $items[] = array('link'=>"../op/op.Download.php?documentid=".$latestContent->getDocument()->getId()."&version=".$latestContent->getVersion(), 'icon'=>'download', 'label'=>'download'); - if ($viewonlinefiletypes && (in_array(strtolower($latestContent->getFileType()), $viewonlinefiletypes) || in_array(strtolower($latestContent->getMimeType()), $viewonlinefiletypes))) - $items[] = array('link'=>"../op/op.ViewOnline.php?documentid=".$latestContent->getDocument()->getId()."&version=". $latestContent->getVersion(), 'icon'=>'eye', 'label'=>'view_online', 'target'=>'_blank'); - if($newitems = $this->callHook('extraVersionViews', $latestContent)) - $items = array_merge($items, $newitems); - if($items) { - $this->showActions($items); - } - } - - $items = array(); - if ($file_exists){ - if($accessop->mayEditVersion()) { - $items[] = array('link'=>"../out/out.EditOnline.php?documentid=".$latestContent->getDocument()->getId()."&version=".$latestContent->getVersion(), 'icon'=>'edit', 'label'=>'edit_version'); - } - } - /* Only admin has the right to remove version in any case or a regular - * user if enableVersionDeletion is on - */ - if($accessop->mayRemoveVersion()) { - $items[] = array('link'=>"../out/out.RemoveVersion.php?documentid=".$latestContent->getDocument()->getId()."&version=".$latestContent->getVersion(), 'icon'=>'remove', 'label'=>'rm_version'); - } - if($accessop->mayOverwriteStatus()) { - $items[] = array('link'=>"../out/out.OverrideContentStatus.php?documentid=".$latestContent->getDocument()->getId()."&version=".$latestContent->getVersion(), 'icon'=>'align-justify', 'label'=>'change_status'); - } - if($workflowmode == 'traditional' || $workflowmode == 'traditional_only_approval') { - // Allow changing reviewers/approvals only if not reviewed - if($accessop->maySetReviewersApprovers()) { - $items[] = array('link'=>"../out/out.SetReviewersApprovers.php?documentid=".$latestContent->getDocument()->getId()."&version=".$latestContent->getVersion(), 'icon'=>'edit', 'label'=>'change_assignments'); - } - } elseif($workflowmode == 'advanced') { - if($accessop->maySetWorkflow()) { - if(!$workflow) { - $items[] = array('link'=>"../out/out.SetWorkflow.php?documentid=".$latestContent->getDocument()->getId()."&version=".$latestContent->getVersion(), 'icon'=>'random', 'label'=>'set_workflow'); - } - } - } - if($accessop->mayEditComment()) { - $items[] = array('link'=>"out.EditComment.php?documentid=".$latestContent->getDocument()->getId()."&version=".$latestContent->getVersion(), 'icon'=>'comment', 'label'=>'edit_comment'); - } - if($accessop->mayEditAttributes()) { - $items[] = array('link'=>"out.EditAttributes.php?documentid=".$latestContent->getDocument()->getId()."&version=".$latestContent->getVersion(), 'icon'=>'edit', 'label'=>'edit_attributes'); - } - - if($newitems = $this->callHook('extraVersionActions', $latestContent)) - $items = array_merge($items, $newitems); - if($items) { - $this->showActions($items); - } - - echo "
    \n"; + $this->showVersionDetails($latestContent); $this->contentContainerEnd(); if($user->isAdmin()) { From 8807257aa22d216bb3e9ae4867e5cd0fa3e3addf Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 6 May 2021 12:18:51 +0200 Subject: [PATCH 2/4] check if array element exists --- views/bootstrap/class.Bootstrap.php | 3 ++- views/bootstrap4/class.Bootstrap4.php | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/views/bootstrap/class.Bootstrap.php b/views/bootstrap/class.Bootstrap.php index 59f8eb91b..0612c31b6 100644 --- a/views/bootstrap/class.Bootstrap.php +++ b/views/bootstrap/class.Bootstrap.php @@ -1271,7 +1271,8 @@ background-image: linear-gradient(to bottom, #882222, #111111);; $attrs[] = array('href', $config['remote']); $attrs[] = array('data-toggle', 'modal'); $attrs[] = array('role', 'button'); - $attrs[] = array('class', $config['class']); + if(isset($config['class'])) + $attrs[] = array('class', $config['class']); return $attrs; } /* }}} */ diff --git a/views/bootstrap4/class.Bootstrap4.php b/views/bootstrap4/class.Bootstrap4.php index 00435adb7..4278c3fe0 100644 --- a/views/bootstrap4/class.Bootstrap4.php +++ b/views/bootstrap4/class.Bootstrap4.php @@ -1273,7 +1273,8 @@ background-image: linear-gradient(to bottom, #882222, #111111);; $attrs[] = array('href', $config['remote']); $attrs[] = array('data-toggle', 'modal'); $attrs[] = array('role', 'button'); - $attrs[] = array('class', $config['class']); + if(isset($config['class'])) + $attrs[] = array('class', $config['class']); return $attrs; } /* }}} */ From 0cbfba4d41f77e46e6e028868d0f4da741ac9ab0 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 6 May 2021 12:52:24 +0200 Subject: [PATCH 3/4] pass previewer to showVersionDetails() --- views/bootstrap/class.ViewDocument.php | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/views/bootstrap/class.ViewDocument.php b/views/bootstrap/class.ViewDocument.php index 0d9ef7d95..1f77cb57b 100644 --- a/views/bootstrap/class.ViewDocument.php +++ b/views/bootstrap/class.ViewDocument.php @@ -449,7 +449,7 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Theme_Style { if(is_string($item)) echo "
  • ".$item."
  • "; elseif(is_array($item)) { - echo "
  • "; } /* }}} */ - protected function showVersionDetails($latestContent) { /* {{{ */ + protected function showVersionDetails($latestContent, $previewer) { /* {{{ */ $dms = $this->params['dms']; $user = $this->params['user']; $folder = $this->params['folder']; @@ -485,12 +485,6 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Theme_Style { $viewonlinefiletypes = $this->params['viewonlinefiletypes']; $enableownerrevapp = $this->params['enableownerrevapp']; $workflowmode = $this->params['workflowmode']; - $cachedir = $this->params['cachedir']; - $previewwidthlist = $this->params['previewWidthList']; - $previewwidthdetail = $this->params['previewWidthDetail']; - $previewconverters = $this->params['previewConverters']; - $timeout = $this->params['timeout']; - $xsendfile = $this->params['xsendfile']; // verify if file exists $file_exists=file_exists($dms->contentDir . $latestContent->getPath()); @@ -506,9 +500,6 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Theme_Style { $this->contentHeading(htmlspecialchars($latestContent->getOriginalFileName())); $this->rowStart(); $this->columnStart(4); - $previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidthdetail, $timeout, $xsendfile); - $previewer->setConverters($previewconverters); - $previewer->createPreview($latestContent); if ($file_exists) { if ($viewonlinefiletypes && (in_array(strtolower($latestContent->getFileType()), $viewonlinefiletypes) || in_array(strtolower($latestContent->getMimeType()), $viewonlinefiletypes))) { print "getDocument()->getId()."&version=". $latestContent->getVersion()."\">"; @@ -516,6 +507,7 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Theme_Style { print "getDocument()->getId()."&version=".$latestContent->getVersion()."\">"; } } + $previewer->createPreview($latestContent); if($previewer->hasPreview($latestContent)) { print("getDocument()->getID()."&version=".$latestContent->getVersion()."&width=".$previewwidthdetail."\" title=\"".htmlspecialchars($latestContent->getMimeType())."\">"); } else { @@ -775,7 +767,9 @@ class SeedDMS_View_ViewDocument extends SeedDMS_Theme_Style { echo $txt; $this->contentContainerStart(); - $this->showVersionDetails($latestContent); + $previewer = new SeedDMS_Preview_Previewer($cachedir, $previewwidthdetail, $timeout, $xsendfile); + $previewer->setConverters($previewconverters); + $this->showVersionDetails($latestContent, $previewer); $this->contentContainerEnd(); if($user->isAdmin()) { From 9be41bca0b6d743a09aee44a7d4e1a801bb65e85 Mon Sep 17 00:00:00 2001 From: Uwe Steinmann Date: Thu, 6 May 2021 12:53:05 +0200 Subject: [PATCH 4/4] set class of modal box link button --- views/bootstrap4/class.Bootstrap4.php | 1 + 1 file changed, 1 insertion(+) diff --git a/views/bootstrap4/class.Bootstrap4.php b/views/bootstrap4/class.Bootstrap4.php index 4278c3fe0..c15da71bf 100644 --- a/views/bootstrap4/class.Bootstrap4.php +++ b/views/bootstrap4/class.Bootstrap4.php @@ -1498,6 +1498,7 @@ $(document).ready(function() { array( 'target' => 'docChooser'.$formid, 'remote' => "../out/out.DocumentChooser.php?form=".$formid."&folderid=".$this->params['dms']->getRootFolder()->getId(), + 'class' => 'btn btn-secondary', 'title' => getMLText('document').'…' )); $content .= "\n";