Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Behaviour default views #1312

Open
wants to merge 22 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
069f31d
Added support for pre/post appending view paths
jaxwilko Feb 17, 2025
f3706b8
Added default view files for forms and lists behaviours
jaxwilko Feb 17, 2025
67ef0eb
Added --stubs option to create controller command
jaxwilko Feb 17, 2025
22d04ef
Added code styling fixes
jaxwilko Feb 17, 2025
3feecb6
Added fix for hardcoded link
jaxwilko Feb 17, 2025
8b65ce0
Update modules/backend/behaviors/listcontroller/_list_toolbar.php
LukeTowers Feb 17, 2025
41f1fb5
Added support for default reorder views
jaxwilko Feb 17, 2025
4a2760b
Merge branch 'wip/behaviour-default-views' of github.com:wintercms/wi…
jaxwilko Feb 17, 2025
8f216a2
Added support for import export behaviour defaults
jaxwilko Feb 18, 2025
fe85e22
Added default value for bodyClass
jaxwilko Feb 18, 2025
b77d283
Added self generating breadcrumb partial
jaxwilko Feb 18, 2025
b0bbed0
Added default partials for behaviours
jaxwilko Feb 18, 2025
0807dd4
Added self generating breadcumb for controller stubs
jaxwilko Feb 18, 2025
cae7704
Added import export lang keys
jaxwilko Feb 18, 2025
2a13527
Added fix for code styling
jaxwilko Feb 18, 2025
2f616e0
Added fixes for reorder partials
jaxwilko Feb 18, 2025
5102170
Move controllerbehavior default views to /views
LukeTowers Feb 21, 2025
606fe64
Merge branch 'develop' into wip/behaviour-default-views
LukeTowers Feb 26, 2025
3fe07ef
Update modules/backend/behaviors/reordercontroller/views/reorder.php
LukeTowers Feb 26, 2025
41f643b
Switch to new prependViewPath() method
LukeTowers Feb 26, 2025
5d0b9ca
Automatically set BackendMenu context from controller path
LukeTowers Feb 26, 2025
e0e6cb9
Tweaks to the default views based on migrating Winter.Blog
LukeTowers Feb 27, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions modules/backend/behaviors/formcontroller/views/create.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<?php

// Get the form controller and config
$formController = $this->getClassExtension(\Backend\Behaviors\FormController::class);
$formConfig = $formController->getConfig();

// 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), [
'formController' => $formController,
'formConfig' => $formConfig,
]);
20 changes: 20 additions & 0 deletions modules/backend/behaviors/formcontroller/views/create/_fancy.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<?php Block::put('breadcrumb') ?>
<?= $this->makeLayoutPartial('breadcrumb') ?>
<?php Block::endPut() ?>

<?php if (!$this->fatalError): ?>
<div class="layout fancy-layout">
<?= Form::open([
'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="<?= Backend::url($formConfig->defaultRedirect) ?>" class="btn btn-default"><?= e(trans('backend::lang.form.return_to_list')); ?></a></p>
<?php endif ?>
61 changes: 61 additions & 0 deletions modules/backend/behaviors/formcontroller/views/create/_sidebar.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
<?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">
<div class="loading-indicator-container">
<button
type="button"
data-request="onSave"
data-hotkey="ctrl+s, cmd+s"
data-load-indicator="<?= e(trans('backend::lang.form.creating_name', ['name' => trans($formConfig->name)])); ?>"
class="btn btn-primary">
<?= e(trans('backend::lang.form.create')); ?>
</button>
<button
type="button"
data-request="onSave"
data-request-data="close:1"
data-hotkey="ctrl+enter, cmd+enter"
data-load-indicator="<?= e(trans('backend::lang.form.creating_name', ['name' => trans($formConfig->name)])); ?>"
class="btn btn-default">
<?= e(trans('backend::lang.form.create_and_close')); ?>
</button>
<span class="btn-text">
or <a href="<?= Backend::url($formConfig->defaultRedirect) ?>"><?= e(trans('backend::lang.form.cancel')); ?></a>
</span>
</div>
</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([
'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="<?= Backend::url($formConfig->defaultRedirect) ?>" class="btn btn-default"><?= e(trans('backend::lang.form.return_to_list')); ?></a></p>
</div>
<?php endif ?>
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
<?php Block::put('breadcrumb') ?>
<?= $this->makeLayoutPartial('breadcrumb') ?>
<?php Block::endPut() ?>

<?php if (!$this->fatalError): ?>
<?= Form::open([
'class' => 'layout',
'data-change-monitor' => 'true',
'data-window-close-confirm' => 'true',
]) ?>
<div class="layout-row">
<?= $this->formRender() ?>
</div>

<div class="form-buttons">
<div class="loading-indicator-container">
<button
type="button"
data-request="onSave"
data-hotkey="ctrl+s, cmd+s"
data-load-indicator="<?= e(trans('backend::lang.form.creating_name', ['name' => trans($formConfig->name)])); ?>"
class="btn btn-primary">
<?= e(trans('backend::lang.form.create')); ?>
</button>
<button
type="button"
data-request="onSave"
data-request-data="close:1"
data-hotkey="ctrl+enter, cmd+enter"
data-load-indicator="<?= e(trans('backend::lang.form.creating_name', ['name' => trans($formConfig->name)])); ?>"
class="btn btn-default">
<?= e(trans('backend::lang.form.create_and_close')); ?>
</button>
<span class="btn-text">
or <a href="<?= Backend::url($formConfig->defaultRedirect) ?>"><?= e(trans('backend::lang.form.cancel')); ?></a>
</span>
</div>
</div>
<?= Form::close() ?>
<?php else: ?>
<p class="flash-message static error"><?= e($this->fatalError) ?></p>
<p><a href="<?= Backend::url($formConfig->defaultRedirect) ?>" class="btn btn-default"><?= e(trans('backend::lang.form.return_to_list')); ?></a></p>
<?php endif ?>
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<div class="form-buttons loading-indicator-container">
<!-- Save -->
<a
href="javascript:;"
class="btn btn-primary wn-icon-check save"
data-request="onSave"
data-load-indicator="<?= e(trans('backend::lang.form.saving')) ?>"
data-request-before-update="$el.trigger('unchange.oc.changeMonitor')"
data-hotkey="ctrl+s, cmd+s"
>
<?= e(trans('backend::lang.form.save')) ?>
</a>
</div>
27 changes: 27 additions & 0 deletions modules/backend/behaviors/formcontroller/views/preview.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<?php

// Get the form controller and config
$formController = $this->getClassExtension(\Backend\Behaviors\FormController::class);
$formConfig = $formController->getConfig();

// 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), [
'formController' => $formController,
'formConfig' => $formConfig,
]);
14 changes: 14 additions & 0 deletions modules/backend/behaviors/formcontroller/views/preview/_fancy.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?php Block::put('breadcrumb') ?>
<?= $this->makeLayoutPartial('breadcrumb') ?>
<?php Block::endPut() ?>

<?php if (!$this->fatalError): ?>
<?= Form::open(['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="<?= Backend::url($formConfig->defaultRedirect) ?>" class="btn btn-default"><?= e(trans('backend::lang.form.return_to_list')); ?></a></p>
<?php endif ?>
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
<?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">
<div class="loading-indicator-container">
<button
type="button"
data-request="onSave"
data-hotkey="ctrl+s, cmd+s"
data-load-indicator="<?= e(trans('backend::lang.form.creating_name', ['name' => trans($formConfig->name)])); ?>"
class="btn btn-primary">
<?= e(trans('backend::lang.form.create')); ?>
</button>
<button
type="button"
data-request="onSave"
data-request-data="close:1"
data-hotkey="ctrl+enter, cmd+enter"
data-load-indicator="<?= e(trans('backend::lang.form.creating_name', ['name' => trans($formConfig->name)])); ?>"
class="btn btn-default">
<?= e(trans('backend::lang.form.create_and_close')); ?>
</button>
<span class="btn-text">
or <a href="<?= Backend::url($formConfig->defaultRedirect) ?>"><?= e(trans('backend::lang.form.cancel')); ?></a>
</span>
</div>
</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(['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="<?= Backend::url($formConfig->defaultRedirect) ?>" class="btn btn-default"><?= e(trans('backend::lang.form.return_to_list')); ?></a></p>
</div>
<?php endif ?>
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?php Block::put('breadcrumb') ?>
<?= $this->makeLayoutPartial('breadcrumb') ?>
<?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="<?= Backend::url($formConfig->defaultRedirect) ?>" class="btn btn-default"><?= e(trans('backend::lang.form.return_to_list')); ?></a></p>
<?php endif ?>
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<div class="form-buttons loading-indicator-container"></div>
27 changes: 27 additions & 0 deletions modules/backend/behaviors/formcontroller/views/update.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<?php

// Get the form controller and config
$formController = $this->getClassExtension(\Backend\Behaviors\FormController::class);
$formConfig = $formController->getConfig();

// 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), [
'formController' => $formController,
'formConfig' => $formConfig,
]);
20 changes: 20 additions & 0 deletions modules/backend/behaviors/formcontroller/views/update/_fancy.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<?php Block::put('breadcrumb') ?>
<?= $this->makeLayoutPartial('breadcrumb') ?>
<?php Block::endPut() ?>

<?php if (!$this->fatalError): ?>
<div class="layout fancy-layout">
<?= Form::open([
'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="<?= Backend::url($formConfig->defaultRedirect) ?>" class="btn btn-default"><?= e(trans('backend::lang.form.return_to_list')); ?></a></p>
<?php endif ?>
Loading
Loading