146 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			146 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
| <?php
 | |
| 
 | |
| namespace App\Http\Controllers\Admin;
 | |
| 
 | |
| use App\Http\Controllers\Controller;
 | |
| use App\Http\Requests\PostStoreRequest;
 | |
| use App\Models\Localization;
 | |
| use App\Models\Post;
 | |
| use App\Models\PostTranslation;
 | |
| use Illuminate\Http\Request;
 | |
| use Illuminate\Support\Facades\Cache;
 | |
| use Illuminate\Support\Facades\DB;
 | |
| 
 | |
| class PostController extends Controller
 | |
| {
 | |
| 
 | |
|   public function index()
 | |
|   {
 | |
|    
 | |
|     $posts = Post::with('translations')->latest()->get();
 | |
| 
 | |
|     return view('admin.posts.index', compact('posts'));
 | |
|   }
 | |
| 
 | |
|   public function create()
 | |
|   {
 | |
|     $localizations = Cache::get('localizations');
 | |
|     return view('admin.posts.create', compact('localizations'));
 | |
|   }
 | |
| 
 | |
|   public function store(PostStoreRequest $request)
 | |
|   {
 | |
|     $data = $request->all();
 | |
|     try{
 | |
|       DB::transaction(function() use ($request) {
 | |
|         if ($request->hasFile('image')) {
 | |
|           $data['image'] = $this->fileUpload($request->file('image'));
 | |
|         }
 | |
|     
 | |
|         $localizationId=Localization::first()->id;
 | |
|     
 | |
|         $data['slug']=\Str::slug($request->translations[$localizationId]['title']);
 | |
|         
 | |
|         $post=Post::create($data);
 | |
|         
 | |
|         foreach($request->translations as $key=>$value){
 | |
|           $post->translations()->create([
 | |
|             'localization_id'=>$key,
 | |
|             'title'=>$value['title'],
 | |
|             'description'=>$value['description'],
 | |
|             'body'=>$value['body'],
 | |
|           ]);
 | |
|         } 
 | |
|       });
 | |
|     }catch(\Exception $e){
 | |
|       return redirect()->back()->with('error', $e->getMessage());
 | |
|     }
 | |
|     
 | |
|     return redirect()->route('admin.posts.index')->with('success', 'Новость создан успешно !');
 | |
| 
 | |
|   }
 | |
| 
 | |
| 
 | |
|   public function show(Post $post)
 | |
|   {
 | |
|     $localizations = Cache::get('localizations');
 | |
|     return view('admin.posts.show', compact('post','localizations'));
 | |
|   }
 | |
| 
 | |
|   public function edit(Post $post)
 | |
|   {
 | |
|     $localizations = Cache::get('localizations');
 | |
|   
 | |
|     return view('admin.posts.edit', compact('localizations', 'post'));
 | |
|   }
 | |
| 
 | |
|   public function update(Request $request, Post $post)
 | |
|   {
 | |
|     $request->validate([
 | |
|       'translations'=>'required',
 | |
|     ]);
 | |
| 
 | |
|     try{
 | |
| 
 | |
|       DB::transaction(function() use ($request,$post){
 | |
|         $data = $request->all();
 | |
| 
 | |
|         if ($request->hasFile('image')) {
 | |
|           $data['image'] = $this->fileUpload($request->file('image'));
 | |
|         }
 | |
|     
 | |
|         $localizationId=Localization::first()->id;
 | |
|     
 | |
|         $data['slug']=\Str::slug($request->translations[$localizationId]['title']);
 | |
|         
 | |
|         $post->update($data);
 | |
|     
 | |
|         foreach($request->translations as $key=>$value){
 | |
|           $post->translations()->updateOrCreate(['id'=>$value['id']],[
 | |
|             'localization_id'=>$key,
 | |
|             'title'=>$value['title'],
 | |
|             'description'=>$value['description'],
 | |
|             'body'=>$value['body'],
 | |
|           ]);
 | |
|         }
 | |
| 
 | |
|       });
 | |
| 
 | |
|     }catch(\Exception $e){
 | |
|       return redirect()->back()->with('error', $e->getMessage());
 | |
|     }
 | |
|     
 | |
|     return redirect()->route('admin.posts.index')->with('success', 'Новость обновлен успешно !');
 | |
| 
 | |
|   }
 | |
| 
 | |
|   public function destroy(Post $post)
 | |
|   {
 | |
|     $post->delete();
 | |
|     return redirect()->route('admin.posts.index')->with('success', 'Новость удален успешно !');
 | |
|   }
 | |
| 
 | |
|   public function fileUpload($file)
 | |
|   {
 | |
|     $filename = time().'_'.$file->getClientOriginalName();
 | |
|     $file->move(public_path(Post::FILE_PATH), $filename);
 | |
|     return $filename;
 | |
|   }
 | |
| 
 | |
|   public function storeImage(Request $request)
 | |
|   {
 | |
|     if ($request->hasFile('upload')) {
 | |
|       $fileName = time().'_'.$request->file('upload')->getClientOriginalName();
 | |
|       $request->file('upload')->move(public_path(Post::FILE_PATH), $fileName);
 | |
| 
 | |
|       $CKEditorFuncNum = $request->input('CKEditorFuncNum');
 | |
|       $url             = asset(Post::FILE_PATH.$fileName);
 | |
|       $msg             = 'Image uploaded successfully';
 | |
|       $response        = "<script>window.parent.CKEDITOR.tools.callFunction($CKEditorFuncNum, '$url', '$msg')</script>";
 | |
| 
 | |
|       @header('Content-type: text/html; charset=utf-8');
 | |
|       echo $response;
 | |
|     }
 | |
|   }
 | |
| }
 |