Initial commit: CloudOps infrastructure platform

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

View File

@@ -0,0 +1,75 @@
{#
Variables
- tmpl
- security
- form
- formThemes
- formConfigs
- isWritable
#}
{% if formThemes is not empty and formThemes is iterable %}
{% form_theme form with formThemes %}
{% elseif formThemes is not empty and formThemes is string %}
{% form_theme form formThemes %}
{% endif %}
{% set isIndex = 'index' == tmpl ? true : false %}
{% set tmpl = 'list' %}
{% extends isIndex ? '@MauticCore/Default/content.html.twig' : '@MauticCore/Default/raw_output.html.twig' %}
{% block mauticContent %}config{% endblock %}
{% block headerTitle %}{{ 'mautic.config.header.index'|trans }}{% endblock %}
{% block content %}
<!-- start: box layout -->
<div class="container">
<!-- step container -->
<div class="row">
<div class="col-md-3 height-auto">
<div class="">
{% if not isWritable %}
<div class="alert alert-danger">{{ 'mautic.config.notwritable'|trans }}</div>
{% endif %}
<!-- Nav tabs -->
<ul class="list-group list-group-tabs" role="tablist">
{% for key in form.children|keys|filter(v => formConfigs[v] is defined and form[v].children|length > 0) %}
<li role="presentation" class="list-group-item {% if loop.first %}in active{% endif %}">
{% set containsErrors = formContainsErrors(form[key]) %}
<a href="#{{ key }}" aria-controls="{{ key }}" role="tab" data-toggle="tab" class="list-group-item-text steps {% if formContainsErrors(form[key]) %}text-danger{% endif %}">
{{ ('mautic.config.tab.' ~ key)|trans }}
{% if formContainsErrors(form[key]) %}
<i class="ri-alert-line"></i>
{% endif %}
</a>
</li>
{% endfor %}
</ul>
</div>
</div>
<!-- container -->
<div class="col-md-9 height-auto">
{{ form_start(form) }}
<!-- Tab panes -->
<div class="tab-content">
{% for key in form.children|keys|filter(v => formConfigs[v] is defined) %}
{% if form[key].children|length > 0 %}
<div role="tabpanel" class="tab-pane fade {% if loop.first %}in active{% endif %} bdr-w-0" id="{{ key }}">
<div>
<div class="row pa-md bdr-b">
<h4 class="fw-sb">{{ ('mautic.config.tab.' ~ key)|trans }}</h4>
</div>
{{ form_widget(form[key], {'formConfig': formConfigs[key]}) }}
</div>
</div>
{% else %}
{% do form[key].setRendered() %}
{% endif %}
{% endfor %}
</div>
{{ form_end(form) }}
</div>
</div>
</div>
{% endblock %}

View File

@@ -0,0 +1,27 @@
{%- set hasErrors = form.vars.errors|length %}
{%- set feedbackClass = hasErrors > 0 ? 'has-error' : '' %}
{%- set field = form.vars.name %}
{%- set hide = fieldValue is not defined or (fieldValue is defined and fieldValue is empty) ? 'hide' : '' %}
{%- set filename = inputAlphanum(form.vars.label|trans, true, '_') %}
{%- set downloadUrl = path('mautic_config_action', {'objectAction': 'download', 'objectId': field, 'filename': filename}) %}
{%- set removeUrl = path('mautic_config_action', {'objectAction': 'remove', 'objectId': field}) %}
<div class="row">
<div class="form-group col-xs-12 {{ feedbackClass }}">
{{ form_label(form, form.vars.label) }}
<span class="small pull-right {{ hide }}">
<a
data-toggle="confirmation"
href="{{ removeUrl }}"
data-message="{{ 'mautic.config.remove_file_contents'|trans|e }}"
data-confirm-text="{{ 'mautic.core.remove'|trans|e }}"
data-confirm-callback="removeConfigValue"
data-cancel-text="{{ 'mautic.core.form.cancel'|trans|e }}">
{{ 'mautic.core.remove'|trans }}
</a>
<span> | </span>
<a href="{{ downloadUrl }}">{{ 'mautic.core.download'|trans }}</a>
</span>
{{ form_widget(form) }}
{{ form_errors(form) }}
</div>
</div>

View File

@@ -0,0 +1,58 @@
{% block dsn_row %}
<div class="config-dsn-container">
{% if form.test_button is defined %}
<div class="help-block">
<span class="ri-loader-3-line ri-spin hide pull-left"></span>
<div class="status-msg"></div>
<div class="alert alert-warning save-config-msg hide">{{ 'mautic.config.dsn.save_to_test'|trans }}</div>
</div>
{% endif %}
<div class="row">
<div class="col-xs-12">
{{ form_row(form.scheme) }}
</div>
<div class="col-xs-12">
{{ form_row(form.host, { 'attr': {'preaddon_text': '://'} }) }}
</div>
<div class="col-xs-12">
{{ form_row(form.port, { 'attr': {'preaddon_text': ':'} }) }}
</div>
<div class="col-xs-12">
{{ form_row(form.path, { 'attr': {'preaddon_text': '/'} }) }}
</div>
</div>
<div class="row">
<div class="col-xs-12">
<div class="row">
<div class="col-xs-12">
{{ form_row(form.user) }}
</div>
<div class="col-xs-12">
{{ form_row(form.password, { 'attr': {'preaddon_text': ':'} }) }}
</div>
</div>
<div class="config-dsn-test-container">
<div class="form-group">
{% if form.test_button is defined %}
{{ form_widget(form.test_button) }}
{% endif %}
</div>
<div class="form-group">
<div class="form-control-static ml-10">
<span class="text-muted">{{ 'mautic.config.dsn.using_current_dsn'|trans }}:</span>
{% include '@MauticCore/Components/code-snippet.html.twig' with {
variant: 'inline',
innerText: form.vars.currentDsn|default('n/a'),
} %}
</div>
</div>
</div>
</div>
<hr>
<div class="col-xs-12">
{{ form_row(form.options) }}
</div>
</div>
{{ form_rest(form) }}
</div>
{% endblock %}

View File

@@ -0,0 +1,142 @@
{% extends '@MauticCore/Default/content.html.twig' %}
{% block mauticContent %}sysinfo{% endblock %}
{% block headerTitle %}{{ 'mautic.sysinfo.header.index'|trans }}{% endblock %}
{% block content %}
<!-- start: box layout -->
<div class="box-layout">
<!-- step container -->
<div class="col-md-3 height-auto">
<div class="pr-lg pl-lg pt-md pb-md">
<!-- Nav tabs -->
<ul class="list-group list-group-tabs" role="tablist">
<li role="presentation" class="list-group-item in active">
<a href="#phpinfo" aria-controls="phpinfo" role="tab" data-toggle="tab" class="list-group-item-heading">
{{ 'mautic.sysinfo.tab.phpinfo'|trans }}
</a>
</li>
<li role="presentation" class="list-group-item">
<a href="#recommendations" aria-controls="phpinfo" role="tab" data-toggle="tab" class="list-group-item-heading">
{{ 'mautic.sysinfo.tab.recommendations'|trans }}
</a>
</li>
<li role="presentation" class="list-group-item">
<a href="#folders" aria-controls="folders" role="tab" data-toggle="tab" class="list-group-item-heading">
{{ 'mautic.sysinfo.tab.folders'|trans }}
</a>
</li>
<li role="presentation" class="list-group-item">
<a href="#log" aria-controls="log" role="tab" data-toggle="tab" class="list-group-item-heading">
{{ 'mautic.sysinfo.tab.log'|trans }}
</a>
</li>
<li role="presentation" class="list-group-item">
<a href="#dbinfo" aria-controls="dbinfo" role="tab" data-toggle="tab" class="list-group-item-heading">
{{ 'mautic.sysinfo.tab.dbinfo'|trans }}
</a>
</li>
</ul>
</div>
</div>
<!-- container -->
<div class="col-md-9 height-auto bdr-l">
<!-- Tab panes -->
<div class="tab-content">
<div role="tabpanel" class="tab-pane fade in active bdr-w-0" id="phpinfo">
<div class="pt-md pr-md pl-md pb-md">
{{ phpInfo|raw }}
</div>
</div>
<div role="tabpanel" class="tab-pane fade bdr-w-0" id="recommendations">
<div class="pt-md pr-md pl-md pb-md">
{% if recommendations is empty and requirements is empty %}
<div class="alert alert-info">
{{ 'mautic.sysinfo.no.recommendations'|trans }}
</div>
{% endif %}
{% for requirement in requirements %}
<div class="alert alert-danger">
{{ requirement|raw }}
</div>
{% endfor %}
{% for recommendation in recommendations %}
<div class="alert alert-warning">
{{ recommendation|raw }}
</div>
{% endfor %}
</div>
</div>
<div role="tabpanel" class="tab-pane fade bdr-w-0" id="folders">
<div class="pt-md pr-md pl-md pb-md">
<h2 class="pb-md">{{ 'mautic.sysinfo.folders.title'|trans }}</h2>
<table class="table table-hover">
<thead>
<tr>
<th>{{ 'mautic.sysinfo.folder.path'|trans }}</th>
<th>{{ 'mautic.sysinfo.is.writable'|trans }}</th>
</tr>
</thead>
{% for folder, isWritable in folders %}
<tr class="{% if isWritable %}bg-success{% else %}bg-danger{% endif %}">
<td>{{ folder }}</td>
<td>
{% if isWritable %}
{{ 'mautic.sysinfo.writable'|trans }}
{% else %}
{{ 'mautic.sysinfo.unwritable'|trans }}
{% endif %}
</td>
</tr>
{% endfor %}
</table>
</div>
</div>
<div role="tabpanel" class="tab-pane fade bdr-w-0" id="log">
<div class="pt-md pr-md pl-md pb-md">
<h2 class="pb-md">{{ 'mautic.sysinfo.log.title'|trans }}</h2>
{% if log is defined and log is not empty %}
<pre>{{ log }}</pre>
{% else %}
<div class="alert alert-info" role="alert">
{{ 'mautic.sysinfo.log.missing'|trans }}
</div>
{% endif %}
</div>
</div>
<div role="tabpanel" class="tab-pane fade bdr-w-0" id="dbinfo">
<div class="pt-md pr-md pl-md pb-md">
<h2 class="pb-md">{{ 'mautic.sysinfo.dbinfo.title'|trans }}</h2>
<table class="table table-bordered">
<thead>
<tr>
<th>{{ 'mautic.sysinfo.dbinfo.property'|trans }}</th>
<th>{{ 'mautic.sysinfo.dbinfo.value'|trans }}</th>
</tr>
</thead>
<tbody>
<tr>
<td>{{ 'mautic.sysinfo.dbinfo.version'|trans }}</td>
<td id="dbinfo-version">{{ dbInfo.version }}</td>
</tr>
<tr>
<td>{{ 'mautic.sysinfo.dbinfo.driver'|trans }}</td>
<td id="dbinfo-driver">{{ dbInfo.driver }}</td>
</tr>
<tr>
<td>{{ 'mautic.sysinfo.dbinfo.platform'|trans }}</td>
<td id="dbinfo-platform">{{ dbInfo.platform }}</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
{% endblock %}