Redmine/templates/project_linked.html.twig
Gemini 92d1ac044a feat: vínculo Entidade -> Projeto Redmine (clientes de suporte recorrente)
- nova aba Redmine em Administração > Entidades (PluginRedmineEntity)
- tabela glpi_plugin_redmine_entities (1:1 entidade -> projeto Redmine, + categoria)
- hook resolve o projeto Redmine por: projeto vinculado OU, na ausência,
  a entidade do chamado (match exato, sem herança de árvore)
- twigs do tab generalizados (owner_field/owner_id) p/ reuso projeto+entidade

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-29 22:00:36 -03:00

38 lines
1.7 KiB
Twig

{% import 'components/form/fields_macros.html.twig' as fields %}
<div class="alert alert-success mt-3 d-flex align-items-center">
<i class="ti ti-link me-2"></i>
{{ __('Projeto vinculado à issue Redmine de ID', 'redmine') }} <strong class="ms-1">#{{ redmine_project_id }}</strong>
</div>
<form method="post" action="{{ action_url }}" class="mt-2">
<input type="hidden" name="_glpi_csrf_token" value="{{ csrf_token_value }}">
<input type="hidden" name="{{ owner_field }}" value="{{ owner_id }}">
<input type="hidden" name="action" value="set_category">
<div class="card">
<div class="card-header">
<h5 class="mb-0"><i class="ti ti-category me-1"></i>{{ __('Categoria padrão das tarefas deste projeto', 'redmine') }}</h5>
</div>
<div class="card-body">
{% if cat_options is empty %}
<div class="alert alert-secondary mb-0">
{{ __('Este projeto Redmine não possui categorias cadastradas.', 'redmine') }}
</div>
{% else %}
<div class="row">
{{ fields.dropdownArrayField('default_category_id', default_category_id, cat_options, __('Categoria padrão', 'redmine'), {
'display_emptychoice': true
}) }}
</div>
{% endif %}
</div>
{% if cat_options is not empty %}
<div class="card-footer text-end">
<button type="submit" class="btn btn-primary">
<i class="ti ti-device-floppy me-1"></i>{{ _x('button', 'Save') }}
</button>
</div>
{% endif %}
</div>
</form>