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;
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 |