Redmine/templates/project_form.html.twig
2026-07-02 11:18:27 -03:00

93 lines
4.4 KiB
Twig

{% import 'components/form/fields_macros.html.twig' as fields %}
<form action="{{ action_url }}" method="post" class="mt-4" data-ajax="false">
<input type="hidden" name="{{ owner_field }}" value="{{ owner_id }}">
<input type="hidden" name="_glpi_csrf_token" value="{{ csrf_token_value }}">
<input type="hidden" name="_glpi_simple_form" value="1">
{# project_options ({id: name}) é montado no PHP — não usar merge no Twig,
que renumera chaves inteiras e corrompe os valores das opções. #}
<div class="card shadow-sm">
<div class="card-header d-flex justify-content-between align-items-center">
<h5 class="mb-0"><i class="fas fa-sitemap"></i> Integração Redmine</h5>
<button type="submit" name="action" value="sync" class="btn btn-sm btn-outline-secondary">
<i class="fas fa-sync"></i> Sincronizar Metadados
</button>
</div>
<div class="card-body">
<div class="alert alert-info">
Selecione um projeto existente para vinculá-lo, <strong>ou</strong> deixe em <strong>-----</strong> e preencha o formulário para criar um novo projeto no Redmine.
</div>
<div class="row">
{{ fields.dropdownArrayField('redmine_project_id', '', project_options, __('Vincular a Projeto Existente', 'redmine'), {
'display_emptychoice': true,
'full_width': true
}) }}
{{ fields.textField('name', project_name, __('Nome', 'redmine'), {
'full_width': true,
'required': true
}) }}
{{ fields.textareaField('description', project_description, __('Descrição', 'redmine'), {
'full_width': true,
'rows': 5
}) }}
{{ fields.textField('identifier', project_identifier, __('Identificador', 'redmine'), {
'full_width': true,
'required': true,
'helper': __('Deve ter entre 1 e 100 caracteres minúsculos, números ou traços.', 'redmine')
}) }}
{{ fields.checkboxField('is_public', 0, __('Público', 'redmine'), {
'full_width': true,
'helper': __('Projetos públicos são visíveis para todos.', 'redmine')
}) }}
{{ fields.dropdownArrayField('parent_id', '', project_options, __('Subprojeto de', 'redmine'), {
'display_emptychoice': true,
'full_width': true
}) }}
{{ fields.dropdownArrayField('enabled_module_names', '', modules, __('Módulos', 'redmine'), {
'multiple': true,
'values': ['issue_tracking', 'time_tracking'],
'full_width': true
}) }}
{{ fields.dropdownArrayField('tracker_ids', '', tracker_options|default({}), __('Tipos de tarefa (Trackers)', 'redmine'), {
'multiple': true,
'values': default_tracker_ids|default([]),
'full_width': true,
'helper': __('Sem tracker habilitado o Redmine não permite criar tarefas no projeto.', 'redmine')
}) }}
{# Campos personalizados de projeto do Redmine (alguns são obrigatórios na criação) #}
{% for cf in custom_fields|default([]) %}
{% if cf.field_format == 'list' and cf.options is not empty %}
{{ fields.dropdownArrayField('custom_field_values[' ~ cf.id ~ ']', '', cf.options, cf.name, {
'display_emptychoice': true,
'full_width': true,
'required': cf.is_required
}) }}
{% else %}
{{ fields.textField('custom_field_values[' ~ cf.id ~ ']', '', cf.name, {
'full_width': true,
'required': cf.is_required
}) }}
{% endif %}
{% endfor %}
</div>
</div>
<div class="card-footer text-center">
<button type="submit" name="action" value="process" class="btn btn-primary px-5">
<i class="fas fa-save"></i> Criar ou Vincular
</button>
</div>
</div>
</form>