Port columns_definitions/partitions to Twig

Signed-off-by: Maurício Meneghini Fauth <mauriciofauth@gmail.com>
This commit is contained in:
Maurício Meneghini Fauth 2017-10-17 22:55:24 -02:00
parent e270cbdc51
commit fa5c45444e
7 changed files with 221 additions and 174 deletions

View File

@ -16,6 +16,7 @@ use PhpMyAdmin\Twig\PluginsExtension;
use PhpMyAdmin\Twig\RelationExtension;
use PhpMyAdmin\Twig\SanitizeExtension;
use PhpMyAdmin\Twig\ServerPrivilegesExtension;
use PhpMyAdmin\Twig\StorageEngineExtension;
use PhpMyAdmin\Twig\UrlExtension;
use PhpMyAdmin\Twig\UtilExtension;
use Twig_Environment;
@ -74,6 +75,7 @@ class Template
$twig->addExtension(new RelationExtension());
$twig->addExtension(new SanitizeExtension());
$twig->addExtension(new ServerPrivilegesExtension());
$twig->addExtension(new StorageEngineExtension());
$twig->addExtension(new UrlExtension());
$twig->addExtension(new UtilExtension());
}

View File

@ -0,0 +1,35 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* hold PhpMyAdmin\Twig\StorageEngineExtension class
*
* @package PhpMyAdmin\Twig
*/
namespace PhpMyAdmin\Twig;
use Twig_Extension;
use Twig_SimpleFunction;
/**
* Class StorageEngineExtension
*
* @package PhpMyAdmin\Twig
*/
class StorageEngineExtension extends Twig_Extension
{
/**
* Returns a list of functions to add to the existing list.
*
* @return Twig_SimpleFunction[]
*/
public function getFunctions()
{
return array(
new Twig_SimpleFunction(
'StorageEngine_getHtmlSelect',
'PhpMyAdmin\StorageEngine::getHtmlSelect',
array('is_safe' => array('html'))
),
);
}
}

View File

@ -13,6 +13,7 @@ use PhpMyAdmin\Twig\PluginsExtension;
use PhpMyAdmin\Twig\RelationExtension;
use PhpMyAdmin\Twig\SanitizeExtension;
use PhpMyAdmin\Twig\ServerPrivilegesExtension;
use PhpMyAdmin\Twig\StorageEngineExtension;
use PhpMyAdmin\Twig\UrlExtension;
use PhpMyAdmin\Twig\UtilExtension;
@ -34,6 +35,7 @@ $twig->addExtension(new PluginsExtension());
$twig->addExtension(new RelationExtension());
$twig->addExtension(new SanitizeExtension());
$twig->addExtension(new ServerPrivilegesExtension());
$twig->addExtension(new StorageEngineExtension());
$twig->addExtension(new UrlExtension());
$twig->addExtension(new UtilExtension());

View File

@ -152,7 +152,7 @@ use PhpMyAdmin\Url;
<tr>
<td colspan="5">
<?= PhpMyAdmin\Template::get('columns_definitions/partitions')
->render(array('partitionDetails' => $partitionDetails)); ?>
->render(array('partition_details' => $partitionDetails)); ?>
</td>
</tr>
<?php endif; ?>

View File

@ -1,172 +0,0 @@
<?php
$partitionOptions = array('', 'HASH', 'LINEAR HASH', 'KEY', 'LINEAR KEY', 'RANGE', 'RANGE COLUMNS', 'LIST', 'LIST COLUMNS');
$subPartitionOptions = array('', 'HASH', 'LINEAR HASH', 'KEY', 'LINEAR KEY');
$valueTypeOptions = array('', 'LESS THAN', 'LESS THAN MAXVALUE', 'IN');
?>
<table id="partition_table">
<tr class="vmiddle">
<td><label for="partition_by"><?= __('Partition by:'); ?></label></td>
<td>
<select name="partition_by" id="partition_by">
<?php foreach ($partitionOptions as $option): ?>
<option value="<?= $option?>"
<?php if ($partitionDetails['partition_by'] == $option): ?>
selected="selected"
<?php endif; ?>
>
<?= $option; ?>
</option>
<?php endforeach; ?>
</select>
</td>
<td>(
<input name="partition_expr" type="text"
placeholder="<?= __('Expression or column list'); ?>"
value="<?= htmlspecialchars($partitionDetails['partition_expr']); ?>"/>
)</td>
</tr>
<tr class="vmiddle">
<td><label for="partition_count"><?= __('Partitions:'); ?></label></td>
<td colspan="2">
<input name="partition_count" type="number" min="2"
value="<?= htmlspecialchars($partitionDetails['partition_count']); ?>" />
</td>
</tr>
<?php if ($partitionDetails['can_have_subpartitions']): ?>
<tr class="vmiddle">
<td><label for="subpartition_by"><?= __('Subpartition by:'); ?></label></td>
<td>
<select name="subpartition_by" id="subpartition_by">
<?php foreach ($subPartitionOptions as $option): ?>
<option value="<?= $option?>"
<?php if ($partitionDetails['subpartition_by'] == $option): ?>
selected="selected"
<?php endif; ?>
>
<?= $option; ?>
</option>
<?php endforeach; ?>
</select>
</td>
<td>(
<input name="subpartition_expr" type="text"
placeholder="<?= __('Expression or column list'); ?>"
value="<?= htmlspecialchars($partitionDetails['subpartition_expr']); ?>"/>
)</td>
</tr>
<tr class="vmiddle">
<td><label for="subpartition_count"><?= __('Subpartitions:'); ?></label></td>
<td colspan="2">
<input name="subpartition_count" type="number" min="2"
value="<?= htmlspecialchars($partitionDetails['subpartition_count']); ?>" />
</td>
</tr>
<?php endif; ?>
</table>
<br />
<?php if ($partitionDetails['partition_count'] > 1): ?>
<table id="partition_definition_table">
<thead><tr>
<th><?= __('Partition'); ?></th>
<?php if ($partitionDetails['value_enabled']): ?>
<th><?= __('Values'); ?></th>
<?php endif; ?>
<?php if ($partitionDetails['can_have_subpartitions'] && $partitionDetails['subpartition_count'] > 1): ?>
<th><?= __('Subpartition'); ?></th>
<?php endif; ?>
<th><?= __('Engine'); ?></th>
<th><?= __('Comment'); ?></th>
<th><?= __('Data directory'); ?></th>
<th><?= __('Index directory'); ?></th>
<th><?= __('Max rows'); ?></th>
<th><?= __('Min rows'); ?></th>
<th><?= __('Table space'); ?></th>
<th><?= __('Node group'); ?></th>
</tr></thead>
<?php foreach ($partitionDetails['partitions'] as $partition): ?>
<?php $rowspan = ! empty($partition['subpartition_count']) ? ($partition['subpartition_count'] + 1) : 2; ?>
<tr>
<td rowspan="<?= $rowspan; ?>">
<input type="text" name="<?= $partition['prefix']; ?>[name]"
value="<?= htmlspecialchars($partition['name']); ?>" />
</td>
<?php if ($partitionDetails['value_enabled']): ?>
<td rowspan="<?= $rowspan; ?>" class="vmiddle">
<select class="partition_value"
name="<?= $partition['prefix']; ?>[value_type]">
<?php foreach ($valueTypeOptions as $option): ?>
<option value="<?= $option?>"
<?php if ($partition['value_type'] == $option): ?>
selected="selected"
<?php endif; ?>
>
<?= $option; ?>
</option>
<?php endforeach; ?>
</select>
<input type="text" class="partition_value"
name="<?= $partition['prefix']; ?>[value]"
value="<?= $partition['value']; ?>" />
</td>
<?php endif; ?>
</tr>
<?php
if (isset($partition['subpartitions'])):
$subpartitions = $partition['subpartitions'];
else:
$subpartitions = array($partition);
endif;
?>
<?php foreach ($subpartitions as $subpartition): ?>
<tr>
<?php if ($partitionDetails['can_have_subpartitions'] && $partitionDetails['subpartition_count'] > 1): ?>
<td>
<input type="text" name="<?= $subpartition['prefix']; ?>[name]"
value="<?= htmlspecialchars($subpartition['name']); ?>" />
</td>
<?php endif; ?>
<td>
<?= PhpMyAdmin\StorageEngine::getHtmlSelect(
$subpartition['prefix'] . '[engine]',
null,
$subpartition['engine'],
false,
true
); ?>
</td>
<td>
<?php //Please keep this at one line to avoid extra spaces in textarea value. ?>
<textarea name="<?= $subpartition['prefix']; ?>[comment]"><?= htmlspecialchars($subpartition['comment']); ?></textarea>
</td>
<td>
<input type="text" name="<?= $subpartition['prefix']; ?>[data_directory]"
value="<?= htmlspecialchars($subpartition['data_directory']); ?>" />
</td>
<td>
<input type="text" name="<?= $subpartition['prefix']; ?>[index_directory]"
value="<?= htmlspecialchars($subpartition['index_directory']); ?>" />
</td>
<td>
<input type="number" name="<?= $subpartition['prefix']; ?>[max_rows]"
value="<?= htmlspecialchars($subpartition['max_rows']); ?>" />
</td>
<td>
<input type="number" min="0" name="<?= $subpartition['prefix']; ?>[min_rows]"
value="<?= htmlspecialchars($subpartition['min_rows']); ?>" />
</td>
<td>
<input type="text" min="0" name="<?= $subpartition['prefix']; ?>[tablespace]"
value="<?= htmlspecialchars($subpartition['tablespace']); ?>" />
</td>
<td>
<input type="text" name="<?= $subpartition['prefix']; ?>[node_group]"
value="<?= htmlspecialchars($subpartition['node_group']); ?>" />
</td>
</tr>
<?php endforeach; ?>
<?php endforeach; ?>
</table>
<?php endif; ?>

View File

@ -0,0 +1,180 @@
{% set partition_options = [
'',
'HASH',
'LINEAR HASH',
'KEY',
'LINEAR KEY',
'RANGE',
'RANGE COLUMNS',
'LIST',
'LIST COLUMNS'
] %}
{% set sub_partition_options = ['', 'HASH', 'LINEAR HASH', 'KEY', 'LINEAR KEY'] %}
{% set value_type_options = ['', 'LESS THAN', 'LESS THAN MAXVALUE', 'IN'] %}
<table id="partition_table">
<tr class="vmiddle">
<td><label for="partition_by">{% trans 'Partition by:' %}</label></td>
<td>
<select name="partition_by" id="partition_by">
{% for option in partition_options %}
<option value="{{ option }}"
{%- if partition_details['partition_by'] == option %}
selected="selected"
{%- endif %}>
{{ option }}
</option>
{% endfor %}
</select>
</td>
<td>
(<input name="partition_expr" type="text"
placeholder="{% trans 'Expression or column list' %}"
value="{{ partition_details['partition_expr'] }}" />)
</td>
</tr>
<tr class="vmiddle">
<td><label for="partition_count">{% trans 'Partitions:' %}</label></td>
<td colspan="2">
<input name="partition_count" type="number" min="2"
value="{{ partition_details['partition_count'] }}" />
</td>
</tr>
{% if partition_details['can_have_subpartitions'] %}
<tr class="vmiddle">
<td><label for="subpartition_by">{% trans 'Subpartition by:' %}</label></td>
<td>
<select name="subpartition_by" id="subpartition_by">
{% for option in sub_partition_options %}
<option value="<?= $option?>"
{%- if partition_details['subpartition_by'] == option %}
selected="selected"
{%- endif %}>
{{ option }}
</option>
{% endfor %}
</select>
</td>
<td>
(<input name="subpartition_expr" type="text"
placeholder="{% trans 'Expression or column list' %}"
value="{{ partition_details['subpartition_expr'] }}" />)
</td>
</tr>
<tr class="vmiddle">
<td><label for="subpartition_count">{% trans 'Subpartitions:' %}</label></td>
<td colspan="2">
<input name="subpartition_count" type="number" min="2"
value="{{ partition_details['subpartition_count'] }}" />
</td>
</tr>
{% endif %}
</table>
{% if partition_details['partition_count'] > 1 %}
<table id="partition_definition_table">
<thead><tr>
<th>{% trans 'Partition' %}</th>
{% if partition_details['value_enabled'] %}
<th>{% trans 'Values' %}</th>
{% endif %}
{% if partition_details['can_have_subpartitions']
and partition_details['subpartition_count'] > 1 %}
<th>{% trans 'Subpartition' %}</th>
{% endif %}
<th>{% trans 'Engine' %}</th>
<th>{% trans 'Comment' %}</th>
<th>{% trans 'Data directory' %}</th>
<th>{% trans 'Index directory' %}</th>
<th>{% trans 'Max rows' %}</th>
<th>{% trans 'Min rows' %}</th>
<th>{% trans 'Table space' %}</th>
<th>{% trans 'Node group' %}</th>
</tr></thead>
{% for partition in partition_details['partitions'] %}
{% set rowspan = partition['subpartition_count'] is not empty
? partition['subpartition_count'] + 1 : 2 %}
<tr>
<td rowspan="{{ rowspan }}">
<input type="text" name="{{ partition['prefix'] }}[name]"
value="{{ partition['name'] }}" />
</td>
{% if partition_details['value_enabled'] %}
<td rowspan="{{ rowspan }}" class="vmiddle">
<select class="partition_value"
name="{{ partition['prefix'] }}[value_type]">
{% for option in value_type_options %}
<option value="{{ option }}"
{%- if partition['value_type'] == option %}
selected="selected"
{%- endif %}>
{{ option }}
</option>
{% endfor %}
</select>
<input type="text" class="partition_value"
name="{{ partition['prefix'] }}[value]"
value="{{ partition['value'] }}" />
</td>
{% endif %}
</tr>
{% if partition['subpartitions'] is defined %}
{% set subpartitions = partition['subpartitions'] %}
{% else %}
{% set subpartitions = [partition] %}
{% endif %}
{% for subpartition in subpartitions %}
<tr>
{% if partition_details['can_have_subpartitions']
and partition_details['subpartition_count'] > 1 %}
<td>
<input type="text" name="{{ subpartition['prefix'] }}[name]"
value="{{ subpartition['name'] }}" />
</td>
{% endif %}
<td>
{{ StorageEngine_getHtmlSelect(
subpartition['prefix'] ~ '[engine]',
null,
subpartition['engine'],
false,
true
) }}
</td>
<td>
{% spaceless %}
<textarea name="{{ subpartition['prefix'] }}[comment]">
{{ subpartition['comment'] }}
</textarea>
{% endspaceless %}
</td>
<td>
<input type="text" name="{{ subpartition['prefix'] }}[data_directory]"
value="{{ subpartition['data_directory'] }}" />
</td>
<td>
<input type="text" name="{{ subpartition['prefix'] }}[index_directory]"
value="{{ subpartition['index_directory'] }}" />
</td>
<td>
<input type="number" name="{{ subpartition['prefix'] }}[max_rows]"
value="{{ subpartition['max_rows'] }}" />
</td>
<td>
<input type="number" min="0" name="{{ subpartition['prefix'] }}[min_rows]"
value="{{ subpartition['min_rows'] }}" />
</td>
<td>
<input type="text" min="0" name="{{ subpartition['prefix'] }}[tablespace]"
value="{{ subpartition['tablespace'] }}" />
</td>
<td>
<input type="text" name="{{ subpartition['prefix'] }}[node_group]"
value="{{ subpartition['node_group'] }}" />
</td>
</tr>
{% endfor %}
{% endfor %}
</table>
{% endif %}

View File

@ -5,7 +5,7 @@
<fieldset>
<legend><?= __('Edit partitioning'); ?></legend>
<?= PhpMyAdmin\Template::get('columns_definitions/partitions')
->render(array('partitionDetails' => $partitionDetails)); ?>
->render(array('partition_details' => $partitionDetails)); ?>
</fieldset>
<fieldset class="tblFooters">
<input type="submit" name="save_partitioning" value="<?= __('Save'); ?>">