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:
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
/** @var array{previous: mixed, next: mixed, current: int, total: int} $navigation */
|
||||
$previousUrl = $navigation['previous'] !== null
|
||||
? $this->actionUrl($navigationContext, $navigation['previous'])
|
||||
: null;
|
||||
$nextUrl = $navigation['next'] !== null
|
||||
? $this->actionUrl($navigationContext, $navigation['next'])
|
||||
: null;
|
||||
$chevronUp = '<svg viewBox="0 0 16 16" width="13" height="13" aria-hidden="true"><path d="M4 10l4-4 4 4" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg>';
|
||||
$chevronDown = '<svg viewBox="0 0 16 16" width="13" height="13" aria-hidden="true"><path d="M4 6l4 4 4-4" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></svg>';
|
||||
?>
|
||||
<div class="form-record-nav" role="navigation" aria-label="<?= e(trans('backend::lang.form.record_navigation')) ?>">
|
||||
<span class="form-record-nav-position">
|
||||
<?= e($navigation['current']) ?> / <?= e($navigation['total']) ?>
|
||||
</span>
|
||||
<span class="form-record-nav-group">
|
||||
<?php if ($previousUrl): ?>
|
||||
<a href="<?= e($previousUrl) ?>" class="form-record-nav-btn" title="<?= e(trans('backend::lang.form.previous_record')) ?>" data-hotkey="ctrl+up, cmd+up"><?= $chevronUp ?></a>
|
||||
<?php else: ?>
|
||||
<span class="form-record-nav-btn is-disabled" aria-disabled="true"><?= $chevronUp ?></span>
|
||||
<?php endif ?>
|
||||
<?php if ($nextUrl): ?>
|
||||
<a href="<?= e($nextUrl) ?>" class="form-record-nav-btn" title="<?= e(trans('backend::lang.form.next_record')) ?>" data-hotkey="ctrl+down, cmd+down"><?= $chevronDown ?></a>
|
||||
<?php else: ?>
|
||||
<span class="form-record-nav-btn is-disabled" aria-disabled="true"><?= $chevronDown ?></span>
|
||||
<?php endif ?>
|
||||
</span>
|
||||
</div>
|
||||
@@ -0,0 +1,81 @@
|
||||
<?php
|
||||
$modelName = $formConfig->name ?? '';
|
||||
?>
|
||||
<?php if ($formContext === 'create'): ?>
|
||||
<div class="loading-indicator-container">
|
||||
<button
|
||||
type="submit"
|
||||
data-request="onSave"
|
||||
data-request-data="new:1"
|
||||
data-browser-validate
|
||||
data-hotkey="ctrl+shift+s, cmd+shift+s"
|
||||
data-load-indicator="<?= e(trans('backend::lang.form.creating_name', ['name' => trans($modelName)])); ?>"
|
||||
data-request-before-update="$el.trigger('unchange.oc.changeMonitor')"
|
||||
class="btn btn-primary wn-icon-plus">
|
||||
<?= e(trans('backend::lang.form.create_and_new')); ?>
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
data-request="onSave"
|
||||
data-browser-validate
|
||||
data-hotkey="ctrl+s, cmd+s"
|
||||
data-load-indicator="<?= e(trans('backend::lang.form.creating_name', ['name' => trans($modelName)])); ?>"
|
||||
data-request-before-update="$el.trigger('unchange.oc.changeMonitor')"
|
||||
class="btn btn-primary wn-icon-save">
|
||||
<?= e(trans('backend::lang.form.create')); ?>
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
data-request="onSave"
|
||||
data-browser-validate
|
||||
data-request-data="close:1"
|
||||
data-hotkey="ctrl+enter, cmd+enter"
|
||||
data-load-indicator="<?= e(trans('backend::lang.form.creating_name', ['name' => trans($modelName)])); ?>"
|
||||
data-request-before-update="$el.trigger('unchange.oc.changeMonitor')"
|
||||
class="btn btn-default wn-icon-check">
|
||||
<?= e(trans('backend::lang.form.create_and_close')); ?>
|
||||
</button>
|
||||
<span class="btn-text">
|
||||
<?= e(trans('backend::lang.form.or')) ?> <a href="<?= Backend::url($formConfig->defaultRedirect) ?>"><?= e(trans('backend::lang.form.cancel')); ?></a>
|
||||
</span>
|
||||
</div>
|
||||
<?php elseif ($formContext === 'update'): ?>
|
||||
<div class="loading-indicator-container">
|
||||
<button
|
||||
type="button"
|
||||
data-request="onSave"
|
||||
data-browser-validate
|
||||
data-load-indicator="<?= e(trans('backend::lang.form.saving')) ?>"
|
||||
data-request-before-update="$el.trigger('unchange.oc.changeMonitor')"
|
||||
data-request-data="redirect:0"
|
||||
data-hotkey="ctrl+s, cmd+s"
|
||||
class="btn btn-primary wn-icon-save"
|
||||
>
|
||||
<?= e(trans('backend::lang.form.save')); ?>
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
data-request="onSave"
|
||||
data-browser-validate
|
||||
data-request-data="close:1"
|
||||
data-hotkey="ctrl+enter, cmd+enter"
|
||||
data-load-indicator="<?= e(trans('backend::lang.form.saving')); ?>"
|
||||
data-request-before-update="$el.trigger('unchange.oc.changeMonitor')"
|
||||
class="btn btn-default wn-icon-check"
|
||||
>
|
||||
<?= e(trans('backend::lang.form.save_and_close')); ?>
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
data-request="onDelete"
|
||||
data-load-indicator="<?= e(trans('backend::lang.form.deleting_name', ['name' => trans($modelName)])); ?>"
|
||||
data-request-before-update="$el.trigger('unchange.oc.changeMonitor')"
|
||||
data-request-confirm="<?= e(trans('backend::lang.form.confirm_delete')); ?>"
|
||||
class="wn-icon-trash-o btn-icon danger pull-right"
|
||||
>
|
||||
</button>
|
||||
<span class="btn-text">
|
||||
<?= e(trans('backend::lang.form.or')) ?> <a href="<?= Backend::url($formConfig->defaultRedirect) ?>"><?= e(trans('backend::lang.form.cancel')); ?></a>
|
||||
</span>
|
||||
</div>
|
||||
<?php endif ?>
|
||||
20
modules/backend/behaviors/formcontroller/views/create.php
Normal file
20
modules/backend/behaviors/formcontroller/views/create.php
Normal file
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
// Decide which layout we should be rendering
|
||||
$layout = $this->formLayout ?? $formConfig->formLayout ?? null;
|
||||
if (!in_array($layout, ['standard', 'sidebar', 'fancy'])) {
|
||||
$layout = 'standard';
|
||||
}
|
||||
|
||||
// If required, set the appropriate body classes
|
||||
$this->bodyClass = match ($layout) {
|
||||
'fancy' => 'fancy-layout compact-container breadcrumb-flush breadcrumb-fancy',
|
||||
'sidebar' => 'compact-container',
|
||||
default => '',
|
||||
};
|
||||
|
||||
// Define layout mode view path for inclusion
|
||||
$this->appendViewPath(sprintf('%s/create/%s', __DIR__, $layout));
|
||||
|
||||
// Render the form layout
|
||||
echo $this->makePartial(sprintf('create/%s.php', $layout));
|
||||
@@ -0,0 +1,21 @@
|
||||
<?php Block::put('breadcrumb') ?>
|
||||
<?= $this->makeLayoutPartial('breadcrumb') ?>
|
||||
<?php Block::endPut() ?>
|
||||
|
||||
<?php if (!$this->fatalError): ?>
|
||||
<div class="layout fancy-layout">
|
||||
<?= Form::open([
|
||||
'id' => $this->formGetId(),
|
||||
'class' => 'layout',
|
||||
'data-change-monitor' => 'true',
|
||||
'data-window-close-confirm' => 'true',
|
||||
]) ?>
|
||||
<div class="layout-row">
|
||||
<?= $this->formRender() ?>
|
||||
</div>
|
||||
<?= Form::close() ?>
|
||||
</div>
|
||||
<?php else: ?>
|
||||
<p class="flash-message static error"><?= e($this->fatalError) ?></p>
|
||||
<p><a href="<?= isset($formConfig) ? Backend::url($formConfig->defaultRedirect) : 'javascript:history.back()' ?>" class="btn btn-default"><?= e(trans('backend::lang.form.return_to_list')); ?></a></p>
|
||||
<?php endif ?>
|
||||
@@ -0,0 +1,41 @@
|
||||
<?php Block::put('breadcrumb') ?>
|
||||
<?= $this->makeLayoutPartial('breadcrumb') ?>
|
||||
<?php Block::endPut() ?>
|
||||
|
||||
<?php if (!$this->fatalError): ?>
|
||||
<?php Block::put('form-contents') ?>
|
||||
<div class="layout">
|
||||
<div class="layout-row">
|
||||
<?= $this->formRenderOutsideFields() ?>
|
||||
<?= $this->formRenderPrimaryTabs() ?>
|
||||
</div>
|
||||
|
||||
<div class="form-buttons p-t">
|
||||
<?= $this->formMakePartial('toolbar') ?>
|
||||
</div>
|
||||
</div>
|
||||
<?php Block::endPut() ?>
|
||||
|
||||
<?php Block::put('form-sidebar') ?>
|
||||
<div class="hide-tabs"><?= $this->formRenderSecondaryTabs() ?></div>
|
||||
<?php Block::endPut() ?>
|
||||
|
||||
<?php Block::put('body') ?>
|
||||
<?= Form::open([
|
||||
'id' => $this->formGetId(),
|
||||
'class' => 'layout stretch',
|
||||
'data-change-monitor' => 'true',
|
||||
'data-window-close-confirm' => 'true',
|
||||
]) ?>
|
||||
<?= $this->makeLayout('form-with-sidebar') ?>
|
||||
<?= Form::close() ?>
|
||||
<?php Block::endPut() ?>
|
||||
<?php else: ?>
|
||||
<div class="control-breadcrumb">
|
||||
<?= Block::placeholder('breadcrumb') ?>
|
||||
</div>
|
||||
<div class="padded-container">
|
||||
<p class="flash-message static error"><?= e(trans($this->fatalError)) ?></p>
|
||||
<p><a href="<?= isset($formConfig) ? Backend::url($formConfig->defaultRedirect) : 'javascript:history.back()' ?>" class="btn btn-default"><?= e(trans('backend::lang.form.return_to_list')); ?></a></p>
|
||||
</div>
|
||||
<?php endif ?>
|
||||
@@ -0,0 +1,23 @@
|
||||
<?php Block::put('breadcrumb') ?>
|
||||
<?= $this->makeLayoutPartial('breadcrumb') ?>
|
||||
<?php Block::endPut() ?>
|
||||
|
||||
<?php if (!$this->fatalError): ?>
|
||||
<?= Form::open([
|
||||
'id' => $this->formGetId(),
|
||||
'class' => 'layout',
|
||||
'data-change-monitor' => 'true',
|
||||
'data-window-close-confirm' => 'true',
|
||||
]) ?>
|
||||
<div class="layout-row">
|
||||
<?= $this->formRender() ?>
|
||||
</div>
|
||||
|
||||
<div class="form-buttons p-t">
|
||||
<?= $this->formMakePartial('toolbar') ?>
|
||||
</div>
|
||||
<?= Form::close() ?>
|
||||
<?php else: ?>
|
||||
<p class="flash-message static error"><?= e($this->fatalError) ?></p>
|
||||
<p><a href="<?= isset($formConfig) ? Backend::url($formConfig->defaultRedirect) : 'javascript:history.back()' ?>" class="btn btn-default"><?= e(trans('backend::lang.form.return_to_list')); ?></a></p>
|
||||
<?php endif ?>
|
||||
@@ -0,0 +1,36 @@
|
||||
<div class="form-buttons loading-indicator-container">
|
||||
<button
|
||||
type="submit"
|
||||
data-request="onSave"
|
||||
data-request-data="new:1"
|
||||
data-browser-validate
|
||||
data-hotkey="ctrl+shift+s, cmd+shift+s"
|
||||
data-load-indicator="<?= e(trans('backend::lang.form.creating')); ?>"
|
||||
data-request-before-update="$el.trigger('unchange.oc.changeMonitor')"
|
||||
class="btn btn-primary wn-icon-plus">
|
||||
<?= e(trans('backend::lang.form.create_and_new')); ?>
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
data-request="onSave"
|
||||
data-browser-validate
|
||||
data-hotkey="ctrl+s, cmd+s"
|
||||
data-load-indicator="<?= e(trans('backend::lang.form.creating')); ?>"
|
||||
data-request-before-update="$el.trigger('unchange.oc.changeMonitor')"
|
||||
class="btn btn-primary wn-icon-save">
|
||||
<?= e(trans('backend::lang.form.create')); ?>
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
data-request="onSave"
|
||||
data-browser-validate
|
||||
data-request-data="close:1"
|
||||
data-hotkey="ctrl+enter, cmd+enter"
|
||||
data-load-indicator="<?= e(trans('backend::lang.form.creating')); ?>"
|
||||
data-request-before-update="$el.trigger('unchange.oc.changeMonitor')"
|
||||
class="btn btn-default wn-icon-check">
|
||||
<?= e(trans('backend::lang.form.create_and_close')); ?>
|
||||
</button>
|
||||
|
||||
<a class="btn btn-default wn-icon-ban" href="<?= $this->actionUrl('') ?>"><?= e(trans('backend::lang.form.cancel')); ?></a>
|
||||
</div>
|
||||
21
modules/backend/behaviors/formcontroller/views/preview.php
Normal file
21
modules/backend/behaviors/formcontroller/views/preview.php
Normal file
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
|
||||
// Decide which layout we should be rendering
|
||||
$layout = $this->formLayout ?? $formConfig->formLayout ?? null;
|
||||
if (!in_array($layout, ['standard', 'sidebar', 'fancy'])) {
|
||||
$layout = 'standard';
|
||||
}
|
||||
|
||||
// If required, set the appropriate body classes
|
||||
$this->bodyClass = match ($layout) {
|
||||
'fancy' => 'fancy-layout compact-container breadcrumb-flush breadcrumb-fancy',
|
||||
'sidebar' => 'compact-container',
|
||||
default => '',
|
||||
};
|
||||
|
||||
// Define layout mode view path for inclusion
|
||||
$this->appendViewPath(sprintf('%s/preview/%s', __DIR__, $layout));
|
||||
|
||||
// Render the form layout
|
||||
echo $this->makePartial(sprintf('preview/%s.php', $layout));
|
||||
@@ -0,0 +1,18 @@
|
||||
<?php Block::put('breadcrumb') ?>
|
||||
<?= $this->makeLayoutPartial('breadcrumb') ?>
|
||||
<?= $this->formRenderRecordNavigation() ?>
|
||||
<?php Block::endPut() ?>
|
||||
|
||||
<?php if (!$this->fatalError): ?>
|
||||
<?= Form::open([
|
||||
'id' => $this->formGetId(),
|
||||
'class' => 'layout',
|
||||
]) ?>
|
||||
<div class="layout-row form-preview">
|
||||
<?= $this->formRenderPreview() ?>
|
||||
</div>
|
||||
<?= Form::close() ?>
|
||||
<?php else: ?>
|
||||
<p class="flash-message static error"><?= e($this->fatalError) ?></p>
|
||||
<p><a href="<?= isset($formConfig) ? Backend::url($formConfig->defaultRedirect) : 'javascript:history.back()' ?>" class="btn btn-default"><?= e(trans('backend::lang.form.return_to_list')); ?></a></p>
|
||||
<?php endif ?>
|
||||
@@ -0,0 +1,36 @@
|
||||
<?php Block::put('breadcrumb') ?>
|
||||
<?= $this->makeLayoutPartial('breadcrumb') ?>
|
||||
<?= $this->formRenderRecordNavigation() ?>
|
||||
<?php Block::endPut() ?>
|
||||
|
||||
<?php if (!$this->fatalError): ?>
|
||||
<?php Block::put('form-contents') ?>
|
||||
<div class="layout">
|
||||
<div class="layout-row">
|
||||
<?= $this->formRenderOutsideFields() ?>
|
||||
<?= $this->formRenderPrimaryTabs() ?>
|
||||
</div>
|
||||
</div>
|
||||
<?php Block::endPut() ?>
|
||||
|
||||
<?php Block::put('form-sidebar') ?>
|
||||
<div class="hide-tabs"><?= $this->formRenderSecondaryTabs() ?></div>
|
||||
<?php Block::endPut() ?>
|
||||
|
||||
<?php Block::put('body') ?>
|
||||
<?= Form::open([
|
||||
'id' => $this->formGetId(),
|
||||
'class'=>'layout stretch',
|
||||
]) ?>
|
||||
<?= $this->makeLayout('form-with-sidebar') ?>
|
||||
<?= Form::close() ?>
|
||||
<?php Block::endPut() ?>
|
||||
<?php else: ?>
|
||||
<div class="control-breadcrumb">
|
||||
<?= Block::placeholder('breadcrumb') ?>
|
||||
</div>
|
||||
<div class="padded-container">
|
||||
<p class="flash-message static error"><?= e(trans($this->fatalError)) ?></p>
|
||||
<p><a href="<?= isset($formConfig) ? Backend::url($formConfig->defaultRedirect) : 'javascript:history.back()' ?>" class="btn btn-default"><?= e(trans('backend::lang.form.return_to_list')); ?></a></p>
|
||||
</div>
|
||||
<?php endif ?>
|
||||
@@ -0,0 +1,13 @@
|
||||
<?php Block::put('breadcrumb') ?>
|
||||
<?= $this->makeLayoutPartial('breadcrumb') ?>
|
||||
<?= $this->formRenderRecordNavigation() ?>
|
||||
<?php Block::endPut() ?>
|
||||
|
||||
<?php if (!$this->fatalError): ?>
|
||||
<div class="form-preview">
|
||||
<?= $this->formRenderPreview() ?>
|
||||
</div>
|
||||
<?php else: ?>
|
||||
<p class="flash-message static error"><?= e($this->fatalError) ?></p>
|
||||
<p><a href="<?= isset($formConfig) ? Backend::url($formConfig->defaultRedirect) : 'javascript:history.back()' ?>" class="btn btn-default"><?= e(trans('backend::lang.form.return_to_list')); ?></a></p>
|
||||
<?php endif ?>
|
||||
@@ -0,0 +1 @@
|
||||
<div class="form-buttons loading-indicator-container"></div>
|
||||
20
modules/backend/behaviors/formcontroller/views/update.php
Normal file
20
modules/backend/behaviors/formcontroller/views/update.php
Normal file
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
// Decide which layout we should be rendering
|
||||
$layout = $this->formLayout ?? $formConfig->formLayout ?? null;
|
||||
if (!in_array($layout, ['standard', 'sidebar', 'fancy'])) {
|
||||
$layout = 'standard';
|
||||
}
|
||||
|
||||
// If required, set the appropriate body classes
|
||||
$this->bodyClass .= match ($layout) {
|
||||
'fancy' => ' fancy-layout compact-container breadcrumb-flush breadcrumb-fancy',
|
||||
'sidebar' => ' compact-container',
|
||||
default => '',
|
||||
};
|
||||
|
||||
// Define layout mode view path for inclusion
|
||||
$this->appendViewPath(sprintf('%s/update/%s', __DIR__, $layout));
|
||||
|
||||
// Render the form layout
|
||||
echo $this->makePartial(sprintf('update/%s.php', $layout));
|
||||
@@ -0,0 +1,22 @@
|
||||
<?php Block::put('breadcrumb') ?>
|
||||
<?= $this->makeLayoutPartial('breadcrumb') ?>
|
||||
<?= $this->formRenderRecordNavigation() ?>
|
||||
<?php Block::endPut() ?>
|
||||
|
||||
<?php if (!$this->fatalError): ?>
|
||||
<div class="layout fancy-layout">
|
||||
<?= Form::open([
|
||||
'id' => $this->formGetId(),
|
||||
'class' => 'layout',
|
||||
'data-change-monitor' => 'true',
|
||||
'data-window-close-confirm' => 'true',
|
||||
]) ?>
|
||||
<div class="layout-row">
|
||||
<?= $this->formRender() ?>
|
||||
</div>
|
||||
<?= Form::close() ?>
|
||||
</div>
|
||||
<?php else: ?>
|
||||
<p class="flash-message static error"><?= e($this->fatalError) ?></p>
|
||||
<p><a href="<?= isset($formConfig) ? Backend::url($formConfig->defaultRedirect) : 'javascript:history.back()' ?>" class="btn btn-default"><?= e(trans('backend::lang.form.return_to_list')); ?></a></p>
|
||||
<?php endif ?>
|
||||
@@ -0,0 +1,42 @@
|
||||
<?php Block::put('breadcrumb') ?>
|
||||
<?= $this->makeLayoutPartial('breadcrumb') ?>
|
||||
<?= $this->formRenderRecordNavigation() ?>
|
||||
<?php Block::endPut() ?>
|
||||
|
||||
<?php if (!$this->fatalError): ?>
|
||||
<?php Block::put('form-contents') ?>
|
||||
<div class="layout">
|
||||
<div class="layout-row">
|
||||
<?= $this->formRenderOutsideFields() ?>
|
||||
<?= $this->formRenderPrimaryTabs() ?>
|
||||
</div>
|
||||
|
||||
<div class="form-buttons p-t">
|
||||
<?= $this->formMakePartial('toolbar') ?>
|
||||
</div>
|
||||
</div>
|
||||
<?php Block::endPut() ?>
|
||||
|
||||
<?php Block::put('form-sidebar') ?>
|
||||
<div class="hide-tabs"><?= $this->formRenderSecondaryTabs() ?></div>
|
||||
<?php Block::endPut() ?>
|
||||
|
||||
<?php Block::put('body') ?>
|
||||
<?= Form::open([
|
||||
'id' => $this->formGetId(),
|
||||
'class' => 'layout stretch',
|
||||
'data-change-monitor' => 'true',
|
||||
'data-window-close-confirm' => 'true',
|
||||
]) ?>
|
||||
<?= $this->makeLayout('form-with-sidebar') ?>
|
||||
<?= Form::close() ?>
|
||||
<?php Block::endPut() ?>
|
||||
<?php else: ?>
|
||||
<div class="control-breadcrumb">
|
||||
<?= Block::placeholder('breadcrumb') ?>
|
||||
</div>
|
||||
<div class="padded-container">
|
||||
<p class="flash-message static error"><?= e(trans($this->fatalError)) ?></p>
|
||||
<p><a href="<?= isset($formConfig) ? Backend::url($formConfig->defaultRedirect) : 'javascript:history.back()' ?>" class="btn btn-default"><?= e(trans('backend::lang.form.return_to_list')); ?></a></p>
|
||||
</div>
|
||||
<?php endif ?>
|
||||
@@ -0,0 +1,24 @@
|
||||
<?php Block::put('breadcrumb') ?>
|
||||
<?= $this->makeLayoutPartial('breadcrumb') ?>
|
||||
<?= $this->formRenderRecordNavigation() ?>
|
||||
<?php Block::endPut() ?>
|
||||
|
||||
<?php if (!$this->fatalError): ?>
|
||||
<?= Form::open([
|
||||
'id' => $this->formGetId(),
|
||||
'class' => 'layout',
|
||||
'data-change-monitor' => 'true',
|
||||
'data-window-close-confirm' => 'true',
|
||||
]) ?>
|
||||
<div class="layout-row">
|
||||
<?= $this->formRender() ?>
|
||||
</div>
|
||||
|
||||
<div class="form-buttons p-t">
|
||||
<?= $this->formMakePartial('toolbar') ?>
|
||||
</div>
|
||||
<?= Form::close() ?>
|
||||
<?php else: ?>
|
||||
<p class="flash-message static error"><?= e($this->fatalError) ?></p>
|
||||
<p><a href="<?= isset($formConfig) ? Backend::url($formConfig->defaultRedirect) : 'javascript:history.back()' ?>" class="btn btn-default"><?= e(trans('backend::lang.form.return_to_list')); ?></a></p>
|
||||
<?php endif ?>
|
||||
@@ -0,0 +1,53 @@
|
||||
<div class="form-buttons loading-indicator-container">
|
||||
<!-- Save -->
|
||||
<a
|
||||
href="javascript:;"
|
||||
class="btn btn-primary wn-icon-save save"
|
||||
data-request="onSave"
|
||||
data-browser-validate
|
||||
data-load-indicator="<?= e(trans('backend::lang.form.saving')) ?>"
|
||||
data-request-before-update="$el.trigger('unchange.oc.changeMonitor')"
|
||||
data-request-data="redirect:0"
|
||||
data-hotkey="ctrl+s, cmd+s"
|
||||
>
|
||||
<?= e(trans('backend::lang.form.save')) ?>
|
||||
</a>
|
||||
|
||||
<!-- Save and Close -->
|
||||
<a
|
||||
href="javascript:;"
|
||||
class="btn btn-primary wn-icon-check save"
|
||||
data-request-before-update="$el.trigger('unchange.oc.changeMonitor')"
|
||||
data-request="onSave"
|
||||
data-browser-validate
|
||||
data-load-indicator="<?= e(trans('backend::lang.form.saving')) ?>"
|
||||
>
|
||||
<?= e(trans('backend::lang.form.save_and_close')) ?>
|
||||
</a>
|
||||
|
||||
<?php if ($formModel->url): ?>
|
||||
<!-- Preview -->
|
||||
<a
|
||||
href="<?= e($formModel->url) ?>"
|
||||
target="_blank"
|
||||
class="btn btn-primary wn-icon-crosshairs"
|
||||
data-control="preview-button"
|
||||
>
|
||||
<?= e(trans('backend::lang.form.preview')) ?>
|
||||
</a>
|
||||
<?php endif ?>
|
||||
|
||||
<a class="btn btn-default wn-icon-ban" href="<?= $this->actionUrl('') ?>"><?= e(trans('backend::lang.form.cancel')); ?></a>
|
||||
|
||||
<!-- Delete -->
|
||||
<button
|
||||
type="button"
|
||||
class="btn btn-default empty wn-icon-trash-o"
|
||||
data-request="onDelete"
|
||||
title="<?= e(trans('backend::lang.form.delete')); ?>"
|
||||
data-load-indicator="<?= e(trans('backend::lang.form.deleting')); ?>"
|
||||
data-request-before-update="$el.trigger('unchange.oc.changeMonitor')"
|
||||
data-request-confirm="<?= e(trans('backend::lang.form.confirm_delete')); ?>"
|
||||
data-control="delete-button"
|
||||
></button>
|
||||
</div>
|
||||
Reference in New Issue
Block a user