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,7 @@
<div data-control="toolbar">
<a
href="<?= Backend::url('system/maillayouts/create') ?>"
class="btn btn-primary wn-icon-plus">
<?= e(trans('system::lang.mail_templates.new_layout')) ?>
</a>
</div>

View File

@@ -0,0 +1,7 @@
<div data-control="toolbar">
<a
href="<?= Backend::url('system/mailpartials/create') ?>"
class="btn btn-primary wn-icon-plus">
<?= e(trans('system::lang.mail_templates.new_partial')) ?>
</a>
</div>

View File

@@ -0,0 +1,7 @@
<div data-control="toolbar">
<a
href="<?= Backend::url('system/mailtemplates/create') ?>"
class="btn btn-primary wn-icon-plus">
<?= e(trans('system::lang.mail_templates.new_template')) ?>
</a>
</div>

View File

@@ -0,0 +1,16 @@
# ===================================
# Form Behavior Config
# ===================================
name: system::lang.mail_templates.template
form: ~/modules/system/models/mailtemplate/fields.yaml
modelClass: System\Models\MailTemplate
defaultRedirect: system/mailtemplates
create:
redirect: system/mailtemplates/update/:id
redirectClose: system/mailtemplates
update:
redirect: system/mailtemplates
redirectClose: system/mailtemplates

View File

@@ -0,0 +1,16 @@
# ===================================
# List Behavior Config
# ===================================
title: system::lang.mail_templates.menu_label
list: ~/modules/system/models/maillayout/columns.yaml
modelClass: System\Models\MailLayout
recordUrl: system/maillayouts/update/:id
noRecordsMessage: backend::lang.list.no_records
recordsPerPage: 20
showSetup: true
toolbar:
buttons: list_layouts_toolbar
search:
prompt: backend::lang.list.search_prompt

View File

@@ -0,0 +1,16 @@
# ===================================
# List Behavior Config
# ===================================
title: system::lang.mail_partials.menu_label
list: ~/modules/system/models/mailpartial/columns.yaml
modelClass: System\Models\MailPartial
recordUrl: system/mailpartials/update/:id
noRecordsMessage: backend::lang.list.no_records
recordsPerPage: 20
showSetup: true
toolbar:
buttons: list_partials_toolbar
search:
prompt: backend::lang.list.search_prompt

View File

@@ -0,0 +1,16 @@
# ===================================
# List Behavior Config
# ===================================
title: system::lang.mail_templates.menu_label
list: ~/modules/system/models/mailtemplate/columns.yaml
modelClass: System\Models\MailTemplate
recordUrl: system/mailtemplates/update/:id
noRecordsMessage: backend::lang.list.no_records
recordsPerPage: 20
showSetup: true
toolbar:
buttons: list_templates_toolbar
search:
prompt: backend::lang.list.search_prompt

View File

@@ -0,0 +1,30 @@
<div class="control-tabs content-tabs tabs-flush" data-control="tab">
<ul class="nav nav-tabs">
<li class="<?= $activeTab == 'templates' ? 'active' : '' ?>">
<a href="#templates" data-tab-url="<?= Backend::url('system/mailtemplates/index/templates') ?>">
<?= e(trans('system::lang.mail_templates.templates')) ?>
</a>
</li>
<li class="<?= $activeTab == 'layouts' ? 'active' : '' ?>">
<a href="#layouts" data-tab-url="<?= Backend::url('system/mailtemplates/index/layouts') ?>">
<?= e(trans('system::lang.mail_templates.layouts')) ?>
</a>
</li>
<li class="<?= $activeTab == 'partials' ? 'active' : '' ?>">
<a href="#partials" data-tab-url="<?= Backend::url('system/mailtemplates/index/partials') ?>">
<?= e(trans('system::lang.mail_templates.partials')) ?>
</a>
</li>
</ul>
<div class="tab-content">
<div class="tab-pane <?= $activeTab == 'templates' ? 'active' : '' ?>">
<?= $this->listRender('templates') ?>
</div>
<div class="tab-pane <?= $activeTab == 'layouts' ? 'active' : '' ?>">
<?= $this->listRender('layouts') ?>
</div>
<div class="tab-pane <?= $activeTab == 'partials' ? 'active' : '' ?>">
<?= $this->listRender('partials') ?>
</div>
</div>
</div>

View File

@@ -0,0 +1,77 @@
<?php Block::put('breadcrumb') ?>
<ul>
<li><a href="<?= Backend::url('system/mailtemplates') ?>"><?= e(trans('system::lang.mail_templates.menu_label')) ?></a></li>
<li><?= e(trans($this->pageTitle)) ?></li>
</ul>
<?php Block::endPut() ?>
<?php if (!$this->fatalError): ?>
<?= Form::open(['class'=>'layout']) ?>
<div class="layout-row min-size">
<div class="scoreboard">
<div data-control="toolbar">
<div class="scoreboard-item title-value">
<h4><?= e(trans('system::lang.mail_templates.template')) ?></h4>
<p><?= e($formModel->code) ?></p>
</div>
</div>
</div>
</div>
<div class="layout-row">
<?= $this->formRender() ?>
</div>
<div class="form-buttons p-t">
<div class="loading-indicator-container">
<button
type="submit"
data-request="onSave"
data-browser-validate
data-request-data="redirect:0"
data-hotkey="ctrl+s, cmd+s"
data-load-indicator="<?= e(trans('system::lang.mail_templates.saving')) ?>"
class="btn btn-primary">
<?= e(trans('backend::lang.form.save')) ?>
</button>
<button
type="button"
data-request="onSave"
data-browser-validate
data-request-data="close:1"
data-hotkey="ctrl+enter, cmd+enter"
data-load-indicator="<?= e(trans('system::lang.mail_templates.saving')) ?>"
class="btn btn-default">
<?= e(trans('backend::lang.form.save_and_close')) ?>
</button>
<button
type="button"
data-request="onTest"
data-load-indicator="<?= e(trans('system::lang.mail_templates.sending')) ?>"
data-request-confirm="<?= e(trans('system::lang.mail_templates.test_confirm', [ 'email' => e(BackendAuth::getUser()->email)])) ?>"
class="btn btn-info">
<?= e(trans('system::lang.mail_templates.test_send')) ?>
</button>
<button
type="button"
class="wn-icon-trash-o btn-icon danger pull-right"
data-request="onDelete"
data-load-indicator="<?= e(trans('system::lang.mail_templates.deleting')) ?>"
data-request-confirm="<?= e(trans('system::lang.mail_templates.delete_confirm')) ?>">
</button>
<span class="btn-text">
<?= e(trans('backend::lang.form.or')) ?> <a href="<?= Backend::url('system/mailtemplates') ?>"><?= e(trans('backend::lang.form.cancel')) ?></a>
</span>
</div>
</div>
<?= Form::close() ?>
<?php else: ?>
<p class="flash-message static error"><?= e(trans($this->fatalError)) ?></p>
<p><a href="<?= Backend::url('system/mailtemplates') ?>" class="btn btn-default"><?= e(trans('system::lang.mail_templates.return')) ?></a></p>
<?php endif ?>