public function save(Request $request)
{
$attributes = $request->all();
$id = $attributes['id'];
if ($id) {
// If $id is not null or blank we must be editing.
// Locate existing menu item.
$menuItem = Menu::find($id);
if (!$menuItem->isEditable()) {
Flash::warning(trans('admin/menu-builder/menu-builder.update-failed-cant-be-edited', ['id' => $menuItem->id, 'label' => $menuItem->label]));
} else {
// Fix issue #23: using the wrong column name in the unique rule.
// validate attributes.
$this->validate($request, array('name' => 'required|unique:menus,name,' . $id, 'label' => 'required'));
// Log action by user.
Audit::log(Auth::user()->id, trans('admin/menu-builder/menu-builder.audit-log.category'), trans('admin/menu-builder/menu-builder.audit-log.msg-index'));
// Update menu item.
$menuItem->update($attributes);
Flash::success(trans('admin/menu-builder/menu-builder.update-success'));
}
} else {
// else creating new menu item.
// First unset/remove blank 'id' element from the array, otherwise the insert SQL statement will not
// include an incremented value for the identity column, but instead the value of id which is
// blank: ''.
unset($attributes['id']);
// Validate attributes.
$this->validate($request, array('name' => 'required|unique:menus', 'label' => 'required'));
// Create new menu item.
$menuItem = Menu::create($attributes);
Flash::success(trans('admin/menu-builder/menu-builder.create-success'));
}
return redirect('/admin/menus');
}