96 lines
3.3 KiB
PHP
96 lines
3.3 KiB
PHP
|
<?php
|
||
|
|
||
|
/**
|
||
|
* This program is free software; you can redistribute it and/or
|
||
|
* modify it under the terms of the GNU General Public License
|
||
|
* as published by the Free Software Foundation; under version 2
|
||
|
* of the License (non-upgradable).
|
||
|
*
|
||
|
* This program is distributed in the hope that it will be useful,
|
||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
|
* GNU General Public License for more details.
|
||
|
*
|
||
|
* You should have received a copy of the GNU General Public License
|
||
|
* along with this program; if not, write to the Free Software
|
||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||
|
*
|
||
|
* Copyright (c) 2016 (original work) Open Assessment Technologies SA (under the project TAO-PRODUCT);
|
||
|
*
|
||
|
* @author Christophe Noël <christophe@taotesting.com>
|
||
|
*/
|
||
|
|
||
|
namespace oat\taoDeliveryRdf\helper;
|
||
|
|
||
|
use common_ext_ExtensionsManager;
|
||
|
use oat\oatbox\service\ServiceManager;
|
||
|
use oat\taoTests\models\runner\features\TestRunnerFeatureService;
|
||
|
use tao_helpers_form_FormElement;
|
||
|
use taoItems_models_classes_TemplateRenderer;
|
||
|
|
||
|
/**
|
||
|
* Allow the selection of the Test Runner Features wanted for a specific delivery
|
||
|
*/
|
||
|
class TestRunnerFeatureWidget extends tao_helpers_form_FormElement
|
||
|
{
|
||
|
public const WIDGET_ID = 'http://www.tao.lu/datatypes/WidgetDefinitions.rdf#DeliveryTestRunnerFeature';
|
||
|
|
||
|
private const WIDGET_TPL = 'views/templates/widgets/testRunnerFeature.tpl.php';
|
||
|
|
||
|
/**
|
||
|
* Data is stored as a coma-separated list of active test runner features ids
|
||
|
* ex: progressBar,accessibility,security
|
||
|
*/
|
||
|
public function feed()
|
||
|
{
|
||
|
$activeFeatures = [];
|
||
|
|
||
|
$expression = "/^" . preg_quote($this->name, "/") . "(.)*[0-9]+$/";
|
||
|
foreach ($_POST as $key => $value) {
|
||
|
if (preg_match($expression, $key)) {
|
||
|
$activeFeatures[] = $value;
|
||
|
}
|
||
|
}
|
||
|
$this->setValue(implode(',', $activeFeatures));
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Render the Widget to allow Test Runner Features selection
|
||
|
*
|
||
|
* @return string
|
||
|
*/
|
||
|
public function render()
|
||
|
{
|
||
|
$serviceManager = ServiceManager::getServiceManager();
|
||
|
$testRunnerFeatureService = $serviceManager->get(TestRunnerFeatureService::SERVICE_ID);
|
||
|
|
||
|
$allFeatures = $testRunnerFeatureService->getAll();
|
||
|
|
||
|
$activeFeatures = explode(',', $this->value);
|
||
|
|
||
|
$choicesList = [];
|
||
|
$i = 0;
|
||
|
|
||
|
if (count($allFeatures) > 0) {
|
||
|
foreach ($allFeatures as $feature) {
|
||
|
$choicesList[] = [
|
||
|
"title" => $feature->getDescription(),
|
||
|
"value" => $feature->getId(),
|
||
|
"id" => $this->name . "_" . $i,
|
||
|
"checked" => (in_array($feature->getId(), $activeFeatures)) ? ' checked="checked" ' : '',
|
||
|
"label" => _dh($feature->getLabel())
|
||
|
];
|
||
|
$i++;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
$tpl = common_ext_ExtensionsManager::singleton()->getExtensionById('taoDeliveryRdf')->getDir() . self::WIDGET_TPL ;
|
||
|
$templateRenderer = new taoItems_models_classes_TemplateRenderer($tpl, [
|
||
|
'propLabel' => _dh($this->getDescription()),
|
||
|
'choicesList' => $choicesList
|
||
|
]);
|
||
|
|
||
|
return $templateRenderer->render();
|
||
|
}
|
||
|
}
|