106 lines
2.9 KiB
PHP
106 lines
2.9 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @file controllers/grid/queries/QueryTitleGridColumn.php
|
|
*
|
|
* Copyright (c) 2014-2021 Simon Fraser University
|
|
* Copyright (c) 2000-2021 John Willinsky
|
|
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
|
|
*
|
|
* @class QueryTitleGridColumn
|
|
*
|
|
* @ingroup controllers_grid_queries
|
|
*
|
|
* @brief Implements a query tile column.
|
|
*/
|
|
|
|
namespace PKP\controllers\grid\queries;
|
|
|
|
use PKP\controllers\grid\ColumnBasedGridCellProvider;
|
|
use PKP\controllers\grid\GridColumn;
|
|
use PKP\controllers\grid\GridHandler;
|
|
use PKP\linkAction\LinkAction;
|
|
use PKP\linkAction\request\AjaxModal;
|
|
|
|
class QueryTitleGridColumn extends GridColumn
|
|
{
|
|
/** @var array Action args for link actions */
|
|
public $_actionArgs;
|
|
|
|
/**
|
|
* Constructor
|
|
*
|
|
* @param array $actionArgs Action args for link actions
|
|
*/
|
|
public function __construct($actionArgs)
|
|
{
|
|
$this->_actionArgs = $actionArgs;
|
|
|
|
$cellProvider = new ColumnBasedGridCellProvider();
|
|
|
|
parent::__construct(
|
|
'name',
|
|
'common.name',
|
|
null,
|
|
null,
|
|
$cellProvider,
|
|
['width' => 60, 'alignment' => GridColumn::COLUMN_ALIGNMENT_LEFT]
|
|
);
|
|
}
|
|
|
|
|
|
//
|
|
// Public methods
|
|
//
|
|
/**
|
|
* Method expected by ColumnBasedGridCellProvider
|
|
* to render a cell in this column.
|
|
*
|
|
* @copydoc ColumnBasedGridCellProvider::getTemplateVarsFromRowColumn()
|
|
*/
|
|
public function getTemplateVarsFromRow($row)
|
|
{
|
|
// We do not need any template variables because
|
|
// the only content of this column's cell will be
|
|
// an action. See QueryTitleGridColumn::getCellActions().
|
|
return ['label' => ''];
|
|
}
|
|
|
|
|
|
//
|
|
// Override methods from GridColumn
|
|
//
|
|
/**
|
|
* @copydoc GridColumn::getCellActions()
|
|
*/
|
|
public function getCellActions($request, $row, $position = GridHandler::GRID_ACTION_POSITION_DEFAULT)
|
|
{
|
|
// Retrieve the submission file.
|
|
$query = $row->getData();
|
|
$headNote = $query->getHeadNote();
|
|
|
|
// Create the cell action to download a file.
|
|
$router = $request->getRouter();
|
|
$actionArgs = array_merge(
|
|
$this->_actionArgs,
|
|
['queryId' => $query->getId()]
|
|
);
|
|
|
|
return array_merge(
|
|
parent::getCellActions($request, $row, $position),
|
|
[
|
|
new LinkAction(
|
|
'readQuery',
|
|
new AjaxModal(
|
|
$router->url($request, null, null, 'readQuery', null, $actionArgs),
|
|
$headNote ? htmlspecialchars($headNote->getTitle()) : '—',
|
|
'modal_edit'
|
|
),
|
|
($headNote && $headNote->getTitle() != '') ? htmlspecialchars($headNote->getTitle()) : '—',
|
|
null
|
|
)
|
|
]
|
|
);
|
|
}
|
|
}
|