first commit

This commit is contained in:
CHIEFSOFT\ameye
2024-06-08 17:09:23 -04:00
commit df3a033196
17887 changed files with 8637778 additions and 0 deletions
@@ -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);
}
}
@@ -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);
}
}
@@ -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() . '>'];
}
}