Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
22 changes: 22 additions & 0 deletions modules/backend/behaviors/FormController.php
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,9 @@ public function initForm($model, $context = null)
protected function prepareVars($model)
{
$this->controller->vars['formModel'] = $model;
$this->controller->vars['formConfig'] = $this->getConfig();
$this->controller->vars['formContext'] = $this->formGetContext();
$this->controller->vars['formController'] = $this;
$this->controller->vars['formRecordName'] = Lang::get($this->getConfig('name', 'backend::lang.model.name'));
}

Expand Down Expand Up @@ -473,6 +475,10 @@ public function makeRedirect($context = null, $model = null)
return Redirect::refresh();
}

if (post('new', false)) {
return Redirect::to($this->controller->actionUrl('create'));
}

if (post('redirect', true)) {
$redirectUrl = $this->controller->formGetRedirectUrl($context, $model);
}
Expand Down Expand Up @@ -882,4 +888,20 @@ public static function extendFormFields($callback)
call_user_func_array($callback, [$widget, $widget->model, $widget->getContext()]);
});
}

/**
* Controller accessor for making partials within this behavior.
*/
public function formMakePartial(string $partial, array $params = []): string
{
$contents = $this->controller->makePartial('form_' . $this->context . '_' . $partial, $params + $this->vars, false);
if (!$contents) {
$contents = $this->controller->makePartial('form_' . $partial, $params + $this->vars, false);
}
if (!$contents) {
$contents = $this->makePartial($partial, $params);
}

return $contents;
}
}
81 changes: 81 additions & 0 deletions modules/backend/behaviors/formcontroller/partials/_toolbar.php
Original file line number Diff line number Diff line change
@@ -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">
<?= 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">
<?= 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">
<?= 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"
>
<?= 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"
>
<?= 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 ?>
9 changes: 1 addition & 8 deletions modules/backend/behaviors/formcontroller/views/create.php
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
<?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'])) {
Expand All @@ -21,7 +17,4 @@
$this->appendViewPath(sprintf('%s/create/%s', __DIR__, $layout));

// Render the form layout
echo $this->makePartial(sprintf('create/%s.php', $layout), [
'formController' => $formController,
'formConfig' => $formConfig,
]);
echo $this->makePartial(sprintf('create/%s.php', $layout));
Original file line number Diff line number Diff line change
Expand Up @@ -11,32 +11,7 @@
</div>

<div class="form-buttons p-t">
<div class="loading-indicator-container">
<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($formConfig->name)])); ?>"
data-request-before-update="$el.trigger('unchange.oc.changeMonitor')"
class="btn btn-primary">
<?= 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($formConfig->name)])); ?>"
data-request-before-update="$el.trigger('unchange.oc.changeMonitor')"
class="btn btn-default">
<?= 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>
<?= $this->formMakePartial('toolbar') ?>
</div>
</div>
<?php Block::endPut() ?>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,32 +13,7 @@
</div>

<div class="form-buttons p-t">
<div class="loading-indicator-container">
<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($formConfig->name)])); ?>"
data-request-before-update="$el.trigger('unchange.oc.changeMonitor')"
class="btn btn-primary">
<?= 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($formConfig->name)])); ?>"
data-request-before-update="$el.trigger('unchange.oc.changeMonitor')"
class="btn btn-default">
<?= 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>
<?= $this->formMakePartial('toolbar') ?>
</div>
<?= Form::close() ?>
<?php else: ?>
Expand Down
8 changes: 1 addition & 7 deletions modules/backend/behaviors/formcontroller/views/preview.php
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
<?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;
Expand All @@ -21,7 +18,4 @@
$this->appendViewPath(sprintf('%s/preview/%s', __DIR__, $layout));

// Render the form layout
echo $this->makePartial(sprintf('preview/%s.php', $layout), [
'formController' => $formController,
'formConfig' => $formConfig,
]);
echo $this->makePartial(sprintf('preview/%s.php', $layout));
9 changes: 1 addition & 8 deletions modules/backend/behaviors/formcontroller/views/update.php
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
<?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'])) {
Expand All @@ -21,7 +17,4 @@
$this->appendViewPath(sprintf('%s/update/%s', __DIR__, $layout));

// Render the form layout
echo $this->makePartial(sprintf('update/%s.php', $layout), [
'formController' => $formController,
'formConfig' => $formConfig,
]);
echo $this->makePartial(sprintf('update/%s.php', $layout));
Original file line number Diff line number Diff line change
Expand Up @@ -11,45 +11,7 @@
</div>

<div class="form-buttons p-t">
<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"
>
<?= 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"
>
<?= 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($formConfig->name)])); ?>"
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>
<?= $this->formMakePartial('toolbar') ?>
</div>
</div>
<?php Block::endPut() ?>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,43 +13,7 @@
</div>

<div class="form-buttons p-t">
<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"
>
<?= 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"
>
<?= e(trans('backend::lang.form.save_and_close')); ?>
</button>
<button
type="button"
class="wn-icon-trash-o btn-icon danger pull-right"
data-request="onDelete"
data-load-indicator="<?= e(trans('backend::lang.form.deleting_name', ['name' => trans($formConfig->name)])); ?>"
data-request-before-update="$el.trigger('unchange.oc.changeMonitor')"
data-request-confirm="<?= e(trans('backend::lang.form.confirm_delete')); ?>">
</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>
<?= $this->formMakePartial('toolbar') ?>
</div>
<?= Form::close() ?>
<?php else: ?>
Expand Down
1 change: 1 addition & 0 deletions modules/backend/lang/en/lang.php
Original file line number Diff line number Diff line change
Expand Up @@ -265,6 +265,7 @@
'not_found' => 'Form record with an ID of :id could not be found.',
'action_confirm' => 'Are you sure?',
'create' => 'Create',
'create_and_new' => 'Create and new',
'create_and_close' => 'Create and close',
'creating' => 'Creating...',
'creating_name' => 'Creating :name...',
Expand Down
1 change: 1 addition & 0 deletions modules/backend/lang/es/lang.php
Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,7 @@
'not_found' => 'El registro del formulario con un ID de :id no se pudo encontrar.',
'action_confirm' => '¿Está usted seguro?',
'create' => 'Crear',
'create_and_new' => 'Crear y nuevo',
'create_and_close' => 'Crear y cerrar',
'creating' => 'Creando...',
'creating_name' => 'Creando :name...',
Expand Down
1 change: 1 addition & 0 deletions modules/backend/lang/fr/lang.php
Original file line number Diff line number Diff line change
Expand Up @@ -263,6 +263,7 @@
'not_found' => 'Aucun enregistrement de formulaire ne correspond à l\'ID :id.',
'action_confirm' => 'Confirmer l\'action ?',
'create' => 'Créer',
'create_and_new' => 'Créer et nouveau',
'create_and_close' => 'Créer et fermer',
'creating' => 'Création en cours…',
'creating_name' => 'Création d\'un(e) :name en cours…',
Expand Down
1 change: 1 addition & 0 deletions modules/backend/lang/nl/lang.php
Original file line number Diff line number Diff line change
Expand Up @@ -259,6 +259,7 @@
'not_found' => 'Het formulier met record ID :id is niet gevonden.',
'action_confirm' => 'Weet je het zeker?',
'create' => 'Maken',
'create_and_new' => 'Maken en nieuw',
'create_and_close' => 'Maken en sluiten',
'creating' => 'Maken...',
'creating_name' => ':name maken...',
Expand Down
1 change: 1 addition & 0 deletions modules/backend/lang/pl/lang.php
Original file line number Diff line number Diff line change
Expand Up @@ -253,6 +253,7 @@
'not_found' => 'Rekord formularza o ID :id nie został znaleziony.',
'action_confirm' => 'Czy jesteś pewny?',
'create' => 'Stwórz',
'create_and_new' => 'Utwórz i nowe',
'create_and_close' => 'Stwórz i zamknij',
'creating' => 'Tworzenie...',
'creating_name' => 'Tworzenie :name...',
Expand Down
1 change: 1 addition & 0 deletions modules/backend/lang/ru/lang.php
Original file line number Diff line number Diff line change
Expand Up @@ -264,6 +264,7 @@
'not_found' => 'Форма записи с идентификатором :ID не найдена.',
'action_confirm' => 'Вы уверены, что хотите сделать это?',
'create' => 'Создать',
'create_and_new' => 'Создать и новый',
'create_and_close' => 'Создать и закрыть',
'creating' => 'Создание...',
'creating_name' => 'Создание :name...',
Expand Down
Loading