'admin-$INDEX_ROUTE$', 'create' => 'admin-create/$ROUTE_KEYWORD$', 'update' => 'admin-update/$ROUTE_KEYWORD$', 'delete' => 'admin-delete/$ROUTE_KEYWORD$', 'change-status' => 'change-status/$ROUTE_KEYWORD$', ]; protected $defaultLanguage; public function __construct() { parent::__construct(); $this->defaultLanguage = defaultLanguage(); view()->share('langFile', self::LANG_FILE); view()->share('routes', self::ROUTES); } /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index() { $model = self::MODEL; $items = $model::with(['language' => function($query) { $query->where('language', '=', $this->defaultLanguage); }])->paginate(self::ITEMS_PER_PAGE); return view('admin.'.self::VIEW_FOLDER.'.index')->with('items', $items); } /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function create() { return view('admin.'.self::VIEW_FOLDER.'.create'); } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { $rules = array( //rules here ); $validator = Validator::make($request->all(), $rules); if ($validator->fails()) { return Redirect::back()->withInput()->withErrors($validator); } $model = self::MODEL; $item = new $model; //here we pot the rest of data if ($item->save()) { $modelLanguage = self::MODEL_LANGUAGE; $modelLanguageId = self::MODEL_LANGUAGE_ID; $itemLanguage = new $modelLanguage; $itemLanguage->$modelLanguageId = $item->id; //here we pot the rest of data $itemLanguage->language = $this->defaultLanguage; if(!$itemLanguage->save()) { return redirect()->route(self::ROUTES['create'])->with('error', trans('admin/general.error-try-again')); } if (is_null($request->input('save-and-return'))) { return redirect()->route(self::ROUTES['update'], [$item->id, $this->defaultLanguage])->with('success', trans('admin/'.self::LANG_FILE.'.item-created')); } else { return redirect()->route(self::ROUTES['index'])->with('success', trans('admin/'.self::LANG_FILE.'.item-created')); } } return redirect()->route(self::ROUTES['create'])->with('error', trans('admin/general.error-try-again')); } /** * Display the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function show($id) { // } /** * Show the form for editing the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function edit($id, $lang) { $model = self::MODEL; if (is_null($item = $model::find($id))) { return redirect()->route(self::ROUTES['index'])->with('error', trans('admin/'.self::LANG_FILE.'.item-not-found')); } if (is_null($language = $item->languages()->where('language', '=', $lang)->first())) { $language = $item->saveLanguageDefaultValues($lang); if (is_null($language)) { return redirect()->route(self::ROUTES['create'])->with('error', trans('admin/general.error-try-again')); } } return view('admin.'.self::VIEW_FOLDER.'.edit') ->with('item', $item) ->with('language', $language); } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ public function update(Request $request, $id, $lang) { $model = self::MODEL; if (is_null($item = $model::find($id))) { return redirect()->route(self::ROUTES['index'])->with('error', trans('admin/'.self::LANG_FILE.'.item-not-found')); } $rules = array( //rules here ); $validator = Validator::make($request->all(), $rules); if ($validator->fails()) { return Redirect::back()->withInput()->withErrors($validator); } //here we pot the rest of data if ($item->save()) { $modelLanguage = self::MODEL_LANGUAGE; $modelLanguageId = self::MODEL_LANGUAGE_ID; if (is_null($itemLanguage = $model::find($id)->languages()->where('language', '=', $request->input('language'))->first())) { $itemLanguage = new $modelLanguage; $itemLanguage->$modelLanguageId = $item->id; $itemLanguage->language = $request->input('language'); } //here we pot the rest of data if(!$itemLanguage->save()) { return redirect()->route(self::ROUTES['update'], [$item->id, $request->input('language')])->with('error', trans('admin/general.error-try-again')); } if (is_null($request->input('save-and-return'))) { return redirect()->route(self::ROUTES['update'], [$item->id, $request->input('language')])->with('success', trans('admin/'.self::LANG_FILE.'.item-updated')); } else { return redirect()->route(self::ROUTES['index'])->with('success', trans('admin/'.self::LANG_FILE.'.item-updated')); } } return redirect()->route(self::ROUTES['update'], [$item->id, $request->input('language')])->with('error', trans('admin/general.error-try-again')); } /** * Remove the specified resource from storage. * * @param int $id * @return \Illuminate\Http\Response */ public function destroy($id) { $model = self::MODEL; if (is_null($item = $model::find($id))) { return redirect()->route(self::ROUTES['index'])->with('error', trans('admin/'.self::LANG_FILE.'.item-not-found')); } if(!$item->delete()) { return redirect()->route(self::ROUTES['create'])->with('error', trans('admin/general.error-try-again')); } return redirect()->route(self::ROUTES['index'])->with('success', trans('admin/'.self::LANG_FILE.'.item-deleted')); } public function changeStatus(Request $request) { $model = self::MODEL; if (is_null($item = $model::find($request->input('id')))) { die('invalid-id'); } $item->status = $request->input('status'); if (!$item->save()) { return 'error'; } return 'success'; } }