Files
avives 1f72193a64
Some checks are pending
Module sub-split / Sub-split (push) Waiting to run
feat: VivesPOS landing on Winter CMS 1.2 — theme + plugin + Dockerfile
- 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
2026-08-21 19:29:00 -06:00

66 lines
1.5 KiB
Plaintext

<?php
namespace {{studly_author}}\{{studly_plugin}}\ReportWidgets;
use Backend\Classes\ReportWidgetBase;
use Exception;
/**
* {{name}} Report Widget
*/
class {{studly_name}} extends ReportWidgetBase
{
/**
* @var string The default alias to use for this widget
*/
protected $defaultAlias = '{{studly_name}}ReportWidget';
/**
* Defines the widget's properties
* @return array
*/
public function defineProperties()
{
return [
'title' => [
'title' => 'backend::lang.dashboard.widget_title_label',
'default' => '{{title_name}} Report Widget',
'type' => 'string',
'validationPattern' => '^.+$',
'validationMessage' => 'backend::lang.dashboard.widget_title_error',
],
];
}
/**
* Adds widget specific asset files. Use $this->addJs() and $this->addCss()
* to register new assets to include on the page.
* @return void
*/
protected function loadAssets()
{
}
/**
* Renders the widget's primary contents.
* @return string HTML markup supplied by this widget.
*/
public function render()
{
try {
$this->prepareVars();
} catch (Exception $ex) {
$this->vars['error'] = $ex->getMessage();
}
return $this->makePartial('{{lower_name}}');
}
/**
* Prepares the report widget view data
*/
public function prepareVars()
{
}
}