Initial commit: CloudOps infrastructure platform
This commit is contained in:
@@ -0,0 +1,3 @@
|
||||
{% for f in form %}
|
||||
{{ form_row(f) }}
|
||||
{% endfor %}
|
||||
@@ -0,0 +1,17 @@
|
||||
{% block _config_pageconfig_widget %}
|
||||
<h4 class="fw-sb mt-48 mb-xs">{{ 'mautic.config.tab.pageconfig'|trans }}</h4>
|
||||
<div class="text-muted small pb-md">{{ 'mautic.core.config.header.pageconfig.description'|trans }}</div>
|
||||
<div class="row">
|
||||
<div class="panel panel-default mb-md">
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
{% for name, f in form.children %}
|
||||
<div class="col-xs-12">
|
||||
{{ form_row(f) }}
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
@@ -0,0 +1,80 @@
|
||||
{% block _config_trackingconfig_widget %}
|
||||
<h4 class="fw-sb mt-48 mb-xs">{{ 'mautic.config.tab.pagetracking'|trans }}</h4>
|
||||
<div class="text-muted small pb-md">{{ 'mautic.core.config.header.pagetracking.description'|trans }}</div>
|
||||
<div class="row">
|
||||
<div class="panel panel-default mb-md">
|
||||
<div class="panel-body">
|
||||
<div class="form-group">
|
||||
<p>{{ 'mautic.config.tab.pagetracking.info'|trans|purify }}</p>
|
||||
{% include '@MauticCore/Components/code-snippet.html.twig' with {
|
||||
variant: 'multi',
|
||||
innerText: '<script>
|
||||
(function(w,d,t,u,n,a,m){w[\'MauticTrackingObject\']=n;
|
||||
w[n]=w[n]||function(){(w[n].q=w[n].q||[]).push(arguments)},a=d.createElement(t),
|
||||
m=d.getElementsByTagName(t)[0];a.async=1;a.src=u;m.parentNode.insertBefore(a,m)
|
||||
})(window,document,\'script\',\'' ~ url('mautic_js') ~ '\',\'mt\');
|
||||
mt(\'send\', \'pageview\');
|
||||
</script>',
|
||||
} %}
|
||||
</div>
|
||||
<div class="row">
|
||||
<hr>
|
||||
{% for name, f in form.children %}
|
||||
{% if name in ['anonymize_ip', 'track_contact_by_ip', 'do_not_track_404_anonymous'] %}
|
||||
<div class="col-xs-12">
|
||||
{{ form_row(f) }}
|
||||
{% if name == 'anonymize_ip' %}
|
||||
<div class="anonymize_ip_address hide text-danger">{{ 'mautic.page.config.form.anonymize_ip.warning'|trans }}</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h4 class="fw-sb mt-48 mb-xs">{{ 'mautic.config.tab.tracking.facebook.pixel'|trans }}</h4>
|
||||
<div class="text-muted small pb-md">{{ 'mautic.core.config.header.tracking.facebook.pixel.description'|trans }}</div>
|
||||
<div class="row">
|
||||
<div class="panel panel-default mb-md">
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
{{ form_row(form.facebook_pixel_id) }}
|
||||
</div>
|
||||
<hr>
|
||||
{% for name, f in form.children %}
|
||||
{% if name in ['facebook_pixel_trackingpage_enabled', 'facebook_pixel_landingpage_enabled'] %}
|
||||
<div class="col-xs-12">
|
||||
{{ form_row(f) }}
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h4 class="fw-sb mt-48 mb-xs">{{ 'mautic.config.tab.tracking.google.analytics'|trans }}</h4>
|
||||
<div class="text-muted small pb-md">{{ 'mautic.core.config.header.tracking.google.analytics.description'|trans }}</div>
|
||||
<div class="row">
|
||||
<div class="panel panel-default mb-md">
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
{{ form_row(form.google_analytics_id) }}
|
||||
</div>
|
||||
<hr>
|
||||
{% for name, f in form.children %}
|
||||
{% if name in ['google_analytics_trackingpage_enabled', 'google_analytics_landingpage_enabled', 'google_analytics_anonymize_ip'] %}
|
||||
<div class="col-xs-12">
|
||||
{{ form_row(f) }}
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
@@ -0,0 +1,3 @@
|
||||
{% block _page_abtest_settings_properties_row %}
|
||||
{{ form_widget(form) }}
|
||||
{% endblock %}
|
||||
@@ -0,0 +1,3 @@
|
||||
{% block _page_variantSettings_properties_row %}
|
||||
{{ form_widget(form) }}
|
||||
{% endblock %}
|
||||
@@ -0,0 +1,95 @@
|
||||
{% block pointaction_urlhit_widget %}
|
||||
{%- set timeFrames = {
|
||||
's': 'mautic.core.time.seconds'|trans,
|
||||
'i': 'mautic.core.time.minutes'|trans,
|
||||
'H': 'mautic.core.time.hours'|trans,
|
||||
'd': 'mautic.core.time.days'|trans,
|
||||
} %}
|
||||
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
{{ form_row(form['page_url']) }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
{{ form_row(form['page_hits']) }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-xs-12 form-group ">
|
||||
{{ form_label(form['returns_within']) }}
|
||||
<div class="input-group">
|
||||
{{ form_widget(form['returns_within']) }}
|
||||
{%- set default = form.returns_within_unit.vars.data %}
|
||||
<div class="input-group-btn">
|
||||
<button type="button" class="btn btn-ghost dropdown-toggle" data-toggle="dropdown">
|
||||
<span class="returns_within_label">{{ timeFrames[default] }}</span> <span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu time-dropdown">
|
||||
{%- for abbr, label in timeFrames %}
|
||||
<li><a href="#" data-time="{{ abbr }}" data-field="returns_within">{{ label }}</a></li>
|
||||
{%- endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
{{ form_errors(form['returns_within']) }}
|
||||
{{ form_widget(form['returns_within_unit']) }}
|
||||
</div>
|
||||
|
||||
<div class="col-xs-12 form-group ">
|
||||
{{ form_label(form['returns_after']) }}
|
||||
<div class="input-group">
|
||||
{{ form_widget(form['returns_after']) }}
|
||||
{%- set default = form['returns_after_unit'].vars['data'] %}
|
||||
<div class="input-group-btn">
|
||||
<button type="button" class="btn btn-ghost dropdown-toggle" data-toggle="dropdown">
|
||||
<span class="returns_after_label">{{ timeFrames[default] }}</span> <span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu time-dropdown">
|
||||
{%- for abbr, label in timeFrames %}
|
||||
<li><a href="#" data-time="{{ abbr }}" data-field="returns_after">{{ label }}</a></li>
|
||||
{%- endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
{{ form_errors(form['returns_after']) }}
|
||||
{{ form_widget(form['returns_after_unit']) }}
|
||||
</div>
|
||||
|
||||
|
||||
<div class="col-xs-12 form-group ">
|
||||
{{ form_label(form['accumulative_time']) }}
|
||||
<div class="input-group">
|
||||
{{ form_widget(form['accumulative_time']) }}
|
||||
{%- set default = form['accumulative_time_unit'].vars['data'] %}
|
||||
<div class="input-group-btn">
|
||||
<button type="button" class="btn btn-ghost dropdown-toggle" data-toggle="dropdown">
|
||||
<span class="accumulative_time_label">{{ timeFrames[default] }}</span> <span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu time-dropdown">
|
||||
{%- for abbr, label in timeFrames %}
|
||||
<li><a href="#" data-time="{{ abbr }}" data-field="accumulative_time">{{ label }}</a></li>
|
||||
{%- endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
{{ form_errors(form['accumulative_time']) }}
|
||||
{{ form_widget(form['accumulative_time_unit']) }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
mQuery('.time-dropdown li a').click(function (e) {
|
||||
e.preventDefault();
|
||||
var selected = mQuery(this).data('time');
|
||||
var label = mQuery(this).html();
|
||||
var field = mQuery(this).data('field');
|
||||
|
||||
mQuery('#point_properties_' + field + '_unit').val(selected);
|
||||
mQuery('.' + field + '_label').html(label);
|
||||
});
|
||||
</script>
|
||||
{% endblock %}
|
||||
@@ -0,0 +1,230 @@
|
||||
{#
|
||||
Variables
|
||||
- searchValue
|
||||
- items
|
||||
- categories
|
||||
- page
|
||||
- limit
|
||||
- permissions
|
||||
- model
|
||||
- tmpl
|
||||
- security
|
||||
#}
|
||||
{% if items|length > 0 %}
|
||||
<div class="table-responsive page-list">
|
||||
<table class="table table-hover pagetable-list" id="pageTable">
|
||||
<thead>
|
||||
<tr>
|
||||
{{ include('@MauticCore/Helper/tableheader.html.twig', {
|
||||
'checkall': 'true',
|
||||
'target': '#pageTable',
|
||||
}) }}
|
||||
|
||||
{{ include('@MauticCore/Helper/tableheader.html.twig', {
|
||||
'sessionVar': 'page',
|
||||
'orderBy': 'p.title',
|
||||
'text': 'mautic.core.title',
|
||||
'class': 'col-page-title',
|
||||
}) }}
|
||||
|
||||
{{ include('@MauticCore/Helper/tableheader.html.twig', {
|
||||
'sessionVar': 'page',
|
||||
'orderBy': 'c.title',
|
||||
'text': 'mautic.core.category',
|
||||
'class': 'visible-md visible-lg col-page-category',
|
||||
}) }}
|
||||
|
||||
{{ include('@MauticCore/Helper/tableheader.html.twig', {
|
||||
'sessionVar': 'page',
|
||||
'orderBy': 'p.template',
|
||||
'text': 'mautic.core.form.theme',
|
||||
'class': 'visible-md visible-lg col-page-template',
|
||||
}) }}
|
||||
|
||||
{{ include('@MauticCore/Helper/tableheader.html.twig', {
|
||||
'sessionVar': 'page',
|
||||
'orderBy': 'p.hits',
|
||||
'text': 'mautic.page.thead.hits',
|
||||
'class': 'col-page-hits visible-md visible-lg',
|
||||
}) }}
|
||||
|
||||
{{ include('@MauticCore/Helper/tableheader.html.twig', {
|
||||
'sessionVar': 'page',
|
||||
'orderBy': 'p.dateAdded',
|
||||
'text': 'mautic.lead.import.label.dateAdded',
|
||||
'class': 'col-page-dateAdded visible-md visible-lg',
|
||||
}) }}
|
||||
|
||||
{{ include('@MauticCore/Helper/tableheader.html.twig', {
|
||||
'sessionVar': 'page',
|
||||
'orderBy': 'p.dateModified',
|
||||
'text': 'mautic.lead.import.label.dateModified',
|
||||
'class': 'col-page-dateModified visible-md visible-lg',
|
||||
'default': true,
|
||||
}) }}
|
||||
|
||||
{{ include('@MauticCore/Helper/tableheader.html.twig', {
|
||||
'sessionVar': 'page',
|
||||
'orderBy': 'p.createdByUser',
|
||||
'text': 'mautic.core.createdby',
|
||||
'class': 'col-page-createdByUser visible-md visible-lg',
|
||||
}) }}
|
||||
|
||||
{{ include('@MauticCore/Helper/tableheader.html.twig', {
|
||||
'sessionVar': 'page',
|
||||
'orderBy': 'submission_count',
|
||||
'text': 'mautic.form.form.results',
|
||||
'class': 'visible-md visible-lg col-page-submissions',
|
||||
}) }}
|
||||
|
||||
{{ include('@MauticCore/Helper/tableheader.html.twig', {
|
||||
'sessionVar': 'page',
|
||||
'orderBy': 'p.id',
|
||||
'text': 'mautic.core.id',
|
||||
'class': 'col-page-id visible-md visible-lg',
|
||||
}) }}
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for i in items %}
|
||||
{% set item = i[0] %}
|
||||
<tr>
|
||||
<td>
|
||||
{{ include('@MauticCore/Helper/list_actions.html.twig', {
|
||||
'item': item,
|
||||
'templateButtons': {
|
||||
'edit': securityHasEntityAccess(permissions['page:pages:editown'], permissions['page:pages:editother'], item.createdBy),
|
||||
'clone': permissions['page:pages:create'],
|
||||
'delete': securityHasEntityAccess(permissions['page:pages:deleteown'], permissions['page:pages:deleteother'], item.createdBy),
|
||||
},
|
||||
'routeBase': 'page',
|
||||
'nameGetter': 'getTitle',
|
||||
'customButtons': {
|
||||
'preview': {
|
||||
'attr': {
|
||||
'class': 'btn btn-ghost btn-sm btn-nospin',
|
||||
'href': path('mautic_page_preview', {'id': item.id}),
|
||||
'target': '_blank',
|
||||
'data-toggle': '',
|
||||
},
|
||||
'iconClass': 'ri-external-link-line',
|
||||
'btnText': 'mautic.core.open_link'|trans,
|
||||
'priority': 100
|
||||
},
|
||||
'results': {
|
||||
'attr': {
|
||||
'class': 'btn btn-ghost btn-sm btn-nospin',
|
||||
'href': path('mautic_page_results', {'objectId': item.id}),
|
||||
'data-toggle': 'ajax',
|
||||
'data-menu-link': 'mautic_form_index'
|
||||
},
|
||||
'iconClass': 'ri-bar-chart-line',
|
||||
'btnText': 'mautic.form.form.results'|trans,
|
||||
'priority': 80
|
||||
}
|
||||
}|merge(not item.isPreferenceCenter ? {
|
||||
'copy': {
|
||||
'attr': {
|
||||
'data-copy': url('mautic_page_public', {'slug': item.alias}),
|
||||
'data-toggle': 'none',
|
||||
},
|
||||
'btnText': 'mautic.core.copy_page_link'|trans,
|
||||
'iconClass': 'ri-clipboard-line',
|
||||
'priority': 90
|
||||
}
|
||||
} : {})
|
||||
}) }}
|
||||
</td>
|
||||
<td>
|
||||
{{ include('@MauticCore/Helper/publishstatus_icon.html.twig', {'item': item, 'model': 'page.page'}) }}
|
||||
<a href="{{ path('mautic_page_action', {'objectAction': 'view', 'objectId': item.id}) }}" data-toggle="ajax">
|
||||
{{ item.title }} ({{ item.alias }})
|
||||
{% if item.isVariant or item.isTranslation or item.isPreferenceCenter or pageConfig.isDraftEnabled %}
|
||||
<span>
|
||||
{% if item.isVariant %}
|
||||
<span data-toggle="tooltip" title="{{ 'mautic.core.icon_tooltip.ab_test'|trans }}">
|
||||
<i class="ri-fw ri-organization-chart"></i>
|
||||
</span>
|
||||
{% endif %}
|
||||
{% if item.isTranslation %}
|
||||
<span data-toggle="tooltip" title="{{ 'mautic.core.icon_tooltip.translation'|trans }}">
|
||||
<i class="ri-fw ri-translate"></i>
|
||||
</span>
|
||||
{% endif %}
|
||||
{% if item.isPreferenceCenter %}
|
||||
<span data-toggle="tooltip" title="{{ 'mautic.core.icon_tooltip.preference_center'|trans }}">
|
||||
<i class="ri-settings-5-line"></i>
|
||||
</span>
|
||||
{% endif %}
|
||||
{% if pageConfig.isDraftEnabled and item.hasDraft %}
|
||||
<span data-toggle="tooltip" title="{{ 'mautic.email.icon_tooltip.has_draft'|trans }}">
|
||||
<i class="fa fa-fw fa-file"></i>
|
||||
</span>
|
||||
{% endif %}
|
||||
</span>
|
||||
{% endif %}
|
||||
</a>
|
||||
{{ customContent('page.name', _context) }}
|
||||
{{ include('@MauticProject/Modules/projects.html.twig') }}
|
||||
</td>
|
||||
<td class="visible-md visible-lg">
|
||||
{{ include('@MauticCore/Modules/category--expanded.html.twig', {'category': item.category}) }}
|
||||
</td>
|
||||
<td class="visible-md visible-lg">
|
||||
{% if item.template %}
|
||||
{{ getThemeName(item.template) }}
|
||||
{% else %}
|
||||
<span class="text-muted">{{ 'mautic.core.form.default'|trans }}</span>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td class="visible-md visible-lg">{{ item.hits }}</td>
|
||||
<td class="visible-md visible-lg" title="{% if item.dateAdded %}{{ dateToFullConcat(item.dateAdded) }}{% endif %}">
|
||||
{% if item.dateAdded %}{{ dateToDate(item.dateAdded) }}{% endif %}
|
||||
</td>
|
||||
<td class="visible-md visible-lg" title="{% if item.dateModified %}{{ dateToFullConcat(item.dateModified) }}{% endif %}">
|
||||
{% if item.dateModified %}{{ dateToDate(item.dateModified) }}{% endif %}
|
||||
</td>
|
||||
<td class="visible-md visible-lg">{{ item.createdByUser }}</td>
|
||||
<td class="visible-md visible-lg">
|
||||
<a href="{{ path('mautic_page_results', {'objectId': item.id}) }}" data-toggle="ajax" data-menu-link="mautic_form_index" size="sm" class="label label-gray" {% if 0 == i.submission_count %}disabled="disabled"{% endif %}>
|
||||
{{- 'mautic.form.form.viewresults'|trans({'%count%': i.submission_count}) -}}
|
||||
</a>
|
||||
</td>
|
||||
<td class="visible-md visible-lg">{{ item.id }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="panel-footer">
|
||||
{{ include('@MauticCore/Helper/pagination.html.twig', {
|
||||
'totalItems': items|length,
|
||||
'page': page,
|
||||
'limit': limit,
|
||||
'menuLinkId': 'mautic_page_index',
|
||||
'baseUrl': path('mautic_page_index'),
|
||||
'sessionVar': 'page',
|
||||
}) }}
|
||||
</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': 'landing-page',
|
||||
'size': '80'
|
||||
} %}
|
||||
</div>
|
||||
{% endset %}
|
||||
|
||||
{{ include('@MauticCore/Components/content-block.html.twig', {
|
||||
heading: 'mautic.page.contentblock.heading',
|
||||
subheading: 'mautic.page.contentblock.subheading',
|
||||
childContainer: childContainer,
|
||||
}) }}
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
@@ -0,0 +1,367 @@
|
||||
{#
|
||||
Variables
|
||||
- activePage (\Mautic\PageBundle\Entity\Page)
|
||||
- variants
|
||||
- translations
|
||||
- permissions
|
||||
- stats
|
||||
- abTestResults
|
||||
- security
|
||||
- pageUrl
|
||||
- previewUrl
|
||||
- logs
|
||||
- dateRangeForm
|
||||
|
||||
@todo - add landing page stats/analytics
|
||||
#}
|
||||
{# Only show A/B test button if not already a translation of an a/b test #}
|
||||
{% set allowAbTest = (activePage.isPreferenceCenter or (activePage.isTranslation(true) and translations.parent.isVariant)) ? false : true %}
|
||||
|
||||
{% extends '@MauticCore/Default/content.html.twig' %}
|
||||
|
||||
{% block mauticContent %}page{% endblock %}
|
||||
|
||||
{% block preHeader %}
|
||||
{{ include('@MauticCore/Helper/page_actions.html.twig', {
|
||||
'item': activePage,
|
||||
'customButtons': customButtons|default([]),
|
||||
'templateButtons': {
|
||||
'close': securityHasEntityAccess( permissions['page:pages:viewown'], permissions['page:pages:viewother'], activePage.createdBy),
|
||||
},
|
||||
'routeBase': 'page',
|
||||
'targetLabel': 'mautic.page.pages'|trans
|
||||
}) }}
|
||||
{{ include('@MauticCore/Modules/category--inline.html.twig', {'category': activePage.category}) }}
|
||||
{{ include('@MauticProject/Modules/projects.html.twig', {'item': activePage}) }}
|
||||
{% endblock %}
|
||||
|
||||
{% block headerTitle %}{{ activePage.title }}{% endblock %}
|
||||
|
||||
{% block actions %}
|
||||
{{ include('@MauticCore/Helper/page_actions.html.twig', {
|
||||
'item': activePage,
|
||||
'customButtons': customButtons|default([]),
|
||||
'templateButtons': {
|
||||
'edit': securityHasEntityAccess(permissions['page:pages:editown'], permissions['page:pages:editother'], activePage.createdBy),
|
||||
'abtest': allowAbTest and permissions['page:pages:create'],
|
||||
'clone': permissions['page:pages:create'],
|
||||
'delete': securityHasEntityAccess(permissions['page:pages:deleteown'], permissions['page:pages:deleteown'], activePage.createdBy),
|
||||
},
|
||||
'routeBase': 'page',
|
||||
}) }}
|
||||
{% endblock %}
|
||||
|
||||
{% block publishStatus %}
|
||||
{{- include('@MauticCore/Helper/publishstatus_badge.html.twig', {
|
||||
'entity': activePage,
|
||||
'status': 'available'
|
||||
}) -}}
|
||||
<div class="label__divider"></div>
|
||||
|
||||
{% set blueTags = [] %}
|
||||
{% set grayTags = [] %}
|
||||
|
||||
{% if activePage.isPreferenceCenter %}
|
||||
{% set blueTags = blueTags|merge([{ type: 'read-only', color: 'blue', icon_only: true, label: 'mautic.email.form.preference_center', icon: 'ri-equalizer-2-fill' }]) %}
|
||||
{% endif %}
|
||||
|
||||
{% if activePage.isTranslation and not activePage.isTranslation(true) %}
|
||||
{% set blueTags = blueTags|merge([{ color: 'blue', label: 'mautic.core.icon_tooltip.translation', icon: 'ri-translate', icon_only: true }]) %}
|
||||
{% endif %}
|
||||
|
||||
{% if activePage.noIndex is defined and activePage.noIndex == 1 %}
|
||||
{% set blueTags = blueTags|merge([{ label: 'mautic.core.tag.search_index.disabled'|trans, icon: 'ri-eye-off-fill', color: 'blue', icon_only: true }]) %}
|
||||
{% endif %}
|
||||
|
||||
{% if activePage.isVariant and not activePage.isVariant(true) %}
|
||||
{% set grayTags = grayTags|merge([{ type: 'read-only', color: 'warm-gray', label: 'mautic.email.icon_tooltip.abtest' }]) %}
|
||||
{% endif %}
|
||||
|
||||
{% if activePage.isVariant(true) %}
|
||||
{% set grayTags = grayTags|merge([{ color: 'warm-gray', label: 'mautic.core.variant_of'|trans({'%parent%' : variants.parent.getName()}), icon: 'ri-organization-chart' }]) %}
|
||||
{% endif %}
|
||||
|
||||
{% if activePage.isTranslation(true) %}
|
||||
{% set grayTags = grayTags|merge([{
|
||||
color: 'warm-gray',
|
||||
label: 'mautic.core.translation_of'|trans({'%parent%' : translations.parent.getName()}),
|
||||
icon: 'ri-translate',
|
||||
attributes: {
|
||||
'href': path('mautic_page_action', {'objectAction': 'view', 'objectId': translations.parent.id})
|
||||
}
|
||||
}]) %}
|
||||
{% endif %}
|
||||
|
||||
{% if activePage.language is defined and activePage.language is not empty %}
|
||||
{% set grayTags = grayTags|merge([{ label: activePage.language|language_name, icon: 'ri-translate-2', color: 'warm-gray', attributes: { 'data-toggle': 'tooltip', 'data-placement': 'top', 'title': 'mautic.core.language'|trans } }]) %}
|
||||
{% endif %}
|
||||
|
||||
{% include '@MauticCore/Helper/_tag.html.twig' with { tags: blueTags|merge(grayTags) } %}
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% set variantContent = include('@MauticCore/Variant/index.html.twig', {
|
||||
'activeEntity': activePage,
|
||||
'variants': variants,
|
||||
'abTestResults': abTestResults,
|
||||
'model': 'page',
|
||||
'actionRoute': 'mautic_page_action',
|
||||
'nameGetter': 'getTitle',
|
||||
})|trim %}
|
||||
{% set showVariants = variantContent is not empty %}
|
||||
|
||||
{% set translationContent = include('@MauticCore/Translation/index.html.twig', {
|
||||
'activeEntity': activePage,
|
||||
'translations': translations,
|
||||
'model': 'page',
|
||||
'actionRoute': 'mautic_page_action',
|
||||
'nameGetter': 'getTitle',
|
||||
})|trim %}
|
||||
{% set showTranslations = translationContent is not empty %}
|
||||
|
||||
<!-- start: box layout -->
|
||||
<div class="box-layout">
|
||||
<!-- left section -->
|
||||
<div class="col-md-9 height-auto">
|
||||
<div>
|
||||
<!-- page detail header -->
|
||||
{% include '@MauticCore/Helper/description--expanded.html.twig' with {
|
||||
'description': activePage.metaDescription
|
||||
} %}
|
||||
<!--/ page detail header -->
|
||||
|
||||
<!-- page detail collapseable -->
|
||||
<div class="collapse pr-md pl-md" id="page-details">
|
||||
<div class="pr-md pl-md pb-md">
|
||||
<div class="panel shd-none mb-0">
|
||||
<table class="table table-hover mb-0">
|
||||
<tbody>
|
||||
{{ include('@MauticCore/Helper/details.html.twig', {'entity': activePage}, with_context=false) }}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--/ page detail collapseable -->
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<!-- page detail collapseable toggler -->
|
||||
<div class="hr-expand nm">
|
||||
<span data-toggle="tooltip" title="Detail">
|
||||
<a href="javascript:void(0)" class="arrow text-secondary collapsed" data-toggle="collapse" data-target="#page-details">
|
||||
<span class="caret"></span> {{ 'mautic.core.details'|trans }}
|
||||
</a>
|
||||
</span>
|
||||
</div>
|
||||
<!--/ page detail collapseable toggler -->
|
||||
|
||||
<!-- some stats -->
|
||||
<div class="pa-md">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="panel">
|
||||
<div class="panel-body box-layout">
|
||||
<div class="col-md-3 va-m">
|
||||
<h5 class="text-white dark-md fw-sb mb-xs">
|
||||
<span class="ri-line-chart-fill"></span>
|
||||
{{ 'mautic.page.pageviews'|trans }}
|
||||
</h5>
|
||||
</div>
|
||||
<div class="col-md-9 va-m">
|
||||
{{ include('@MauticCore/Helper/graph_dateselect.html.twig', {'dateRangeForm': dateRangeForm, 'class': 'pull-right'}) }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="d-flex fd-column pt-0 pl-15 pb-15 pr-15 min-h-256">
|
||||
{{ include('@MauticCore/Helper/chart.html.twig', {'chartData': stats.pageviews, 'chartType': 'line', 'chartHeight': 300}) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--/ stats -->
|
||||
|
||||
{{ customContent('details.stats.graph.below', _context) }}
|
||||
|
||||
<!-- tabs controls -->
|
||||
<ul class="nav nav-tabs nav-tabs-contained">
|
||||
{% if showVariants %}
|
||||
<li class="active">
|
||||
<a href="#variants-container" role="tab" data-toggle="tab">
|
||||
{{- 'mautic.core.variants'|trans -}}
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% if showTranslations %}
|
||||
<li class="{% if not showVariants %}active{% endif %}">
|
||||
<a href="#translation-container" role="tab" data-toggle="tab">
|
||||
{{- 'mautic.core.translations'|trans -}}
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
<!--/ tabs controls -->
|
||||
</div>
|
||||
|
||||
{% if showVariants or showTranslations %}
|
||||
<!-- start: tab-content -->
|
||||
<div class="tab-content pa-md">
|
||||
{% if showVariants %}
|
||||
<!-- #variants-container -->
|
||||
<div class="tab-pane active bdr-w-0" id="variants-container">
|
||||
{{ variantContent|raw }}
|
||||
</div>
|
||||
<!--/ #variants-container -->
|
||||
{% endif %}
|
||||
<!-- #translation-container -->
|
||||
{% if showTranslations %}
|
||||
<div class="tab-pane {% if not showVariants %}active{% endif %} bdr-w-0" id="translation-container">
|
||||
{{ translationContent|raw }}
|
||||
</div>
|
||||
{% endif %}
|
||||
<!--/ #translation-container -->
|
||||
</div>
|
||||
<!--/ end: tab-content -->
|
||||
{% endif %}
|
||||
|
||||
{% set additionalCards = [{
|
||||
heading: 'mautic.page.results.view',
|
||||
copy: (not showVariants and not showTranslations) ? 'mautic.page.results.view.description' : null,
|
||||
pictogram: 'data--set',
|
||||
href: path('mautic_page_results', {'objectId': activePage.id}),
|
||||
attributes: {
|
||||
'data-toggle': 'ajax',
|
||||
'data-menu-link': 'mautic_form_index'
|
||||
}
|
||||
}] %}
|
||||
|
||||
{{ include('@MauticCore/Modules/suggested-actions.html.twig', {
|
||||
'entity': activePage,
|
||||
'routeBase': 'page',
|
||||
'showVariants': showVariants,
|
||||
'showTranslations': showTranslations,
|
||||
'allowAbTest': allowAbTest,
|
||||
'additionalCards': additionalCards
|
||||
}) }}
|
||||
</div>
|
||||
<!--/ left section -->
|
||||
|
||||
<!-- right section -->
|
||||
<div class="col-md-3 bdr-l height-auto">
|
||||
<!-- preview URL -->
|
||||
{% if not activePage.isPreferenceCenter %}
|
||||
<div class="panel shd-none bdr-rds-0 bdr-w-0 mt-sm mb-0">
|
||||
<div class="panel-body pt-xs">
|
||||
{% include '@MauticCore/Components/card.html.twig' with {
|
||||
type: 'link',
|
||||
href: pageUrl,
|
||||
ctaType: 'new tab',
|
||||
heading: 'mautic.core.open_link',
|
||||
attributes: {
|
||||
'target': '_blank'
|
||||
}
|
||||
} %}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="panel shd-none bdr-rds-0 bdr-w-0 mt-sm mb-0">
|
||||
<div class="panel-heading">
|
||||
<div class="panel-title">{{ 'mautic.page.preview.url'|trans }}</div>
|
||||
</div>
|
||||
<div class="panel-body pt-xs">
|
||||
{% if previewSettingsForm.translation is defined %}
|
||||
<div class="row">
|
||||
<div class="form-group col-xs-12 ">
|
||||
<div class="control-label">{{ 'mautic.email.preview.show.translation'|trans }}</div>
|
||||
{{ form_widget(previewSettingsForm.translation) }}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if previewSettingsForm.variant is defined %}
|
||||
<div class="row">
|
||||
<div class="form-group col-xs-12 ">
|
||||
<div class="control-label">{{ 'mautic.email.preview.show.ab.variant'|trans }}</div>
|
||||
{{ form_widget(previewSettingsForm.variant) }}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if previewSettingsForm.contact is defined %}
|
||||
<div class="row">
|
||||
<div class="form-group col-xs-12 ">
|
||||
<div class="control-label">{{ 'mautic.page.preview.show.contact'|trans }}</div>
|
||||
{{ form_widget(previewSettingsForm.contact) }}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="row">
|
||||
<div class="form-group col-xs-12 ">
|
||||
<div class="input-group">
|
||||
<div class="input-group-addon">
|
||||
{{- include('@MauticCore/Helper/publishstatus_icon.html.twig', {
|
||||
'item' : activePage,
|
||||
'model' : 'page',
|
||||
'query' : 'customToggle=publicPreview'
|
||||
}) -}}
|
||||
</div>
|
||||
<input id="content_preview_url"
|
||||
data-route="page/preview"
|
||||
onclick="this.setSelectionRange(0, this.value.length);"
|
||||
type="text"
|
||||
class="form-control"
|
||||
readonly
|
||||
value="{{ previewUrl|e }}"/>
|
||||
<span class="input-group-btn">
|
||||
{% include '@MauticCore/Helper/button.html.twig' with {
|
||||
buttons: [
|
||||
{
|
||||
label: 'mautic.core.open_link',
|
||||
variant: 'ghost',
|
||||
icon_only: true,
|
||||
icon: 'ri-external-link-line',
|
||||
onclick: 'window.open("' ~ previewUrl ~ '", "_blank");',
|
||||
attributes: {
|
||||
'id': 'content_preview_url_button',
|
||||
'class': 'btn-nospin'
|
||||
}
|
||||
}
|
||||
]
|
||||
} %}
|
||||
</span>
|
||||
<input type="hidden" id="content_preview_settings_object_id" value="{{ activePage.id }}">
|
||||
<input type="hidden" id="content_preview_settings_contact_id" value="">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% if draftPreviewUrl is not empty %}
|
||||
<div class="panel bg-transparent shd-none bdr-rds-0 bdr-w-0 mt-sm mb-0">
|
||||
<div class="panel-heading">
|
||||
<div class="panel-title">{{ 'mautic.email.draft.preview.url'|trans }}</div>
|
||||
</div>
|
||||
<div class="panel-body pt-xs">
|
||||
<div class="input-group">
|
||||
<input onclick="this.setSelectionRange(0, this.value.length);" type="text" class="form-control"
|
||||
readonly
|
||||
value="{{ draftPreviewUrl|e }}"/>
|
||||
<span class="input-group-btn">
|
||||
<button class="btn btn-default btn-nospin"
|
||||
onclick="window.open('{{ draftPreviewUrl }}', '_blank');">
|
||||
<i class="fa fa-external-link"></i>
|
||||
</button>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
<!--/ preview URL -->
|
||||
<hr class="hr-w-2" style="width:50%">
|
||||
<!-- recent activity -->
|
||||
{{ include('@MauticCore/Helper/recentactivity.html.twig', {'logs': logs}, with_context=false) }}
|
||||
</div>
|
||||
<!--/ right section -->
|
||||
</div>
|
||||
|
||||
<!--/ end: box layout -->
|
||||
{% endblock %}
|
||||
@@ -0,0 +1,152 @@
|
||||
{#
|
||||
Variables
|
||||
- form
|
||||
- isVariant
|
||||
- tokens
|
||||
- activePage
|
||||
- themes
|
||||
- permissions
|
||||
- previewUrl (optional)
|
||||
- security (optional)
|
||||
- Defined when editing page
|
||||
#}
|
||||
{% form_theme form with [
|
||||
'@MauticPage/FormTheme/Page/_page_abtest_settings_properties_row.html.twig',
|
||||
'@MauticPage/FormTheme/Page/_page_variantSettings_properties_row.html.twig',
|
||||
] %}
|
||||
{% set isExisting = activePage.id %}
|
||||
{% set variantParent = activePage.variantParent %}
|
||||
{% set previewUrl = previewUrl|default('') %}
|
||||
{% set draftPreviewUrl = draftPreviewUrl|default('') %}
|
||||
|
||||
{% extends '@MauticCore/Default/content.html.twig' %}
|
||||
|
||||
{% block mauticContent %}page{% endblock %}
|
||||
|
||||
{% block headerTitle %}
|
||||
{%- if isExisting -%}
|
||||
{{ 'mautic.page.header.edit'|trans({'%name%': activePage.title}) }}
|
||||
{%- else -%}
|
||||
{{ 'mautic.page.header.new'|trans }}
|
||||
{%- endif -%}
|
||||
{% if variantParent %}
|
||||
<div><span class="small">{{ 'mautic.core.variant_of'|trans({'%name%': activePage.title, '%parent%': variantParent.title}) }}</span></div>
|
||||
{% elseif activePage.isVariant(false) %}
|
||||
<div><span class="small">{{ 'mautic.page.form.has_variants'|trans }}</span></div>
|
||||
{%- endif -%}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div id="grapesjsbuilder_assets" class="hide"></div>
|
||||
|
||||
{% set template, attr = form.template.vars.data, form.vars.attr %}
|
||||
{% set attr = attr|merge({
|
||||
'data-submit-callback-async': 'clearThemeHtmlBeforeSave',
|
||||
}) %}
|
||||
|
||||
{{ form_start(form, {'attr': attr}) }}
|
||||
<!-- start: box layout -->
|
||||
<div class="box-layout">
|
||||
<!-- container -->
|
||||
<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="#theme-container" role="tab" data-toggle="tab">{{ 'mautic.core.form.theme'|trans }}</a>
|
||||
</li>
|
||||
<li id="advanced-tab" class="hidden">
|
||||
<a href="#advanced-container" role="tab" data-toggle="tab">{{ 'mautic.core.advanced'|trans }}</a>
|
||||
</li>
|
||||
</ul>
|
||||
<!--/ tabs controls -->
|
||||
|
||||
<div class="tab-content pa-md">
|
||||
<div class="tab-pane fade in active bdr-w-0" id="theme-container">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
{{ form_row(form.template) }}
|
||||
</div>
|
||||
</div>
|
||||
{{ include('@MauticCore/Helper/theme_select.html.twig', {
|
||||
'type': 'page',
|
||||
'themes': themes,
|
||||
'active': form.template.vars.value,
|
||||
}, with_context=false) }}
|
||||
</div>
|
||||
|
||||
<div class="tab-pane fade bdr-w-0" id="advanced-container">
|
||||
<br>
|
||||
<div class="row hidden" id="custom-html-row">
|
||||
<div class="col-md-12">
|
||||
{{ form_label(form.customHtml) }}
|
||||
{{ form_widget(form.customHtml) }}
|
||||
</div>
|
||||
</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.title) }}
|
||||
{% if isVariant %}
|
||||
|
||||
{{ form_row(form.variantSettings) }}
|
||||
{% else %}
|
||||
{{ form_row(form.alias) }}
|
||||
{{ form_row(form.category) }}
|
||||
{{ form_row(form.projects) }}
|
||||
{{ form_row(form.language) }}
|
||||
{{ form_row(form.translationParent) }}
|
||||
{% endif %}
|
||||
|
||||
{{ form_row(form.isPublished, {
|
||||
'attr': {
|
||||
'data-none': 'mautic.core.form.unavailable_regardless_of_scheduling',
|
||||
'data-start': 'mautic.core.form.available_on_scheduled_date',
|
||||
'data-both': 'mautic.core.form.available_during_scheduled_period',
|
||||
'data-end': 'mautic.core.form.available_until_scheduled_end'
|
||||
}
|
||||
}) }}
|
||||
|
||||
{% if (permissions['page:preference_center:editown'] or permissions['page:preference_center:editother']) and not activePage.isVariant %}
|
||||
{{ form_row(form.isPreferenceCenter) }}
|
||||
{% endif %}
|
||||
|
||||
{{ form_row(form.publishUp, {'label': 'mautic.core.form.available.available_from'}) }}
|
||||
{{ form_row(form.publishDown, {'label': 'mautic.core.form.available.unavailable_from'}) }}
|
||||
|
||||
{% if not isVariant %}
|
||||
{{ form_row(form.redirectType) }}
|
||||
{{ form_row(form.redirectUrl) }}
|
||||
{% endif %}
|
||||
|
||||
{{ form_row(form.noIndex) }}
|
||||
<div class="template-fields {% if not template %}hide{% endif %}">
|
||||
{{ form_row(form.metaDescription) }}
|
||||
</div>
|
||||
<div class="template-fields {% if not template %}hide{% endif %}">
|
||||
{{ form_row(form.headScript) }}
|
||||
</div>
|
||||
<div class="template-fields {% if not template %}hide{% endif %}">
|
||||
{{ form_row(form.footerScript) }}
|
||||
</div>
|
||||
<div class="hide">
|
||||
{{ form_rest(form) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{ form_end(form) }}
|
||||
|
||||
{{ include('@MauticCore/Helper/builder.html.twig', {
|
||||
'type': 'page',
|
||||
'isCodeMode': ('mautic_code_mode' is same as activePage.template),
|
||||
'objectId': activePage.sessionId,
|
||||
'previewUrl': previewUrl,
|
||||
'draftPreviewUrl': draftPreviewUrl,
|
||||
}, with_context=false) }}
|
||||
{% endblock %}
|
||||
@@ -0,0 +1,98 @@
|
||||
{#
|
||||
Variables
|
||||
- searchValue
|
||||
- items
|
||||
- categories
|
||||
- page
|
||||
- limit
|
||||
- permissions
|
||||
- model
|
||||
- tmpl
|
||||
- security
|
||||
#}
|
||||
{% set isIndex = 'index' == tmpl ? true : false %}
|
||||
{% set tmpl = 'list' %}
|
||||
{% extends isIndex ? '@MauticCore/Default/content.html.twig' : '@MauticCore/Default/raw_output.html.twig' %}
|
||||
|
||||
{% block mauticContent %}page{% endblock %}
|
||||
|
||||
{% block headerTitle %}{{ 'mautic.page.pages'|trans }}{% endblock %}
|
||||
|
||||
{% 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,
|
||||
'searchHelp': 'mautic.page.help.searchcommands',
|
||||
'action': currentRoute,
|
||||
'page_actions': {
|
||||
'templateButtons': {
|
||||
'new': permissions['page:pages:create'],
|
||||
},
|
||||
'routeBase': 'page',
|
||||
},
|
||||
'bulk_actions': {
|
||||
'routeBase': 'page',
|
||||
'templateButtons': {
|
||||
'delete': permissions['page:pages:deleteown'] or permissions['page:pages:deleteother'],
|
||||
},
|
||||
},
|
||||
'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'
|
||||
},
|
||||
{
|
||||
'search': 'mautic.page.searchcommand.isexpired',
|
||||
'label': 'mautic.core.form.expired',
|
||||
'tooltip': 'mautic.page.searchcommand.isexpired.description',
|
||||
'icon': 'ri-time-line'
|
||||
},
|
||||
{
|
||||
'search': 'mautic.page.searchcommand.ispending',
|
||||
'label': 'mautic.core.form.pending',
|
||||
'tooltip': 'mautic.page.searchcommand.ispending.description',
|
||||
'icon': 'ri-timer-line'
|
||||
},
|
||||
{
|
||||
'search': 'mautic.page.searchcommand.isprefcenter',
|
||||
'label': 'mautic.page.searchcommand.isprefcenter.label',
|
||||
'tooltip': 'mautic.page.searchcommand.isprefcenter.description',
|
||||
'icon': 'ri-settings-4-line'
|
||||
}
|
||||
]
|
||||
}) }}
|
||||
<div class="page-list">
|
||||
{% endif %}
|
||||
|
||||
{{ include('@MauticPage/Page/_list.html.twig') }}
|
||||
|
||||
{% if isIndex %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{ include('@MauticCore/Modules/protip.html.twig', {
|
||||
tip: random(['mautic.protip.pages.mobile', 'mautic.protip.pages.forms'])
|
||||
}) }}
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
@@ -0,0 +1,95 @@
|
||||
{#
|
||||
Variables
|
||||
- activePage
|
||||
- items
|
||||
#}
|
||||
{% set pageId = activePage.id %}
|
||||
<div class="table-responsive table-responsive-force">
|
||||
<table class="table table-hover pageresult-list" id="pageResultsTable">
|
||||
<thead>
|
||||
<tr>
|
||||
{{ include('@MauticCore/Helper/tableheader.html.twig', {
|
||||
'sessionVar': 'pageresult.' ~ pageId,
|
||||
'orderBy': 's.id',
|
||||
'text': 'mautic.form.report.submission.id',
|
||||
'class': 'col-pageresult-id',
|
||||
'filterBy': 's.id',
|
||||
}) }}
|
||||
|
||||
{{ include('@MauticCore/Helper/tableheader.html.twig', {
|
||||
'sessionVar': 'pageresult.' ~ pageId,
|
||||
'orderBy': 's.lead_id',
|
||||
'text': 'mautic.lead.report.contact_id',
|
||||
'class': 'col-pageresult-lead-id',
|
||||
'filterBy': 's.lead_id',
|
||||
}) }}
|
||||
|
||||
{{ include('@MauticCore/Helper/tableheader.html.twig', {
|
||||
'sessionVar': 'pageresult.' ~ pageId,
|
||||
'orderBy': 's.form_id',
|
||||
'text': 'mautic.form.report.form_id',
|
||||
'class': 'col-pageresult-form-id',
|
||||
'filterBy': 's.form_id',
|
||||
}) }}
|
||||
|
||||
{{ include('@MauticCore/Helper/tableheader.html.twig', {
|
||||
'sessionVar': 'pageresult.' ~ pageId,
|
||||
'orderBy': 's.date_submitted',
|
||||
'text': 'mautic.form.result.thead.date',
|
||||
'class': 'col-pageresult-date',
|
||||
'default': true,
|
||||
'filterBy': 's.date_submitted',
|
||||
'dataToggle': 'date',
|
||||
}) }}
|
||||
|
||||
{{ include('@MauticCore/Helper/tableheader.html.twig', {
|
||||
'sessionVar': 'pageresult.' ~ pageId,
|
||||
'orderBy': 'i.ip_address',
|
||||
'text': 'mautic.core.ipaddress',
|
||||
'class': 'col-pageresult-ip',
|
||||
'filterBy': 'i.ip_address',
|
||||
}) }}
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% if items|length > 0 %}
|
||||
{% for item in items %}
|
||||
<tr>
|
||||
<td>{{ item.id|e }}</td>
|
||||
<td>
|
||||
{% if item.leadId is defined %}
|
||||
<a href="{{ path('mautic_contact_action', {'objectAction': 'view', 'objectId': item.leadId}) }}" data-toggle="ajax">
|
||||
{{- item.leadId|e -}}
|
||||
</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{% if item.formId is defined %}
|
||||
<a href="{{ path('mautic_form_action', {'objectAction': 'view', 'objectId': item.formId}) }}" data-toggle="ajax">
|
||||
{{- item.formId|e -}}
|
||||
</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>{{ dateToFull(item.dateSubmitted, 'UTC') }}</td>
|
||||
<td>{{ item.ipAddress|e }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
{{ include('@MauticCore/Helper/noresults.html.twig') }}
|
||||
</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="panel-footer">
|
||||
{{ include('@MauticCore/Helper/pagination.html.twig', {
|
||||
'totalItems': totalCount,
|
||||
'page': page,
|
||||
'limit': limit,
|
||||
'baseUrl': path('mautic_page_results', {'objectId': activePage.id}),
|
||||
'sessionVar': 'pageresult.' ~ pageId,
|
||||
}) }}
|
||||
</div>
|
||||
@@ -0,0 +1,39 @@
|
||||
{#
|
||||
Variables
|
||||
- pageTitle
|
||||
- results
|
||||
- page
|
||||
#}
|
||||
{% set contentOnly = true %}
|
||||
{% extends '@MauticCore/Default/content.html.twig' %}
|
||||
|
||||
{% block pageTitle %}{{ pageTitle }}{% endblock %}
|
||||
|
||||
{% block headerTitle %}{{ 'mautic.page.result.header.index'|trans({'%name%': page.getName()}) }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="pageresults">
|
||||
<table class="table table-hover pageresult-list">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="col-pageresult-id">{{ 'mautic.form.report.submission.id'|trans }}</th>
|
||||
<th class="col-pageresult-leadId">{{ 'mautic.lead.report.contact_id'|trans }}</th>
|
||||
<th class="col-pageresult-formId">{{ 'mautic.form.report.form_id'|trans }}</th>
|
||||
<th class="col-pageresult-date">{{ 'mautic.form.result.thead.date'|trans }}</th>
|
||||
<th class="col-pageresult-ip">{{ 'mautic.core.ipaddress'|trans }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for item in results %}
|
||||
<tr>
|
||||
<td>{{ item.id }}</td>
|
||||
<td>{{ item.leadId }}</td>
|
||||
<td>{{ item.formId }}</td>
|
||||
<td>{{ dateToFull(item.dateSubmitted, 'UTC') }}</td>
|
||||
<td>{{ item.ipAddress }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
{% endblock %}
|
||||
@@ -0,0 +1,79 @@
|
||||
{#
|
||||
Variables
|
||||
- activePage
|
||||
- items
|
||||
#}
|
||||
{% set isIndex = 'index' == tmpl ? true : false %}
|
||||
{% set tmpl = 'list' %}
|
||||
{% extends isIndex ? '@MauticCore/Default/content.html.twig' : '@MauticCore/Default/raw_output.html.twig' %}
|
||||
|
||||
{% block mauticContent %}pageresult{% endblock %}
|
||||
|
||||
{% block headerTitle %}
|
||||
{{ 'mautic.page.result.header.index'|trans({
|
||||
'%name%': activePage.getName(),
|
||||
}) }}
|
||||
{% endblock %}
|
||||
|
||||
{% block actions %}
|
||||
{% set buttons = [
|
||||
{
|
||||
'attr': {
|
||||
'target': '_new',
|
||||
'data-toggle': '',
|
||||
'class': 'btn btn-ghost btn-nospin',
|
||||
'href': path('mautic_page_export', {'objectId': activePage.id, 'format': 'html'}),
|
||||
},
|
||||
'btnText': 'mautic.form.result.export.html'|trans,
|
||||
'iconClass': 'ri-file-code-line',
|
||||
'primary': true,
|
||||
},
|
||||
{
|
||||
'attr': {
|
||||
'data-toggle': '',
|
||||
'class': 'btn btn-ghost btn-nospin',
|
||||
'href': path('mautic_page_export', {'objectId': activePage.id, 'format': 'csv'}),
|
||||
},
|
||||
'btnText': 'mautic.form.result.export.csv'|trans,
|
||||
'iconClass': 'ri-file-text-line',
|
||||
'primary': true,
|
||||
}
|
||||
] %}
|
||||
|
||||
{% if '\\PhpOffice\\PhpSpreadsheet\\Spreadsheet' is class %}
|
||||
{% set buttons = buttons|merge([{
|
||||
'attr': {
|
||||
'data-toggle': '',
|
||||
'class': 'btn btn-ghost btn-nospin',
|
||||
'href': path('mautic_page_export', {'objectId': activePage.id, 'format': 'xlsx'}),
|
||||
},
|
||||
'btnText': 'mautic.form.result.export.xlsx'|trans,
|
||||
'iconClass': 'ri-file-excel-2-fill',
|
||||
'primary': true,
|
||||
}]) %}
|
||||
{% endif %}
|
||||
|
||||
{% set buttons = buttons|merge([{
|
||||
'attr': {
|
||||
'class': 'btn btn-ghost',
|
||||
'href': path('mautic_page_action', {'objectAction': 'view', 'objectId': activePage.id}),
|
||||
'data-toggle': 'ajax',
|
||||
},
|
||||
'iconClass': 'ri-close-line',
|
||||
'btnText': 'mautic.core.form.close'|trans,
|
||||
}]) %}
|
||||
|
||||
{{ include('@MauticCore/Helper/page_actions.html.twig', {'customButtons': buttons}) }}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% if isIndex %}
|
||||
<div class="page-list">
|
||||
{% endif %}
|
||||
|
||||
{{ include('@MauticPage/Result/_list.html.twig') }}
|
||||
|
||||
{% if isIndex %}
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
@@ -0,0 +1,26 @@
|
||||
{#
|
||||
Variables
|
||||
- results
|
||||
- variants
|
||||
#}
|
||||
{% set support = results.support %}
|
||||
{% set label = variants.criteria[results.basedOn].label %}
|
||||
{% set chart = barChartInitialize(support.labels) %}
|
||||
{% if support.data is defined and support.data is iterable %}
|
||||
{% for datasetLabel, values in support.data %}
|
||||
{% do chart.setDataset(datasetLabel, values) %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
<div class="panel ovf-h bg-light-xs abtest-bar-chart">
|
||||
<div class="panel-body box-layout">
|
||||
<div class="col-xs-8 va-m">
|
||||
<h5 class="text-white dark-md fw-sb mb-xs">
|
||||
{{ label|trans }}
|
||||
</h5>
|
||||
</div>
|
||||
<div class="col-xs-4 va-t text-right">
|
||||
<h3 class="text-white dark-sm"><span class="ri-bar-chart-box-line"></span></h3>
|
||||
</div>
|
||||
</div>
|
||||
{{ include('@MauticCore/Helper/chart.html.twig', {'chartData': chart.render, 'chartType': 'bar', 'chartHeight': 300}) }}
|
||||
</div>
|
||||
@@ -0,0 +1,22 @@
|
||||
{#
|
||||
Variables
|
||||
- pages
|
||||
#}
|
||||
{% set count = pages|length %}
|
||||
{% if count > 0 %}
|
||||
<div class="page-lang-bar">
|
||||
{% for page in pages %}
|
||||
{% set active = app.request.requestUri == page.url %}
|
||||
<span>
|
||||
{% if not active %}
|
||||
<a href="{{ page.url }}">
|
||||
{% endif %}
|
||||
{{ page.lang }}
|
||||
{% if not active %}
|
||||
</a>
|
||||
{% endif %}
|
||||
</span>
|
||||
{% set count = count - 1 %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
@@ -0,0 +1,5 @@
|
||||
{{ assetAddScriptDeclaration('.share-buttons { display: block; }
|
||||
.share-button { float: left; margin-right: 5px; }
|
||||
.share-button.facebook-share-button.layout-box_count.action-like iframe { width: 50px !important; }
|
||||
.share-button.facebook-share-button.layout-box_count { margin-right: 10px !important; }
|
||||
.share-button.twitter-share-button.layout-horizontal { width: 75px !important; }') }}
|
||||
@@ -0,0 +1,19 @@
|
||||
{% if showMore is defined %}
|
||||
<a href="{{ url('mautic_page_index', {'search': searchString}) }}" data-toggle="ajax">
|
||||
<span>{{ 'mautic.core.search.more'|trans({'%count%': remaining}) }}</span>
|
||||
</a>
|
||||
{% else %}
|
||||
<a href="{{ url('mautic_page_action', {'objectAction': 'view', 'objectId': item.id}) }}" data-toggle="ajax">
|
||||
<span class="fw-sb">{{ item.title|purify }}</span>
|
||||
<span class="ml-4 mr-sm">#{{ item.getId() }}</span>
|
||||
{{- include('@MauticCore/Helper/publishstatus_badge.html.twig', {
|
||||
'entity': item,
|
||||
'status': 'available',
|
||||
'simplified': 'true'
|
||||
}) -}}
|
||||
<span class="pull-right" data-toggle="tooltip" title="{{ 'mautic.page.hits'|trans }}" data-placement="left">
|
||||
<i class="ri-eye-line"></i>
|
||||
{{ item.hits }}
|
||||
</span>
|
||||
</a>
|
||||
{% endif %}
|
||||
@@ -0,0 +1,100 @@
|
||||
{% if event.extra is defined %}
|
||||
{% set timeOnPage = 'mautic.core.unknown'|trans %}
|
||||
|
||||
{% if event.extra.hit.dateLeft %}
|
||||
{% set timeOnPage = (event.extra.hit.dateLeft.timestamp - event.extra.hit.dateHit.timestamp) %}
|
||||
|
||||
{# format the time #}
|
||||
{% if timeOnPage > 60 %}
|
||||
{% set sec = timeOnPage % 60 %}
|
||||
{% set min = (timeOnPage / 60)|round(0, 'floor') %}
|
||||
{% set timeOnPage = min ~ 'm ' ~ sec ~ 's' %}
|
||||
{% else %}
|
||||
{% set timeOnPage = timeOnPage ~ 's' %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
<dl class="dl-horizontal">
|
||||
<dt>{{ 'mautic.page.time.on.page'|trans }}:</dt>
|
||||
<dd>{{ timeOnPage }}</dd>
|
||||
<dt>{{ 'mautic.page.referrer'|trans }}:</dt>
|
||||
<dd>{% if event['extra']['hit']['referer'] %}{{ assetMakeLinks(event['extra']['hit']['referer']) }}{% else %}{{ 'mautic.core.unknown'|trans }}{% endif %}</dd>
|
||||
<dt>{{ 'mautic.page.url'|trans }}:</dt>
|
||||
<dd>{% if event['extra']['hit']['url'] %}{{ assetMakeLinks(event['extra']['hit']['url']) }}{% else %}{{ 'mautic.core.unknown'|trans }}{% endif %}</dd>
|
||||
|
||||
{% if event.extra.hit.device is defined and event.extra.hit.device is not empty %}
|
||||
<dt>{{ 'mautic.core.timeline.device.name'|trans }}</dt>
|
||||
<dd class="ellipsis">{{ inputClean(event.extra.hit.device) }}</dd>
|
||||
{% endif %}
|
||||
|
||||
{% if event.extra.hit.deviceOsName is defined and event.extra.hit.deviceOsName is not empty %}
|
||||
<dt>{{ 'mautic.core.timeline.device.os'|trans }}</dt>
|
||||
<dd class="ellipsis">{{ inputClean(event.extra.hit.deviceOsName) }}</dd>
|
||||
{% endif %}
|
||||
|
||||
{% if event.extra.hit.deviceBrand is defined and event.extra.hit.deviceBrand is not empty %}
|
||||
<dt>{{ 'mautic.core.timeline.device.brand'|trans }}</dt>
|
||||
<dd class="ellipsis">{{ inputClean(event.extra.hit.deviceBrand) }}</dd>
|
||||
{% endif %}
|
||||
|
||||
{% if event.extra.hit.deviceModel is defined and event.extra.hit.deviceModel is not empty %}
|
||||
<dt>{{ 'mautic.core.timeline.device.model'|trans }}</dt>
|
||||
<dd class="ellipsis">{{ inputClean(event.extra.hit.deviceModel) }}</dd>
|
||||
{% endif %}
|
||||
|
||||
{% if event.extra.hit.sourceName is defined and event.extra.hit.sourceName is not empty %}
|
||||
<dt>{{ 'mautic.core.source'|trans }}:</dt>
|
||||
<dd>
|
||||
{% if event.extra.hit.sourceRate is defined %}
|
||||
<a href="{{ inputClean(event.extra.hit.sourceRoute) }}" data-toggle="ajax">{{ inputClean(event.extra.hit.sourceName) }}</a>
|
||||
{% else %}
|
||||
{{ inputClean(event.extra.hit.sourceName) }}
|
||||
{% endif %}
|
||||
</dd>
|
||||
|
||||
{% if event.extra.hit.clientInfo is defined and event.extra.hit.clientInfo is not empty and event.extra.hit.clientInfo is iterable %}
|
||||
<dt>{{ 'mautic.core.timeline.device.client.info'|trans }}</dt>
|
||||
<dd class="ellipsis">
|
||||
{% for clientInfo in event.extra.hit.clientInfo %}
|
||||
{{ inputClean(clientInfo) }}
|
||||
{% endfor %}
|
||||
</dd>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% if event.extra.hit.query is defined and event.extra.hit.query is not empty and event.extra.hit.query is iterable %}
|
||||
{% set counter = 0 %}
|
||||
{% for k, v in event.extra.hit.query %}
|
||||
{% if v is not empty and k not in ['ct', 'page_title', 'page_referrer', 'page_url'] %}
|
||||
{% if v is iterable %}
|
||||
{% for k2, v2 in v %}
|
||||
{% set counter = counter + 1 %}
|
||||
{% set k2 = k|replace({'_': ' '})|title %}
|
||||
<dt>{{ k2 }}:</dt>
|
||||
<dd class="ellipsis">{{ v2 }}</dd>
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
{% set counter = counter + 1 %}
|
||||
{% set k = k|replace({'_': ' '})|title %}
|
||||
<dt>{{ k }}</dt>
|
||||
<dd class="ellipsis">{{ v }}</dd>
|
||||
{% endif %}
|
||||
|
||||
{% if showMore is not defined and counter > 5 %}
|
||||
{% set showMore = true %}
|
||||
<div style="display:none">
|
||||
{% endif %}
|
||||
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
{% if showMore is defined and true == showMore %}
|
||||
</div>
|
||||
<a href="javascript:void(0);" class="text-center small center-block mt-xs" onclick="Mautic.toggleTimelineMoreVisiblity(mQuery(this).prev());">{{ 'mautic.core.more.show'|trans }}</a>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</dl>
|
||||
<div class="small">
|
||||
{{ inputClean(event.extra.hit.userAgent) }}
|
||||
</div>
|
||||
{% endif %}
|
||||
@@ -0,0 +1,49 @@
|
||||
{% set viewTime = 'mautic.core.unknown'|trans %}
|
||||
{% set duration = 'mautic.core.unknown'|trans %}
|
||||
{% set percentage = 'mautic.core.unknown'|trans %}
|
||||
{% set unknown = 'mautic.core.unknown'|trans %}
|
||||
{% set icon = event.icon|default('') %}
|
||||
|
||||
{% if event.extra.hit.time_watched is defined %}
|
||||
{% set viewTimeActual = event.extra.hit.time_watched %}
|
||||
{% set viewTime = event.extra.hit.time_watched %}
|
||||
|
||||
{# format the time #}
|
||||
{% if viewTime > 60 %}
|
||||
{% set sec = viewTime % 60 %}
|
||||
{% set min = (viewTime / 60)|round(0, 'floor') %}
|
||||
{% set viewTime = min ~ 'm ' ~ sec ~ 's' %}
|
||||
{% else %}
|
||||
{% set viewTime = viewTime ~ 's' %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% if event.extra.hit.duration is defined %}
|
||||
{% set durationActual = event.extra.hit.duration %}
|
||||
{% set duration = event.extra.hit.duration %}
|
||||
|
||||
{# format the time #}
|
||||
{% if duration > 60 %}
|
||||
{% set sec = duration % 60 %}
|
||||
{% set min = (duration / 60)|round(0, 'floor') %}
|
||||
{% set duration = min ~ 'm ' ~ sec ~ 's' %}
|
||||
{% else %}
|
||||
{% set duration = duration ~ 's' %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% if viewTime != unknown and duration != unknown %}
|
||||
{% set percentage = ((viewTimeActual / durationActual) * 100)|round %}
|
||||
{% endif %}
|
||||
|
||||
<dl class="dl-horizontal">
|
||||
<dt>{{ 'mautic.page.time.on.video'|trans }}:</dt>
|
||||
<dd class="ellipsis">{{ 'mautic.page.time.on.video.value'|trans({'%time_watched%': viewTime, '%duration%': duration, '%percentage%': percentage}) }}</dd>
|
||||
<dt>{{ 'mautic.page.referrer'|trans }}:</dt>
|
||||
<dd class="ellipsis">{% if event.extra.hit.referer is defined and event.extra.hit.referer is not empty %}{{ assetMakeLinks(event['extra']['hit']['referer']) }}{% else %}{{ 'mautic.core.unknown'|trans }}{% endif %}</dd>
|
||||
<dt>{{ 'mautic.video.url'|trans }}:</dt>
|
||||
<dd class="ellipsis">{% if event.hit.url is defined and event.hit.url is not empty %}{{ assetMakeLinks(event['extra']['hit']['url']) }}{% else %}{{ 'mautic.core.unknown'|trans }}{% endif %}</dd>
|
||||
</dl>
|
||||
<div class="small">
|
||||
{{ inputClean(event.extra.hit.user_agent) }}
|
||||
</div>
|
||||
@@ -0,0 +1,138 @@
|
||||
{% set childContainer %}
|
||||
<p class="text-secondary pi-md">{{'mautic.placeholder_tokens.landing_page_tokens.explanation'|trans}}</p>
|
||||
<ul id="pageTokensAccordion" class="accordion" role="tablist" aria-multiselectable="true">
|
||||
<!-- Landing Page tokens -->
|
||||
<li class="panel">
|
||||
<a role="button" id="headingLandingPageTokens" class="accordion-heading collapsed" data-toggle="collapse"
|
||||
data-parent="#pageTokensAccordion" href="#collapseLandingPageTokens" aria-expanded="false"
|
||||
aria-controls="collapseLandingPageTokens">
|
||||
<i class="ri-arrow-down-s-line accordion-arrow"></i>
|
||||
<span class="accordion-title">{{ 'mautic.placeholder_tokens.landing_page_tokens'|trans }}</span>
|
||||
</a>
|
||||
<div id="collapseLandingPageTokens" class="collapse accordion-wrapper" role="tabpanel"
|
||||
aria-labelledby="headingLandingPageTokens">
|
||||
|
||||
<table class="table table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{ 'mautic.placeholder_tokens.variable_name'|trans }}</th>
|
||||
<th>{{ 'mautic.placeholder_tokens.variable_syntax'|trans }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>{{ 'mautic.placeholder_tokens.landing_page.meta_description'|trans }}</td>
|
||||
<td><code>{pagemetadescription}</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{ 'mautic.placeholder_tokens.landing_page.title'|trans }}</td>
|
||||
<td><code>{pagetitle}</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{ 'mautic.placeholder_tokens.landing_page.language_bar'|trans }}</td>
|
||||
<td><code>{langbar}</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{ 'mautic.placeholder_tokens.landing_page.share_buttons'|trans }}</td>
|
||||
<td><code>{sharebuttons}</code></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<!-- Preference Center Landing Page tokens -->
|
||||
<li class="panel">
|
||||
<a role="button" id="headingPreferenceCenterTokens" class="accordion-heading collapsed" data-toggle="collapse"
|
||||
data-parent="#pageTokensAccordion" href="#collapsePreferenceCenterTokens" aria-expanded="false"
|
||||
aria-controls="collapsePreferenceCenterTokens">
|
||||
<i class="ri-arrow-down-s-line accordion-arrow"></i>
|
||||
<span class="accordion-title">{{ 'mautic.placeholder_tokens.preference_center_tokens'|trans }}</span>
|
||||
</a>
|
||||
<div id="collapsePreferenceCenterTokens" class="collapse accordion-wrapper" role="tabpanel"
|
||||
aria-labelledby="headingPreferenceCenterTokens">
|
||||
|
||||
<table class="table table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{ 'mautic.placeholder_tokens.variable_name'|trans }}</th>
|
||||
<th>{{ 'mautic.placeholder_tokens.variable_syntax'|trans }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>{{ 'mautic.placeholder_tokens.preference_center.lead_identifier'|trans }}</td>
|
||||
<td><code>{leadidentifier}</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{ 'mautic.placeholder_tokens.preference_center.category_list'|trans }}</td>
|
||||
<td><code>{categorylist}</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{ 'mautic.placeholder_tokens.preference_center.segment_list'|trans }}</td>
|
||||
<td><code>{segmentlist}</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{ 'mautic.placeholder_tokens.preference_center.preferred_channel'|trans }}</td>
|
||||
<td><code>{preferredchannel}</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{ 'mautic.placeholder_tokens.preference_center.channel_frequency'|trans }}</td>
|
||||
<td><code>{channelfrequency}</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{ 'mautic.placeholder_tokens.preference_center.save_preferences'|trans }}</td>
|
||||
<td><code>{saveprefsbutton}</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{ 'mautic.placeholder_tokens.landing_page.success_message'|trans }}</td>
|
||||
<td><code>{successmessage}</code></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<!-- Mautic component tokens -->
|
||||
<li class="panel">
|
||||
<a role="button" id="headingComponentTokens" class="accordion-heading collapsed" data-toggle="collapse"
|
||||
data-parent="#pageTokensAccordion" href="#collapseComponentTokens" aria-expanded="false"
|
||||
aria-controls="collapseComponentTokens">
|
||||
<i class="ri-arrow-down-s-line accordion-arrow"></i>
|
||||
<span class="accordion-title">{{ 'mautic.placeholder_tokens.component_tokens'|trans }}</span>
|
||||
</a>
|
||||
<div id="collapseComponentTokens" class="collapse accordion-wrapper" role="tabpanel"
|
||||
aria-labelledby="headingComponentTokens">
|
||||
|
||||
<table class="table table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{ 'mautic.placeholder_tokens.variable_name'|trans }}</th>
|
||||
<th>{{ 'mautic.placeholder_tokens.variable_syntax'|trans }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>{{ 'mautic.placeholder_tokens.component.asset_link'|trans }}</td>
|
||||
<td><code>{assetlink=25}</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{ 'mautic.placeholder_tokens.component.focus_item'|trans }}</td>
|
||||
<td><code>{focus=4}</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{ 'mautic.placeholder_tokens.component.form'|trans }}</td>
|
||||
<td><code>{form=83}</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>{{ 'mautic.placeholder_tokens.component.landing_page_link'|trans }}</td>
|
||||
<td><code>{pagelink=17}</code></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
{% endset %}
|
||||
|
||||
{% include '@MauticCore/Components/content-section.html.twig' with {'heading': 'mautic.placeholder_tokens.landing_page_tokens', 'childContainer': childContainer} %}
|
||||
@@ -0,0 +1,79 @@
|
||||
{% set showConversionRate = showConversionRate is defined ? showConversionRate : false %}
|
||||
{% if trackables is not empty %}
|
||||
<div class="table-responsive">
|
||||
<table class="table table-hover click-list"
|
||||
{% if showConversionRate %} data-conversion-rate-table data-entity-id="{{ entity.id }}"{% endif %}>
|
||||
<thead>
|
||||
<tr>
|
||||
<td>{{ 'mautic.trackable.click_url'|trans }}</td>
|
||||
<td>{{ 'mautic.trackable.click_count'|trans }}</td>
|
||||
<td>{{ 'mautic.trackable.click_unique_count'|trans }}</td>
|
||||
{{ customContent('click_counts_headers', _context) }}
|
||||
{% if showConversionRate %}
|
||||
<td>{{ 'mautic.trackable.click_conversion_rate'|trans }}</td>
|
||||
{% endif %}
|
||||
<td>{{ 'mautic.trackable.click_track_id'|trans }}</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% set totalClicks = 0 %}
|
||||
{% set totalUniqueClicks = 0 %}
|
||||
{% for link in trackables %}
|
||||
{% set totalClicks = totalClicks + link.hits %}
|
||||
{% set totalUniqueClicks = totalUniqueClicks + link.unique_hits %}
|
||||
<tr>
|
||||
<td class="long-text"><a href="{{ link.url }}">{{ link.url }}</a></td>
|
||||
<td class="text-center">{{ link.hits }}</td>
|
||||
<td class="text-center">
|
||||
<span class="mt-xs label label-primary">
|
||||
{% if channel is defined and entity is defined %}
|
||||
<a href="{{ path('mautic_contact_index', {'search' : 'mautic.lead.lead.searchcommand.page_source'|trans ~ ':' ~ channel ~ ' ' ~ 'mautic.lead.lead.searchcommand.page_source_id'|trans ~ ':' ~ entity.getId() ~ ' ' ~ 'mautic.lead.lead.searchcommand.page_id'|trans ~ ':' ~ link.id}) }}"
|
||||
data-toggle="tooltip"
|
||||
title="{{ 'mautic.email.stat.simple.tooltip'|trans }}">
|
||||
{{ link.unique_hits }}
|
||||
</a>
|
||||
{% else %}
|
||||
{{ link.unique_hits }}
|
||||
{% endif %}
|
||||
</span>
|
||||
</td>
|
||||
{{ customContent('click_counts', _context|merge({'redirect_id' : link.redirect_id})) }}
|
||||
{% if showConversionRate %}
|
||||
<td data-conversion-rate-cell data-unique-hits="{{ link.unique_hits }}"><div class="spinner"><i class="ri-loader-3-line ri-spin"></i></div></td>
|
||||
{% endif %}
|
||||
<td>{{ link.redirect_id }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
|
||||
<tr>
|
||||
<td class="long-text">{{ 'mautic.trackable.total_clicks'|trans }}</td>
|
||||
<td class="text-center">{{ totalClicks }}</td>
|
||||
<td class="text-center">
|
||||
<span class="mt-xs label label-primary">
|
||||
{% if channel is defined and entity is defined %}
|
||||
<a href="{{ path('mautic_contact_index',
|
||||
{'search' : 'mautic.lead.lead.searchcommand.page_source'|trans ~ ':' ~ channel ~ ' ' ~ 'mautic.lead.lead.searchcommand.page_source_id'|trans ~ ':' ~ entity.getId()}) }}"
|
||||
data-toggle="tooltip"
|
||||
title="{{ 'mautic.email.stat.simple.tooltip'|trans }}">
|
||||
{{ totalUniqueClicks }}
|
||||
</a>
|
||||
{% else %}
|
||||
{{ totalUniqueClicks }}
|
||||
{% endif %}
|
||||
</span>
|
||||
</td>
|
||||
{% if showConversionRate %}
|
||||
<td data-conversion-rate-total-cell>
|
||||
<div class="spinner"><i class="ri-loader-3-line ri-spin"></i></div>
|
||||
<i class="ri-question-line" data-toggle="tooltip" data-container="body" data-placement="top" data-original-title="{{ 'mautic.trackable.total_conversion_rate_tooltip'|trans }}"></i>
|
||||
</td>
|
||||
{% endif %}
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
{% else %}
|
||||
{{- include('@MauticCore/Helper/noresults.html.twig', {'header' : 'mautic.trackable.click_counts.header_none', 'message' : 'mautic.trackable.click_counts.none'}) -}}
|
||||
<div class="clearfix"></div>
|
||||
{% endif %}
|
||||
Reference in New Issue
Block a user