PDF rausgenommen

This commit is contained in:
aschwarz
2023-01-23 11:03:31 +01:00
parent 82d562a322
commit a6523903eb
28078 changed files with 4247552 additions and 2 deletions

View File

@ -0,0 +1,175 @@
<div piwik-content-block
content-title="{{ 'ScheduledReports_CreateAndScheduleReport'|translate|e('html_attr') }}"
class="entityAddContainer"
ng-if="manageScheduledReport.showReportForm">
<div class='clear'></div>
<form id='addEditReport' piwik-form ng-submit="manageScheduledReport.submitReport()">
<div piwik-field uicontrol="text" name="website"
title="{{ 'General_Website'|translate|e('html_attr') }}"
data-disabled="true"
value="{{ siteName|rawSafeDecoded }}">
</div>
<div piwik-field uicontrol="textarea" name="report_description"
title="{{ 'General_Description'|translate|e('html_attr') }}"
ng-model="manageScheduledReport.report.description"
inline-help="{{ 'ScheduledReports_DescriptionOnFirstPage'|translate|e('html_attr') }}">
</div>
{% if segmentEditorActivated %}
<div id="reportSegmentInlineHelp" class="inline-help-node">
{% set SegmentEditor_DefaultAllVisits %}{{ 'SegmentEditor_DefaultAllVisits'|translate }}{% endset %}
{% set SegmentEditor_AddNewSegment %}{{ 'SegmentEditor_AddNewSegment'|translate }}{% endset %}
{{ 'ScheduledReports_Segment_Help'|translate('<a href="./" rel="noreferrer noopener" target="_blank">','</a>',SegmentEditor_DefaultAllVisits,SegmentEditor_AddNewSegment)|raw }}
</div>
<div piwik-field uicontrol="select" name="report_segment"
ng-model="manageScheduledReport.report.idsegment"
options="{{ savedSegmentsById|json_encode }}"
title="{{ 'SegmentEditor_ChooseASegment'|translate|e('html_attr') }}"
inline-help="#reportSegmentInlineHelp">
</div>
{% endif %}
<div id="emailScheduleInlineHelp" class="inline-help-node">
{{ 'ScheduledReports_WeeklyScheduleHelp'|translate }}
<br/>
{{ 'ScheduledReports_MonthlyScheduleHelp'|translate }}
</div>
<div piwik-field uicontrol="select" name="report_period"
options="{{ periods|json_encode }}"
ng-model="manageScheduledReport.report.period"
title="{{ 'ScheduledReports_EmailSchedule'|translate|e('html_attr') }}"
inline-help="#emailScheduleInlineHelp">
</div>
<div piwik-field uicontrol="select" name="report_hour"
options="manageScheduledReport.reportHours"
ng-change="manageScheduledReport.updateReportHourUtc()"
ng-model="manageScheduledReport.report.hour"
{% if timezoneOffset != 0 %}inline-help="#reportHourHelpText"{% endif %}
title="{{ 'ScheduledReports_ReportHour'|translate('X')|e('html_attr') }}">
</div>
{% if timezoneOffset != 0 %}
<div id="reportHourHelpText" class="inline-help-node">
<span ng-bind="manageScheduledReport.report.hourUtc"></span>
</div>
{% endif %}
<div piwik-field uicontrol="select" name="report_type"
options="{{ reportTypeOptions|json_encode }}"
ng-model="manageScheduledReport.report.type"
ng-change="manageScheduledReport.changedReportType()"
{% if reportTypes|length == 1 %}disabled="true"{% endif %}
title="{{ 'ScheduledReports_ReportType'|translate|e('html_attr') }}">
</div>
{% for reportType, reportFormats in reportFormatsByReportTypeOptions %}
<div piwik-field uicontrol="select" name="report_format"
class="{{ reportType }}"
ng-model="manageScheduledReport.report.format{{ reportType }}"
ng-show="manageScheduledReport.report.type == '{{ reportType }}'"
options="{{ reportFormats|json_encode }}"
title="{{ 'ScheduledReports_ReportFormat'|translate|e('html_attr') }}">
</div>
{% endfor %}
{{ postEvent("Template.reportParametersScheduledReports") }}
<div ng-show="manageScheduledReport.report.type == 'email' && manageScheduledReport.report.formatemail !== 'csv'">
<div piwik-field uicontrol="select" name="display_format" class="email"
ng-model="manageScheduledReport.report.displayFormat"
options="{{ displayFormats|json_encode }}"
introduction="{{ 'ScheduledReports_AggregateReportsFormat'|translate|e('html_attr') }}">
</div>
<div piwik-field uicontrol="checkbox" name="report_evolution_graph"
class="report_evolution_graph"
ng-model="manageScheduledReport.report.evolutionGraph"
ng-show="manageScheduledReport.report.displayFormat == '2' || manageScheduledReport.report.displayFormat == '3'"
title="{{ 'ScheduledReports_EvolutionGraph'|translate(5)|e('html_attr') }}">
</div>
<div
class="row evolution-graph-period"
ng-show="manageScheduledReport.report.displayFormat == '1' || manageScheduledReport.report.displayFormat == '2' || manageScheduledReport.report.displayFormat == '3'"
>
<div class="col s12">
<input id="report_evolution_period_for_each" name="report_evolution_period_for" type="radio" checked value="each" ng-model="manageScheduledReport.report.evolutionPeriodFor" />
<label for="report_evolution_period_for_each" piwik-translate="ScheduledReports_EvolutionGraphsShowForEachInPeriod">
<strong>::</strong>::{{ "{{ manageScheduledReport.getFrequencyPeriodSingle() }}" }}
</label>
</div>
<div class="col s12">
<input id="report_evolution_period_for_prev" name="report_evolution_period_for" type="radio" value="prev" ng-model="manageScheduledReport.report.evolutionPeriodFor" />
<label for="report_evolution_period_for_prev">
{{ "{{ 'ScheduledReports_EvolutionGraphsShowForPreviousN'|translate:manageScheduledReport.getFrequencyPeriodPlural() }}" }}:
<input type="number" name="report_evolution_period_n" ng-model="manageScheduledReport.report.evolutionPeriodN" />
</label>
</div>
</div>
</div>
<div class="row">
<h3 class="col s12">{{ 'ScheduledReports_ReportsIncluded'|translate }}</h3>
</div>
{% for reportType, reportsByCategory in reportsByCategoryByReportType %}
<div name='reportsList' class='row {{ reportType }}'
ng-show="manageScheduledReport.report.type == '{{ reportType }}'">
{% if allowMultipleReportsByReportType[reportType] %}
{% set reportInputType='checkbox' %}
{% else %}
{% set reportInputType='radio' %}
{% endif %}
{% set countCategory=0 %}
{% set newColumnAfter=(reportsByCategory|length + 1)//2 %}
<div class='col s12 m6'>
{% for category, reports in reportsByCategory %}
{% if countCategory >= newColumnAfter and newColumnAfter != 0 %}
{% set newColumnAfter=0 %}
</div>
<div class='col s12 m6'>
{% endif %}
<h3 class='reportCategory'>{{ category }}</h3>
<ul class='listReports'>
{% for report in reports %}
<li>
<input type='{{ reportInputType }}' id="{{ reportType }}{{ report.uniqueId }}" report-unique-id='{{ report.uniqueId }}'
name='{{ reportType }}Reports'/>
<label for="{{ reportType }}{{ report.uniqueId }}">
{{ report.name|rawSafeDecoded }}
{% if report.uniqueId=='MultiSites_getAll' %}
<div class="entityInlineHelp">{{ 'ScheduledReports_ReportIncludeNWebsites'|translate(countWebsites)
}}</div>
{% endif %}
</label>
</li>
{% endfor %}
{% set countCategory=countCategory+1 %}
</ul>
<br/>
{% endfor %}
</div>
</div>
{% endfor %}
<input type="hidden" id="report_idreport" ng-model="manageScheduledReport.editingReportId">
<div ng-value="manageScheduledReport.saveButtonTitle"
onconfirm="manageScheduledReport.submitReport()"
piwik-save-button></div>
<div class='entityCancel'>
{{ 'General_OrCancel'|translate("<a class='entityCancelLink' ng-click='manageScheduledReport.showListOfReports()'>","</a>")|raw }}
</div>
</form>
</div>

View File

@ -0,0 +1,114 @@
<div id='entityEditContainer' class="entityTableContainer"
piwik-content-block
content-title="{{ title|e('html_attr') }}"
help-url="https://matomo.org/docs/email-reports/"
feature="true"
ng-show="manageScheduledReport.showReportsList">
<table piwik-content-table>
<thead>
<tr>
<th class="first">{{ 'General_Description'|translate }}</th>
<th>{{ 'ScheduledReports_EmailSchedule'|translate }}</th>
<th>{{ 'ScheduledReports_ReportFormat'|translate }}</th>
<th>{{ 'ScheduledReports_SendReportTo'|translate }}</th>
<th>{{ 'General_Download'|translate }}</th>
<th>{{ 'General_Edit'|translate }}</th>
<th>{{ 'General_Delete'|translate }}</th>
</tr>
</thead>
{% if userLogin == 'anonymous' %}
<tr>
<td colspan='7'>
<br/>
{{ 'ScheduledReports_MustBeLoggedIn'|translate }}
<br/>&rsaquo; <a href='index.php?module={{ loginModule }}'>{{ 'Login_LogIn'|translate }}</a>
<br/><br/>
</td>
</tr>
{% elseif reports is empty %}
<tr>
<td colspan='7'>
<br/>
{{ 'ScheduledReports_ThereIsNoReportToManage'|translate(siteName)|rawSafeDecoded }}.
<br/><br/>
</td>
</tr>
{% else %}
{% for report in reports %}
<tr>
<td class="first">
{{ report.description|rawSafeDecoded }}
{% if segmentEditorActivated and report.idsegment %}
<div class="entityInlineHelp" style="font-size: 9pt;">
{{ savedSegmentsById[report.idsegment] }}
</div>
{% endif %}
</td>
<td>{{ periods[report.period] }}
<!-- Last sent on {{ report.ts_last_sent }} -->
</td>
<td>
{% if report.format is not empty %}
{{ report.format|upper }}
{% endif %}
</td>
<td>
{# report recipients #}
{% if report.recipients|length == 0 %}
{{ 'ScheduledReports_NoRecipients'|translate }}
{% else %}
{% for recipient in report.recipients %}
{{ recipient }}
<br/>
{% endfor %}
{# send now link #}
<a href="#"
ng-click="manageScheduledReport.sendReportNow({{ report.idreport }})"
name="linkSendNow" class="link_but withIcon" style="margin-top:3px;">
<img border=0 src='{{ reportTypes[report.type] }}'/>
{{ 'ScheduledReports_SendReportNow'|translate }}
</a>
{% endif %}
</td>
<td>
{# download link #}
<a href="{{ linkTo({'module':'API', 'segment': null, 'token_auth':token_auth,
'method':'ScheduledReports.generateReport', 'idReport':report.idreport,
'outputType':downloadOutputType, 'language':language,
'format': (report.format in ['html', 'csv']) ? report.format : false
}) }}"
rel="noreferrer noopener" target="_blank" name="linkDownloadReport" id="{{ report.idreport }}" class="link_but withIcon">
<img src='{{ reportFormatsByReportType[report.type][report.format] }}' border="0" width="16px" height="16px"/>
{{ 'General_Download'|translate }}
</a>
</td>
<td style="text-align: center;padding-top:2px;">
<button ng-click="manageScheduledReport.editReport({{ report.idreport }})"
class="table-action" title="{{ 'General_Edit'|translate|e('html_attr') }}">
<span class="icon-edit"></span>
</button>
</td>
<td style="text-align: center;padding-top:2px;">
<button ng-click="manageScheduledReport.deleteReport({{ report.idreport }})"
class="table-action" title="{{ 'General_Delete'|translate|e('html_attr') }}">
<span class="icon-delete"></span>
</button>
</td>
</tr>
{% endfor %}
{% endif %}
</table>
<div class="tableActionBar">
{% if userLogin != 'anonymous' %}
<button id="add-report" ng-click="manageScheduledReport.createReport()" >
<span class="icon-add"></span>
{{ 'ScheduledReports_CreateAndScheduleReport'|translate }}
</button>
{% endif %}
</div>
</div>

View File

@ -0,0 +1,60 @@
{% extends 'admin.twig' %}
{% set title %}{{ 'ScheduledReports_PersonalEmailReports'|translate }}{% endset %}
{% block topcontrols %}
{% include "@CoreHome/_siteSelectHeader.twig" %}
{% include "@CoreHome/_periodSelect.twig" %}
{% endblock %}
{% block content %}
<div class="emailReports" piwik-manage-scheduled-report>
<span id="reportSentSuccess"></span>
<span id="reportUpdatedSuccess"></span>
<div>
{% import 'ajaxMacros.twig' as ajax %}
{{ ajax.errorDiv() }}
{{ ajax.loadingDiv() }}
{% include "@ScheduledReports/_listReports.twig" %}
{% include "@ScheduledReports/_addReport.twig" %}
<a id='bottom'></a>
</div>
</div>
<div class="ui-confirm" id="confirm">
<h2>{{ 'ScheduledReports_AreYouSureDeleteReport'|translate }}</h2>
<input role="yes" type="button" value="{{ 'General_Yes'|translate }}"/>
<input role="no" type="button" value="{{ 'General_No'|translate }}"/>
</div>
<script type="text/javascript">
var ReportPlugin = {};
ReportPlugin.defaultPeriod = '{{ defaultPeriod }}';
ReportPlugin.defaultHour = '{{ defaultHour }}';
ReportPlugin.defaultReportType = '{{ defaultReportType }}';
ReportPlugin.defaultReportFormat = '{{ defaultReportFormat }}';
ReportPlugin.reportList = {{ reportsJSON | raw }};
ReportPlugin.createReportString = "{{ 'ScheduledReports_CreateReport'|translate }}";
ReportPlugin.updateReportString = "{{ 'ScheduledReports_UpdateReport'|translate }}";
ReportPlugin.defaultEvolutionPeriodN = {{ defaultEvolutionPeriodN|json_encode|raw }};
ReportPlugin.periodTranslations = {{ periodTranslations|json_encode|raw }};
</script>
<style type="text/css">
.reportCategory {
font-weight: bold;
margin-bottom: 5px;
}
.entityAddContainer {
position:relative;
}
.emailReports .top_controls {
padding-bottom: 18px;
}
</style>
{% endblock %}

View File

@ -0,0 +1,52 @@
<div piwik-field uicontrol="checkbox"
name="report_email_me"
introduction="{{ 'ScheduledReports_SendReportTo'|translate|e('html_attr') }}"
ng-show="manageScheduledReport.report.type == 'email'"
ng-model="manageScheduledReport.report.emailMe"
title="{{ 'ScheduledReports_SentToMe'|translate|e('html_attr') }} ({{ currentUserEmail|e('html_attr') }})">
</div>
<div piwik-field uicontrol="textarea" var-type="array"
ng-show="manageScheduledReport.report.type == 'email'"
ng-model="manageScheduledReport.report.additionalEmails"
title="{{ 'ScheduledReports_AlsoSendReportToTheseEmails'|translate|e('html_attr') }}">
</div>
<script>
$(function () {
resetReportParametersFunctions ['{{ reportType }}'] = function (report) {
report.displayFormat = '{{ defaultDisplayFormat }}';
report.emailMe = {{ defaultEmailMe }};
report.evolutionGraph = {{ defaultEvolutionGraph }};
report.additionalEmails = '';
};
updateReportParametersFunctions['{{ reportType }}'] = function (report) {
if (report == null || report.parameters == null) {
return;
}
var i, field, fields = ['displayFormat', 'emailMe', 'evolutionGraph', 'additionalEmails'];
for (i in fields) {
field = fields[i];
if (field in report.parameters) {
report[field] = report.parameters[field];
}
}
};
getReportParametersFunctions['{{ reportType }}'] = function (report) {
var parameters = {};
parameters.displayFormat = report.displayFormat;
parameters.emailMe = report.emailMe;
parameters.evolutionGraph = report.evolutionGraph;
parameters.additionalEmails = report.additionalEmails ? report.additionalEmails : [];
return parameters;
};
});
</script>

View File

@ -0,0 +1,65 @@
{% extends '@Morpheus/layout.twig' %}
{% block meta %}
<meta name="robots" content="noindex,nofollow">
{% endblock %}
{% set title %}{{ 'ScheduledReports_ReportUnsubscribe'|translate }}{% endset %}
{% set bodyId = 'loginPage' %}
{% block body %}
{{ postEvent("Template.beforeTopBar", "login") }}
{{ postEvent("Template.beforeContent", "login") }}
{% include "_iframeBuster.twig" %}
<div id="notificationContainer">
</div>
<nav>
<div class="nav-wrapper">
{% include "@CoreHome/_logo.twig" with { 'logoLink': 'https://matomo.org', 'centeredLogo': true, 'useLargeLogo': false } %}
</div>
</nav>
<section class="loginSection row">
<div class="col s12 m6 push-m3 l4 push-l4">
<div class="contentForm loginForm">
{% embed 'contentBlock.twig' with {'title': 'ScheduledReports_ReportUnsubscribe'|translate} %}
{% block content %}
{% if error is defined %}
<div piwik-notification
noclear="true"
context="error">
<strong>{{ 'General_Error'|translate }}</strong>: {{ error|raw }}<br/>
</div>
{% elseif success is defined %}
<p class="message">{{ 'ScheduledReports_SuccessfullyUnsubscribed'|translate('<strong>'~reportName|rawSafeDecoded~'</strong>')|raw }}</p>
{% else %}
<form method="POST" ng-non-bindable>
<div class="row">
<div class="col s12">
<br/>
<p>{{ 'ScheduledReports_UnsubscribeReportConfirmation'|translate('<strong>'~reportName|rawSafeDecoded~'</strong>')|raw }}</p>
<br /><br /><br />
<input type="hidden" name="nonce" id="unsubscribe_form_nonce" value="{{ nonce }}"/>
<input class="submit btn" type="submit" name="confirm" value="{{ 'ScheduledReports_Unsubscribe'|translate }}"/>
</div>
</div>
</form>
{% endif %}
{% if isCustomLogo %}
<p id="piwik">
<i><a href="https://matomo.org/" rel="noreferrer noopener" target="_blank">{{ linkTitle }}</a></i>
</p>
{% endif %}
{% endblock %}
{% endembed %}
</div>
</div>
</section>
{% endblock %}