diff --git a/app/Http/Controllers/Admin/XlangController.php b/app/Http/Controllers/Admin/XlangController.php index 4fd18c4..c5dd3ff 100644 --- a/app/Http/Controllers/Admin/XlangController.php +++ b/app/Http/Controllers/Admin/XlangController.php @@ -10,23 +10,26 @@ use Illuminate\Support\Facades\Artisan; use function Xmen\StarterKit\Helpers\logAdmin; use function Xmen\StarterKit\Helpers\logAdminBatch; +const PREFIX_PATH = __DIR__ . '/../../../../'; class XlangController extends Controller { - public function createOrUpdate(Xlang $xlang, XlangSaveRequest $request) { + public function createOrUpdate(Xlang $xlang, XlangSaveRequest $request) + { $xlang->name = $request->input('name'); $xlang->tag = $request->input('tag'); $xlang->rtl = $request->has('rtl'); if ($request->hasFile('img')) { - $name = time().'.'.request()->img->getClientOriginalExtension(); + $name = time() . '.' . request()->img->getClientOriginalExtension(); $xlang->img = $name; $request->file('img')->storeAs('public/langz', $name); } $xlang->save(); return $xlang; } + /** * Display a listing of the resource. * @@ -36,8 +39,8 @@ class XlangController extends Controller { // Artisan::call('translator:update'); - $langs = Xlang::paginate(99); - return view('admin.langs.langIndex',compact('langs')); + $langs = Xlang::paginate(99); + return view('admin.langs.langIndex', compact('langs')); } /** @@ -54,25 +57,25 @@ class XlangController extends Controller /** * Store a newly created resource in storage. * - * @param \Illuminate\Http\Request $request + * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(XlangSaveRequest $request) { // - define("TRANSLATE_CONFIG_PATH", __DIR__ . '/../../../../config/translator.php'); - define("TRANSLATE_NEW_FILE",__DIR__ . '/../../../../resources/lang/'.$request->tag.'.json' ); + define("TRANSLATE_CONFIG_PATH", PREFIX_PATH . 'config/translator.php'); + define("TRANSLATE_NEW_FILE", PREFIX_PATH . 'resources/lang/' . $request->tag . '.json'); $config = file_get_contents(TRANSLATE_CONFIG_PATH); $re = '/\'languages\' \=\> (.*)\,/m'; preg_match_all($re, $config, $matches, PREG_SET_ORDER, 0); $oldLangs = $matches[0][1]; - $newLans = json_encode(array_unique(array_merge(json_decode($oldLangs),[$request->tag]))); - $newConfig = (str_replace($oldLangs,$newLans,$config)); - file_put_contents(TRANSLATE_CONFIG_PATH,$newConfig); + $newLans = json_encode(array_unique(array_merge(json_decode($oldLangs), [$request->tag]))); + $newConfig = (str_replace($oldLangs, $newLans, $config)); + file_put_contents(TRANSLATE_CONFIG_PATH, $newConfig); - if (!file_exists(TRANSLATE_NEW_FILE)){ - file_put_contents(TRANSLATE_NEW_FILE,'{}'); + if (!file_exists(TRANSLATE_NEW_FILE)) { + file_put_contents(TRANSLATE_NEW_FILE, '{}'); } $xlang = new Xlang(); @@ -84,7 +87,7 @@ class XlangController extends Controller /** * Display the specified resource. * - * @param \App\Models\Xlang $xlang + * @param \App\Models\Xlang $xlang * @return \Illuminate\Http\Response */ public function show(Xlang $xlang) @@ -95,20 +98,20 @@ class XlangController extends Controller /** * Show the form for editing the specified resource. * - * @param \App\Models\Xlang $xlang + * @param \App\Models\Xlang $xlang * @return \Illuminate\Http\Response */ public function edit(Xlang $xlang) { // - return view('admin.langs.langForm',compact('xlang')); + return view('admin.langs.langForm', compact('xlang')); } /** * Update the specified resource in storage. * - * @param \Illuminate\Http\Request $request - * @param \App\Models\Xlang $xlang + * @param \Illuminate\Http\Request $request + * @param \App\Models\Xlang $xlang * @return \Illuminate\Http\Response */ public function update(XlangSaveRequest $request, Xlang $xlang) @@ -122,7 +125,7 @@ class XlangController extends Controller /** * Remove the specified resource from storage. * - * @param \App\Models\Xlang $xlang + * @param \App\Models\Xlang $xlang * @return \Illuminate\Http\Response */ public function destroy(Xlang $xlang) @@ -133,17 +136,40 @@ class XlangController extends Controller return redirect()->route('admin.lang.index')->with(['message' => __('Lang') . ' ' . __('deleted successfully')]); } - public function translate(){ + public function translate() + { + $langs = Xlang::all(); + return view('admin.langs.translateIndex', compact('langs')); + } + + public function download($tag) + { + define("TRANSLATE_FILE", PREFIX_PATH . 'resources/lang/' . $tag . '.json'); + return response()->download(TRANSLATE_FILE, $tag . '.json'); } + public function upload($tag, Request $request) + { + define("TRANSLATE_FILE", PREFIX_PATH . 'resources/lang/' . $tag . '.json'); + if (!$request->hasFile('json')) { + return redirect()->back(); + } + $data = (file_get_contents($request->file('json')->getRealPath())); + if (json_decode($data) == null) { + return redirect()->back()->withErrors(__("Invalid json file!")); + } + file_put_contents(TRANSLATE_FILE, $data); + return redirect()->back()->with(['message' => __("Translate updated")]); + } - public function bulk(Request $request) { + public function bulk(Request $request) + { switch ($request->input('bulk')) { case 'delete': $msg = __('transports deleted successfully'); - logAdminBatch(__METHOD__.'.'.$request->input('bulk'),XlangController::class,$request->input('id')); + logAdminBatch(__METHOD__ . '.' . $request->input('bulk'), XlangController::class, $request->input('id')); XlangController::destroy($request->input('id')); break; default: diff --git a/public/css/app.css b/public/css/app.css index 5c0002f..c5079e0 100755 --- a/public/css/app.css +++ b/public/css/app.css @@ -3601,6 +3601,12 @@ nav a { text-decoration: none !important; } +.lang-item { + background: #ddd; + border-radius: 7px; + padding: 1rem; +} + .x64 { width: 64px; } diff --git a/resources/lang/fa.json b/resources/lang/fa.json index ea2023e..7703bb5 100755 --- a/resources/lang/fa.json +++ b/resources/lang/fa.json @@ -255,11 +255,12 @@ "Is pinned news?": "آیا این مطلب سنجاق شود", "Is pinned posts?": "آیا این مطلب سنجاق شود", "Key": "کلید", - "LTR": "راست به چپ", + "LTR": "چپ به راست", "Label": "برچسب", "Lang": "زبان", - "Language list": "", - "Languages": "", + "Language list": "فهرست زبان‌ها", + "Languages": "زبان‌ها", + "Languages translate": "", "Last update": "آخرین به‌روز‌رسانی", "Last video": "واپسین فیلم", "Leave your comment": "ارسال دیدگاه", @@ -614,4 +615,4 @@ "user": "کاربر", "weight": "وزن", "yesterday": "دیروز" -} +} \ No newline at end of file diff --git a/resources/lang/ru.json b/resources/lang/ru.json index 8a60040..a937fb1 100644 --- a/resources/lang/ru.json +++ b/resources/lang/ru.json @@ -196,6 +196,7 @@ "Lang": "", "Language list": "", "Languages": "", + "Languages translate": "", "Last update": "", "Link": "", "Login": "", @@ -470,4 +471,4 @@ "transports deleted successfully": "", "updated successfully": "", "weight": "" -} +} \ No newline at end of file diff --git a/resources/sass/app.scss b/resources/sass/app.scss index e090672..5b166cd 100755 --- a/resources/sass/app.scss +++ b/resources/sass/app.scss @@ -46,6 +46,11 @@ nav { } } +.lang-item{ + background: #ddd; + border-radius: 7px; + padding: 1rem; +} .x64 { width: 64px; } diff --git a/resources/views/admin/langs/translateIndex.blade.php b/resources/views/admin/langs/translateIndex.blade.php new file mode 100755 index 0000000..bc91554 --- /dev/null +++ b/resources/views/admin/langs/translateIndex.blade.php @@ -0,0 +1,38 @@ +@extends('admin.adminlayout') +@section('page_title') + {{__("Languages translate")}} + - +@endsection +@section('content') +
+ + @include('starter-kit::component.err') + +
+
+ @foreach($langs as $lang) +
+
+
+ {{$lang->name}} +
+ + + {{__("Download json file")}} + +
+ @csrf + + +
+ +
+
+ @endforeach +
+
+
+@endsection diff --git a/routes/web.php b/routes/web.php index 8b3bec2..74ba017 100755 --- a/routes/web.php +++ b/routes/web.php @@ -40,6 +40,8 @@ Route::prefix(config('starter-kit.uri'))->name('admin.')->group( Route::get('/edit/{xlang}', [\App\Http\Controllers\Admin\XlangController::class,'edit'])->name('edit'); Route::post('/update/{xlang}', [\App\Http\Controllers\Admin\XlangController::class,'update'])->name('update'); Route::post('bulk', [\App\Http\Controllers\Admin\XlangController::class, "bulk"])->name('bulk'); + Route::get('/download/{tag}', [\App\Http\Controllers\Admin\XlangController::class,'download'])->name('download'); + Route::post('/upload/{tag}', [\App\Http\Controllers\Admin\XlangController::class,'upload'])->name('upload'); });