Skip to content

Commit

Permalink
Added success message for creating, updating, deleting and restoring …
Browse files Browse the repository at this point in the history
…record.

You can set custom messages.

$model->setMessageOnDelete('<i class="fa fa-comment-o fa-lg"></i> Contact deleted');
$model->setMessageOnCreate('<i class="fa fa-check fa-lg"></i> Contact created');
$model->setMessageOnUpdate('<i class="fa fa-check fa-lg"></i> Contact updated');
$model->setMessageOnRestore('<i class="fa fa-check fa-lg"></i> Contact restored');
  • Loading branch information
butschster committed Feb 25, 2016
1 parent ab4b5ad commit 886a21f
Show file tree
Hide file tree
Showing 7 changed files with 199 additions and 48 deletions.
2 changes: 1 addition & 1 deletion public/default/js/admin-default.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 9 additions & 0 deletions resources/assets/js/admin-default.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,13 @@ $(function () {
$('input[type="text"]:first').focus();
})();

$('.alert-message').each(function() {
var $self = $(this);

setTimeout(function() {
$self.fadeOut(600, function() {
$self.remove();
});
}, 500);
})
});
68 changes: 37 additions & 31 deletions resources/lang/en/lang.php
Original file line number Diff line number Diff line change
Expand Up @@ -42,39 +42,45 @@
'save' => 'Save',
'save_and_close' => 'Save and close',
'save_and_create' => 'Save and create',
'cancel' => 'Cancel',
'download' => 'Download',
'all' => 'All',
'processing' => '<i class="fa fa-5x fa-circle-o-notch fa-spin"></i>',
'loadingRecords' => 'Loading...',
'lengthMenu' => 'Show _MENU_ entries',
'zeroRecords' => 'No matching records found.',
'info' => 'Showing _START_ to _END_ of _TOTAL_ entries',
'infoEmpty' => 'Showing 0 to 0 of 0 entries',
'infoFiltered' => '(filtered from _MAX_ total entries)',
'infoThousands' => ',',
'infoPostFix' => '',
'search' => 'Search: ',
'emptyTable' => 'No data available in table',
'paginate' => [
'first' => 'First',
'previous' => '&larr;',
'next' => '&rarr;',
'last' => 'Last'
]
'cancel' => 'Cancel',
'download' => 'Download',
'all' => 'All',
'processing' => '<i class="fa fa-5x fa-circle-o-notch fa-spin"></i>',
'loadingRecords' => 'Loading...',
'lengthMenu' => 'Show _MENU_ entries',
'zeroRecords' => 'No matching records found.',
'info' => 'Showing _START_ to _END_ of _TOTAL_ entries',
'infoEmpty' => 'Showing 0 to 0 of 0 entries',
'infoFiltered' => '(filtered from _MAX_ total entries)',
'infoThousands' => ',',
'infoPostFix' => '',
'search' => 'Search: ',
'emptyTable' => 'No data available in table',
'paginate' => [
'first' => 'First',
'previous' => '&larr;',
'next' => '&rarr;',
'last' => 'Last'
]
],
'select' => [
'nothing' => 'Nothing selected',
'selected' => 'selected',
'placeholder' => 'Select from the list',
],
'nothing' => 'Nothing selected',
'selected' => 'selected',
'placeholder' => 'Select from the list',
],
'image' => [
'browse' => 'Select Image',
'browseMultiple' => 'Select Images',
'remove' => 'Remove Image',
],
'browse' => 'Select Image',
'browseMultiple' => 'Select Images',
'remove' => 'Remove Image',
],
'file' => [
'browse' => 'Select File',
'remove' => 'Remove File',
],
'browse' => 'Select File',
'remove' => 'Remove File',
],
'message' => [
'created' => '<i class="fa fa-check fa-lg"></i> Record created successfully',
'updated' => '<i class="fa fa-check fa-lg"></i> Record updated successfully',
'deleted' => '<i class="fa fa-check fa-lg"></i> Record deleted successfully',
'restored' => '<i class="fa fa-check fa-lg"></i> Record restored successfully'
]
];
6 changes: 6 additions & 0 deletions resources/lang/ru/lang.php
Original file line number Diff line number Diff line change
Expand Up @@ -77,4 +77,10 @@
'browse' => 'Выбор файла',
'remove' => 'Удалить',
],
'message' => [
'created' => 'Запись успешно создана',
'updated' => 'Запись успешно обновлена',
'deleted' => 'Запись успешно удалена',
'restored' => 'Запись успешно восстановлена'
]
];
9 changes: 9 additions & 0 deletions resources/views/default/_layout/inner.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,15 @@
</div>

<div class="content body">
@if($successMessage)
<div class="alert alert-success alert-message">
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
{!! $successMessage !!}
</div>
@endif

{!! $content !!}
</div>
</div>
Expand Down
39 changes: 24 additions & 15 deletions src/Http/Controllers/AdminController.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,13 @@

namespace SleepingOwl\Admin\Http\Controllers;

use AdminTemplate;
use App;
use Illuminate\Contracts\Support\Renderable;
use Request;
use AdminTemplate;
use Illuminate\Http\Response;
use Illuminate\Routing\Controller;
use Request;
use Illuminate\Contracts\Support\Renderable;
use Illuminate\Contracts\Validation\Validator;
use SleepingOwl\Admin\Contracts\FormInterface;
use SleepingOwl\Admin\Model\ModelConfiguration;

Expand Down Expand Up @@ -65,12 +66,14 @@ public function postStore(ModelConfiguration $model)
}

if ($nextAction == 'save_and_continue') {
return redirect()->to($model->getEditUrl($createForm->getModel()->id));
$response = redirect()->to($model->getEditUrl($createForm->getModel()->id));
} else if ($nextAction == 'save_and_create') {
return redirect()->to($model->getCreateUrl());
$response = redirect()->to($model->getCreateUrl());
} else {
$response = redirect()->to($model->getDisplayUrl());
}

return redirect()->to($model->getDisplayUrl());
return $response->with('success_message', $model->getMessageOnCreate());
}

/**
Expand Down Expand Up @@ -108,20 +111,24 @@ public function postUpdate(ModelConfiguration $model, $id)
$nextAction = Request::get('next_action');

if ($editForm instanceof FormInterface) {
if ($validator = $editForm->validate($model)) {
return redirect()->back()->withErrors($validator)->withInput();
if (($validator = $editForm->validate($model)) instanceof Validator) {
return redirect()->back()
->withErrors($validator)
->withInput();
}

$editForm->save($model);
}

if ($nextAction == 'save_and_continue') {
return redirect()->back();
$response = redirect()->back();
} else if ($nextAction == 'save_and_create') {
return redirect()->to($model->getCreateUrl());
$response = redirect()->to($model->getCreateUrl());
} else {
$response = redirect()->to($model->getDisplayUrl());
}

return redirect()->to($model->getDisplayUrl());
return $response->with('success_message', $model->getMessageOnUpdate());
}

/**
Expand All @@ -141,7 +148,7 @@ public function deleteDestroy(ModelConfiguration $model, $id)
$model->fireDelete($id);
$model->getRepository()->delete($id);

return redirect()->back();
return redirect()->back()->with('success_message', $model->getMessageOnDelete());
}

/**
Expand All @@ -161,7 +168,7 @@ public function postRestore($model, $id)
$model->fireRestore($id);
$model->getRepository()->restore($id);

return redirect()->back();
return redirect()->back()->with('success_message', $model->getMessageOnRestore());
}

/**
Expand All @@ -178,7 +185,8 @@ public function render(ModelConfiguration $model, $content)

return AdminTemplate::view('_layout.inner')
->with('title', $model->getTitle())
->with('content', $content);
->with('content', $content)
->with('successMessage', session('success_message'));
}

/**
Expand All @@ -195,7 +203,8 @@ public function renderContent($content, $title = null)

return AdminTemplate::view('_layout.inner')
->with('title', $title)
->with('content', $content);
->with('content', $content)
->with('successMessage', session('success_message'));
}

/**
Expand Down
114 changes: 113 additions & 1 deletion src/Model/ModelConfiguration.php
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,26 @@ class ModelConfiguration
*/
protected $restore = true;

/**
* @var string
*/
protected $messageOnCreate;

/**
* @var string
*/
protected $messageOnUpdate;

/**
* @var string
*/
protected $messageOnDelete;

/**
* @var string
*/
protected $messageOnRestore;

/**
* ModelConfiguration constructor.
*
Expand Down Expand Up @@ -368,7 +388,7 @@ public function disableRestoring()

/**
* @param string $action
* @param Model $model
* @param Model $model
*
* @return bool
*/
Expand Down Expand Up @@ -575,6 +595,98 @@ public function getRestoreUrl($id)
return route('admin.model.restore', [$this->getAlias(), $id]);
}

/**
* @return string
*/
public function getMessageOnCreate()
{
if (is_null($this->messageOnUpdate)) {
$this->messageOnUpdate = trans('sleeping_owl::lang.message.created');
}

return $this->messageOnCreate;
}

/**
* @param string $messageOnCreate
*/
public function setMessageOnCreate($messageOnCreate)
{
$this->messageOnCreate = $messageOnCreate;
}

/**
* @return string
*/
public function getMessageOnUpdate()
{
if (is_null($this->messageOnUpdate)) {
$this->messageOnUpdate = trans('sleeping_owl::lang.message.updated');
}

return $this->messageOnUpdate;
}

/**
* @param string $messageOnUpdate
*
* @return $this
*/
public function setMessageOnUpdate($messageOnUpdate)
{
$this->messageOnUpdate = $messageOnUpdate;

return $this;
}

/**
* @return string
*/
public function getMessageOnDelete()
{
if (is_null($this->messageOnDelete)) {
$this->messageOnDelete = trans('sleeping_owl::lang.message.deleted');
}

return $this->messageOnDelete;
}

/**
* @param string $messageOnDelete
*
* @return $this
*/
public function setMessageOnDelete($messageOnDelete)
{
$this->messageOnDelete = $messageOnDelete;

return $this;
}

/**
* @return string
*/
public function getMessageOnRestore()
{
if (is_null($this->messageOnRestore)) {
$this->messageOnRestore = trans('sleeping_owl::lang.message.restored');
}

return $this->messageOnRestore;
}

/**
* @param string $messageOnRestore
*
* @return $this
*/
public function setMessageOnRestore($messageOnRestore)
{
$this->messageOnRestore = $messageOnRestore;

return $this;
}

protected function setDefaultAlias()
{
$alias = Str::snake(Str::plural(class_basename($this->getClass())));
Expand Down

0 comments on commit 886a21f

Please sign in to comment.