feat: VivesPOS landing on Winter CMS 1.2 — theme + plugin + Dockerfile
Some checks are pending
Module sub-split / Sub-split (push) Waiting to run
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:
28
plugins/winter/demo/Plugin.php
Normal file
28
plugins/winter/demo/Plugin.php
Normal file
@@ -0,0 +1,28 @@
|
||||
<?php namespace Winter\Demo;
|
||||
|
||||
/**
|
||||
* The plugin.php file (called the plugin initialization script) defines the plugin information class.
|
||||
*/
|
||||
|
||||
use System\Classes\PluginBase;
|
||||
|
||||
class Plugin extends PluginBase
|
||||
{
|
||||
|
||||
public function pluginDetails()
|
||||
{
|
||||
return [
|
||||
'name' => 'Winter Demo',
|
||||
'description' => 'Provides features used by the provided demonstration theme.',
|
||||
'author' => 'Alexey Bobkov, Samuel Georges',
|
||||
'icon' => 'icon-leaf'
|
||||
];
|
||||
}
|
||||
|
||||
public function registerComponents()
|
||||
{
|
||||
return [
|
||||
'\Winter\Demo\Components\Todo' => 'demoTodo'
|
||||
];
|
||||
}
|
||||
}
|
||||
50
plugins/winter/demo/components/Todo.php
Normal file
50
plugins/winter/demo/components/Todo.php
Normal file
@@ -0,0 +1,50 @@
|
||||
<?php namespace Winter\Demo\Components;
|
||||
|
||||
use Flash;
|
||||
use ApplicationException;
|
||||
use Cms\Classes\ComponentBase;
|
||||
|
||||
class Todo extends ComponentBase
|
||||
{
|
||||
|
||||
public function componentDetails()
|
||||
{
|
||||
return [
|
||||
'name' => 'Todo List',
|
||||
'description' => 'Implements a simple to-do list.'
|
||||
];
|
||||
}
|
||||
|
||||
public function defineProperties()
|
||||
{
|
||||
return [
|
||||
'max' => [
|
||||
'description' => 'The most amount of todo items allowed',
|
||||
'title' => 'Max items',
|
||||
'default' => 10,
|
||||
'type' => 'string',
|
||||
'validationPattern' => '^[0-9]+$',
|
||||
'validationMessage' => 'The Max Items value is required and should be integer.'
|
||||
]
|
||||
];
|
||||
}
|
||||
|
||||
public function onAddItem()
|
||||
{
|
||||
$items = post('items', []);
|
||||
|
||||
if (count($items) >= $this->property('max')) {
|
||||
throw new ApplicationException(sprintf('Sorry only %s items are allowed.', $this->property('max')));
|
||||
}
|
||||
|
||||
$newItem = post('newItem');
|
||||
if (empty($newItem)) {
|
||||
Flash::error('You must specify an item to add to the To Do List.');
|
||||
return;
|
||||
}
|
||||
|
||||
$items[] = $newItem;
|
||||
|
||||
$this->page['items'] = $items;
|
||||
}
|
||||
}
|
||||
22
plugins/winter/demo/components/todo/default.htm
Normal file
22
plugins/winter/demo/components/todo/default.htm
Normal file
@@ -0,0 +1,22 @@
|
||||
<form
|
||||
role="form"
|
||||
data-request="{{ __SELF__ }}::onAddItem"
|
||||
data-request-update="'{{ __SELF__ }}::list': '#result'"
|
||||
data-request-success="$('#input-item').val('')"
|
||||
data-request-flash>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title">To Do List</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div class="input-group">
|
||||
<input type="text" id="input-item" class="form-control" value="" name="newItem" placeholder="What needs to be done?">
|
||||
<span class="input-group-btn">
|
||||
<button type="submit" class="btn btn btn-primary" data-attach-loading>Add</button>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<ul class="list-group" id="result">
|
||||
</ul>
|
||||
</div>
|
||||
</form>
|
||||
12
plugins/winter/demo/components/todo/list.htm
Normal file
12
plugins/winter/demo/components/todo/list.htm
Normal file
@@ -0,0 +1,12 @@
|
||||
{% for item in items %}
|
||||
<li class="list-group-item">
|
||||
<input type="hidden" name="items[]" value="{{ item }}" />
|
||||
|
||||
{{ item }}
|
||||
|
||||
<button type="button"
|
||||
class="close pull-right"
|
||||
aria-hidden="true"
|
||||
onclick="$(this).closest('li').remove()">×</button>
|
||||
</li>
|
||||
{% endfor %}
|
||||
33
plugins/winter/demo/composer.json
Normal file
33
plugins/winter/demo/composer.json
Normal file
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"name": "winter/demo-plugin",
|
||||
"type": "winter-plugin",
|
||||
"description": "Demo Winter CMS plugin",
|
||||
"keywords": ["winter", "cms", "demo", "plugin"],
|
||||
"license": "MIT",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Alexey Bobkov",
|
||||
"email": "aleksey.bobkov@gmail.com",
|
||||
"role": "Co-founder"
|
||||
},
|
||||
{
|
||||
"name": "Samuel Georges",
|
||||
"email": "daftspunky@gmail.com",
|
||||
"role": "Co-founder"
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.4",
|
||||
"composer/installers": "~1.0"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Winter\\Demo\\": ""
|
||||
}
|
||||
},
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.0-dev"
|
||||
}
|
||||
}
|
||||
}
|
||||
1
plugins/winter/demo/updates/version.yaml
Normal file
1
plugins/winter/demo/updates/version.yaml
Normal file
@@ -0,0 +1 @@
|
||||
1.0.1: First version of Demo
|
||||
Reference in New Issue
Block a user