mirror of
https://github.com/Combodo/iTop.git
synced 2026-04-29 21:48:45 +02:00
N°3123 - Refactor Directories
This commit is contained in:
@@ -0,0 +1,4 @@
|
||||
{% extends 'base/layouts/activity-panel/activity-entry/layout.html.twig' %}
|
||||
|
||||
{% block iboActivityEntryExtraClasses %}ibo-caselog-entry ibo-caselog-entry--entry-for-caselog-{{ oUIBlock.GetCaseLogRank() }}{% endblock %}
|
||||
{% block iboActivityEntryExtraDataAttributes %}data-entry-caselog-attribute-code="{{ oUIBlock.GetAttCode() }}"{% endblock %}
|
||||
@@ -0,0 +1,19 @@
|
||||
{% extends 'base/layouts/activity-panel/activity-entry/layout.html.twig' %}
|
||||
|
||||
{% block iboActivityEntryExtraClasses %}ibo-edits-entry{% endblock %}
|
||||
|
||||
{% block iboActivityEntryMainInformationContent %}
|
||||
{% if oUIBlock.GetAttributes()|length == 1 %}
|
||||
<span class="ibo-edits-entry--short-description">{{ oUIBlock.GetShortDescriptionAsHtml()|raw }}</span>
|
||||
{% else %}
|
||||
<a href="#" class="ibo-edits-entry--short-description" data-role="ibo-edits-entry--long-description-toggler">
|
||||
{{ oUIBlock.GetShortDescriptionAsHtml()|raw }}
|
||||
<span class="ibo-edits-entry--long-description-toggler-icon fa fa-caret-down"></span>
|
||||
</a>
|
||||
<ul class="ibo-edits-entry--long-description" data-role="ibo-edits-entry--long-description">
|
||||
{% for sAttCode, aAttData in oUIBlock.GetAttributes() %}
|
||||
<li class="ibo-edits-entry--attribute-description" data-attribute-code="{{ sAttCode }}">{{ aAttData.description|raw }}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
@@ -0,0 +1,40 @@
|
||||
<div class="ibo-activity-entry {% if oUIBlock.IsFromCurrentUser() %}ibo-is-current-user{% endif %} {% block iboActivityEntryExtraClasses %}{% endblock %}"
|
||||
data-role="ibo-activity-entry"
|
||||
data-entry-type="{% block iboActivityEntryType %}{{ oUIBlock.GetType() }}{% endblock %}"
|
||||
data-entry-datetime-raw="{{ oUIBlock.GetRawDateTime() }}"
|
||||
data-entry-author-login="{{ oUIBlock.GetAuthorLogin() }}"
|
||||
{% block iboActivityEntryExtraDataAttributes %}{% endblock %}>
|
||||
<div class="ibo-activity-entry--medallion {% if oUIBlock.GetAuthorPictureAbsUrl() is not empty %}ibo-has-image{% endif %}" data-role="ibo-activity-entry--medallion" data-tooltip-content="{{ oUIBlock.GetAuthorFriendlyname() }}">
|
||||
{% block iboActivityEntryMedallion %}
|
||||
{% if oUIBlock.GetAuthorPictureAbsUrl() is not empty %}
|
||||
<img class="ibo-activity-entry--author-picture" src="{{ oUIBlock.GetAuthorPictureAbsUrl() }}" alt="{{ oUIBlock.GetAuthorInitials() }}" />
|
||||
{% else %}
|
||||
<div class="ibo-activity-entry--author-initials">{{ oUIBlock.GetAuthorInitials() }}</div>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
</div>
|
||||
<div class="ibo-activity-entry--information" data-role="ibo-activity-entry--information">
|
||||
{% block iboActivityEntryInformation %}
|
||||
<div class="ibo-activity-entry--main-information" data-role="ibo-activity-entry--main-information">
|
||||
<div class="ibo-activity-entry--main-information-icon" data-role="ibo-activity-entry--main-information-icon">
|
||||
{% block iboActivityEntryMainInformationIcon %}
|
||||
{% if oUIBlock.GetDecorationClasses() is not empty %}
|
||||
<span class="{{ oUIBlock.GetDecorationClasses() }}"></span>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
</div>
|
||||
<div class="ibo-activity-entry--main-information-content" data-role="ibo-activity-entry--main-information-content">
|
||||
{% block iboActivityEntryMainInformationContent %}
|
||||
{# Content is printed as raw because it is stored as HTML in the database and should have been sanitized before storage, so we can assume it is safe #}
|
||||
{{ oUIBlock.GetContent()|raw }}
|
||||
{% endblock %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="ibo-activity-entry--sub-information" data-role="ibo-activity-entry--sub-information">
|
||||
{% block iboActivityEntrySubInformation %}
|
||||
<span class="ibo-activity-entry--datetime" data-role="ibo-activity-entry--datetime" data-tooltip-content="{{ oUIBlock.GetFormattedDateTime() }}">{{ oUIBlock.GetFormattedDateTime() }}</span>
|
||||
{% endblock %}
|
||||
</div>
|
||||
{% endblock %}
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,10 @@
|
||||
{% extends 'base/layouts/activity-panel/activity-entry/layout.html.twig' %}
|
||||
|
||||
{% block iboActivityEntryExtraClasses %}ibo-transition-entry{% endblock %}
|
||||
{% block iboActivityEntryExtraDataAttributes %}data-original-state-code="{{ oUIBlock.GetOriginalStateCode() }}" data-target-state-code="{{ oUIBlock.GetTargetStateCode() }}"{% endblock %}
|
||||
|
||||
{% block iboActivityEntryMainInformationContent %}
|
||||
{% set sOriginalStateLabelAsHtml = '<span class="ibo-transition-entry--original-state-label">' ~ oUIBlock.GetOriginalStateLabel() ~ '</span>' %}
|
||||
{% set sTargetStateLabelAsHtml = '<span class="ibo-transition-entry--target-state-label">' ~ oUIBlock.GetTargetStateLabel() ~ '</span>' %}
|
||||
{{ 'Change:State_Changed_NewValue_OldValue'|dict_format(sTargetStateLabelAsHtml, sOriginalStateLabelAsHtml)|raw }}
|
||||
{% endblock %}
|
||||
@@ -0,0 +1,23 @@
|
||||
<form id="{{ oUIBlock.GetId() }}"
|
||||
class="ibo-caselog-entry-form {% if oUIBlock.IsSubmitAutonomous %}ibo-is-closed{% endif %}"
|
||||
data-role="ibo-caselog-entry-form"
|
||||
data-submit-mode="{{ oUIBlock.GetSubmitMode() }}"
|
||||
data-container-tab-type="{{ oUIBlock.GetContainerTabType() }}"
|
||||
method="post">
|
||||
<div class="ibo-caselog-entry-form--text-input" data-role="ibo-caselog-entry-form--text-input">
|
||||
{{ render_block(oUIBlock.GetTextInput(), {aPage: aPage}) }}
|
||||
</div>
|
||||
<div class="ibo-caselog-entry-form--actions">
|
||||
<div class="ibo-caselog-entry-form--action-buttons--extra-actions" data-role="ibo-caselog-entry-form--action-buttons--extra-actions">
|
||||
{% for TextInputActionButton in oUIBlock.GetExtraActionButtons() %}
|
||||
{{ render_block(TextInputActionButton, {aPage: aPage}) }}
|
||||
{% endfor %}
|
||||
</div>
|
||||
<div class="ibo-caselog-entry-form--action-buttons--main-actions" data-role="ibo-caselog-entry-form--action-buttons--main-actions">
|
||||
{% for FormActionButton in oUIBlock.GetMainActionButtons() %}
|
||||
{{ render_block(FormActionButton, {aPage: aPage}) }}
|
||||
{% endfor %}
|
||||
{{ render_block(oUIBlock.GetSendButtonPopoverMenu(), {aPage: aPage}) }}
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
@@ -0,0 +1,5 @@
|
||||
$('#{{ oUIBlock.GetId() }}').caselog_entry_form({
|
||||
submit_mode: '{{ oUIBlock.GetSubmitMode() }}',
|
||||
target_tab: '{{ oUIBlocl.GetContainerTabType() }}',
|
||||
text_input_id: '{{ oUIBlock.GetTextInput().GetId()}}'
|
||||
});
|
||||
@@ -0,0 +1,9 @@
|
||||
{% set oFirstEntry = aEntryGroup.entries|first %}
|
||||
<div class="ibo-activity-panel--entry-group {% if oFirstEntry.IsFromCurrentUser() %}ibo-is-current-user{% endif %}"
|
||||
data-role="ibo-activity-panel--entry-group"
|
||||
data-entry-group-author-login="{{ oFirstEntry.GetAuthorLogin() }}"
|
||||
data-entry-group-origin="{{ oFirstEntry.GetOrigin() }}">
|
||||
{% for oEntry in aEntryGroup.entries %}
|
||||
{{ render_block(oEntry) }}
|
||||
{% endfor %}
|
||||
</div>
|
||||
111
templates/base/layouts/activity-panel/layout.html.twig
Normal file
111
templates/base/layouts/activity-panel/layout.html.twig
Normal file
@@ -0,0 +1,111 @@
|
||||
<div id="{{ oUIBlock.GetId() }}" class="ibo-activity-panel" data-role="ibo-activity-panel" data-object-class="{{ oUIBlock.GetObjectClass() }}" data-object-id="{{ oUIBlock.GetObjectId() }}" data-object-mode="{{ oUIBlock.GetObjectMode() }}">
|
||||
<div class="ibo-activity-panel--header">
|
||||
<div class="ibo-activity-panel--tabs-togglers">
|
||||
{% for sCaseLogAttCode, aCaseLogData in oUIBlock.GetCaseLogTabs() %}
|
||||
<div class="ibo-activity-panel--tab-toggler ibo-activity-panel--tab-toggler-for-caselog ibo-activity-panel--tab-toggler-for-caselog-{{ loop.index }}" data-role="ibo-activity-panel--tab-toggler" data-tab-type="caselog" data-caselog-attribute-code="{{ sCaseLogAttCode }}" data-caselog-rank="{{ loop.index }}">
|
||||
<a href="#" class="ibo-activity-panel--tab-title" data-role="ibo-activity-panel--tab-title">
|
||||
<span class="ibo-activity-panel--tab-title-decoration"></span>
|
||||
<span class="ibo-activity-panel--tab-title-text" title="{{ aCaseLogData.title }}">{{ aCaseLogData.title }}</span>
|
||||
</a>
|
||||
</div>
|
||||
{% endfor %}
|
||||
<div class="ibo-activity-panel--tab-toggler ibo-activity-panel--tab-toggler-for-activity ibo-is-active" data-role="ibo-activity-panel--tab-toggler" data-tab-type="activity">
|
||||
<a href="#" class="ibo-activity-panel--tab-title" data-role="ibo-activity-panel--tab-title">
|
||||
<span class="ibo-activity-panel--tab-title-text" title="{{ 'UI:Layout:ActivityPanel:Tab:Activity:Title'|dict_s }}">{{ 'UI:Layout:ActivityPanel:Tab:Activity:Title'|dict_s }}</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="ibo-activity-panel--size-toggler" data-role="ibo-activity-panel--size-toggler">
|
||||
<a href="#" class="ibo-activity-panel--expand-icon"
|
||||
data-role="ibo-activity-panel--expand-icon"
|
||||
data-tooltip-content="{{ 'UI:Layout:ActivityPanel:SizeToggler:Expand:Tooltip'|dict_s }}">
|
||||
<span class="fas fa-fw fa-expand-alt"></span>
|
||||
</a>
|
||||
<a href="#" class="ibo-activity-panel--collapse-icon"
|
||||
data-role="ibo-activity-panel--collapse-icon"
|
||||
data-tooltip-content="{{ 'UI:Layout:ActivityPanel:SizeToggler:Collapse:Tooltip'|dict_s }}">
|
||||
<span class="fas fa-fw fa-compress-alt"></span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="ibo-activity-panel--tabs-toolbars">
|
||||
{% for sCaseLogAttCode, aCaseLogData in oUIBlock.GetCaseLogTabs() %}
|
||||
<div class="ibo-activity-panel--tab-toolbar ibo-activity-panel--tab-toolbar-for-caselog ibo-activity-panel--tab-toolbar-for-caselog-{{ loop.index }}" data-role="ibo-activity-panel--tab-toolbar" data-tab-type="caselog" data-caselog-attribute-code="{{ sCaseLogAttCode }}" data-caselog-rank="{{ loop.index }}">
|
||||
<div class="ibo-activity-panel--tab-toolbar-actions">
|
||||
<div class="ibo-activity-panel--tab-toolbar-left-actions">
|
||||
<a href="#" class="ibo-activity-panel--tab-toolbar-action ibo-activity-panel--tab-toolbar-action-open-all" data-role="ibo-activity-panel--caselog-open-all" data-tooltip-content="{{ 'UI:Layout:ActivityPanel:Tab:Caselog:Toolbar:OpenAll:Tooltip'|dict_s }}">
|
||||
<span class="fas fa-book-open"></span>
|
||||
</a>
|
||||
<a href="#" class="ibo-activity-panel--tab-toolbar-action ibo-activity-panel--tab-toolbar-action-close-all" data-role="ibo-activity-panel--caselog-close-all" data-tooltip-content="{{ 'UI:Layout:ActivityPanel:Tab:Caselog:Toolbar:CloseAll:Tooltip'|dict_s }}">
|
||||
<span class="fas fa-book"></span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="ibo-activity-panel--tab-toolbar-right-actions">
|
||||
<span class="ibo-activity-panel--tab-toolbar-info ibo-activity-panel--tab-toolbar-info-authors-count" data-tooltip-content="{{ 'UI:Layout:ActivityPanel:Tab:Caselog:Toolbar:AuthorsCount:Tooltip'|dict_s }}">
|
||||
<span class="ibo-activity-panel--tab-toolbar-info-text">{{ aCaseLogData.authors|length }}</span>
|
||||
<span class="ibo-activity-panel--tab-toolbar-info-icon fas fa-users"></span>
|
||||
</span>
|
||||
<span class="ibo-activity-panel--tab-toolbar-info ibo-activity-panel--tab-toolbar-info-messages-count" data-tooltip-content="{{ 'UI:Layout:ActivityPanel:Tab:Caselog:Toolbar:MessagesCount:Tooltip'|dict_s }}">
|
||||
<span class="ibo-activity-panel--tab-toolbar-info-text">{{ aCaseLogData.total_messages_count }}</span>
|
||||
<span class="ibo-activity-panel--tab-toolbar-info-icon fas fa-comment-alt"></span>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
{% if oUIBlock.HasCaseLogTabEntryForm(sCaseLogAttCode) %}
|
||||
<div class="ibo-activity-panel--tab-toggler-entry-form" data-role="ibo-activity-panel--tab-toggler-entry-form">
|
||||
{{ render_block(oUIBlock.GetCaseLogTabEntryForm(sCaseLogAttCode)) }}
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
<div class="ibo-activity-panel--tab-toolbar ibo-activity-panel--tab-toolbar-for-activity ibo-is-active" data-role="ibo-activity-panel--tab-toolbar" data-tab-type="activity">
|
||||
<div class="ibo-activity-panel--tab-toolbar-actions">
|
||||
<div class="ibo-activity-panel--tab-toolbar-middle-actions">
|
||||
{% if oUIBlock.HasCaseLogTabs() %}
|
||||
<label class="ibo-activity-panel--tab-toolbar-action"
|
||||
data-tooltip-content="{{ 'UI:Layout:ActivityPanel:Tab:Activity:Toolbar:CaselogsFilter:Tooltip'|dict_s }}">
|
||||
<input type="checkbox" name="caselogs" data-role="ibo-activity-panel--activity-filter" data-target-entry-types="caselog" checked />
|
||||
{{ 'UI:Layout:ActivityPanel:Tab:Activity:Toolbar:CaselogsFilter:Title'|dict_s }}
|
||||
</label>
|
||||
{% endif %}
|
||||
{% if oUIBlock.HasLifecycle() %}
|
||||
<label class="ibo-activity-panel--tab-toolbar-action"
|
||||
data-tooltip-content="{{ 'UI:Layout:ActivityPanel:Tab:Activity:Toolbar:TransitionsFilter:Tooltip'|dict_s }}">
|
||||
<input type="checkbox" name="transitions" data-role="ibo-activity-panel--activity-filter" data-target-entry-types="transition" checked />
|
||||
{{ 'UI:Layout:ActivityPanel:Tab:Activity:Toolbar:TransitionsFilter:Title'|dict_s }}
|
||||
</label>
|
||||
{% endif %}
|
||||
<label class="ibo-activity-panel--tab-toolbar-action"
|
||||
data-tooltip-content="{{ 'UI:Layout:ActivityPanel:Tab:Activity:Toolbar:EditsFilter:Tooltip'|dict_s }}">
|
||||
<input type="checkbox" name="edits" data-role="ibo-activity-panel--activity-filter" data-target-entry-types="edits" checked />
|
||||
{{ 'UI:Layout:ActivityPanel:Tab:Activity:Toolbar:EditsFilter:Title'|dict_s }}
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
{% if oUIBlock.HasActivityTabEntryForm() %}
|
||||
<div class="ibo-activity-panel--tab-toggler-entry-form" data-role="ibo-activity-panel--tab-toggler-entry-form">
|
||||
{{ render_block(oUIBlock.GetActivityTabEntryForm()) }}
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% if oUIBlock.HasActivityTabEntryForm() %}
|
||||
{% if oUIBlock.GetActivityTabEntryForm().IsSubmitAutonomous() %}
|
||||
<a href="#" class="ibo-activity-panel--body--add-caselog-entry--toggler" data-role="ibo-activity-panel--body--add-caselog-entry--toggler"><i class="fas fa-feather"></i></a>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
<div class="ibo-activity-panel--body">
|
||||
{% if oUIBlock.GetGroupedEntries()|length > 0 %}
|
||||
{% for aEntryGroup in oUIBlock.GetGroupedEntries() %}
|
||||
{{ include('base/layouts/activity-panel/entry-group.html.twig', {aEntryGroup: aEntryGroup}) }}
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
<div class="ibo-activity-panel--body--placeholder">
|
||||
<div class="ibo-activity-panel--body--placeholder-image ibo-svg-illustration--container">
|
||||
{{ source("illustrations/undraw_reading_time.svg") }}
|
||||
</div>
|
||||
<div class="ibo-activity-panel--body--placeholder-hint">{{ 'UI:Layout:ActivityPanel:NoEntry:Placeholder:Hint'|dict_s }}</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
3
templates/base/layouts/activity-panel/layout.js.twig
Normal file
3
templates/base/layouts/activity-panel/layout.js.twig
Normal file
@@ -0,0 +1,3 @@
|
||||
$('#{{ oUIBlock.GetId() }}').activity_panel({
|
||||
datetime_format: {{ oUIBlock.GetDateTimeFormatForJSWidget()|json_encode|raw }}
|
||||
});
|
||||
Reference in New Issue
Block a user