mirror of
https://github.com/Karaka-Management/oms-Script.git
synced 2026-01-30 13:18:40 +00:00
fix export handling
This commit is contained in:
parent
9b6dc60dcb
commit
9cd48bd0f9
|
|
@ -30,6 +30,7 @@ use Modules\Media\Models\NullCollection;
|
||||||
use Modules\Media\Models\NullMedia;
|
use Modules\Media\Models\NullMedia;
|
||||||
use Modules\Tag\Models\NullTag;
|
use Modules\Tag\Models\NullTag;
|
||||||
use phpOMS\Account\PermissionType;
|
use phpOMS\Account\PermissionType;
|
||||||
|
use phpOMS\Autoloader;
|
||||||
use phpOMS\DataStorage\Database\Query\Builder;
|
use phpOMS\DataStorage\Database\Query\Builder;
|
||||||
use phpOMS\Message\Http\HttpRequest;
|
use phpOMS\Message\Http\HttpRequest;
|
||||||
use phpOMS\Message\Http\HttpResponse;
|
use phpOMS\Message\Http\HttpResponse;
|
||||||
|
|
@ -80,7 +81,7 @@ final class ApiController extends Controller
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($request->getData('download') !== null) {
|
if (\in_array($request->getData('type'), ['xlsx', 'pdf', 'docx', 'pptx', 'csv'])) {
|
||||||
// is allowed to export
|
// is allowed to export
|
||||||
if (!$this->app->accountManager->get($accountId)->hasPermission(
|
if (!$this->app->accountManager->get($accountId)->hasPermission(
|
||||||
PermissionType::READ, $this->app->orgId, $this->app->appName, self::MODULE_NAME, PermissionState::EXPORT
|
PermissionType::READ, $this->app->orgId, $this->app->appName, self::MODULE_NAME, PermissionState::EXPORT
|
||||||
|
|
@ -90,6 +91,7 @@ final class ApiController extends Controller
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Autoloader::addPath(__DIR__ . '/../../../Resources/');
|
||||||
$response->getHeader()->setDownloadable($template->getName(), (string) $request->getData('type'));
|
$response->getHeader()->setDownloadable($template->getName(), (string) $request->getData('type'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -118,11 +120,26 @@ final class ApiController extends Controller
|
||||||
{
|
{
|
||||||
switch ($request->getData('type')) {
|
switch ($request->getData('type')) {
|
||||||
case 'pdf':
|
case 'pdf':
|
||||||
|
$response->getHeader()->set(
|
||||||
|
'Content-disposition', 'attachment; filename="'
|
||||||
|
. $name . '.'
|
||||||
|
. ((string) $request->getData('type'))
|
||||||
|
. '"'
|
||||||
|
, true);
|
||||||
$response->getHeader()->set('Content-Type', MimeType::M_PDF, true);
|
$response->getHeader()->set('Content-Type', MimeType::M_PDF, true);
|
||||||
|
$view->setTemplate('/' . \substr($view->getData('tcoll')['pdf']->getPath(), 0, -8), 'pdf.php');
|
||||||
break;
|
break;
|
||||||
case 'csv':
|
case 'csv':
|
||||||
|
$response->getHeader()->set(
|
||||||
|
'Content-disposition', 'attachment; filename="'
|
||||||
|
. $name . '.'
|
||||||
|
. ((string) $request->getData('type'))
|
||||||
|
. '"'
|
||||||
|
, true);
|
||||||
$response->getHeader()->set('Content-Type', MimeType::M_CONF, true);
|
$response->getHeader()->set('Content-Type', MimeType::M_CONF, true);
|
||||||
|
$view->setTemplate('/' . \substr($view->getData('tcoll')['csv']->getPath(), 0, -8), 'csv.php');
|
||||||
break;
|
break;
|
||||||
|
case 'xls':
|
||||||
case 'xlsx':
|
case 'xlsx':
|
||||||
$response->getHeader()->set(
|
$response->getHeader()->set(
|
||||||
'Content-disposition', 'attachment; filename="'
|
'Content-disposition', 'attachment; filename="'
|
||||||
|
|
@ -131,9 +148,33 @@ final class ApiController extends Controller
|
||||||
. '"'
|
. '"'
|
||||||
, true);
|
, true);
|
||||||
$response->getHeader()->set('Content-Type', MimeType::M_XLSX, true);
|
$response->getHeader()->set('Content-Type', MimeType::M_XLSX, true);
|
||||||
|
$view->setTemplate('/' . \substr($view->getData('tcoll')['excel']->getPath(), 0, -8), 'xls.php');
|
||||||
|
break;
|
||||||
|
case 'doc':
|
||||||
|
case 'docx':
|
||||||
|
$response->getHeader()->set(
|
||||||
|
'Content-disposition', 'attachment; filename="'
|
||||||
|
. $name . '.'
|
||||||
|
. ((string) $request->getData('type'))
|
||||||
|
. '"'
|
||||||
|
, true);
|
||||||
|
$response->getHeader()->set('Content-Type', MimeType::M_XLSX, true);
|
||||||
|
$view->setTemplate('/' . \substr($view->getData('tcoll')['word']->getPath(), 0, -8), 'doc.php');
|
||||||
|
break;
|
||||||
|
case 'ppt':
|
||||||
|
case 'pptx':
|
||||||
|
$response->getHeader()->set(
|
||||||
|
'Content-disposition', 'attachment; filename="'
|
||||||
|
. $name . '.'
|
||||||
|
. ((string) $request->getData('type'))
|
||||||
|
. '"'
|
||||||
|
, true);
|
||||||
|
$response->getHeader()->set('Content-Type', MimeType::M_XLSX, true);
|
||||||
|
$view->setTemplate('/' . \substr($view->getData('tcoll')['powerpoint']->getPath(), 0, -8), 'ppt.php');
|
||||||
break;
|
break;
|
||||||
case 'json':
|
case 'json':
|
||||||
$response->getHeader()->set('Content-Type', MimeType::M_JSON, true);
|
$response->getHeader()->set('Content-Type', MimeType::M_JSON, true);
|
||||||
|
$view->setTemplate('/' . \substr($view->getData('tcoll')['json']->getPath(), 0, -9), 'json.php');
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
$response->getHeader()->set('Content-Type', 'text/html; charset=utf-8');
|
$response->getHeader()->set('Content-Type', 'text/html; charset=utf-8');
|
||||||
|
|
@ -171,24 +212,24 @@ final class ApiController extends Controller
|
||||||
break;
|
break;
|
||||||
case StringUtils::endsWith($lowerPath, '.xlsx.php'):
|
case StringUtils::endsWith($lowerPath, '.xlsx.php'):
|
||||||
case StringUtils::endsWith($lowerPath, '.xls.php'):
|
case StringUtils::endsWith($lowerPath, '.xls.php'):
|
||||||
$tcoll['excel'][$tMedia->getName()] = $tMedia;
|
$tcoll['excel'] = $tMedia;
|
||||||
break;
|
break;
|
||||||
case StringUtils::endsWith($lowerPath, '.docx.php'):
|
case StringUtils::endsWith($lowerPath, '.docx.php'):
|
||||||
case StringUtils::endsWith($lowerPath, '.doc.php'):
|
case StringUtils::endsWith($lowerPath, '.doc.php'):
|
||||||
$tcoll['word'][$tMedia->getName()] = $tMedia;
|
$tcoll['word'] = $tMedia;
|
||||||
break;
|
break;
|
||||||
case StringUtils::endsWith($lowerPath, '.pptx.php'):
|
case StringUtils::endsWith($lowerPath, '.pptx.php'):
|
||||||
case StringUtils::endsWith($lowerPath, '.ppt.php'):
|
case StringUtils::endsWith($lowerPath, '.ppt.php'):
|
||||||
$tcoll['powerpoint'][$tMedia->getName()] = $tMedia;
|
$tcoll['powerpoint'] = $tMedia;
|
||||||
break;
|
break;
|
||||||
case StringUtils::endsWith($lowerPath, '.pdf.php'):
|
case StringUtils::endsWith($lowerPath, '.pdf.php'):
|
||||||
$tcoll['pdf'][$tMedia->getName()] = $tMedia;
|
$tcoll['pdf'] = $tMedia;
|
||||||
break;
|
break;
|
||||||
case StringUtils::endsWith($lowerPath, '.csv.php'):
|
case StringUtils::endsWith($lowerPath, '.csv.php'):
|
||||||
$tcoll['csv'][$tMedia->getName()] = $tMedia;
|
$tcoll['csv'] = $tMedia;
|
||||||
break;
|
break;
|
||||||
case StringUtils::endsWith($lowerPath, '.json.php'):
|
case StringUtils::endsWith($lowerPath, '.json.php'):
|
||||||
$tcoll['json'][$tMedia->getName()] = $tMedia;
|
$tcoll['json'] = $tMedia;
|
||||||
break;
|
break;
|
||||||
case StringUtils::endsWith($lowerPath, '.tpl.php'):
|
case StringUtils::endsWith($lowerPath, '.tpl.php'):
|
||||||
$tcoll['template'] = $tMedia;
|
$tcoll['template'] = $tMedia;
|
||||||
|
|
@ -342,6 +383,7 @@ final class ApiController extends Controller
|
||||||
$helperTemplate->setExpected(!empty($expected) ? \json_decode($expected, true) : []);
|
$helperTemplate->setExpected(!empty($expected) ? \json_decode($expected, true) : []);
|
||||||
$helperTemplate->setCreatedBy(new NullAccount($request->getHeader()->getAccount()));
|
$helperTemplate->setCreatedBy(new NullAccount($request->getHeader()->getAccount()));
|
||||||
$helperTemplate->setDatatype((int) ($request->getData('datatype') ?? TemplateDataType::OTHER));
|
$helperTemplate->setDatatype((int) ($request->getData('datatype') ?? TemplateDataType::OTHER));
|
||||||
|
$helperTemplate->setVirtualPath((string) ($request->getData('virtualpath') ?? '/'));
|
||||||
|
|
||||||
if (!empty($tags = $request->getDataJson('tags'))) {
|
if (!empty($tags = $request->getDataJson('tags'))) {
|
||||||
foreach ($tags as $tag) {
|
foreach ($tags as $tag) {
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,8 @@ use phpOMS\Message\RequestAbstract;
|
||||||
use phpOMS\Message\ResponseAbstract;
|
use phpOMS\Message\ResponseAbstract;
|
||||||
use phpOMS\Utils\StringUtils;
|
use phpOMS\Utils\StringUtils;
|
||||||
use phpOMS\Views\View;
|
use phpOMS\Views\View;
|
||||||
|
use Modules\Admin\Models\Account;
|
||||||
|
use Modules\Media\Models\Collection;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Helper controller class.
|
* Helper controller class.
|
||||||
|
|
@ -57,29 +59,15 @@ final class BackendController extends Controller
|
||||||
$view->setTemplate('/Modules/Helper/Theme/Backend/helper-list');
|
$view->setTemplate('/Modules/Helper/Theme/Backend/helper-list');
|
||||||
$view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1002701001, $request, $response));
|
$view->addData('nav', $this->app->moduleManager->get('Navigation')->createNavigationMid(1002701001, $request, $response));
|
||||||
|
|
||||||
$path = (string) ($request->getData('path') ?? '/');
|
$path = \str_replace('+', ' ', (string) ($request->getData('path') ?? '/'));
|
||||||
$collection = CollectionMapper::getByVirtualPath(\str_replace('+', ' ', $path));
|
$templates = TemplateMapper::withConditional('language', $response->getHeader()->getL11n()->getLanguage())::getByVirtualPath($path);
|
||||||
$parent = CollectionMapper::getParentCollection(\str_replace('+', ' ', $path));
|
|
||||||
|
|
||||||
|
list($collection, $parent) = CollectionMapper::getCollectionsByPath($path);
|
||||||
|
|
||||||
|
$view->addData('parent', $parent);
|
||||||
$view->addData('collections', $collection);
|
$view->addData('collections', $collection);
|
||||||
$view->addData('path', $path);
|
$view->addData('path', $path);
|
||||||
|
$view->addData('reports', $templates);
|
||||||
if ($request->getData('ptype') === 'p') {
|
|
||||||
$view->setData('reports',
|
|
||||||
TemplateMapper::withConditional('language', $response->getHeader()->getL11n()->getLanguage())
|
|
||||||
::getBeforePivot((int) ($request->getData('id') ?? 0), null, 25)
|
|
||||||
);
|
|
||||||
} elseif ($request->getData('ptype') === 'n') {
|
|
||||||
$view->setData('reports',
|
|
||||||
TemplateMapper::withConditional('language', $response->getHeader()->getL11n()->getLanguage())
|
|
||||||
::getAfterPivot((int) ($request->getData('id') ?? 0), null, 25)
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
$view->setData('reports',
|
|
||||||
TemplateMapper::withConditional('language', $response->getHeader()->getL11n()->getLanguage())
|
|
||||||
::getAfterPivot(0, null, 25)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $view;
|
return $view;
|
||||||
}
|
}
|
||||||
|
|
@ -156,7 +144,7 @@ final class BackendController extends Controller
|
||||||
//$file = preg_replace('([^\w\s\d\-_~,;:\.\[\]\(\).])', '', $template->getName());
|
//$file = preg_replace('([^\w\s\d\-_~,;:\.\[\]\(\).])', '', $template->getName());
|
||||||
|
|
||||||
/** @var Template $template */
|
/** @var Template $template */
|
||||||
$template = TemplateMapper::get((int) $request->getData('id'));
|
$template = TemplateMapper::withConditional('language', $response->getHeader()->getL11n()->getLanguage())::get((int) $request->getData('id'));
|
||||||
|
|
||||||
$view->setTemplate('/Modules/Helper/Theme/Backend/helper-single');
|
$view->setTemplate('/Modules/Helper/Theme/Backend/helper-single');
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user