[ Mini Kiebo ]
Server: Windows NT DESKTOP-5B8S0D4 6.2 build 9200 (Windows 8 Professional Edition) i586
Path:
D:
/
Backup
/
05122024
/
htdocs
/
jurnal-kesmas
/
lib
/
pkp
/
classes
/
controllers
/
grid
/
feature
/
[
Home
]
File: GridFeature.php
<?php /** * @file classes/controllers/grid/feature/GridFeature.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 GridFeature * * @ingroup controllers_grid_feature * * @brief Base grid feature class. A feature is a type of plugin specific * to the grid widgets. It provides several hooks to allow injection of * additional grid functionality. This class implements template methods * to be extended by subclasses. * */ namespace PKP\controllers\grid\feature; use PKP\controllers\grid\GridHandler; use PKP\core\PKPRequest; class GridFeature { /** @var string */ public $_id; /** @var array */ public $_options; /** * Constructor. * * @param string $id Feature id. */ public function __construct($id) { $this->setId($id); } // // Getters and setters. // /** * Get feature id. * * @return string */ public function getId() { return $this->_id; } /** * Set feature id. * * @param string $id */ public function setId($id) { $this->_id = $id; } /** * Get feature js class options. * * @return array */ public function getOptions() { return $this->_options; } /** * Add feature js class options. * * @param array $options $optionId => $optionValue */ public function addOptions($options) { assert(is_array($options)); $this->_options = array_merge((array) $this->getOptions(), $options); } // // Protected methods to be used or extended by subclasses. // /** * Set feature js class options. Extend this method to * define more feature js class options. * * @param PKPRequest $request * @param GridHandler $grid */ public function setOptions($request, $grid) { $renderedElements = $this->fetchUIElements($request, $grid); if ($renderedElements) { foreach ($renderedElements as $id => $markup) { $this->addOptions([$id => $markup]); } } } /** * Fetch any user interface elements that * this feature needs to add its functionality * into the grid. Use this only for ui elements * that grid will not fetch itself. * * @param PKPRequest $request * @param GridHandler $grid The grid that this * feature is attached to. * * @return array It is expected that the array * returns data in this format: * $elementId => $elementMarkup */ public function fetchUIElements($request, $grid) { return []; } /** * Return the java script feature class. * * @return string|null */ public function getJSClass() { return null; } // // Public hooks to be implemented in subclasses. // /** * Hook called every time grid request args are * required. Note that if the specific grid implementation * extends the getRequestArgs method, this hook will only * be called if the extending method call its parent. * * @param array $args * 'grid' => GridHandler * 'requestArgs' => array */ public function getRequestArgs($args) { return null; } /** * Hook called every time the grid range info is * retrieved. * * @param array $args * 'request' => PKPRequest * 'grid' => GridHandler * 'rangeInfo' => DBResultRange */ public function getGridRangeInfo($args) { return null; } /** * Hook called when grid data is retrieved. * * @param array $args * 'request' => PKPRequest * 'grid' => GridHandler * 'gridData' => mixed (array or ItemIterator) * 'filter' => array */ public function getGridDataElements($args) { return null; } /** * Hook called before grid data is setted. * * @param array $args * 'grid' => GridHandler * 'data' => mixed (array or ItemIterator) */ public function setGridDataElements($args) { return null; } /** * Hook called every time grid initialize a row object. * * @param array $args * 'grid' => GridHandler, * 'row' => GridRow */ public function getInitializedRowInstance($args) { return null; } /** * Hook called on grid category row initialization. * * @param array $args 'request' => PKPRequest * 'grid' => CategoryGridHandler * 'categoryId' => int * 'row' => GridCategoryRow */ public function getInitializedCategoryRowInstance($args) { return null; } /** * Hook called on grid's initialization. * * @param array $args Contains the grid handler referenced object * in 'grid' array index. */ public function gridInitialize($args) { return null; } /** * Hook called on grid's data loading. * * @param array $args * 'request' => PKPRequest, * 'grid' => GridHandler, * 'gridData' => array */ public function loadData($args) { return null; } /** * Hook called on grid fetching. * * @param array $args 'grid' => GridHandler */ public function fetchGrid($args) { $grid = & $args['grid']; $request = & $args['request']; $this->setOptions($request, $grid); } /** * Hook called after a group of rows is fetched. * * @param array $args * 'request' => PKPRequest * 'grid' => GridHandler * 'jsonMessage' => JSONMessage */ public function fetchRows($args) { return null; } /** * Hook called after a row is fetched. * * @param array $args * 'request' => PKPRequest * 'grid' => GridHandler * 'row' => mixed GridRow or null * 'jsonMessage' => JSONMessage */ public function fetchRow($args) { return null; } /** * Hook called when save grid items sequence * is requested. * * @param array $args 'request' => PKPRequest, * 'grid' => GridHandler */ public function saveSequence($args) { return null; } } if (!PKP_STRICT_MODE) { class_alias('\PKP\controllers\grid\feature\GridFeature', '\GridFeature'); }