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,92 @@
<?php namespace System\Traits;
use Event;
/**
* Adds system event related features to any class.
*
* @package winter\wn-system-module
* @author Alexey Bobkov, Samuel Georges
*/
trait EventEmitter
{
use \Winter\Storm\Support\Traits\Emitter;
/**
* Fires a combination of local and global events. The first segment is removed
* from the event name locally and the local object is passed as the first
* argument to the event globally. Halting is also enabled by default.
*
* For example:
*
* $this->fireSystemEvent('backend.list.myEvent', ['my value']);
*
* Is equivalent to:
*
* $this->fireEvent('list.myEvent', ['myvalue'], true);
*
* Event::fire('backend.list.myEvent', [$this, 'myvalue'], true);
*
* @param string $event Event name
* @param array $params Event parameters
* @param boolean $halt Halt after first non-null result
* @return mixed
*/
public function fireSystemEvent($event, $params = [], $halt = true)
{
$result = [];
$shortEvent = substr($event, strpos($event, '.') + 1);
$longArgs = array_merge([$this], $params);
/*
* Local event first
*/
if ($response = $this->fireEvent($shortEvent, $params, $halt)) {
if ($halt) {
return $response;
}
$result = array_merge($result, $response);
}
/*
* Global event second
*/
if ($response = Event::fire($event, $longArgs, $halt)) {
if ($halt) {
return $response;
}
$result = array_merge($result, $response);
}
return $result;
}
/**
* Special event function used for extending within view files,
* allowing HTML to be injected multiple times.
*
* For example:
*
* <?= $this->fireViewEvent('backend.auth.extendSigninView') ?>
*
* @param string $event Event name
* @param array $params Event parameters
* @return string
*/
public function fireViewEvent($event, $params = [])
{
// Add the local object to the first parameter always
array_unshift($params, $this);
if ($result = Event::fire($event, $params)) {
return implode(PHP_EOL.PHP_EOL, (array) $result);
}
return '';
}
}