Initial commit: CloudOps infrastructure platform

This commit is contained in:
root
2026-04-09 19:58:57 +02:00
commit 1166a52f26
7762 changed files with 839452 additions and 0 deletions

View File

@@ -0,0 +1,20 @@
{#
Variables
- deleted
- id
- route
- sessionId
#}
{% set action = deleted ? 'undelete' : 'delete' %}
{% set iconClass = deleted ? 'ri-arrow-go-back-line' : 'ri-close-line' %}
{% set btnClass = deleted ? 'btn-warning' : 'btn-danger' %}
{% set route = route|default('mautic_pointtriggerevent_action') %}
<div class="form-buttons hide">
<a data-toggle="ajaxmodal" data-target="#triggerEventModal" href="{{ path(route, {'objectAction': 'edit', 'objectId': id, 'triggerId': sessionId}) }}" class="btn btn-primary btn-xs btn-edit">
<i class="ri-edit-line"></i>
</a>
<a data-menu-link="mautic_point_index" data-toggle="ajax" data-ignore-formexit="true" data-method="POST" data-hide-loadingbar="true" href="{{ path(route, {'objectAction': action, 'objectId': id, 'triggerId': sessionId}) }}" class="btn {{ btnClass }} btn-xs">
<i class="{{ iconClass }}"></i>
</a>
<i class="ri-fw ri-more-2-line reorder-handle"></i>
</div>

View File

@@ -0,0 +1,9 @@
{% if formTheme is defined %}
{% form_theme form formTheme %}
{% endif %}
<div class="bundle-form">
<div class="bundle-form-header">
<h3>{{ eventHeader }}</h3>
</div>
{{ form(form) }}
</div>

View File

@@ -0,0 +1,20 @@
{#
Variables
- event
- id
- sessionId
- deleted (bool, optional)
#}
{% set deleted = deleted|default(false) %}
<div class="trigger-event-row {% if deleted %}bg-danger{% endif %}" id="triggerEvent_{{ id }}">
{{ include('@MauticPoint/Event/actions.html.twig', {
'deleted': deleted,
'id': id,
'route': 'mautic_pointtriggerevent_action',
'sessionId': sessionId|default(''),
}) }}
<span class="trigger-event-label">{{ event.name }}</span>
{% if event.description is not empty %}
<span class="trigger-event-descr">{{ event.description|purify }}</span>
{% endif %}
</div>

View File

@@ -0,0 +1,3 @@
{% block _pointaction_properties_row %}
{{ form_widget(form) }}
{% endblock %}

View File

@@ -0,0 +1,33 @@
{% extends '@MauticCore/Default/content.html.twig' %}
{% block mauticContent %}group{% endblock %}
{% block headerTitle %}
{% if entity.id %}
{{ 'mautic.point.group.menu.edit'|trans }}
{% else %}
{{ 'mautic.point.group.menu.new'|trans }}
{% endif %}
{% endblock %}
{% block content %}
{{ form_start(form) }}
<!-- start: box layout -->
<div class="box-layout">
<!-- container -->
<div class="col-md-9 height-auto bdr-r">
<div class="pa-md">
{{ form_row(form.name) }}
{{ form_row(form.description) }}
</div>
</div>
<div class="col-md-3 height-auto">
<div class="pr-lg pl-lg pt-md pb-md">
{{ form_row(form.isPublished) }}
</div>
</div>
</div>
<!-- end: box layout -->
{{ form_end(form) }}
{% endblock %}

View File

@@ -0,0 +1,139 @@
{% set isIndex = 'index' == tmpl ? true : false %}
{% set tmpl = 'list' %}
{% extends isIndex ? '@MauticCore/Default/content.html.twig' : '@MauticCore/Default/raw_output.html.twig' %}
{% block mauticContent %}group{% endblock %}
{% block headerTitle %}{{ 'mautic.point.group.header.index'|trans }}{% endblock %}
{% block content %}
<div id="page-list-wrapper" class="{% if items|length > 0 or searchValue is not empty %}panel {% endif %}panel-default">
{{- include('@MauticCore/Helper/list_toolbar.html.twig', {
'searchValue': searchValue,
'action': currentRoute,
'page_actions': {
'templateButtons': {
'new': permissions['point:groups:create']
},
'routeBase': 'point.group',
'langVar': 'point.group'
},
'bulk_actions': {
'langVar': 'point.group',
'routeBase': 'point.group',
'templateButtons': {
'delete': permissions['point:groups:delete'],
},
},
}) -}}
<div class="page-list">
{% if items is defined and items is not empty %}
<div class="table-responsive">
<table class="table table-hover" id="groupTable">
<thead>
<tr>
{{ include('@MauticCore/Helper/tableheader.html.twig', {
'checkall': 'true',
'target': '#groupTable',
}) }}
{{ include(
'@MauticCore/Helper/tableheader.html.twig',
{
'sessionVar': 'point.group',
'orderBy' : 'pl.name',
'text' : 'mautic.core.name',
'class' : 'col-group-name',
'default' : true,
}
) }}
{{ include(
'@MauticCore/Helper/tableheader.html.twig',
{
'sessionVar' : 'point.group',
'orderBy' : 'pl.id',
'text' : 'mautic.core.id',
'class' : 'visible-md visible-lg col-group-id',
}
) }}
</tr>
</thead>
<tbody>
{% for item in items %}
<tr>
<td>
{{- include('@MauticCore/Helper/list_actions.html.twig', {
item: item,
templateButtons: {
edit: permissions['point:groups:edit'],
delete: permissions['point:groups:delete'],
},
routeBase: 'point.group',
langVar: 'point.group',
}) -}}
</td>
<td>
<div>
{{- include(
'@MauticCore/Helper/publishstatus_icon.html.twig',
{
'item': item, 'model': 'point.group'
}
)}}
{% if permissions['point:groups:edit'] %}
<a href="{{ path('mautic_point.group_action', {
objectAction: 'edit',
objectId: item.getId()
}) }}" data-toggle="ajax">
{{ item.getName() }}
</a>
{% else %}
{{ item.getName() }}
{% endif %}
</div>
{% set description = item.getDescription() %}
{{ include('@MauticCore/Helper/description--inline.html.twig', {
'description': item.description
}) }}
</td>
<td class="visible-md visible-lg">{{ item.getId() }}</td>
</tr>
{% endfor %}
</tbody>
</table>
<div class="panel-footer">
{{- include('@MauticCore/Helper/pagination.html.twig', {
'totalItems' : items|length,
'page' : page,
'limit' : limit,
'baseUrl' : path('mautic_point.group_index'),
'sessionVar' : 'point.group',
}) -}}
</div>
</div>
{% else %}
{% if searchValue is not empty %}
{{ include('@MauticCore/Helper/noresults.html.twig') }}
{% else %}
<div class="mt-80 col-md-offset-2 col-lg-offset-3 col-md-8 col-lg-5 height-auto">
{% set childContainer %}
<div class="mb-md">
{% include '@MauticCore/Components/pictogram.html.twig' with {
'pictogram': 'filter-and-group-data',
'size': '80'
} %}
</div>
{% endset %}
{{ include('@MauticCore/Components/content-block.html.twig', {
heading: 'mautic.point.group.onboarding.heading',
subheading: 'mautic.point.group.onboarding.subheading',
copy: 'mautic.point.group.onboarding.copy',
childContainer: childContainer,
}) }}
</div>
{% endif %}
{% endif %}
</div>
</div>
{% endblock %}

View File

@@ -0,0 +1,141 @@
{% if items|length > 0 %}
<div class="table-responsive page-list">
<table class="table table-hover point-list" id="pointTable">
<thead>
<tr>
{{ include('@MauticCore/Helper/tableheader.html.twig', {
'checkall': 'true',
'target': '#pointTable',
}) }}
{{ include('@MauticCore/Helper/tableheader.html.twig', {
'sessionVar': 'point',
'orderBy': 'p.name',
'text': 'mautic.core.name',
'class': 'col-point-name',
'default': true,
}) }}
{{ include('@MauticCore/Helper/tableheader.html.twig', {
'sessionVar': 'point',
'orderBy': 'cat.title',
'text': 'mautic.core.category',
'class': 'visible-md visible-lg col-point-category',
}) }}
{{ include('@MauticCore/Helper/tableheader.html.twig', {
'sessionVar': 'point',
'orderBy': 'pl.name',
'text': 'mautic.point.thead.group',
'class': 'visible-md visible-lg col-point-group',
}) }}
{{ include('@MauticCore/Helper/tableheader.html.twig', {
'sessionVar': 'point',
'orderBy': 'p.delta',
'text': 'mautic.point.thead.delta',
'class': 'visible-md visible-lg col-point-delta',
}) }}
<th class="col-point-action">{{ 'mautic.point.thead.action'|trans }}</th>
{{ include('@MauticCore/Helper/tableheader.html.twig', {
'sessionVar': 'point',
'orderBy': 'p.id',
'text': 'mautic.core.id',
'class': 'visible-md visible-lg col-point-id',
}) }}
</tr>
</thead>
<tbody>
{% for item in items %}
<tr>
<td>
{{ include('@MauticCore/Helper/list_actions.html.twig', {
'item': item,
'templateButtons': {
'edit': permissions['point:points:edit'],
'clone': permissions['point:points:create'],
'delete': permissions['point:points:delete'],
},
'routeBase': 'point',
}) }}
</td>
<td>
<div>
{{ include('@MauticCore/Helper/publishstatus_icon.html.twig', {'item': item, 'model': 'point'}) }}
{% if permissions['point:points:edit'] %}
<a href="{{ path('mautic_point_action', {'objectAction': 'edit', 'objectId': item.id}) }}" data-toggle="ajax">
{{ item.name }}
</a>
{% else %}
{{ item.name }}
{% endif %}
{{ customContent('point.name', _context) }}
</div>
{{ include('@MauticCore/Helper/description--inline.html.twig', {
'description': item.description
}) }}
</td>
<td class="visible-md visible-lg">
{{ include('@MauticCore/Modules/category--expanded.html.twig', {'category': item.category}) }}
</td>
<td class="visible-md visible-lg">
{% set group = item.group %}
{% set groupName = group.name|default('mautic.point.group.form.nogroup'|trans) %}
{{ groupName }}
</td>
<td class="visible-md visible-lg">{{ item.delta }}</td>
<td>{{ actions[item.type].label|default('')|trans }}</td>
<td class="visible-md visible-lg">{{ item.id }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
<div class="panel-footer">
{{ include('@MauticCore/Helper/pagination.html.twig', {
'totalItems': items|length,
'page': page,
'limit': limit,
'menuLinkId': 'mautic_point_index',
'baseUrl': path('mautic_point_index'),
'sessionVar': 'point',
}) }}
</div>
{% else %}
{% if searchValue is not empty %}
{{ include('@MauticCore/Helper/noresults.html.twig', {'tip': 'mautic.point.action.noresults.tip'}) }}
{% else %}
<div class="mt-80 col-md-offset-2 col-lg-offset-3 col-md-8 col-lg-5 height-auto">
{% set childContainer %}
<div class="mb-md">
{% include '@MauticCore/Components/pictogram.html.twig' with {
'pictogram': 'user--insights',
'size': '80'
} %}
</div>
{{ include('@MauticCore/Components/content-item-row.html.twig', {
type: 'default',
eyebrow: 'mautic.point.action.empty.understand',
heading: 'mautic.point.action.empty.what_are_point_actions',
copy: 'mautic.point.action.empty.what_are_point_actions_desc',
}) }}
{{ include('@MauticCore/Components/content-item-row.html.twig', {
type: 'default',
eyebrow: 'mautic.point.action.empty.purpose',
heading: 'mautic.point.action.empty.score_contacts_heading',
copy: 'mautic.point.action.empty.score_contacts_desc',
}) }}
{% endset %}
{{ include('@MauticCore/Components/content-block.html.twig', {
heading: 'mautic.point.action.empty.heading',
subheading: 'mautic.point.action.empty.subheading',
childContainer: childContainer,
}) }}
</div>
{% endif %}
{% endif %}

View File

@@ -0,0 +1,4 @@
{% form_theme form with formThemes %}
{% for child in form %}
{{ form_row(child) }}
{% endfor %}

View File

@@ -0,0 +1,54 @@
{% form_theme form with formThemes %}
{% extends '@MauticCore/Default/content.html.twig' %}
{% block mauticContent 'point' %}
{%- block headerTitle -%}
{%- if entity.id -%}
{{- 'mautic.point.menu.edit'|trans({'%name%': entity.name|trans}) -}}
{%- else -%}
{{- 'mautic.point.menu.new'|trans -}}
{%- endif -%}
{%- endblock -%}
{% block content %}
{{ form_start(form) }}
<!-- start: box layout -->
<div class="box-layout">
<!-- container -->
<div class="col-md-9 height-auto bdr-r">
<div class="row">
<div class="col-md-6">
<div class="pa-md">
{{ form_row(form.name) }}
{{ form_row(form.description) }}
</div>
</div>
<div class="col-md-6">
<div class="pa-md">
{{ form_row(form.delta) }}
{{ form_row(form.type) }}
<div id="pointActionProperties">
{% if form.properties is defined %}
{{ form_row(form.properties) }}
{% endif %}
</div>
{{ form_row(form.group) }}
</div>
</div>
</div>
</div>
<div class="col-md-3 height-auto">
<div class="pr-lg pl-lg pt-md pb-md">
{{ form_row(form.category) }}
{{ form_row(form.projects) }}
{{ form_row(form.isPublished) }}
{{ form_row(form.repeatable) }}
{{ form_row(form.publishUp) }}
{{ form_row(form.publishDown) }}
</div>
</div>
</div>
<!-- end: box layout -->
{{ form_end(form) }}
{% endblock %}

View File

@@ -0,0 +1,67 @@
{% set isIndex = 'index' == tmpl %}
{% set tmpl = 'list' %}
{% extends isIndex ? '@MauticCore/Default/content.html.twig' : '@MauticCore/Default/raw_output.html.twig' %}
{% block mauticContent 'point' %}
{% block headerTitle 'mautic.points.menu.root'|trans %}
{% block content %}
{% if isIndex %}
<div id="page-list-wrapper" class="{% if items|length > 0 or searchValue is not empty %}panel {% endif %}panel-default">
{{ include('@MauticCore/Helper/list_toolbar.html.twig', {
'searchValue': searchValue,
'action': currentRoute,
'page_actions': {
'templateButtons': {
'new': permissions['point:points:create'],
},
'routeBase': 'point',
},
'bulk_actions': {
'routeBase': 'point',
'templateButtons': {
'delete': permissions['point:points:delete'],
},
},
'quickFilters': [
{
'search': 'mautic.core.searchcommand.ispublished',
'label': 'mautic.core.form.active',
'tooltip': 'mautic.core.searchcommand.ispublished.description',
'icon': 'ri-check-line'
},
{
'search': 'mautic.core.searchcommand.isunpublished',
'label': 'mautic.core.form.inactive',
'tooltip': 'mautic.core.searchcommand.isunpublished.description',
'icon': 'ri-close-line'
},
{
'search': 'mautic.core.searchcommand.isuncategorized',
'label': 'mautic.core.form.uncategorized',
'tooltip': 'mautic.core.searchcommand.isuncategorized.description',
'icon': 'ri-folder-unknow-line'
},
{
'search': 'mautic.core.searchcommand.ismine',
'label': 'mautic.core.searchcommand.ismine.label',
'tooltip': 'mautic.core.searchcommand.ismine.description',
'icon': 'ri-user-line'
}
]
}) }}
<div class="page-list">
{% endif %}
{{ include('@MauticPoint/Point/_list.html.twig') }}
{% if isIndex %}
</div>
</div>
{{ include('@MauticCore/Modules/protip.html.twig', {
tip: random(['mautic.protip.points.decay', 'mautic.protip.points.reduce', 'mautic.protip.points.limit'])
}) }}
{% endif %}
{% endblock %}

View File

@@ -0,0 +1,16 @@
{% if showMore is defined %}
<a href="{{ url('mautic_point.group_index', {'search': searchString}) }}" data-toggle="ajax">
<span>{{ 'mautic.core.search.more'|trans({'%count%': remaining}) }}</span>
</a>
{% else %}
<a href="{{ url('mautic_point.group_action', {'objectAction': 'edit', 'objectId': item.id}) }}">
<span class="fw-sb">{{ item.name }}</span>
<span class="ml-4 mr-sm">#{{ item.id }}</span>
{{- include('@MauticCore/Helper/publishstatus_badge.html.twig', {
'entity': item,
'status': 'active',
'simplified': 'true'
}) -}}
</a>
<div class="clearfix"></div>
{% endif %}

View File

@@ -0,0 +1,17 @@
{% if showMore is defined %}
<a href="{{ url('mautic_point_index', {'search': searchString}) }}" data-toggle="ajax">
<span>{{ 'mautic.core.search.more'|trans({'%count%': remaining}) }}</span>
</a>
</div>
{% else %}
<a href="{{ url('mautic_point_action', {'objectAction': 'edit', 'objectId': item.id}) }}">
<span class="fw-sb">{{ item.name }}</span>
<span class="ml-4 mr-sm">#{{ item.id }}</span>
{{- include('@MauticCore/Helper/publishstatus_badge.html.twig', {
'entity': item,
'status': 'active',
'simplified': 'true'
}) -}}
</a>
<div class="clearfix"></div>
{% endif %}

View File

@@ -0,0 +1,16 @@
{% if showMore is defined %}
<a href="{{ url('mautic_pointtrigger_index', {'search': searchString}) }}" data-toggle="ajax">
<span>{{ 'mautic.core.search.more'|trans({'%count%': remaining}) }}</span>
</a>
{% else %}
<a href="{{ url('mautic_pointtrigger_action', {'objectAction': 'edit', 'objectId': item.id}) }}">
<span class="fw-sb">{{ item.name }}</span>
<span class="ml-4 mr-sm">#{{ item.id }}</span>
{{- include('@MauticCore/Helper/publishstatus_badge.html.twig', {
'entity': item,
'status': 'active',
'simplified': 'true'
}) -}}
</a>
<div class="clearfix"></div>
{% endif %}

View File

@@ -0,0 +1,170 @@
{% if items|length > 0 %}
<div class="table-responsive">
<table class="table table-hover pointtrigger-list" id="triggerTable">
<thead>
<tr>
{{ include('@MauticCore/Helper/tableheader.html.twig', {
'checkall': 'true',
'target': '#triggerTable',
}) }}
{{ include('@MauticCore/Helper/tableheader.html.twig', {
'sessionVar': 'point.trigger',
'orderBy': 't.name',
'text': 'mautic.core.name',
'class': 'col-pointtrigger-name',
'default': true,
}) }}
{{ include('@MauticCore/Helper/tableheader.html.twig', {
'sessionVar': 'point.trigger',
'orderBy': 'cat.title',
'text': 'mautic.core.category',
'class': 'col-pointtrigger-category visible-md visible-lg',
}) }}
{{ include('@MauticCore/Helper/tableheader.html.twig', {
'sessionVar': 'point.trigger',
'orderBy': 'pl.name',
'text': 'mautic.point.thead.group',
'class': 'visible-md visible-lg col-point-group',
}) }}
{{ include('@MauticCore/Helper/tableheader.html.twig', {
'sessionVar': 'point.trigger',
'orderBy': 't.points',
'text': 'mautic.point.trigger.thead.points',
'class': 'col-pointtrigger-points',
}) }}
{{ include('@MauticCore/Helper/tableheader.html.twig', {
'sessionVar': 'point.trigger',
'orderBy': 't.id',
'text': 'mautic.core.id',
'class': 'col-pointtrigger-id visible-md visible-lg',
}) }}
</tr>
</thead>
<tbody>
{% for item in items %}
<tr>
<td>
{{ include('@MauticCore/Helper/list_actions.html.twig', {
'item': item,
'templateButtons': {
'edit': permissions['point:triggers:edit'],
'clone': permissions['point:triggers:create'],
'delete': permissions['point:triggers:delete'],
},
'routeBase': 'pointtrigger',
'langVar': 'point.trigger',
}) }}
</td>
<td>
<div>
{{ include('@MauticCore/Helper/publishstatus_icon.html.twig', {'item': item, 'model': 'point.trigger'}) }}
{% if permissions['point:triggers:edit'] %}
<a href="{{ path('mautic_pointtrigger_action', {'objectAction': 'edit', 'objectId': item.id}) }}" data-toggle="ajax">
{{ item.name }}
</a>
{% else %}
{{ item.name }}
{% endif %}
{{ customContent('trigger.name', _context) }}
</div>
{{ include('@MauticCore/Helper/description--inline.html.twig', {
'description': item.description
}) }}
</td>
<td class="visible-md visible-lg">
{{ include('@MauticCore/Modules/category--expanded.html.twig', {'category': item.category}) }}
</td>
<td class="visible-md visible-lg">
{{ item.group.name|default('mautic.point.group.form.nogroup'|trans) }}
</td>
<td>{{ item.points }}</td>
<td class="visible-md visible-lg">{{ item.id }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
<div class="panel-footer">
{{ include('@MauticCore/Helper/pagination.html.twig', {
'totalItems': items|length,
'page': page,
'limit': limit,
'menuLinkId': 'mautic_pointtrigger_index',
'baseUrl': path('mautic_pointtrigger_index'),
'sessionVar': 'point.trigger',
}) }}
</div>
{% else %}
{% if searchValue is not empty %}
{{ include('@MauticCore/Helper/noresults.html.twig', {'tip': 'mautic.point.trigger.noresults.tip'}) }}
{% else %}
<div class="mt-80 col-md-offset-2 col-lg-offset-3 col-md-8 col-lg-5 height-auto">
{% set childContainer %}
<div class="mb-md">
{% include '@MauticCore/Components/pictogram.html.twig' with {
'pictogram': 'react-to-data',
'size': '80'
} %}
</div>
{{ include('@MauticCore/Components/content-item-row.html.twig', {
type: 'default',
eyebrow: 'mautic.point.trigger.onboarding.eyebrow',
heading: 'mautic.point.trigger.onboarding.heading',
copy: 'mautic.point.trigger.onboarding.copy',
}) }}
{% set triggersUseContainer %}
<div class="mb-md">
{% include '@MauticCore/Components/pictogram.html.twig' with {
'pictogram': 'construct',
'size': '64'
} %}
</div>
<div class="type-body-02">
{% include '@MauticCore/Components/list--styled.html.twig' with {
'type': 'ordered',
'style': 'numbers',
'items': [
'mautic.point.trigger.onboarding.step1',
'mautic.point.trigger.onboarding.step2',
'mautic.point.trigger.onboarding.step3',
]
} %}
</div>
<div class="mt-lg">
{{ include('@MauticCore/Notification/inline_notification.html.twig', {
'title': 'mautic.point.trigger.onboarding.notification.title',
'content': 'mautic.point.trigger.onboarding.notification.content',
'alert_type': 'success',
'dismissible': false,
}) }}
</div>
{% endset %}
{{ include('@MauticCore/Components/content-group.html.twig', {
heading: 'mautic.point.trigger.onboarding.group.heading',
childContainer: triggersUseContainer,
cta: {
'label': 'mautic.point.trigger.onboarding.cta',
'link': path('mautic_pointtrigger_action', {'objectAction': 'new'}),
attributes: {
'data-toggle': 'ajax',
},
}
}) }}
{% endset %}
{{ include('@MauticCore/Components/content-block.html.twig', {
heading: 'mautic.point.trigger.empty.heading',
subheading: 'mautic.point.trigger.empty.subheading',
childContainer: childContainer,
}) }}
</div>
{% endif %}
{% endif %}

View File

@@ -0,0 +1,23 @@
{% extends '@MauticCore/Default/content.html.twig' %}
{% block mauticContent 'pointTrigger' %}
{% block headerTitle entity.name %}
{% block actions %}
{{ include('@MauticCore/Helper/page_actions.html.twig', {
'item': entity,
'templateButtons': {
'edit': permissions['point:triggers:edit'],
'delete': permissions['point:triggers:delete'],
},
'routeBase': 'pointtrigger',
'langVar': 'point.trigger',
}) }}
{% endblock %}
{% block content %}
<div class="scrollable trigger-details">
{# @todo - output trigger details/actions #}
</div>
{% endblock %}

View File

@@ -0,0 +1,114 @@
{% extends '@MauticCore/Default/content.html.twig' %}
{% block mauticContent 'pointTrigger' %}
{%- block headerTitle -%}
{%- if entity.id -%}
{{ 'mautic.point.trigger.header.edit'|trans({'%name%': entity.name|trans}) }}
{%- else -%}
{{ 'mautic.point.trigger.header.new'|trans }}
{%- endif -%}
{%- endblock -%}
{% block modal include('@MauticCore/Helper/modal.html.twig', {
'id': 'triggerEventModal',
'header': 'mautic.point.trigger.form.modalheader'|trans,
'footerButtons': true
}) %}
{% block content %}
{{ form_start(form) }}
<div class="box-layout">
<div class="col-md-9 height-auto">
<div class="row">
<div class="col-xs-12">
<!-- tabs controls -->
<ul class="nav nav-tabs nav-tabs-contained">
<li class="active"><a href="#details-container" role="tab" data-toggle="tab">{{ 'mautic.core.details'|trans }}</a></li>
<li class=""><a href="#events-container" role="tab" data-toggle="tab">{{ 'mautic.point.trigger.tab.events'|trans }}</a></li>
</ul>
<!--/ tabs controls -->
<div class="tab-content pa-md">
<div class="tab-pane fade in active bdr-w-0 height-auto" id="details-container">
<div class="row">
<div class="col-md-6">
<div class="pa-md">
{{ form_row(form.name) }}
{{ form_row(form.description, {'attr': {'class': 'form-control editor'}}) }}
</div>
</div>
<div class="col-md-6">
<div class="pa-md">
{{ form_row(form.points) }}
{{ form_row(form.color) }}
{{ form_row(form.group) }}
{{ form_row(form.triggerExistingLeads) }}
</div>
</div>
</div>
</div>
<div class="tab-pane fade bdr-w-0" id="events-container">
<div id="triggerEvents">
<div class="mb-md">
<div class="dropdown chosen-container">
<button class="btn chosen-single dropdown-toggle" type="button" data-toggle="dropdown">
{{ 'mautic.point.trigger.event.add'|trans }}
<span class="caret"></span>
</button>
<ul class="dropdown-menu" role="menu">
{% for group, event in events %}
<li role="presentation" class="dropdown-header">
{{ group }}
</li>
{% for k, e in event %}
<li id="event_{{ k }}">
<a data-toggle="ajaxmodal"
data-target="#triggerEventModal"
class="list-group-item"
href="{{ path('mautic_pointtriggerevent_action', {'objectAction': 'new', 'type': k, 'tmpl': 'event', 'triggerId': sessionId}) }}">
<div data-toggle="tooltip" title="{{ e.description }}">
<span>{{ e.label }}</span>
</div>
</a>
</li>
{% endfor %}
{% endfor %}
</ul>
</div>
</div>
{% for event in triggerEvents %}
{% set template = event.settings.template|default('@MauticPoint/Event/generic.html.twig') %}
<!-- start: "{{ template }}" -->
{{ include(template, {
'event': event,
'id': event.id,
'deleted': (event.id in deletedEvents),
'sessionId': sessionId,
}, with_context=false) }}
<!--/ start: "{{ template }}" -->
{% else %}
<div class="alert alert-info" id="triggerEventPlaceholder">
<p>{{ 'mautic.point.trigger.addevent'|trans }}</p>
</div>
{% endfor %}
</div>
</div>
</div>
</div>
</div>
</div>
<div class="col-md-3 height-auto bdr-l">
<div class="pr-lg pl-lg pt-md pb-md">
{{ form_row(form.category) }}
{{ form_row(form.projects) }}
{{ form_row(form.isPublished) }}
{{ form_row(form.publishUp) }}
{{ form_row(form.publishDown) }}
</div>
</div>
</div>
{{ form_end(form) }}
{% endblock %}

View File

@@ -0,0 +1,69 @@
{% set isIndex = 'index' == tmpl %}
{% set tmpl = 'list' %}
{% extends isIndex ? '@MauticCore/Default/content.html.twig' : '@MauticCore/Default/raw_output.html.twig' %}
{% block mauticContent 'pointTrigger' %}
{% block headerTitle 'mautic.point.trigger.header.index'|trans %}
{% block content %}
{% if isIndex %}
<div id="page-list-wrapper" class="{% if items|length > 0 or searchValue is not empty %}panel {% endif %}panel-default">
{{ include('@MauticCore/Helper/list_toolbar.html.twig', {
'searchValue': searchValue,
'action': currentRoute,
'page_actions': {
'templateButtons': {
'new': permissions['point:triggers:create'],
},
'routeBase': 'pointtrigger',
'langVar': 'point.trigger',
},
'bulk_actions': {
'langVar': 'point.trigger',
'routeBase': 'pointtrigger',
'templateButtons': {
'delete': permissions['point:triggers:delete'],
},
},
'quickFilters': [
{
'search': 'mautic.core.searchcommand.ispublished',
'label': 'mautic.core.form.active',
'tooltip': 'mautic.core.searchcommand.ispublished.description',
'icon': 'ri-check-line'
},
{
'search': 'mautic.core.searchcommand.isunpublished',
'label': 'mautic.core.form.inactive',
'tooltip': 'mautic.core.searchcommand.isunpublished.description',
'icon': 'ri-close-line'
},
{
'search': 'mautic.core.searchcommand.isuncategorized',
'label': 'mautic.core.form.uncategorized',
'tooltip': 'mautic.core.searchcommand.isuncategorized.description',
'icon': 'ri-folder-unknow-line'
},
{
'search': 'mautic.core.searchcommand.ismine',
'label': 'mautic.core.searchcommand.ismine.label',
'tooltip': 'mautic.core.searchcommand.ismine.description',
'icon': 'ri-user-line'
}
]
}) }}
<div class="page-list">
{% endif %}
{{ include('@MauticPoint/Trigger/_list.html.twig') }}
{% if isIndex %}
</div>
</div>
{{ include('@MauticCore/Modules/protip.html.twig', {
tip: random(['mautic.protip.triggers.behavioral'])
}) }}
{% endif %}
{% endblock %}