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,82 @@
/*
* Scripts for the Reorder controller behavior.
*
* The following functions are observed:
* - Simple sorting: Post back the original sort orders and the new ordered identifiers.
* - Nested sorting: Post back source and target nodes IDs and the move positioning.
*/
+function ($) { "use strict";
var ReorderBehavior = function() {
this.sortMode = null
this.simpleSortOrders = []
this.initSorting = function (mode) {
this.sortMode = mode
if (mode == 'simple') {
this.initSortingSimple()
}
$('#reorderTreeList').on('move.oc.treelist', $.proxy(this.processReorder, this))
}
this.processReorder = function(ev, sortData){
var postData
if (this.sortMode == 'simple') {
postData = { sort_orders: this.simpleSortOrders }
}
else if (this.sortMode == 'nested') {
postData = this.getNestedMoveData(sortData)
}
$('#reorderTreeList').request('onReorder', {
data: postData
})
}
this.getNestedMoveData = function (sortData) {
var
$el,
$item = sortData.item,
moveData = {
targetNode: 0,
sourceNode: $item.data('recordId'),
position: 'root'
}
if (($el = $item.next()) && $el.length) {
moveData.position = 'before'
}
else if (($el = $item.prev()) && $el.length) {
moveData.position = 'after'
}
else if (($el = $item.parents('li:first')) && $el.length) {
moveData.position = 'child'
}
if ($el.length) {
moveData.targetNode = $el.data('recordId')
}
return moveData
}
this.initSortingSimple = function () {
var sortOrders = []
$('#reorderTreeList li').each(function(i) {
sortOrders.push(i);
})
this.simpleSortOrders = sortOrders
}
}
$.wn.reorderBehavior = new ReorderBehavior;
}(window.jQuery);