feat: VivesPOS landing on Winter CMS 1.2 — theme + plugin + Dockerfile
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:
2026-08-21 19:29:00 -06:00
commit 1f72193a64
3266 changed files with 531480 additions and 0 deletions

View File

@@ -0,0 +1,3 @@
<div class="form-control">
<pre><?= e($value.PHP_EOL) ?></pre>
</div>

View File

@@ -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>

View File

@@ -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>

View File

@@ -0,0 +1 @@
<div class="form-control"><?= e($value) ?></div>

View File

@@ -0,0 +1,4 @@
<p>
<?= e(trans('cms::lang.theme_log.hint')) ?>
</p>

View 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 ?>

View 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>

View 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>

View 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

View 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

View 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

View File

@@ -0,0 +1,5 @@
<div class="padded-container container-flush">
<?= $this->makeHintPartial('system_requestlogs_hint', 'hint') ?>
</div>
<?= $this->listRender() ?>

View 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>