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:
8
modules/cms/widgets/templatelist/partials/_body.php
Normal file
8
modules/cms/widgets/templatelist/partials/_body.php
Normal file
@@ -0,0 +1,8 @@
|
||||
<?= $this->makePartial('toolbar') ?>
|
||||
<div class="layout-row">
|
||||
<div class="layout-cell">
|
||||
<div class="layout-relative">
|
||||
<?= $this->makePartial('templates', ['data' => $data]) ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
59
modules/cms/widgets/templatelist/partials/_items.php
Normal file
59
modules/cms/widgets/templatelist/partials/_items.php
Normal file
@@ -0,0 +1,59 @@
|
||||
<?php if ($items): ?>
|
||||
<ul>
|
||||
<?php foreach ($items as $item): ?>
|
||||
<?php if (property_exists($item, 'items')): ?>
|
||||
<?php if ($item->items): ?>
|
||||
<li class="group" data-status="<?= $this->getCollapseStatus($item->title, false) ? 'expanded' : 'collapsed' ?>">
|
||||
<h4><a href="javascript:;"><?= e($item->title) ?></a></h4>
|
||||
<?= $this->makePartial('items', ['items'=>$item->items, 'nested'=>true]) ?>
|
||||
</li>
|
||||
<?php endif ?>
|
||||
<?php else: ?>
|
||||
<?php
|
||||
$dataId = $this->itemType.'-'.$this->theme->getDirName().'-'.$item->fileName;
|
||||
?>
|
||||
<li
|
||||
class="item"
|
||||
data-item-path="<?= e($item->fileName) ?>"
|
||||
data-item-theme="<?= e($this->theme->getDirName()) ?>"
|
||||
data-item-type="<?= $this->itemType ?>"
|
||||
data-id="<?= e($dataId) ?>">
|
||||
<a href="javascript:;"
|
||||
data-control="dragvalue"
|
||||
data-text-value="<?= $item->dragValue ?>">
|
||||
<span class="title"><?= e($item->title) ?></span>
|
||||
<span class="description" title="<?= e($item->description) ?>">
|
||||
<?php foreach ($item->descriptions as $title => $value): ?>
|
||||
<?php if (strlen($value)): ?>
|
||||
<?= e($title) ?>: <strong><?= e($value) ?></strong>
|
||||
<?php endif ?>
|
||||
<?php endforeach ?>
|
||||
|
||||
<?= e($item->description) ?>
|
||||
</span>
|
||||
<span class="borders"></span>
|
||||
</a>
|
||||
|
||||
<input type="hidden" name="template[<?= e($item->fileName) ?>]" value="0" />
|
||||
<div class="checkbox custom-checkbox nolabel">
|
||||
<?php $cbId = 'cb' . md5($this->itemType . '/' . $item->fileName) ?>
|
||||
<input
|
||||
id="<?= $cbId ?>"
|
||||
type="checkbox"
|
||||
name="template[<?= e($item->fileName) ?>]"
|
||||
<?= $this->isItemSelected($item->fileName) ? 'checked' : null ?>
|
||||
data-request="<?= $this->getEventHandler('onSelect') ?>"
|
||||
value="1">
|
||||
<label for="<?= $cbId ?>">Select</label>
|
||||
</div>
|
||||
</li>
|
||||
<?php endif ?>
|
||||
<?php endforeach ?>
|
||||
</ul>
|
||||
<?php else: ?>
|
||||
<p class="no-data"><?= e(trans($this->noRecordsMessage)) ?></p>
|
||||
<?php endif ?>
|
||||
|
||||
<?php if (!isset($nested)): ?>
|
||||
<input type="hidden" name="theme" value="<?= e($this->theme->getDirName()) ?>">
|
||||
<?php endif ?>
|
||||
@@ -0,0 +1,12 @@
|
||||
<?php foreach ($this->sortingProperties as $propertyName => $propertyTitle): ?>
|
||||
<li
|
||||
role="presentation"
|
||||
<?php if ($this->getSortingProperty() == $propertyName): ?>
|
||||
class="active"
|
||||
<?php endif ?>
|
||||
>
|
||||
<a role="menuitem" tabindex="-1" href="javascript:;" data-stripe-load-indicator data-request="<?= $this->getEventHandler('onApplySorting') ?>" data-request-data="sortProperty: '<?= e($propertyName) ?>'">
|
||||
<?= e(trans($propertyTitle)) ?>
|
||||
</a>
|
||||
</li>
|
||||
<?php endforeach ?>
|
||||
11
modules/cms/widgets/templatelist/partials/_templates.php
Normal file
11
modules/cms/widgets/templatelist/partials/_templates.php
Normal file
@@ -0,0 +1,11 @@
|
||||
<div class="layout-absolute">
|
||||
<div class="control-scrollbar" data-control="scrollbar">
|
||||
<div
|
||||
class="control-filelist <?= $this->controlClass ?>"
|
||||
data-control="filelist"
|
||||
data-group-status-handler="<?= $this->getEventHandler('onSetCollapseStatus') ?>"
|
||||
id="<?= $this->getId('template-list') ?>">
|
||||
<?= $this->makePartial('items', ['items' => $data]) ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
51
modules/cms/widgets/templatelist/partials/_toolbar.php
Normal file
51
modules/cms/widgets/templatelist/partials/_toolbar.php
Normal file
@@ -0,0 +1,51 @@
|
||||
<div class="layout-row min-size">
|
||||
<div class="control-toolbar toolbar-padded <?= $toolbarClass ?>">
|
||||
|
||||
<!-- Control Panel -->
|
||||
<div class="toolbar-item" data-calculate-width>
|
||||
<div class="btn-group">
|
||||
<button
|
||||
type="button"
|
||||
class="btn btn-default wn-icon-plus <?= !$this->sortingProperties ? 'last' : null ?>"
|
||||
data-control="create-template"><?= e(trans('cms::lang.sidebar.add')) ?></button>
|
||||
|
||||
<?php if ($this->sortingProperties): ?>
|
||||
<div class="dropdown">
|
||||
<button
|
||||
type="button"
|
||||
class="btn btn-default empty wn-icon-sort-alpha-asc"
|
||||
data-toggle="dropdown"></button>
|
||||
<ul
|
||||
class="dropdown-menu offset-left"
|
||||
data-dropdown-title="<?= e(trans('cms::lang.template.order_by')) ?>"
|
||||
id="<?= $this->getId('sorting-options') ?>"
|
||||
role="menu">
|
||||
<?= $this->makePartial('sorting-options') ?>
|
||||
</ul>
|
||||
</div>
|
||||
<?php endif?>
|
||||
|
||||
<button type="button" class="btn btn-danger empty wn-icon-trash-o hide"
|
||||
id="<?= $this->getId('delete-button') ?>"
|
||||
data-control="delete-template"
|
||||
data-confirmation="<?= e(trans($this->deleteConfirmation)) ?>"
|
||||
data-trigger-action="show"
|
||||
data-trigger="<?= '#'.$this->getId('template-list') ?> input[type=checkbox]"
|
||||
data-trigger-condition="checked"></button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Template Search -->
|
||||
<div class="relative toolbar-item loading-indicator-container size-input-text">
|
||||
<input placeholder="<?= e(trans('cms::lang.sidebar.search')) ?>" type="text" name="search" value="<?= e($this->getSearchTerm()) ?>"
|
||||
class="form-control icon search" autocomplete="off"
|
||||
data-track-input
|
||||
data-load-indicator
|
||||
data-load-indicator-opaque
|
||||
data-request-success="$('<?= '#'.$this->getId('delete-button') ?>').trigger('oc.triggerOn.update')"
|
||||
data-request="<?= $this->getEventHandler('onSearch') ?>"
|
||||
/>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
Reference in New Issue
Block a user