Initial commit: CloudOps infrastructure platform
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
{#
|
||||
Form Theme is used at "Configuration" > "Notification Settings"
|
||||
|
||||
Variables
|
||||
- form
|
||||
#}
|
||||
{% block _config_notification_config_widget %}
|
||||
<h4 class="fw-sb mt-48 mb-xs">{{ 'mautic.config.tab.campaign_notification_config'|trans }}</h4>
|
||||
<div class="text-muted small pb-md">{{ 'mautic.core.config.header.campaign_notification_config.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.campaign_send_notification_to_author) }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
{{ form_row(form.campaign_notification_email_addresses) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h4 class="fw-sb mt-48 mb-xs">{{ 'mautic.config.tab.webhook_notification_config'|trans }}</h4>
|
||||
<div class="text-muted small pb-md">{{ 'mautic.core.config.header.webhook_notification_config.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.webhook_send_notification_to_author) }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
{{ form_row(form.webhook_notification_email_addresses) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
@@ -0,0 +1,47 @@
|
||||
{% block _mobile_notification_mobileSettings_widget %}
|
||||
{% if 'ios' in integrationSettings.platforms %}
|
||||
<div class="tab-pane fade in bdr-w-0" id="ios-notification-container">
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
{{ form_row(form.ios_subtitle) }}
|
||||
{{ form_row(form.ios_media) }}
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="well">
|
||||
<h4>{{ 'Advanced Settings'|trans }}</h4>
|
||||
<hr />
|
||||
{{ form_row(form.ios_badges) }}
|
||||
{{ form_row(form.ios_badgeCount) }}
|
||||
{{ form_row(form.ios_sound) }}
|
||||
{{ form_label(form.ios_contentAvailable) }}
|
||||
{{ form_row(form.ios_contentAvailable) }}
|
||||
{{ form_label(form.ios_mutableContent) }}
|
||||
{{ form_row(form.ios_mutableContent) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if 'android' in integrationSettings.platforms %}
|
||||
<div class="tab-pane fade in bdr-w-0" id="android-notification-container">
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
{{ form_row(form.android_small_icon) }}
|
||||
{{ form_row(form.android_large_icon) }}
|
||||
{{ form_row(form.android_big_picture) }}
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="well">
|
||||
<h4>{{ 'Advanced Settings'|trans }}</h4>
|
||||
<hr />
|
||||
{{ form_row(form.android_sound) }}
|
||||
{{ form_row(form.android_group_key) }}
|
||||
{{ form_row(form.android_led_color) }}
|
||||
{{ form_row(form.android_accent_color) }}
|
||||
{{ form_row(form.android_lockscreen_visibility) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
@@ -0,0 +1,12 @@
|
||||
{% block _notificationsend_list_row %}
|
||||
<div class="row">
|
||||
<div class="col-xs-8">
|
||||
{{ form_row(form.notification) }}
|
||||
</div>
|
||||
<div class="col-xs-4 mt-lg">
|
||||
<div class="mt-3">
|
||||
{{ form_row(form.newNotificationButton) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
@@ -0,0 +1,122 @@
|
||||
{#
|
||||
Variables
|
||||
- searchValue
|
||||
- items
|
||||
- totalItems
|
||||
- page
|
||||
- limit
|
||||
- tmpl
|
||||
- permissions
|
||||
- model
|
||||
- security
|
||||
#}
|
||||
{% if items|length > 0 %}
|
||||
<div class="table-responsive">
|
||||
<table class="table table-hover notification-list">
|
||||
<thead>
|
||||
<tr>
|
||||
{{ include('@MauticCore/Helper/tableheader.html.twig', {
|
||||
'checkall': 'true',
|
||||
}) }}
|
||||
|
||||
{{ include('@MauticCore/Helper/tableheader.html.twig', {
|
||||
'sessionVar': 'mobile_notification',
|
||||
'orderBy': 'e.name',
|
||||
'text': 'mautic.core.name',
|
||||
'class': 'col-notification-name',
|
||||
'default': true,
|
||||
}) }}
|
||||
|
||||
{{ include('@MauticCore/Helper/tableheader.html.twig', {
|
||||
'sessionVar': 'mobile_notification',
|
||||
'orderBy': 'c.title',
|
||||
'text': 'mautic.core.category',
|
||||
'class': 'visible-md visible-lg col-notification-category',
|
||||
}) }}
|
||||
|
||||
<th class="visible-sm visible-md visible-lg col-notification-stats">{{ 'mautic.core.stats'|trans }}</th>
|
||||
|
||||
{{ include('@MauticCore/Helper/tableheader.html.twig', {
|
||||
'sessionVar': 'mobile_notification',
|
||||
'orderBy': 'e.id',
|
||||
'text': 'mautic.core.id',
|
||||
'class': 'visible-md visible-lg col-notification-id',
|
||||
}) }}
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{# @var \Mautic\NotificationBundle\Entity\Notification $item #}
|
||||
{% for item in items %}
|
||||
{% set type = item.notificationType %}
|
||||
<tr>
|
||||
<td>
|
||||
{{ include('@MauticCore/Helper/list_actions.html.twig', {
|
||||
'item': item,
|
||||
'templateButtons': {
|
||||
'edit': securityHasEntityAccess(permissions['notification:mobile_notifications:editown'], permissions['notification:mobile_notifications:editother'], item.createdBy),
|
||||
'delete': securityHasEntityAccess(permissions['notification:mobile_notifications:deleteown'], permissions['notification:mobile_notifications:deleteother'], item.createdBy),
|
||||
},
|
||||
'routeBase': 'mobile_notification',
|
||||
'customButtons': [
|
||||
{
|
||||
'attr': {
|
||||
'data-toggle': 'ajaxmodal',
|
||||
'data-target': '#MauticSharedModal',
|
||||
'data-header': 'mautic.notification.mobile_notification.preview'|trans,
|
||||
'data-footer': 'false',
|
||||
'href': path('mautic_mobile_notification_action', {'objectId': item.id, 'objectAction': 'preview'}),
|
||||
},
|
||||
'btnText': 'mautic.notification.mobile_notification.preview'|trans,
|
||||
'iconClass': 'ri-share-forward-box-fill',
|
||||
},
|
||||
]
|
||||
}) }}
|
||||
</td>
|
||||
<td>
|
||||
<div>
|
||||
{% if 'template' == type %}
|
||||
{{ include('@MauticCore/Helper/publishstatus_icon.html.twig', {'item': item, 'model': 'notification'}) }}
|
||||
{% else %}
|
||||
<i class="ri-fw ri-lg ri-toggle-fill text-secondary disabled"></i>
|
||||
{% endif %}
|
||||
<a href="{{ path('mautic_mobile_notification_action', {'objectAction': 'view', 'objectId': item.id}) }}" data-toggle="ajax">
|
||||
{{ item.name }}
|
||||
{% if 'list' == type %}
|
||||
<span data-toggle="tooltip" title="{{ 'mautic.notification.icon_tooltip.list_notification'|trans }}"><i class="ri-fw ri-list-check"></i></span>
|
||||
{% endif %}
|
||||
{% if item.isTranslation() %}
|
||||
<span data-toggle="tooltip" title="{{ 'mautic.core.icon_tooltip.translation'|trans }}"><i class="ri-fw ri-translate fs-14"></i></span>
|
||||
{% endif %}
|
||||
</a>
|
||||
</div>
|
||||
</td>
|
||||
<td class="visible-md visible-lg">
|
||||
{{ include('@MauticCore/Modules/category--expanded.html.twig', {'category': item.category}) }}
|
||||
</td>
|
||||
<td class="visible-sm visible-md visible-lg col-stats">
|
||||
<span class="mt-xs label label-green"
|
||||
data-toggle="tooltip"
|
||||
title="{{ 'mautic.channel.stat.leadcount.tooltip'|trans }}">
|
||||
<a href="{{ path('mautic_contact_index', {'search': 'mautic.lead.lead.searchcommand.mobile_sent'|trans ~ ':' ~ item.id}) }}">
|
||||
{{- 'mautic.notification.stat.sentcount'|trans({'%count%': item.getSentCount(true)}) -}}
|
||||
</a>
|
||||
</span>
|
||||
</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': totalItems,
|
||||
'page': page,
|
||||
'limit': limit,
|
||||
'baseUrl': path('mautic_mobile_notification_index'),
|
||||
'sessionVar': 'mobile_notification',
|
||||
}) }}
|
||||
</div>
|
||||
{% else %}
|
||||
{{ include('@MauticCore/Helper/noresults.html.twig') }}
|
||||
{% endif %}
|
||||
@@ -0,0 +1,198 @@
|
||||
{#
|
||||
Variables
|
||||
- notification
|
||||
- trackables
|
||||
- logs
|
||||
- permissions
|
||||
- security
|
||||
- entityViews
|
||||
- contacts
|
||||
- dateRangeForm
|
||||
#}
|
||||
{% extends '@MauticCore/Default/content.html.twig' %}
|
||||
|
||||
{% block mauticContent %}notification{% endblock %}
|
||||
|
||||
{% block headerTitle %}{{ notification.name }}{% endblock %}
|
||||
|
||||
{% block preHeader %}
|
||||
{{- include('@MauticCore/Helper/page_actions.html.twig',
|
||||
{
|
||||
'item' : notification,
|
||||
'templateButtons' : {
|
||||
'close' : securityHasEntityAccess(permissions['notification:mobile_notifications:viewown'], permissions['notification:mobile_notifications:viewother'], notification.createdBy),
|
||||
},
|
||||
'routeBase' : 'mobile_notification',
|
||||
'targetLabel' : 'mautic.notification.mobile_notifications'|trans
|
||||
}
|
||||
) -}}
|
||||
{{ include('@MauticCore/Modules/category--inline.html.twig', {'category': notification.category}) }}
|
||||
{% endblock %}
|
||||
|
||||
{% block actions %}
|
||||
{{- include('@MauticCore/Helper/page_actions.html.twig', {
|
||||
'item': notification,
|
||||
'templateButtons': {
|
||||
'edit': securityHasEntityAccess(permissions['notification:mobile_notifications:editown'], permissions['notification:mobile_notifications:editother'], notification.createdBy),
|
||||
'delete': permissions['notification:mobile_notifications:create'],
|
||||
},
|
||||
'routeBase': 'mobile_notification',
|
||||
}) -}}
|
||||
{% endblock %}
|
||||
|
||||
{% block publishStatus %}
|
||||
{{ include('@MauticCore/Helper/publishstatus_badge.html.twig', {'entity': notification}, with_context=false) }}
|
||||
|
||||
{% set tags = [] %}
|
||||
|
||||
{# Translation tags #}
|
||||
{% set tags = tags
|
||||
|merge(notification.isTranslation and not notification.isTranslation(true)
|
||||
? [{ color: 'warm-gray', label: 'mautic.core.icon_tooltip.translation' }]
|
||||
: [])
|
||||
|merge(notification.isTranslation(true)
|
||||
? [{ color: 'warm-gray', label: 'mautic.core.translation_of'|trans({'%parent%' : translations.parent.name}), icon: 'ri-translate' }]
|
||||
: [])
|
||||
%}
|
||||
|
||||
{% include '@MauticCore/Helper/_tag.html.twig' with { tags: tags } %}
|
||||
{% endblock %}
|
||||
|
||||
|
||||
{% set translationContent = include('@MauticCore/Translation/index.html.twig',
|
||||
{
|
||||
'activeEntity' : notification,
|
||||
'translations' : translations,
|
||||
'model' : 'notifications',
|
||||
'actionRoute' : 'mautic_mobile_notification_action',
|
||||
}
|
||||
) %}
|
||||
{% set showTranslations = translationContent|trim is not empty %}
|
||||
|
||||
{% block content %}
|
||||
<!-- start: box layout -->
|
||||
<div class="box-layout">
|
||||
<!-- left section -->
|
||||
<div class="col-lg-9 col-md-8 height-auto">
|
||||
<div>
|
||||
<!-- notification detail collapseable -->
|
||||
<div class="collapse pr-md pl-md" id="notification-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': notification}, with_context=false) }}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--/ notification detail collapseable -->
|
||||
|
||||
<!-- notification detail collapseable toggler -->
|
||||
<div class="hr-expand nm">
|
||||
<span data-toggle="tooltip" title="{{ 'mautic.core.details'|trans }}">
|
||||
<a href="javascript:void(0)" class="arrow text-secondary collapsed" data-toggle="collapse" data-target="#notification-details"><span class="caret"></span> {{ 'mautic.core.details'|trans }}</a>
|
||||
</span>
|
||||
</div>
|
||||
<!--/ notification detail collapseable toggler -->
|
||||
|
||||
<!-- some stats -->
|
||||
<div class="pa-md">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
{% if security.isGranted('lead:leads:viewown') %}
|
||||
{{ include('@MauticCore/Modules/stat--icon.html.twig', {'stats': [
|
||||
{
|
||||
'title': 'mautic.lead.lead.contacts.mobile_sent',
|
||||
'value': notification.getSentCount(true),
|
||||
'link': path('mautic_contact_index', {
|
||||
'search': ('mautic.lead.lead.searchcommand.mobile_sent'|trans) ~ ':' ~ notification.id
|
||||
}),
|
||||
'icon': 'ri-smartphone-line'
|
||||
}
|
||||
]}) }}
|
||||
{% endif %}
|
||||
<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.core.stats'|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': entityViews, 'chartType': 'line', 'chartHeight': 300}) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--/ stats -->
|
||||
|
||||
<!-- tabs controls -->
|
||||
<ul class="nav nav-tabs nav-tabs-contained">
|
||||
<li class="active">
|
||||
<a href="#clicks-container" role="tab" data-toggle="tab">
|
||||
{{ 'mautic.trackable.click_counts'|trans }}
|
||||
</a>
|
||||
</li>
|
||||
<li class="">
|
||||
<a href="#contacts-container" role="tab" data-toggle="tab">
|
||||
{{ 'mautic.lead.leads'|trans }}
|
||||
</a>
|
||||
</li>
|
||||
|
||||
{% if showTranslations %}
|
||||
<li>
|
||||
<a href="#translation-container" role="tab" data-toggle="tab">
|
||||
{{ 'mautic.core.translations'|trans }}
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
<!--/ tabs controls -->
|
||||
</div>
|
||||
|
||||
<!-- start: tab-content -->
|
||||
<div class="tab-content pa-md">
|
||||
<div class="tab-pane active bdr-w-0" id="clicks-container">
|
||||
{{ include('@MauticPage/Trackable/click_counts.html.twig', {
|
||||
'trackables': trackables,
|
||||
'entity': notification,
|
||||
'channel': 'notification',
|
||||
}) }}
|
||||
</div>
|
||||
|
||||
<div class="tab-pane fade in bdr-w-0 page-list" id="contacts-container">
|
||||
{{ contacts|raw }}
|
||||
</div>
|
||||
|
||||
{% if showTranslations %}
|
||||
<div class="tab-pane bdr-w-0" id="translation-container">
|
||||
{{ translationContent|raw }}
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
<!--/ tab-content -->
|
||||
|
||||
</div>
|
||||
<!--/ left section -->
|
||||
|
||||
<!-- right section -->
|
||||
<div class="col-lg-3 col-md-4 height-auto">
|
||||
<div class="pa-md mb-32 animation--slide-in-down">
|
||||
{{ include('@MauticNotification/MobileNotification/preview.html.twig') }}
|
||||
</div>
|
||||
<!-- activity feed -->
|
||||
{{ include('@MauticCore/Helper/recentactivity.html.twig', {'logs': logs}, with_context=false) }}
|
||||
</div>
|
||||
<!--/ right section -->
|
||||
<input name="entityId" id="entityId" type="hidden" value="{{ notification.id|e }}" />
|
||||
</div>
|
||||
<!--/ end: box layout -->
|
||||
{% endblock %}
|
||||
@@ -0,0 +1,87 @@
|
||||
{#
|
||||
Variables
|
||||
- form
|
||||
- notification
|
||||
- integration (\Mautic\NotificationBundle\Integration\OneSignalIntegration)
|
||||
- forceTypeSelection (optional, bool, default = false)
|
||||
Only defined when editing notification
|
||||
#}
|
||||
{% form_theme form '@MauticNotification/FormTheme/MobileNotification/_mobile_notification_mobileSettings_widget.html.twig' %}
|
||||
|
||||
{% extends '@MauticCore/Default/content.html.twig' %}
|
||||
|
||||
{% block mauticContent %}mobile_notification{% endblock %}
|
||||
|
||||
{% block headerTitle %}
|
||||
{% if notification.id %}
|
||||
{{ 'mautic.notification.mobile.header.edit'|trans({'%name%': notification.name}) }}
|
||||
{% else %}
|
||||
{{ 'mautic.notification.mobile.header.new'|trans }}
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% set integrationSettings = integration.integrationSettings.featureSettings %}
|
||||
{{ 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="#notification-container" role="tab" data-toggle="tab">{{ 'mautic.core.details'|trans }}</a></li>
|
||||
<li><a href="#data-notification-container" role="tab" data-toggle="tab">{{ 'mautic.notification.tab.data'|trans }}</a></li>
|
||||
{% if integrationSettings.platforms is defined and 'ios' in integrationSettings.platforms %}
|
||||
<li><a href="#ios-notification-container" role="tab" data-toggle="tab">{{ 'mautic.notification.tab.ios'|trans }}</a></li>
|
||||
{% endif %}
|
||||
{% if integrationSettings.platforms is defined and 'android' in integrationSettings.platforms %}
|
||||
<li><a href="#android-notification-container" role="tab" data-toggle="tab">{{ 'mautic.notification.tab.android'|trans }}</a></li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
<!--/ tabs controls -->
|
||||
|
||||
<!-- tabs content -->
|
||||
<div class="tab-content pa-md">
|
||||
<div class="tab-pane fade in active bdr-w-0" id="notification-container">
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
{{- form_row(form.name) -}}
|
||||
{{- form_row(form.heading) -}}
|
||||
{{- form_row(form.url) -}}
|
||||
</div>
|
||||
<div class="col-md-6">{{ form_row(form.message) }}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="tab-pane fade in bdr-w-0" id="data-notification-container">
|
||||
<div class="row">
|
||||
<div class="col-md-6">{{ form_row(form.mobileSettings.additional_data) }}</div>
|
||||
</div>
|
||||
</div>
|
||||
{% if form.mobileSettings.ios_sound is defined or form.mobileSettings.android_sound is defined %}
|
||||
{{ form_widget(form.mobileSettings, {'integrationSettings': integrationSettings}) }}
|
||||
{% endif %}
|
||||
</div>
|
||||
<!--/ tabs content -->
|
||||
|
||||
</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.language) }}
|
||||
{{ form_row(form.translationParentSelector) }}
|
||||
<hr />
|
||||
{% include '@MauticCore/FormTheme/Fields/_utm_tags_fields.html.twig' %}
|
||||
<div class="hide">
|
||||
{{ form_row(form.isPublished) }}
|
||||
{{ form_row(form.publishUp) }}
|
||||
{{ form_row(form.publishDown) }}
|
||||
{{ form_rest(form) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{ form_end(form) }}
|
||||
{% endblock %}
|
||||
@@ -0,0 +1,99 @@
|
||||
{#
|
||||
Variables
|
||||
- searchValue
|
||||
- items
|
||||
- totalItems
|
||||
- page
|
||||
- limit
|
||||
- tmpl
|
||||
- permissions
|
||||
- model
|
||||
- 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 %}mobile_notification{% endblock %}
|
||||
|
||||
{% block headerTitle %}{{ 'mautic.notification.mobile_notifications'|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,
|
||||
'searchId': 'mobile-notification-search',
|
||||
'action': currentRoute,
|
||||
'page_actions': {
|
||||
'templateButtons': {
|
||||
'new': permissions['notification:mobile_notifications:create'],
|
||||
},
|
||||
'routeBase': 'mobile_notification',
|
||||
},
|
||||
'bulk_actions': {
|
||||
'routeBase': 'mobile_notification',
|
||||
'templateButtons': {
|
||||
'delete': permissions['notification:mobile_notifications:deleteown'] or permissions['notification:mobile_notifications:deleteother'],
|
||||
},
|
||||
},
|
||||
'quickFilters': [
|
||||
{
|
||||
'search': 'mautic.core.searchcommand.ispublished',
|
||||
'label': 'mautic.core.form.available',
|
||||
'tooltip': 'mautic.core.searchcommand.ispublished.description',
|
||||
'icon': 'ri-check-line'
|
||||
},
|
||||
{
|
||||
'search': 'mautic.core.searchcommand.isunpublished',
|
||||
'label': 'mautic.core.form.unavailable',
|
||||
'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 %}
|
||||
|
||||
{% if items|length > 0 %}
|
||||
{{ include('@MauticNotification/MobileNotification/_list.html.twig') }}
|
||||
{% else %}
|
||||
{% if searchValue is not empty %}
|
||||
{{- include('@MauticCore/Helper/noresults.html.twig', {'tip' : 'mautic.category.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="mt-32 mb-md">
|
||||
{% include '@MauticCore/Components/pictogram.html.twig' with {
|
||||
'pictogram': 'mobile',
|
||||
'size': '80'
|
||||
} %}
|
||||
</div>
|
||||
{% endset %}
|
||||
{{ include('@MauticCore/Components/content-block.html.twig', {
|
||||
heading: 'mautic.notification.mobile.contentblock.heading',
|
||||
subheading: 'mautic.notification.mobile.contentblock.subheading',
|
||||
copy: 'mautic.notification.mobile.contentblock.copy',
|
||||
childContainer: childContainer
|
||||
}) }}
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% if isIndex %}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
@@ -0,0 +1,47 @@
|
||||
{#
|
||||
some stats: need more input on what type of form data to show.
|
||||
delete if it is not require
|
||||
#}
|
||||
<div class="pa-md">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
{% if showVariants %}
|
||||
<div class="text-right small">
|
||||
<span>
|
||||
{% if isVariant %}
|
||||
<span data-chart="variant">{{ 'mautic.notification.variant.graph.variant'|trans }}</span>
|
||||
{% else %}
|
||||
<a data-chart="variant" href="javascript:void(0)">{{ 'mautic.notification.variant.graph.variant'|trans }}</a>
|
||||
{% endif %}
|
||||
</span>
|
||||
</span> | </span>
|
||||
<span>
|
||||
{% if isVariant %}
|
||||
<a data-chart="all" href="javascript:void(0)">{{ 'mautic.notification.variant.graph.all'|trans }}</a>
|
||||
{% else %}
|
||||
<span data-chart="all">{{ 'mautic.notification.variant.graph.all'|trans }}</span>
|
||||
{% endif %}
|
||||
</span>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="panel">
|
||||
<div class="panel-body box-layout">
|
||||
<div class="col-xs-4 va-m">
|
||||
<h5 class="text-white dark-md fw-sb mb-xs">
|
||||
<span class="ri-mail-line"></span>
|
||||
{{ 'mautic.notification.lead.list.comparison'|trans }}
|
||||
</h5>
|
||||
</div>
|
||||
<div class="col-xs-8 va-m" id="legend"></div>
|
||||
</div>
|
||||
<div class="pt-0 pl-15 pb-10 pr-15">
|
||||
<div>
|
||||
<canvas id="list-compare-chart" height="300"></canvas>
|
||||
</div>
|
||||
</div>
|
||||
<div id="list-compare-chart-data" class="hide">{{ stats|json_encode|raw }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--/ some stats -->
|
||||
@@ -0,0 +1,50 @@
|
||||
{#
|
||||
Variables
|
||||
- notification
|
||||
#}
|
||||
|
||||
{% set notificationWrapper %}
|
||||
<div class="notification-preview">
|
||||
<div class="notification-preview__body animation--grow">
|
||||
<div class="notification-preview__container">
|
||||
<div class="notification-preview__notification">
|
||||
<span class="notification-preview__before"></span>
|
||||
<header class="notification-preview__header">
|
||||
<div class="notification-preview__heading tt-u">{{ configGetParameter('brand_name')|default('') }}</div>
|
||||
<span class="notification-preview__timestamp">{{ 'mautic.core.now'|trans }}</span>
|
||||
</header>
|
||||
<div class="notification-preview__content">
|
||||
<span class="notification-preview__title fw-sb">{{ notification.heading }}</span>
|
||||
{% if notification.mobileSettings.ios_subtitle is defined %}
|
||||
<span class="notification-preview__subtitle fw-sb">{{ notification.mobileSettings.ios_subtitle }}</span>
|
||||
{% endif %}
|
||||
<span class="notification-preview__message">{{ notification.message }}</span>
|
||||
<span class="notification-preview__more">{{ 'mautic.notification.preview.more_notifications'|trans }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="notification-preview__body">
|
||||
<div class="notification-preview__container">
|
||||
<div class="notification-preview__notification">
|
||||
<span class="notification-preview__before" style="top: -294.15px;"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="notification-preview__body">
|
||||
<div class="notification-preview__container">
|
||||
<div class="notification-preview__notification">
|
||||
<span class="notification-preview__before" style="top: -310.625px;"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endset %}
|
||||
|
||||
{% if notification.url %}
|
||||
<a href="{{ notification.url }}" class="notification-wrapper" target="_blank">
|
||||
{{ notificationWrapper }}
|
||||
</a>
|
||||
{% else %}
|
||||
{{ notificationWrapper }}
|
||||
{% endif %}
|
||||
@@ -0,0 +1,31 @@
|
||||
{#
|
||||
some stats: need more input on what type of form data to show.
|
||||
delete if it is not require
|
||||
#}
|
||||
<div class="pa-md">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="panel">
|
||||
<div class="panel-body box-layout">
|
||||
<div class="col-xs-4 va-m">
|
||||
<h5 class="text-white dark-md fw-sb mb-xs">
|
||||
<span class="ri-mail-line"></span>
|
||||
{{ 'mautic.notification.stats'|trans }}
|
||||
</h5>
|
||||
</div>
|
||||
<div class="col-xs-6 va-m" id="legend"></div>
|
||||
<div class="col-xs-2 va-m">
|
||||
{{ include('@MauticCore/Helper/graph_dateselect.html.twig', {'callback': 'updateNotificationStatsChart'}) }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="pt-0 pl-15 pb-10 pr-15">
|
||||
<div>
|
||||
<canvas id="stat-chart" height="300"></canvas>
|
||||
</div>
|
||||
</div>
|
||||
<div id="stat-chart-data" class="hide">{{ stats|json_encode|raw }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--/ some stats -->
|
||||
@@ -0,0 +1,120 @@
|
||||
{#
|
||||
Variables
|
||||
- searchValue
|
||||
- items
|
||||
- totalItems
|
||||
- page
|
||||
- limit
|
||||
- tmpl
|
||||
- permissions
|
||||
- model
|
||||
- security
|
||||
#}
|
||||
{% if items|length > 0 %}
|
||||
<div class="table-responsive">
|
||||
<table class="table table-hover notification-list">
|
||||
<thead>
|
||||
<tr>
|
||||
{{ include('@MauticCore/Helper/tableheader.html.twig', {
|
||||
'checkall': 'true',
|
||||
}) }}
|
||||
|
||||
{{ include('@MauticCore/Helper/tableheader.html.twig', {
|
||||
'sessionVar': 'notification',
|
||||
'orderBy': 'e.name',
|
||||
'text': 'mautic.core.name',
|
||||
'class': 'col-notification-name',
|
||||
'default': true,
|
||||
}) }}
|
||||
|
||||
{{ include('@MauticCore/Helper/tableheader.html.twig', {
|
||||
'sessionVar': 'notification',
|
||||
'orderBy': 'c.title',
|
||||
'text': 'mautic.core.category',
|
||||
'class': 'visible-md visible-lg col-notification-category',
|
||||
}) }}
|
||||
|
||||
<th class="visible-sm visible-md visible-lg col-notification-stats">{{ 'mautic.core.stats'|trans }}</th>
|
||||
|
||||
{{ include('@MauticCore/Helper/tableheader.html.twig', {
|
||||
'sessionVar': 'notification',
|
||||
'orderBy': 'e.id',
|
||||
'text': 'mautic.core.id',
|
||||
'class': 'visible-md visible-lg col-notification-id',
|
||||
}) }}
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{# @var \Mautic\NotificationBundle\Entity\Notification $item #}
|
||||
{% for item in items %}
|
||||
{% set type = item.notificationType %}
|
||||
<tr>
|
||||
<td>
|
||||
{{ include('@MauticCore/Helper/list_actions.html.twig', {
|
||||
'item': item,
|
||||
'templateButtons': {
|
||||
'edit': securityHasEntityAccess(permissions['notification:notifications:editown'], permissions['notification:notifications:editother'], item.createdBy),
|
||||
'delete': securityHasEntityAccess(permissions['notification:notifications:deleteown'], permissions['notification:notifications:deleteother'], item.createdBy),
|
||||
},
|
||||
'routeBase': 'notification',
|
||||
'customButtons': [
|
||||
{
|
||||
'attr': {
|
||||
'data-toggle': 'ajaxmodal',
|
||||
'data-target': '#MauticSharedModal',
|
||||
'data-header': 'mautic.notification.notification.header.preview'|trans,
|
||||
'data-footer': 'false',
|
||||
'href': path('mautic_notification_action', {'objectId': item.id, 'objectAction': 'preview'}),
|
||||
},
|
||||
'btnText': 'mautic.notification.preview'|trans,
|
||||
'iconClass': 'ri-share-forward-box-fill',
|
||||
},
|
||||
],
|
||||
}) }}
|
||||
</td>
|
||||
<td>
|
||||
<div>
|
||||
{% if 'template' == type %}
|
||||
{{ include('@MauticCore/Helper/publishstatus_icon.html.twig', {'item': item, 'model': 'notification'}) }}
|
||||
{% else %}
|
||||
<i class="ri-fw ri-lg ri-toggle-fill text-secondary disabled"></i>
|
||||
{% endif %}
|
||||
<a href="{{ path('mautic_notification_action', {'objectAction': 'view', 'objectId': item.id}) }}" data-toggle="ajax">
|
||||
{{ item.name }}
|
||||
{% if 'list' == type %}
|
||||
<span data-toggle="tooltip" title="{{ 'mautic.notification.icon_tooltip.list_notification'|trans }}"><i class="ri-fw ri-list-check"></i></span>
|
||||
{% endif %}
|
||||
</a>
|
||||
{{ customContent('notification.name', _context) }}
|
||||
</div>
|
||||
</td>
|
||||
<td class="visible-md visible-lg">
|
||||
{{ include('@MauticCore/Modules/category--expanded.html.twig', {'category': item.category}) }}
|
||||
</td>
|
||||
<td class="visible-sm visible-md visible-lg col-stats">
|
||||
<span class="mt-xs label label-green"
|
||||
data-toggle="tooltip"
|
||||
title="{{ 'mautic.channel.stat.leadcount.tooltip'|trans }}">
|
||||
<a href="{{ path('mautic_contact_index', {'search': 'mautic.lead.lead.searchcommand.web_sent'|trans ~ ':' ~ item.id}) }}">
|
||||
{{- 'mautic.notification.stat.sentcount'|trans({'%count%': item.getSentCount(true)}) -}}
|
||||
</a>
|
||||
</span>
|
||||
</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': totalItems,
|
||||
'page': page,
|
||||
'limit': limit,
|
||||
'baseUrl': path('mautic_notification_index'),
|
||||
'sessionVar': 'notification',
|
||||
}) }}
|
||||
</div>
|
||||
{% else %}
|
||||
{{ include('@MauticCore/Helper/noresults.html.twig') }}
|
||||
{% endif %}
|
||||
@@ -0,0 +1,159 @@
|
||||
{#
|
||||
Variables
|
||||
- notification
|
||||
- trackables
|
||||
- logs
|
||||
- permissions
|
||||
- security
|
||||
- entityViews
|
||||
- contacts
|
||||
- dateRangeForm
|
||||
#}
|
||||
{% extends '@MauticCore/Default/content.html.twig' %}
|
||||
|
||||
{% block mauticContent %}notification{% endblock %}
|
||||
|
||||
{% block headerTitle %}{{ notification.name }}{% endblock %}
|
||||
|
||||
{% block preHeader %}
|
||||
{{- include('@MauticCore/Helper/page_actions.html.twig',
|
||||
{
|
||||
'item' : notification,
|
||||
'templateButtons' : {
|
||||
'close' : securityHasEntityAccess(permissions['notification:notifications:viewown'], permissions['notification:notifications:viewother'], notification.createdBy),
|
||||
},
|
||||
'routeBase' : 'notification',
|
||||
'targetLabel' : 'mautic.notification.notifications'|trans
|
||||
}
|
||||
) -}}
|
||||
{{ include('@MauticCore/Modules/category--inline.html.twig', {'category': notification.category}) }}
|
||||
{% endblock %}
|
||||
|
||||
{% block actions %}
|
||||
{{- include('@MauticCore/Helper/page_actions.html.twig', {
|
||||
'item': notification,
|
||||
'templateButtons': {
|
||||
'edit': securityHasEntityAccess(permissions['notification:notifications:editown'], permissions['notification:notifications:editother'], notification.createdBy),
|
||||
'delete': permissions['notification:notifications:create'],
|
||||
},
|
||||
'routeBase': 'notification',
|
||||
}) -}}
|
||||
{% endblock %}
|
||||
|
||||
{% block publishStatus %}
|
||||
{{ include('@MauticCore/Helper/publishstatus_badge.html.twig', {'entity': notification}) }}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<!-- start: box layout -->
|
||||
<div class="box-layout">
|
||||
<!-- left section -->
|
||||
<div class="col-md-9 height-auto">
|
||||
<div>
|
||||
<!-- notification detail collapseable -->
|
||||
<div class="collapse pr-md pl-md" id="notification-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': notification}) }}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--/ notification detail collapseable -->
|
||||
|
||||
<!-- notification detail collapseable toggler -->
|
||||
<div class="hr-expand nm">
|
||||
<span data-toggle="tooltip" title="{{ 'mautic.core.details'|trans }}">
|
||||
<a href="javascript:void(0)" class="arrow text-secondary collapsed" data-toggle="collapse" data-target="#notification-details">
|
||||
<span class="caret"></span>
|
||||
{{ 'mautic.core.details'|trans }}
|
||||
</a>
|
||||
</span>
|
||||
</div>
|
||||
<!--/ notification detail collapseable toggler -->
|
||||
|
||||
<!-- some stats -->
|
||||
<div class="pa-md">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
{% if security.isGranted('lead:leads:viewown') %}
|
||||
{{ include('@MauticCore/Modules/stat--icon.html.twig', {'stats': [
|
||||
{
|
||||
'title': 'mautic.lead.lead.contacts.web_sent',
|
||||
'value': notification.getSentCount(true),
|
||||
'link': path('mautic_contact_index', {
|
||||
'search': ('mautic.lead.lead.searchcommand.web_sent'|trans) ~ ':' ~ notification.id
|
||||
}),
|
||||
'icon': 'ri-notification-3-line'
|
||||
}
|
||||
]}) }}
|
||||
{% endif %}
|
||||
<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.core.stats'|trans }}
|
||||
</h5>
|
||||
</div>
|
||||
<div class="col-md-9 va-m">
|
||||
{{ include('@MauticCore/Helper/graph_dateselect.html.twig', {'dateRangeForm': dateRangeForm, 'class': 'pull-right'}, with_context=false) }}
|
||||
</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': entityViews, 'chartType': 'line', 'chartHeight': 300}, with_context=false) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--/ stats -->
|
||||
|
||||
{{ customContent('details.stats.graph.below', _context) }}
|
||||
|
||||
<!-- tabs controls -->
|
||||
<ul class="nav nav-tabs nav-tabs-contained">
|
||||
<li class="active">
|
||||
<a href="#clicks-container" role="tab" data-toggle="tab">
|
||||
{{ 'mautic.trackable.click_counts'|trans }}
|
||||
</a>
|
||||
</li>
|
||||
<li class="">
|
||||
<a href="#contacts-container" role="tab" data-toggle="tab">
|
||||
{{ 'mautic.lead.leads'|trans }}
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<!--/ tabs controls -->
|
||||
</div>
|
||||
|
||||
<!-- start: tab-content -->
|
||||
<div class="tab-content pa-md">
|
||||
<div class="tab-pane active bdr-w-0" id="clicks-container">
|
||||
{{ include('@MauticPage/Trackable/click_counts.html.twig', {
|
||||
'trackables': trackables,
|
||||
'entity': notification,
|
||||
'channel': 'notification'
|
||||
}) }}
|
||||
</div>
|
||||
<div class="tab-pane fade in bdr-w-0 page-list" id="contacts-container">
|
||||
{{ contacts|purify }}
|
||||
</div>
|
||||
</div>
|
||||
<!--/ tab-content -->
|
||||
</div>
|
||||
<!--/ left section -->
|
||||
|
||||
<!-- right section -->
|
||||
<div class="col-md-3 bdr-l height-auto">
|
||||
<!-- activity feed -->
|
||||
{{ include('@MauticCore/Helper/recentactivity.html.twig', {'logs': logs}) }}
|
||||
</div>
|
||||
<!--/ right section -->
|
||||
<input name="entityId" id="entityId" type="hidden" value="{{ notification.id|e }}" />
|
||||
</div>
|
||||
<!--/ end: box layout -->
|
||||
{% endblock %}
|
||||
@@ -0,0 +1,63 @@
|
||||
{#
|
||||
Variables
|
||||
- form
|
||||
- notification
|
||||
- forceTypeSelection (optional, bool, default=false)
|
||||
This will be defined when the notification entity is being edited
|
||||
#}
|
||||
{% extends '@MauticCore/Default/content.html.twig' %}
|
||||
|
||||
{% block mauticContent %}notification{% endblock %}
|
||||
|
||||
{% block headerTitle %}
|
||||
{% if notification.id %}
|
||||
{{ 'mautic.notification.header.edit'|trans({'%name%': notification.name}) }}
|
||||
{% else %}
|
||||
{{ 'mautic.notification.header.new'|trans }}
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{{ form_start(form) }}
|
||||
<div class="box-layout">
|
||||
<div class="col-md-9 height-auto">
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="tab-content pa-md">
|
||||
<div class="tab-pane fade in active bdr-w-0" id="notification-container">
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
{{ form_row(form.name) }}
|
||||
{{ form_row(form.heading) }}
|
||||
{{ form_row(form.message) }}
|
||||
{{ form_row(form.url) }}
|
||||
{{ form_row(form.button) }}
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
{{ include('@MauticNotification/Notification/preview.html.twig', {
|
||||
'notification': notification,
|
||||
}, with_context=false) }}
|
||||
</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.category) }}
|
||||
{{ form_row(form.language) }}
|
||||
<hr />
|
||||
{% include '@MauticCore/FormTheme/Fields/_utm_tags_fields.html.twig' %}
|
||||
<div class="hide">
|
||||
{{ form_row(form.isPublished) }}
|
||||
{{ form_row(form.publishUp) }}
|
||||
{{ form_row(form.publishDown) }}
|
||||
{{ form_rest(form) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{ form_end(form) }}
|
||||
{% endblock %}
|
||||
@@ -0,0 +1,99 @@
|
||||
{#
|
||||
Variables
|
||||
- searchValue
|
||||
- items
|
||||
- totalItems
|
||||
- page
|
||||
- limit
|
||||
- tmpl
|
||||
- permissions
|
||||
- model
|
||||
- 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 %}notification{% endblock %}
|
||||
|
||||
{% block headerTitle %}{{ 'mautic.notification.notifications'|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,
|
||||
'searchId': 'notification-search',
|
||||
'action': currentRoute,
|
||||
'page_actions': {
|
||||
'templateButtons': {
|
||||
'new': permissions['notification:notifications:create'],
|
||||
},
|
||||
'routeBase': 'notification',
|
||||
},
|
||||
'bulk_actions': {
|
||||
'routeBase': 'notification',
|
||||
'templateButtons': {
|
||||
'delete': permissions['notification:notifications:deleteown'] or permissions['notification:notifications:deleteother'],
|
||||
},
|
||||
},
|
||||
'quickFilters': [
|
||||
{
|
||||
'search': 'mautic.core.searchcommand.ispublished',
|
||||
'label': 'mautic.core.form.available',
|
||||
'tooltip': 'mautic.core.searchcommand.ispublished.description',
|
||||
'icon': 'ri-check-line'
|
||||
},
|
||||
{
|
||||
'search': 'mautic.core.searchcommand.isunpublished',
|
||||
'label': 'mautic.core.form.unavailable',
|
||||
'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 %}
|
||||
|
||||
{% if items|length > 0 %}
|
||||
{{ include('@MauticNotification/Notification/_list.html.twig') }}
|
||||
{% else %}
|
||||
{% if searchValue is not empty %}
|
||||
{{- include('@MauticCore/Helper/noresults.html.twig', {'tip' : 'mautic.category.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="mt-32 mb-md">
|
||||
{% include '@MauticCore/Components/pictogram.html.twig' with {
|
||||
'pictogram': 'websites',
|
||||
'size': '80'
|
||||
} %}
|
||||
</div>
|
||||
{% endset %}
|
||||
{{ include('@MauticCore/Components/content-block.html.twig', {
|
||||
heading: 'mautic.notification.contentblock.heading',
|
||||
subheading: 'mautic.notification.contentblock.subheading',
|
||||
copy: 'mautic.notification.contentblock.copy',
|
||||
childContainer: childContainer
|
||||
}) }}
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% if isIndex %}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
@@ -0,0 +1,48 @@
|
||||
{#
|
||||
some stats: need more input on what type of form data to show.
|
||||
delete if it is not require
|
||||
#}
|
||||
<!-- some stats -->
|
||||
<div class="pa-md">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
{% if showVariants %}
|
||||
<div class="text-right small">
|
||||
<span>
|
||||
{% if isVariant %}
|
||||
<span data-chart="variant">{{ 'mautic.notification.variant.graph.variant'|trans }}</span>
|
||||
{% else %}
|
||||
<a data-chart="variant" href="javascript:void(0)">{{ 'mautic.notification.variant.graph.variant'|trans }}</a>
|
||||
{% endif %}
|
||||
</span>
|
||||
</span> | </span>
|
||||
<span>
|
||||
{% if isVariant %}
|
||||
<a data-chart="all" href="javascript:void(0)">{{ 'mautic.notification.variant.graph.all'|trans }}</a>
|
||||
{% else %}
|
||||
<span data-chart="all">{{ 'mautic.notification.variant.graph.all'|trans }}</span>
|
||||
{% endif %}
|
||||
</span>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="panel">
|
||||
<div class="panel-body box-layout">
|
||||
<div class="col-xs-4 va-m">
|
||||
<h5 class="text-white dark-md fw-sb mb-xs">
|
||||
<span class="ri-mail-line"></span>
|
||||
{{ 'mautic.notification.lead.list.comparison'|trans }}
|
||||
</h5>
|
||||
</div>
|
||||
<div class="col-xs-8 va-m" id="legend"></div>
|
||||
</div>
|
||||
<div class="pt-0 pl-15 pb-10 pr-15">
|
||||
<div>
|
||||
<canvas id="list-compare-chart" height="300"></canvas>
|
||||
</div>
|
||||
</div>
|
||||
<div id="list-compare-chart-data" class="hide">{{ stats|json_encode|raw }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--/ some stats -->
|
||||
@@ -0,0 +1,35 @@
|
||||
{#
|
||||
Variables
|
||||
- notification (\Mautic\NotificationBundle\Entity\Notification)
|
||||
#}
|
||||
<label>Preview</label>
|
||||
<div id="notification-preview" class="panel panel-default">
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<div class="icon height-auto text-center">
|
||||
<span class="ri-notification-3-fill fs-48"></span>
|
||||
</div>
|
||||
<div class="text height-auto">
|
||||
<h4>
|
||||
{%- if notification.heading -%}
|
||||
{{- notification.heading -}}
|
||||
{%- else -%}
|
||||
Your notification header
|
||||
{%- endif -%}
|
||||
</h4>
|
||||
<p>
|
||||
{%- if notification.message %}
|
||||
{{- notification.message -}}
|
||||
{%- else -%}
|
||||
The message body of your notification
|
||||
{%- endif -%}
|
||||
</p>
|
||||
<span>{{ app.request.server.get('HTTP_HOST') }}</span>
|
||||
</div>
|
||||
</div>
|
||||
{% if notification.url and notification.button %}
|
||||
<hr>
|
||||
<a href="{{ notification.url }}">{{ notification.button }}</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,32 @@
|
||||
{#
|
||||
some stats: need more input on what type of form data to show.
|
||||
delete if it is not require
|
||||
#}
|
||||
<!-- 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-xs-4 va-m">
|
||||
<h5 class="text-white dark-md fw-sb mb-xs">
|
||||
<span class="ri-mail-line"></span>
|
||||
{{ 'mautic.notification.stats'|trans }}
|
||||
</h5>
|
||||
</div>
|
||||
<div class="col-xs-6 va-m" id="legend"></div>
|
||||
<div class="col-xs-2 va-m">
|
||||
{{ include('@MauticCore/Helper/graph_dateselect.html.twig', {'callback': 'updateNotificationStatsChart'}) }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="pt-0 pl-15 pb-10 pr-15">
|
||||
<div>
|
||||
<canvas id="stat-chart" height="300"></canvas>
|
||||
</div>
|
||||
</div>
|
||||
<div id="stat-chart-data" class="hide">{{ stats|json_encode|raw }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--/ some stats -->
|
||||
@@ -0,0 +1,214 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<title>Mautic</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
||||
<link rel="icon" type="image/x-icon" href="{{ getOverridableUrl('images/favicon.ico') }}" />
|
||||
<link rel="icon" sizes="192x192" href="{{ getOverridableUrl('images/favicon.ico') }}">
|
||||
<link rel="apple-touch-icon" href="{{ getOverridableUrl('images/apple-touch-icon.png') }}" />
|
||||
|
||||
{{ outputStyles() }}
|
||||
<script src="/app/bundles/NotificationBundle/Assets/js/popup/usparser.min.js" type="text/javascript"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<!-- Directions -->
|
||||
<!-- overlay -->
|
||||
<div id="black-wrapper">
|
||||
</div>
|
||||
|
||||
<div id="white-wrapper">
|
||||
</div>
|
||||
|
||||
<div id="mobile">
|
||||
|
||||
<div id="mobile-top-section">
|
||||
<div id="mobile-top-section-wrapper">
|
||||
<div id="mobile-top-section-content">
|
||||
<div class="title domainName">This website</div>
|
||||
<p id="mobile-directions">wants to show notifications:</p>
|
||||
|
||||
<div style="display: none;" id="mobile-notification">
|
||||
<img id="mobile-notification-icon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDY3IDc5LjE1Nzc0NywgMjAxNS8wMy8zMC0yMzo0MDo0MiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RDdBOEVEMjU3RTgwMTFFNUIzMjFCOUQ0QjUzN0Q0NDYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RDdBOEVEMjY3RTgwMTFFNUIzMjFCOUQ0QjUzN0Q0NDYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpDODdGODRDMDdEMTMxMUU1QjMyMUI5RDRCNTM3RDQ0NiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpEN0E4RUQyNDdFODAxMUU1QjMyMUI5RDRCNTM3RDQ0NiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pttyb1cAAACySURBVHja7N2xDUMhDEBBO0rJ33++SNkAJKqET1YwTYp7hUV9smtyzvmKiCtUqecG/OzHg0Wp7w9ucCg3bN5hAAECBAhQAAECBCiAAAECFECAAAEKIECAAAUQIECAAggQIEABBAgQoAACBAhQZ4CZSe4EcK1FzgkDBAhQAAECBAhQAAECBCiAAAECFECAAAEKIECAAAUQIECAAggQIEABBPivgA1Dufbc4x2+w6jWbwEGAJZEES0DZiYyAAAAAElFTkSuQmCC">
|
||||
|
||||
<p id="mobile-notification-title" class="truncatable long desktop message">Example Notification</p>
|
||||
|
||||
<p id="mobile-notification-message" class="truncatable short desktop message">Notifications will appear on your device</p>
|
||||
|
||||
<p id="mobile-notification-url" class="truncatable short desktop message">{{ siteUrl }}</p>
|
||||
</div>
|
||||
|
||||
<div id="desktop-notification">
|
||||
<img id="desktop-notification-icon" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDY3IDc5LjE1Nzc0NywgMjAxNS8wMy8zMC0yMzo0MDo0MiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RDdBOEVEMjU3RTgwMTFFNUIzMjFCOUQ0QjUzN0Q0NDYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RDdBOEVEMjY3RTgwMTFFNUIzMjFCOUQ0QjUzN0Q0NDYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpDODdGODRDMDdEMTMxMUU1QjMyMUI5RDRCNTM3RDQ0NiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpEN0E4RUQyNDdFODAxMUU1QjMyMUI5RDRCNTM3RDQ0NiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pttyb1cAAACySURBVHja7N2xDUMhDEBBO0rJ33++SNkAJKqET1YwTYp7hUV9smtyzvmKiCtUqecG/OzHg0Wp7w9ucCg3bN5hAAECBAhQAAECBCiAAAECFECAAAEKIECAAAUQIECAAggQIEABBAgQoAACBAhQZ4CZSe4EcK1FzgkDBAhQAAECBAhQAAECBCiAAAECFECAAAEKIECAAAUQIECAAggQIEABBPivgA1Dufbc4x2+w6jWbwEGAJZEES0DZiYyAAAAAElFTkSuQmCC">
|
||||
|
||||
<p id="x">x</p>
|
||||
|
||||
<p id="desktop-notification-title" class="truncatable mobile message">This is an example notification</p>
|
||||
|
||||
<p id="desktop-notification-message" class="truncatable mobile message">Notifications will appear on your desktop</p>
|
||||
|
||||
<p id="desktop-notification-url" class="truncatable mobile message">{{ siteUrl }}</p>
|
||||
</div>
|
||||
|
||||
<p id="mobile-opt-out" class="truncatable opt-out message">(you can unsubscribe anytime in your browser settings)</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="error-box">
|
||||
<div id="error-message-padding">
|
||||
|
||||
<!-- if on ios -->
|
||||
<div class="error" id="ios">
|
||||
<p> Web Push Notifications are not supported by iOS. </p>
|
||||
</div>
|
||||
|
||||
<!-- if not on chrome (Desktop) -->
|
||||
<div class="error" id="not-chrome-desktop">
|
||||
<p> Web Push Notifications are not supported by your browser. Please install
|
||||
<a class="default-link" href="https://www.google.com/chrome/browser/desktop" target="_blank">Chrome</a> to get
|
||||
notifications. </p>
|
||||
</div>
|
||||
|
||||
<!-- if not on chrome (Android) -->
|
||||
<div class="error" id="not-chrome-Android">
|
||||
<p> Please install Chrome web browser to get notifications. </p>
|
||||
|
||||
<p><a class="default-link" href="https://play.google.com/store/apps/details?id=com.android.chrome">Tap here</a> to
|
||||
download from the Google Play Store.</p>
|
||||
</div>
|
||||
|
||||
<!-- not have latest version of chrome (desktop) -->
|
||||
<div class="error" id="outdated-chrome-desktop">
|
||||
<p> Please update your Chrome web browser to get notifications. </p>
|
||||
</div>
|
||||
|
||||
<!-- not have latest version of chrome (mobile) -->
|
||||
<div class="error" id="outdated-chrome-mobile">
|
||||
<p> Please update your Chrome web browser to get notifications. </p>
|
||||
|
||||
<p><a class="default-link" href="https://play.google.com/store/apps/details?id=com.android.chrome">Tap here</a> to
|
||||
download from the Google Play Store.</p>
|
||||
</div>
|
||||
|
||||
<!-- if notifications are disabled (desktop)-->
|
||||
<div class="error" id="disabled-notifications-desktop">
|
||||
<p> Notifications are currently disabled.</p>
|
||||
|
||||
<p>Please re-enable them by clicking on the lock icon in the top left of this window. </p>
|
||||
</div>
|
||||
|
||||
<!-- if notifications are disabled (mobile) -->
|
||||
<div class="error" id="disabled-notifications-mobile">
|
||||
<p> Notifications are currently disabled.</p>
|
||||
|
||||
<p>Please re-enable them by tapping on the lock icon on the top left. </p>
|
||||
</div>
|
||||
|
||||
<!-- if notifications are already enabled -->
|
||||
<div class="error" id="notifications-already-enabled">
|
||||
<p> Notifications are already enabled, you may close this window. </p>
|
||||
|
||||
<p style="font-size: 12px">If you would like to unsubscribe from all notifications from
|
||||
<span class="domainName">{{ siteUrl }}</span> click on the lock icon to the left of the address. </p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
/* returns true if device is mobile or tablet */
|
||||
function detectmob() {
|
||||
return navigator.userAgent.match(/Android|webOS|iPhone|iPad|iPod|BlackBerry|Windows Phone/i) != null;
|
||||
}
|
||||
|
||||
/* show mobile example notification on mobile, desktop notification on desktop */
|
||||
if (detectmob()) {
|
||||
document.getElementById("desktop-notification").style.display = 'none';
|
||||
} else {
|
||||
document.getElementById("mobile-notification").style.display = "none";
|
||||
}
|
||||
|
||||
/* ERROR MESSAGES */
|
||||
|
||||
/* instantiate parser */
|
||||
var parser = new UAParser();
|
||||
var isHttpsPrompt = false;
|
||||
|
||||
// get the UA string result
|
||||
var result = parser.getResult();
|
||||
|
||||
// get user agent info
|
||||
var browser = result.browser.name;
|
||||
var browser_version = result.browser.version;
|
||||
var os = result.os.name;
|
||||
var engine = result.engine.name;
|
||||
|
||||
if (OneSignal.isPushNotificationsSupported());
|
||||
else if (os == "iOS")
|
||||
showError("ios");
|
||||
else if (browser != "Chrome") {
|
||||
if (os == "Android")
|
||||
showError("not-chrome-Android");
|
||||
else
|
||||
showError("not-chrome-desktop");
|
||||
} // TODO: Show generic error if SDK reports push notifications not supported.
|
||||
else { // They are on Chrome
|
||||
if (parseInt(browser_version.substring(0, 2)) < 42) // Check Chrome version
|
||||
showError(detectmob() ? "outdated-chrome-mobile" : "outdated-chrome-desktop");
|
||||
else if (isHttpsPrompt) {
|
||||
if (!isPushEnabled) {
|
||||
if (isPermissionBlocked)
|
||||
showError(detectmob() ? "disabled-notifications-mobile" : "disabled-notifications-desktop");
|
||||
} else
|
||||
showError("notifications-already-enabled");
|
||||
} else { // HTTP
|
||||
if (Notification.permission == "denied") // Check if the Notification permission is disabled.
|
||||
showError(detectmob() ? "disabled-notifications-mobile" : "disabled-notifications-desktop");
|
||||
else if (Notification.permission == "granted") {
|
||||
navigator.serviceWorker.ready.then(function (event) {
|
||||
if (event) {
|
||||
OneSignal.getIdsAvailable(function (ids) {
|
||||
if (ids.registrationId != null) {
|
||||
OneSignal._getSubscription(function (isSet) {
|
||||
if (isSet)
|
||||
showError("notifications-already-enabled");
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!isHttpsPrompt) {
|
||||
if (Notification.permission == "denied") // Check if the Notification permission is disabled.
|
||||
showError(detectmob() ? "disabled-notifications-mobile" : "disabled-notifications-desktop");
|
||||
else if (Notification.permission == "granted") {
|
||||
OneSignal._initOptions = {};
|
||||
(OneSignal.isPushNotificationsEnabled(function (enabled) {
|
||||
if (enabled) {
|
||||
showError("notifications-already-enabled");
|
||||
}
|
||||
}));
|
||||
}
|
||||
} else {
|
||||
if (isPermissionBlocked) // Check if the Notification permission is disabled.
|
||||
showError(detectmob() ? "disabled-notifications-mobile" : "disabled-notifications-desktop");
|
||||
else if (isPushEnabled) {
|
||||
showError("notifications-already-enabled");
|
||||
}
|
||||
}
|
||||
|
||||
function showError(error) {
|
||||
// put a white overlay over all existing content
|
||||
// this also disables all functionality
|
||||
document.getElementById("white-wrapper").style.zIndex = "10";
|
||||
document.getElementById("white-wrapper").style.opacity = ".75";
|
||||
document.getElementById("error-box").style.opacity = "1";
|
||||
document.getElementById("error-box").style.display = "block";
|
||||
document.getElementById(error).style.display = "block";
|
||||
}
|
||||
</script>
|
||||
</body></html>
|
||||
@@ -0,0 +1,16 @@
|
||||
{% if showMore is defined %}
|
||||
<a href="{{ url('mautic_mobile_notification_index', {'search': searchString}) }}" data-toggle="ajax">
|
||||
<span>{{ 'mautic.core.search.more'|trans({'%count%': remaining}) }}</span>
|
||||
</a>
|
||||
{% else %}
|
||||
<a href="{{ url('mautic_mobile_notification_action', {'objectAction': 'edit', 'objectId': item.id}) }}" data-toggle="ajax">
|
||||
<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 %}
|
||||
@@ -0,0 +1,16 @@
|
||||
{% if showMore is defined %}
|
||||
<a href="{{ url('mautic_notification_index', {'search': searchString}) }}" data-toggle="ajax">
|
||||
<span>{{ 'mautic.core.search.more'|trans({'%count%': remaining}) }}</span>
|
||||
</a>
|
||||
{% else %}
|
||||
<a href="{{ url('mautic_notification_action', {'objectAction': 'view', 'objectId': item.id}) }}" data-toggle="ajax">
|
||||
<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 %}
|
||||
@@ -0,0 +1,19 @@
|
||||
{#
|
||||
Variables
|
||||
- event
|
||||
#}
|
||||
{%- set data = event.extra.log.metadata -%}
|
||||
{%- if data.failed is not defined -%}
|
||||
<dl class="dl-horizontal">
|
||||
<dt>{{ 'mautic.notification.timeline.status'|trans }}</dt>
|
||||
<dd>{{ data.status|trans }}</dd>
|
||||
<dt>{{ 'mautic.notification.timeline.type'|trans }}</dt>
|
||||
<dd>{{ data.type|trans }}</dd>
|
||||
</dl>
|
||||
<div class="small">
|
||||
<hr />
|
||||
<strong>{{ data.heading }}</strong>
|
||||
<br />
|
||||
{{ data.content }}
|
||||
</div>
|
||||
{%- endif -%}
|
||||
Reference in New Issue
Block a user