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:
14
modules/cms/controllers/index/_button_commit.php
Normal file
14
modules/cms/controllers/index/_button_commit.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<button
|
||||
type="button"
|
||||
class="
|
||||
btn btn-danger wn-icon-download
|
||||
<?php if (!$canCommit): ?>
|
||||
hide
|
||||
<?php endif ?>
|
||||
"
|
||||
data-request="onCommit"
|
||||
data-request-confirm="<?= e(trans('cms::lang.editor.commit_confirm')) ?>"
|
||||
data-load-indicator="<?= e(trans('cms::lang.editor.committing')) ?>"
|
||||
data-control="commit-button">
|
||||
<?= e(trans('cms::lang.editor.commit')) ?>
|
||||
</button>
|
||||
8
modules/cms/controllers/index/_button_lastmodified.php
Normal file
8
modules/cms/controllers/index/_button_lastmodified.php
Normal file
@@ -0,0 +1,8 @@
|
||||
<?php if (isset($lastModified)): ?>
|
||||
<span
|
||||
class="btn empty wn-icon-calendar"
|
||||
title="<?= e(trans('backend::lang.media.last_modified')) ?>: <?= $lastModified ?>"
|
||||
data-toggle="tooltip"
|
||||
data-placement="right">
|
||||
</span>
|
||||
<?php endif; ?>
|
||||
14
modules/cms/controllers/index/_button_reset.php
Normal file
14
modules/cms/controllers/index/_button_reset.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<button
|
||||
type="button"
|
||||
class="
|
||||
btn btn-danger wn-icon-bomb
|
||||
<?php if (!$canReset): ?>
|
||||
hide
|
||||
<?php endif ?>
|
||||
"
|
||||
data-request="onReset"
|
||||
data-request-confirm="<?= e(trans('cms::lang.editor.reset_confirm')) ?>"
|
||||
data-load-indicator="<?= e(trans('cms::lang.editor.resetting')) ?>"
|
||||
data-control="reset-button">
|
||||
<?= e(trans('cms::lang.editor.reset')) ?>
|
||||
</button>
|
||||
19
modules/cms/controllers/index/_common_toolbar_actions.php
Normal file
19
modules/cms/controllers/index/_common_toolbar_actions.php
Normal file
@@ -0,0 +1,19 @@
|
||||
<?= $this->makePartial('button_commit'); ?>
|
||||
|
||||
<?= $this->makePartial('button_reset'); ?>
|
||||
|
||||
<button
|
||||
type="button"
|
||||
class="
|
||||
btn btn-danger empty wn-icon-trash-o
|
||||
<?php if (!$templatePath): ?>
|
||||
hide
|
||||
<?php endif ?>
|
||||
"
|
||||
data-request="onDelete"
|
||||
data-request-confirm="<?= e(trans('cms::lang.' . $toolbarSource . '.delete_confirm_single')) ?>"
|
||||
data-request-success="$.wn.cmsPage.updateTemplateList('<?= $toolbarSource ?>'); $(this).trigger('close.oc.tab', [{force: true}])"
|
||||
data-control="delete-button">
|
||||
</button>
|
||||
|
||||
<?= $this->makePartial('button_lastmodified'); ?>
|
||||
29
modules/cms/controllers/index/_concurrency_resolve_form.php
Normal file
29
modules/cms/controllers/index/_concurrency_resolve_form.php
Normal file
@@ -0,0 +1,29 @@
|
||||
<?= Form::open(['onsubmit'=>'return false']) ?>
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="popup">×</button>
|
||||
<h4 class="modal-title"><?= e(trans('backend::lang.form.concurrency_file_changed_title')) ?></h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<p><?= e(trans('backend::lang.form.concurrency_file_changed_description')) ?></p>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button
|
||||
type="submit"
|
||||
data-action="reload"
|
||||
class="btn btn-primary">
|
||||
<?= e(trans('backend::lang.form.reload')) ?>
|
||||
</button>
|
||||
<button
|
||||
type="submit"
|
||||
data-action="save"
|
||||
class="btn btn-primary">
|
||||
<?= e(trans('backend::lang.form.save')) ?>
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
class="btn btn-default"
|
||||
data-dismiss="popup">
|
||||
<?= e(trans('backend::lang.form.cancel')) ?>
|
||||
</button>
|
||||
</div>
|
||||
<?= Form::close() ?>
|
||||
12
modules/cms/controllers/index/_content_toolbar.php
Normal file
12
modules/cms/controllers/index/_content_toolbar.php
Normal file
@@ -0,0 +1,12 @@
|
||||
<div class="form-buttons loading-indicator-container" data-toolbar-type="content">
|
||||
<a
|
||||
href="javascript:;"
|
||||
class="btn btn-primary wn-icon-check save"
|
||||
data-request="onSave"
|
||||
data-load-indicator="<?= e(trans('backend::lang.form.saving')) ?>"
|
||||
data-hotkey="ctrl+s, cmd+s">
|
||||
<?= e(trans('backend::lang.form.save')) ?>
|
||||
</a>
|
||||
|
||||
<?= $this->makePartial('common_toolbar_actions', ['toolbarSource' => 'content']); ?>
|
||||
</div>
|
||||
16
modules/cms/controllers/index/_form_page.php
Normal file
16
modules/cms/controllers/index/_form_page.php
Normal file
@@ -0,0 +1,16 @@
|
||||
<?= Form::open([
|
||||
'class' => 'layout',
|
||||
'data-change-monitor' => 'true',
|
||||
'data-window-close-confirm' => e(trans('backend::lang.form.confirm_tab_close')),
|
||||
'data-inspector-external-parameters' => true
|
||||
]) ?>
|
||||
<?= $form->render() ?>
|
||||
|
||||
<input type="hidden" value="<?= e($form->alias) ?>" name="formWidgetAlias" />
|
||||
<input type="hidden" value="<?= ($templateType) ?>" name="templateType" />
|
||||
<input type="hidden" value="<?= ($templatePath) ?>" name="templatePath" />
|
||||
<input type="hidden" value="<?= ($templateTheme) ?>" name="theme" />
|
||||
<input type="hidden" value="<?= ($templateMtime) ?>" name="templateMtime" />
|
||||
<input type="hidden" value="0" name="templateForceSave" />
|
||||
|
||||
<?= Form::close() ?>
|
||||
12
modules/cms/controllers/index/_layout_toolbar.php
Normal file
12
modules/cms/controllers/index/_layout_toolbar.php
Normal file
@@ -0,0 +1,12 @@
|
||||
<div class="form-buttons loading-indicator-container">
|
||||
<a
|
||||
href="javascript:;"
|
||||
class="btn btn-primary wn-icon-check save"
|
||||
data-request="onSave"
|
||||
data-load-indicator="<?= e(trans('backend::lang.form.saving')) ?>"
|
||||
data-hotkey="ctrl+s, cmd+s">
|
||||
<?= e(trans('backend::lang.form.save')) ?>
|
||||
</a>
|
||||
|
||||
<?= $this->makePartial('common_toolbar_actions', ['toolbarSource' => 'layout']); ?>
|
||||
</div>
|
||||
28
modules/cms/controllers/index/_page_toolbar.php
Normal file
28
modules/cms/controllers/index/_page_toolbar.php
Normal file
@@ -0,0 +1,28 @@
|
||||
<div class="form-buttons loading-indicator-container">
|
||||
<a
|
||||
href="javascript:;"
|
||||
class="btn btn-primary wn-icon-check save"
|
||||
data-request="onSave"
|
||||
data-load-indicator="<?= e(trans('backend::lang.form.saving')) ?>"
|
||||
data-hotkey="ctrl+s, cmd+s">
|
||||
<?= e(trans('backend::lang.form.save')) ?>
|
||||
</a>
|
||||
|
||||
<?php
|
||||
$pageUrl = isset($pageUrl) ? $pageUrl : null;
|
||||
?>
|
||||
<a
|
||||
href="<?= Url::to($pageUrl) ?>"
|
||||
target="_blank"
|
||||
class="
|
||||
btn btn-primary wn-icon-crosshairs
|
||||
<?php if (!$templatePath): ?>
|
||||
hide
|
||||
<?php endif ?>
|
||||
"
|
||||
data-control="preview-button">
|
||||
<?= e(trans('cms::lang.editor.preview')) ?>
|
||||
</a>
|
||||
|
||||
<?= $this->makePartial('common_toolbar_actions', ['toolbarSource' => 'page']); ?>
|
||||
</div>
|
||||
12
modules/cms/controllers/index/_partial_toolbar.php
Normal file
12
modules/cms/controllers/index/_partial_toolbar.php
Normal file
@@ -0,0 +1,12 @@
|
||||
<div class="form-buttons loading-indicator-container">
|
||||
<a
|
||||
href="javascript:;"
|
||||
class="btn btn-primary wn-icon-check save"
|
||||
data-request="onSave"
|
||||
data-load-indicator="<?= e(trans('backend::lang.form.saving')) ?>"
|
||||
data-hotkey="ctrl+s, cmd+s">
|
||||
<?= e(trans('backend::lang.form.save')) ?>
|
||||
</a>
|
||||
|
||||
<?= $this->makePartial('common_toolbar_actions', ['toolbarSource' => 'partial']); ?>
|
||||
</div>
|
||||
6
modules/cms/controllers/index/_safemode_notice.php
Normal file
6
modules/cms/controllers/index/_safemode_notice.php
Normal file
@@ -0,0 +1,6 @@
|
||||
<div class="callout callout-warning no-subheader">
|
||||
<div class="header" style="border-radius: 0">
|
||||
<i class="icon-warning"></i>
|
||||
<h3><?= e(trans('cms::lang.cms_object.safe_mode_enabled')) ?></h3>
|
||||
</div>
|
||||
</div>
|
||||
80
modules/cms/controllers/index/_sidepanel.php
Normal file
80
modules/cms/controllers/index/_sidepanel.php
Normal file
@@ -0,0 +1,80 @@
|
||||
<?php
|
||||
$visibleCount = 0;
|
||||
?>
|
||||
<div class="layout control-scrollpanel" id="cms-side-panel">
|
||||
<div class="layout-cell">
|
||||
<div class="layout-relative fix-button-container">
|
||||
<?php if ($this->user->hasAccess('cms.manage_pages')): ?>
|
||||
<!-- Pages -->
|
||||
<form
|
||||
role="form"
|
||||
class="layout <?= ++$visibleCount == 1 ? '' : 'hide' ?>"
|
||||
data-content-id="pages"
|
||||
data-template-type="page"
|
||||
data-type-icon="wn-icon-copy"
|
||||
onsubmit="return false">
|
||||
<?= $this->widget->pageList->render() ?>
|
||||
</form>
|
||||
<?php endif ?>
|
||||
<?php if ($this->user->hasAccess('cms.manage_partials')): ?>
|
||||
<!-- Partials -->
|
||||
<form
|
||||
role="form"
|
||||
class="layout <?= ++$visibleCount == 1 ? '' : 'hide' ?>"
|
||||
data-content-id="partials"
|
||||
data-template-type="partial"
|
||||
data-type-icon="wn-icon-tags"
|
||||
onsubmit="return false">
|
||||
<?= $this->widget->partialList->render() ?>
|
||||
</form>
|
||||
<?php endif ?>
|
||||
<?php if ($this->user->hasAccess('cms.manage_layouts')): ?>
|
||||
<!-- Layouts -->
|
||||
<form
|
||||
role="form"
|
||||
class="layout <?= ++$visibleCount == 1 ? '' : 'hide' ?>"
|
||||
data-content-id="layouts"
|
||||
data-template-type="layout"
|
||||
data-type-icon="wn-icon-th-large"
|
||||
onsubmit="return false">
|
||||
<?= $this->widget->layoutList->render() ?>
|
||||
</form>
|
||||
<?php endif ?>
|
||||
<?php if ($this->user->hasAccess('cms.manage_content')): ?>
|
||||
<!-- Content -->
|
||||
<form
|
||||
role="form"
|
||||
class="layout <?= ++$visibleCount == 1 ? '' : 'hide' ?>"
|
||||
data-content-id="content"
|
||||
data-template-type="content"
|
||||
data-type-icon="wn-icon-file-text-o"
|
||||
onsubmit="return false">
|
||||
<?= $this->widget->contentList->render() ?>
|
||||
</form>
|
||||
<?php endif ?>
|
||||
<?php if ($this->user->hasAccess('cms.manage_assets')): ?>
|
||||
<!-- Assets -->
|
||||
<form
|
||||
role="form"
|
||||
class="layout <?= ++$visibleCount == 1 ? '' : 'hide' ?>"
|
||||
data-content-id="assets"
|
||||
data-template-type="asset"
|
||||
data-type-icon="wn-icon-file-text-o"
|
||||
onsubmit="return false">
|
||||
<?= $this->widget->assetList->render() ?>
|
||||
</form>
|
||||
<?php endif ?>
|
||||
<?php if ($this->user->hasAccess(['cms.manage_pages', 'cms.manage_layouts', 'cms.manage_partials'], false)): ?>
|
||||
<!-- Components -->
|
||||
<form
|
||||
role="form"
|
||||
class="layout <?= ++$visibleCount == 1 ? '' : 'hide' ?>"
|
||||
data-content-id="components"
|
||||
onsubmit="return false"
|
||||
id="cms-component-list">
|
||||
<?= $this->widget->componentList->render() ?>
|
||||
</form>
|
||||
<?php endif ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
7
modules/cms/controllers/index/config_content_list.yaml
Normal file
7
modules/cms/controllers/index/config_content_list.yaml
Normal file
@@ -0,0 +1,7 @@
|
||||
# ===================================
|
||||
# Configures the layout list widget
|
||||
# ===================================
|
||||
|
||||
noRecordsMessage: 'cms::lang.content.no_list_records'
|
||||
deleteConfirmation: 'cms::lang.content.delete_confirm_multiple'
|
||||
itemType: content
|
||||
8
modules/cms/controllers/index/config_layout_list.yaml
Normal file
8
modules/cms/controllers/index/config_layout_list.yaml
Normal file
@@ -0,0 +1,8 @@
|
||||
# ===================================
|
||||
# Configures the layout list widget
|
||||
# ===================================
|
||||
|
||||
descriptionProperty: description
|
||||
noRecordsMessage: 'cms::lang.layout.no_list_records'
|
||||
deleteConfirmation: 'cms::lang.layout.delete_confirm_multiple'
|
||||
itemType: layout
|
||||
15
modules/cms/controllers/index/config_page_list.yaml
Normal file
15
modules/cms/controllers/index/config_page_list.yaml
Normal file
@@ -0,0 +1,15 @@
|
||||
# ===================================
|
||||
# Configures the page list widget
|
||||
# ===================================
|
||||
|
||||
titleProperty: 'title'
|
||||
descriptionProperty: description
|
||||
descriptionProperties:
|
||||
url: URL
|
||||
noRecordsMessage: 'cms::lang.page.no_list_records'
|
||||
deleteConfirmation: 'cms::lang.page.delete_confirm_multiple'
|
||||
itemType: page
|
||||
sortingProperties:
|
||||
url: 'cms::lang.page.url'
|
||||
title: 'cms::lang.page.title'
|
||||
fileName: 'cms::lang.page.file_name'
|
||||
8
modules/cms/controllers/index/config_partial_list.yaml
Normal file
8
modules/cms/controllers/index/config_partial_list.yaml
Normal file
@@ -0,0 +1,8 @@
|
||||
# ===================================
|
||||
# Configures the partial list widget
|
||||
# ===================================
|
||||
|
||||
descriptionProperty: description
|
||||
noRecordsMessage: 'cms::lang.partial.no_list_records'
|
||||
deleteConfirmation: 'cms::lang.partial.delete_confirm_multiple'
|
||||
itemType: partial
|
||||
31
modules/cms/controllers/index/index.php
Normal file
31
modules/cms/controllers/index/index.php
Normal file
@@ -0,0 +1,31 @@
|
||||
<?= Block::put('sidepanel') ?>
|
||||
<?php if (!$this->fatalError): ?>
|
||||
<?= $this->makePartial('sidepanel') ?>
|
||||
<?php endif ?>
|
||||
<?= Block::endPut() ?>
|
||||
|
||||
<?= Block::put('body') ?>
|
||||
<?php if (!$this->fatalError): ?>
|
||||
<div
|
||||
data-control="tab"
|
||||
data-closable
|
||||
data-close-confirmation="<?= e(trans('backend::lang.form.confirm_tab_close')) ?>"
|
||||
data-pane-classes="layout-cell"
|
||||
data-max-title-symbols="15"
|
||||
data-title-as-file-names="true"
|
||||
class="layout control-tabs master-tabs fancy-layout wn-logo-transparent"
|
||||
id="cms-master-tabs">
|
||||
|
||||
<div class="layout-row min-size">
|
||||
<div class="tabs-container">
|
||||
<ul class="nav nav-tabs"></ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="tab-content layout-row">
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<?php else: ?>
|
||||
<p class="flash-message static error"><?= e(trans($this->fatalError)) ?></p>
|
||||
<?php endif ?>
|
||||
<?= Block::endPut() ?>
|
||||
Reference in New Issue
Block a user