first commit
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @file controllers/listbuilder/settings/SetupListbuilderHandler.php
|
||||
*
|
||||
* Copyright (c) 2014-2021 Simon Fraser University
|
||||
* Copyright (c) 2003-2021 John Willinsky
|
||||
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
|
||||
*
|
||||
* @class SetupListbuilderHandler
|
||||
*
|
||||
* @ingroup listbuilder
|
||||
*
|
||||
* @brief Base class for setup listbuilders
|
||||
*/
|
||||
|
||||
namespace PKP\controllers\listbuilder\settings;
|
||||
|
||||
use PKP\context\Context;
|
||||
use PKP\controllers\listbuilder\ListbuilderHandler;
|
||||
use PKP\security\authorization\ContextAccessPolicy;
|
||||
use PKP\security\Role;
|
||||
|
||||
class SetupListbuilderHandler extends ListbuilderHandler
|
||||
{
|
||||
/** @var Context */
|
||||
public $_context;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->addRoleAssignment(
|
||||
[Role::ROLE_ID_MANAGER, Role::ROLE_ID_SITE_ADMIN],
|
||||
['fetch', 'fetchRow', 'save']
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the current context
|
||||
*
|
||||
* @param Context $context
|
||||
*/
|
||||
public function setContext($context)
|
||||
{
|
||||
$this->_context = $context;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the current context
|
||||
*
|
||||
* @return Context
|
||||
*/
|
||||
public function getContext()
|
||||
{
|
||||
return $this->_context;
|
||||
}
|
||||
|
||||
/**
|
||||
* @copydoc PKPHandler::authorize()
|
||||
*/
|
||||
public function authorize($request, &$args, $roleAssignments)
|
||||
{
|
||||
$this->addPolicy(new ContextAccessPolicy($request, $roleAssignments));
|
||||
return parent::authorize($request, $args, $roleAssignments);
|
||||
}
|
||||
|
||||
/**
|
||||
* @copydoc ListbuilderHandler::initialize()
|
||||
*
|
||||
* @param null|mixed $args
|
||||
*/
|
||||
public function initialize($request, $args = null)
|
||||
{
|
||||
$this->setContext($request->getContext());
|
||||
return parent::initialize($request, $args);
|
||||
}
|
||||
}
|
||||
+39
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
/**
|
||||
* @file controllers/listbuilder/settings/reviewForms/ReviewFormElementResponseItemListbuilderGridCellProvider.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 ReviewFormElementResponseItemListbuilderGridCellProvider
|
||||
*
|
||||
* @ingroup controllers_listbuilder_settings_reviewForms
|
||||
*
|
||||
* @brief Review form element response item listbuilder grid handler.
|
||||
*/
|
||||
|
||||
namespace PKP\controllers\listbuilder\settings\reviewForms;
|
||||
|
||||
use PKP\controllers\grid\GridCellProvider;
|
||||
|
||||
class ReviewFormElementResponseItemListbuilderGridCellProvider extends GridCellProvider
|
||||
{
|
||||
//
|
||||
// Template methods from GridCellProvider
|
||||
//
|
||||
/**
|
||||
* @see GridCellProvider::getTemplateVarsFromRowColumn()
|
||||
*/
|
||||
public function getTemplateVarsFromRowColumn($row, $column)
|
||||
{
|
||||
switch ($column->getId()) {
|
||||
case 'possibleResponse':
|
||||
$possibleResponse = $row->getData();
|
||||
$contentColumn = $possibleResponse[0];
|
||||
$content = $contentColumn['content'];
|
||||
return ['label' => $content];
|
||||
}
|
||||
assert(false);
|
||||
}
|
||||
}
|
||||
+108
@@ -0,0 +1,108 @@
|
||||
<?php
|
||||
/**
|
||||
* @file controllers/listbuilder/settings/reviewForms/ReviewFormElementResponseItemListbuilderHandler.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 ReviewFormElementResponseItemListbuilderHandler
|
||||
*
|
||||
* @ingroup controllers_listbuilder_settings_reviewForms
|
||||
*
|
||||
* @brief Review form element response item listbuilder handler
|
||||
*/
|
||||
|
||||
namespace PKP\controllers\listbuilder\settings\reviewForms;
|
||||
|
||||
use APP\template\TemplateManager;
|
||||
use PKP\controllers\listbuilder\ListbuilderHandler;
|
||||
use PKP\controllers\listbuilder\MultilingualListbuilderGridColumn;
|
||||
use PKP\controllers\listbuilder\settings\SetupListbuilderHandler;
|
||||
use PKP\db\DAORegistry;
|
||||
use PKP\reviewForm\ReviewFormElementDAO;
|
||||
|
||||
class ReviewFormElementResponseItemListbuilderHandler extends SetupListbuilderHandler
|
||||
{
|
||||
/** @var int Review form element ID */
|
||||
public $_reviewFormElementId;
|
||||
|
||||
|
||||
//
|
||||
// Overridden template methods
|
||||
//
|
||||
/**
|
||||
* @copydoc SetupListbuilderHandler::initialize()
|
||||
*
|
||||
* @param null|mixed $args
|
||||
*/
|
||||
public function initialize($request, $args = null)
|
||||
{
|
||||
parent::initialize($request, $args);
|
||||
$this->_reviewFormElementId = (int) $request->getUserVar('reviewFormElementId');
|
||||
|
||||
// Basic configuration
|
||||
$this->setTitle('grid.reviewFormElement.responseItems');
|
||||
$this->setSourceType(ListbuilderHandler::LISTBUILDER_SOURCE_TYPE_TEXT);
|
||||
$this->setSaveType(ListbuilderHandler::LISTBUILDER_SAVE_TYPE_EXTERNAL);
|
||||
$this->setSaveFieldName('possibleResponses');
|
||||
|
||||
// Possible response column
|
||||
$responseColumn = new MultilingualListbuilderGridColumn($this, 'possibleResponse', 'manager.reviewFormElements.possibleResponse', null, null, null, null, ['tabIndex' => 1]);
|
||||
$responseColumn->setCellProvider(new ReviewFormElementResponseItemListbuilderGridCellProvider());
|
||||
$this->addColumn($responseColumn);
|
||||
}
|
||||
|
||||
/**
|
||||
* @copydoc GridHandler::loadData()
|
||||
*
|
||||
* @param null|mixed $filter
|
||||
*/
|
||||
protected function loadData($request, $filter = null)
|
||||
{
|
||||
$reviewFormElementDao = DAORegistry::getDAO('ReviewFormElementDAO'); /** @var ReviewFormElementDAO $reviewFormElementDao */
|
||||
$reviewFormElement = $reviewFormElementDao->getById($this->_reviewFormElementId);
|
||||
$formattedResponses = [];
|
||||
if ($reviewFormElement) {
|
||||
$possibleResponses = $reviewFormElement->getPossibleResponses(null);
|
||||
foreach ((array) $possibleResponses as $locale => $values) {
|
||||
foreach ($values as $rowId => $value) {
|
||||
// WARNING: Listbuilders don't like 0 row IDs; offsetting
|
||||
// by 1. This is reversed in the saving code.
|
||||
$formattedResponses[$rowId + 1][0]['content'][$locale] = $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
return $formattedResponses;
|
||||
}
|
||||
|
||||
/**
|
||||
* @copydoc GridHandler::getRowDataElement
|
||||
*/
|
||||
protected function getRowDataElement($request, &$rowId)
|
||||
{
|
||||
// Fallback on the parent if an existing rowId is found
|
||||
if (!empty($rowId)) {
|
||||
return parent::getRowDataElement($request, $rowId);
|
||||
}
|
||||
|
||||
// If we're bouncing a row back upon a row edit
|
||||
$rowData = $this->getNewRowId($request);
|
||||
if ($rowData) {
|
||||
return [['content' => $rowData['possibleResponse']]];
|
||||
}
|
||||
|
||||
// If we're generating an empty row to edit
|
||||
return [['content' => []]];
|
||||
}
|
||||
|
||||
/**
|
||||
* @copydoc ListbuilderHandler::fetch()
|
||||
*/
|
||||
public function fetch($args, $request)
|
||||
{
|
||||
$templateMgr = TemplateManager::getManager($request);
|
||||
$templateMgr->assign('availableOptions', true);
|
||||
return $this->fetchGrid($args, $request);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @file controllers/listbuilder/users/UserListbuilderGridCellProvider.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 UserListbuilderGridCellProvider
|
||||
*
|
||||
* @ingroup controllers_grid
|
||||
*
|
||||
* @brief Base class for a cell provider that can retrieve labels from arrays
|
||||
*/
|
||||
|
||||
namespace PKP\controllers\listbuilder\users;
|
||||
|
||||
use PKP\controllers\grid\GridCellProvider;
|
||||
use PKP\controllers\grid\GridColumn;
|
||||
|
||||
class UserListbuilderGridCellProvider extends GridCellProvider
|
||||
{
|
||||
//
|
||||
// Template methods from GridCellProvider
|
||||
//
|
||||
/**
|
||||
* This implementation assumes a simple data element array that
|
||||
* has column ids as keys.
|
||||
*
|
||||
* @see GridCellProvider::getTemplateVarsFromRowColumn()
|
||||
*
|
||||
* @param \PKP\controllers\grid\GridRow $row
|
||||
* @param GridColumn $column
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getTemplateVarsFromRowColumn($row, $column)
|
||||
{
|
||||
$user = & $row->getData();
|
||||
$columnId = $column->getId();
|
||||
// Allow for either Users or Authors (both have a getFullName method).
|
||||
assert((is_a($user, 'User') || is_a($user, 'Author')) && !empty($columnId));
|
||||
|
||||
return ['labelKey' => $user->getId(), 'label' => $user->getFullName() . ' <' . $user->getEmail() . '>'];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user