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,9 @@
<?php if ($toolbar): ?>
<?= $toolbar->render() ?>
<?php endif ?>
<?php if ($filter): ?>
<?= $filter->render() ?>
<?php endif ?>
<?= $list->render() ?>

View File

@@ -0,0 +1,59 @@
<?php
$listController = $this->getClassExtension(\Backend\Behaviors\ListController::class);
$listConfig = $listController->getConfig();
?>
<div data-control="toolbar">
<?php if ($this->isClassExtendedWith(\Backend\Behaviors\FormController::class)): ?>
<a
href="<?= $this->actionUrl('create') ?>"
class="btn btn-primary wn-icon-plus">
<?= e(trans('backend::lang.form.create_title', ['name' => trans(\Winter\Storm\Support\Str::before($listConfig->title, '_plural'))])); ?>
</a>
<?php endif ?>
<?php if (isset($listConfig->showCheckboxes) && $listConfig->showCheckboxes != false): ?>
<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-request-confirm="<?= e(trans('backend::lang.list.delete_selected_confirm')); ?>"
data-trigger-action="enable"
data-trigger=".control-list input[type=checkbox]"
data-trigger-condition="checked"
data-request-success="$(this).prop('disabled', 'disabled')"
data-stripe-load-indicator
>
<?= e(trans('backend::lang.list.delete_selected')); ?>
</button>
<?php endif ?>
<?php if ($this->isClassExtendedWith(\Backend\Behaviors\ReorderController::class)): ?>
<a
href="<?= $this->actionUrl('reorder') ?>"
class="btn btn-default wn-icon-arrows-up-down">
<?= e(trans('backend::lang.reorder.reorder_title', ['name' => trans($listConfig->title)])); ?>
</a>
<?php endif ?>
<?php if ($this->isClassExtendedWith(\Backend\Behaviors\ImportExportController::class)): ?>
<div class="btn-group">
<?php $importExport = $this->asExtension(\Backend\Behaviors\ImportExportController::class); ?>
<?php if ($importExport->userHasAccess('export')): ?>
<a
href="<?= $this->actionUrl('export') ?>"
class="btn btn-default wn-icon-download">
<?= e(trans('backend::lang.import_export.export')) ?>
</a>
<?php endif ?>
<?php if ($importExport->userHasAccess('import')): ?>
<a
href="<?= $this->actionUrl('import') ?>"
class="btn btn-default wn-icon-upload">
<?= e(trans('backend::lang.import_export.import')) ?>
</a>
<?php endif ?>
</div>
<?php endif ?>
</div>

View File

@@ -0,0 +1 @@
<?= $this->listRender() ?>