feat: VivesPOS landing on Winter CMS 1.2 — theme + plugin + Dockerfile
Some checks are pending
Module sub-split / Sub-split (push) Waiting to run
Some checks are pending
Module sub-split / Sub-split (push) Waiting to run
- Base: wintercms/winter branch 1.2 (full framework) - Theme vivespos: Canvas 7 + Bootstrap 5 CDN, custom CSS - Layout: deferred GTM/GA4 tracking, JSON-LD SoftwareApplication - Partials: hero (offline-first), features, modes (offline/nube toggle), screenshots, pricing (3 planes), comparison, FAQ, CTA - Plugin VivesPOS.Site with ContactForm - Dockerfile: PHP 8.2 Apache, port 80, healthcheck - Added winter/wn-pages, blog, sitemap, seo plugins - Active theme set to vivespos
This commit is contained in:
3
modules/cms/controllers/themelogs/_field_content.php
Normal file
3
modules/cms/controllers/themelogs/_field_content.php
Normal file
@@ -0,0 +1,3 @@
|
||||
<div class="form-control">
|
||||
<pre><?= e($value.PHP_EOL) ?></pre>
|
||||
</div>
|
||||
@@ -0,0 +1,7 @@
|
||||
<div class="form-control">
|
||||
<pre
|
||||
data-plugin="template-diff"
|
||||
data-old-field-name="old_content"
|
||||
data-new-field-name="content"
|
||||
data-content-tag="pre"></pre>
|
||||
</div>
|
||||
@@ -0,0 +1,7 @@
|
||||
<div
|
||||
class="form-control"
|
||||
data-plugin="template-diff"
|
||||
data-old-field-name="old_template"
|
||||
data-diff-type="words"
|
||||
data-new-field-name="template">
|
||||
</div>
|
||||
1
modules/cms/controllers/themelogs/_field_template.php
Normal file
1
modules/cms/controllers/themelogs/_field_template.php
Normal file
@@ -0,0 +1 @@
|
||||
<div class="form-control"><?= e($value) ?></div>
|
||||
4
modules/cms/controllers/themelogs/_hint.php
Normal file
4
modules/cms/controllers/themelogs/_hint.php
Normal file
@@ -0,0 +1,4 @@
|
||||
|
||||
<p>
|
||||
<?= e(trans('cms::lang.theme_log.hint')) ?>
|
||||
</p>
|
||||
22
modules/cms/controllers/themelogs/_hint_preview.php
Normal file
22
modules/cms/controllers/themelogs/_hint_preview.php
Normal file
@@ -0,0 +1,22 @@
|
||||
<?php if ($formModel->type == $formModel::TYPE_DELETE): ?>
|
||||
<div class="callout fade in callout-danger no-subheader m-b">
|
||||
<div class="header">
|
||||
<i class="icon-minus"></i>
|
||||
<h3><?= e(trans('cms::lang.theme_log.template_deleted')) ?></h3>
|
||||
</div>
|
||||
</div>
|
||||
<?php elseif ($formModel->type == $formModel::TYPE_CREATE): ?>
|
||||
<div class="callout fade in callout-success no-subheader m-b">
|
||||
<div class="header">
|
||||
<i class="icon-plus"></i>
|
||||
<h3><?= e(trans('cms::lang.theme_log.template_created')) ?></h3>
|
||||
</div>
|
||||
</div>
|
||||
<?php else: ?>
|
||||
<div class="callout fade in callout-info no-subheader">
|
||||
<div class="header">
|
||||
<i class="icon-pencil"></i>
|
||||
<h3><?= e(trans('cms::lang.theme_log.template_updated')) ?></h3>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif ?>
|
||||
31
modules/cms/controllers/themelogs/_list_toolbar.php
Normal file
31
modules/cms/controllers/themelogs/_list_toolbar.php
Normal file
@@ -0,0 +1,31 @@
|
||||
<div data-control="toolbar" class="loading-indicator-container">
|
||||
<a
|
||||
href="javascript:;"
|
||||
data-request="onRefresh"
|
||||
data-load-indicator="<?= e(trans('backend::lang.list.updating')) ?>"
|
||||
class="btn btn-primary wn-icon-refresh">
|
||||
<?= e(trans('backend::lang.list.refresh')) ?>
|
||||
</a>
|
||||
<a
|
||||
href="javascript:;"
|
||||
data-request="onEmptyLog"
|
||||
data-request-confirm="<?= e(trans('backend::lang.list.delete_selected_confirm')) ?>"
|
||||
data-load-indicator="<?= e(trans('cms::lang.theme_log.empty_loading')) ?>"
|
||||
class="btn btn-default wn-icon-eraser">
|
||||
<?= e(trans('cms::lang.theme_log.empty_link')) ?>
|
||||
</a>
|
||||
<button
|
||||
class="btn btn-danger wn-icon-trash-o"
|
||||
disabled="disabled"
|
||||
onclick="$(this).data('request-data', {
|
||||
checked: $('.control-list').listWidget('getChecked')
|
||||
})"
|
||||
data-request="onDelete"
|
||||
data-trigger-action="enable"
|
||||
data-trigger=".control-list input[type=checkbox]"
|
||||
data-trigger-condition="checked"
|
||||
data-request-success="$(this).prop('disabled', true)"
|
||||
data-stripe-load-indicator>
|
||||
<?= e(trans('backend::lang.list.delete_selected')) ?>
|
||||
</button>
|
||||
</div>
|
||||
18
modules/cms/controllers/themelogs/_preview_scoreboard.php
Normal file
18
modules/cms/controllers/themelogs/_preview_scoreboard.php
Normal file
@@ -0,0 +1,18 @@
|
||||
<div class="scoreboard-item title-value">
|
||||
<h4><?= e(trans('cms::lang.theme_log.id_label')) ?></h4>
|
||||
<p>#<?= e($formModel->id) ?></p>
|
||||
</div>
|
||||
<?php if ($formModel->user): ?>
|
||||
<div class="scoreboard-item title-value">
|
||||
<h4><?= e(trans('cms::lang.theme_log.user')) ?></h4>
|
||||
<p><?= e($formModel->user->full_name) ?></p>
|
||||
</div>
|
||||
<?php endif ?>
|
||||
<div class="scoreboard-item title-value">
|
||||
<h4><?= e(trans('cms::lang.theme_log.created_at')) ?></h4>
|
||||
<p><?= Backend::dateTime($formModel->created_at) ?></p>
|
||||
</div>
|
||||
<div class="scoreboard-item title-value">
|
||||
<h4><?= e(trans('cms::lang.theme_log.theme_name')) ?></h4>
|
||||
<p><?= e($formModel->theme_name) ?></p>
|
||||
</div>
|
||||
16
modules/cms/controllers/themelogs/config_filter.yaml
Normal file
16
modules/cms/controllers/themelogs/config_filter.yaml
Normal file
@@ -0,0 +1,16 @@
|
||||
# ===================================
|
||||
# Filter Scope Definitions
|
||||
# ===================================
|
||||
|
||||
scopes:
|
||||
|
||||
created_at:
|
||||
label: backend::lang.access_log.created_at
|
||||
type: daterange
|
||||
conditions: created_at >= ':after' AND created_at <= ':before'
|
||||
|
||||
user:
|
||||
label: backend::lang.access_log.login
|
||||
modelClass: Backend\Models\User
|
||||
conditions: user_id in (:filtered)
|
||||
nameFrom: login
|
||||
19
modules/cms/controllers/themelogs/config_form.yaml
Normal file
19
modules/cms/controllers/themelogs/config_form.yaml
Normal file
@@ -0,0 +1,19 @@
|
||||
# ===================================
|
||||
# Form Behavior Config
|
||||
# ===================================
|
||||
|
||||
# Record name
|
||||
name: system::lang.event_log.menu_label
|
||||
|
||||
# Model Form Field configuration
|
||||
form: ~/modules/cms/models/themelog/fields.yaml
|
||||
|
||||
# Model Class name
|
||||
modelClass: Cms\Models\ThemeLog
|
||||
|
||||
# Default redirect location
|
||||
defaultRedirect: cms/themelogs
|
||||
|
||||
# Preview page
|
||||
preview:
|
||||
title: cms::lang.theme_log.preview_title
|
||||
22
modules/cms/controllers/themelogs/config_list.yaml
Normal file
22
modules/cms/controllers/themelogs/config_list.yaml
Normal file
@@ -0,0 +1,22 @@
|
||||
# ===================================
|
||||
# List Behavior Config
|
||||
# ===================================
|
||||
|
||||
title: cms::lang.theme_log.menu_label
|
||||
list: ~/modules/cms/models/themelog/columns.yaml
|
||||
modelClass: Cms\Models\ThemeLog
|
||||
recordUrl: cms/themelogs/preview/:id
|
||||
noRecordsMessage: backend::lang.list.no_records
|
||||
recordsPerPage: 30
|
||||
showSetup: true
|
||||
showCheckboxes: true
|
||||
defaultSort:
|
||||
column: count
|
||||
direction: desc
|
||||
|
||||
toolbar:
|
||||
buttons: list_toolbar
|
||||
search:
|
||||
prompt: backend::lang.list.search_prompt
|
||||
|
||||
filter: config_filter.yaml
|
||||
5
modules/cms/controllers/themelogs/index.php
Normal file
5
modules/cms/controllers/themelogs/index.php
Normal file
@@ -0,0 +1,5 @@
|
||||
<div class="padded-container container-flush">
|
||||
<?= $this->makeHintPartial('system_requestlogs_hint', 'hint') ?>
|
||||
</div>
|
||||
|
||||
<?= $this->listRender() ?>
|
||||
34
modules/cms/controllers/themelogs/preview.php
Normal file
34
modules/cms/controllers/themelogs/preview.php
Normal file
@@ -0,0 +1,34 @@
|
||||
<?php Block::put('breadcrumb') ?>
|
||||
<ul>
|
||||
<li><a href="<?= Backend::url('cms/themelogs') ?>"><?= e(trans('cms::lang.theme_log.menu_label')) ?></a></li>
|
||||
<li><?= e(trans($this->pageTitle)) ?></li>
|
||||
</ul>
|
||||
<?php Block::endPut() ?>
|
||||
|
||||
<?php if (!$this->fatalError): ?>
|
||||
|
||||
<div class="scoreboard">
|
||||
<div data-control="toolbar">
|
||||
<?= $this->makePartial('preview_scoreboard') ?>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<?= $this->makePartial('hint_preview') ?>
|
||||
</div>
|
||||
|
||||
<div class="layout-item stretch layout-column">
|
||||
<?= $this->formRenderPreview() ?>
|
||||
</div>
|
||||
|
||||
<?php else: ?>
|
||||
|
||||
<p class="flash-message static error"><?= e(trans($this->fatalError)) ?></p>
|
||||
|
||||
<?php endif ?>
|
||||
|
||||
<p>
|
||||
<a href="<?= Backend::url('cms/themelogs') ?>" class="btn btn-default wn-icon-chevron-left">
|
||||
<?= e(trans('cms::lang.theme_log.return_link')) ?>
|
||||
</a>
|
||||
</p>
|
||||
Reference in New Issue
Block a user