You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

92 lines
2.9 KiB

<?php
// (c) Copyright by authors of the Tiki Wiki CMS Groupware Project
//
// All Rights Reserved. See copyright.txt for details and a complete list of authors.
// Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See license.txt for details.
// $Id$
/**
* Render the inputs that will allow to customize a custom route
*
* @param $params
* @param $smarty
*/
function smarty_function_router_params($params, $smarty)
{
if (empty($params['name'])) {
return;
}
$className = 'Tiki\\CustomRoute\\Type\\' . $params['name'];
if (! class_exists($className)) {
return;
}
$routerParams = $params['params'];
$class = new $className();
$inputParams = $class->getParams();
$routerName = strtolower($class->getRouteType());
$html = '';
foreach ($inputParams as $key => $param) {
$escapedParam = smarty_modifier_escape($routerParams[$key]);
$inputKey = $routerName . '_' . $key;
switch ($param['type']) {
case 'text':
$input = '<input type="text" id="' . $inputKey . '" class="form-control" name="' . $inputKey . '" value="' . $escapedParam . '">';
break;
case 'select':
$input = '<select id="' . $inputKey . '" class="form-control" name="' . $inputKey . '">';
if (! empty($param['function'])) {
$args = [];
foreach ($param['args'] as $value) {
$args[] = smarty_modifier_escape($routerParams[$value]);
}
$objects = call_user_func_array([$className, $param['function']], $args);
$param['options'] = $objects;
}
if (! empty($param['options'])) {
foreach ($param['options'] as $optionKey => $optionValue) {
$selected = $optionKey == $params['params'][$key] ? 'selected' : '';
$input .= '<option value="' . $optionKey . '" ' . $selected . '>' . $optionValue . '</option>';
}
}
$input .= '</select>';
break;
}
$required = ! empty($param['required']) ? ' *' : '';
$infoHtml = '';
if (! empty($param['description'])) {
$description = smarty_modifier_escape($param['description']);
$icon = smarty_function_icon(['name' => 'information'], $smarty);
$infoHtml = <<<HTML
<a class="tikihelp text-info" title="{$param['name']}: {$description}">
{$icon}
</a>
HTML;
}
$html .= <<<HTML
<div class="form-group row" data-task-name="{$params['name']}" style="display:none">
<label class="col-sm-3 col-md-2 col-form-label" for="{$inputKey}">{$param['name']}{$required}</label>
<div class="col-sm-9 col-md-10">
{$input}
{$infoHtml}
</div>
</div>
HTML;
}
echo $html;
}