kopia lustrzana https://github.com/pixelfed/pixelfed
				
				
				
			Add customizable Legal Notice page
							rodzic
							
								
									96f13530e1
								
							
						
					
					
						commit
						0b7d0a9627
					
				| 
						 | 
				
			
			@ -5,6 +5,7 @@ namespace App\Http\Controllers;
 | 
			
		|||
use Illuminate\Http\Request;
 | 
			
		||||
use Auth, Cache;
 | 
			
		||||
use App\Page;
 | 
			
		||||
use App\Services\ConfigCacheService;
 | 
			
		||||
 | 
			
		||||
class PageController extends Controller
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			@ -18,7 +19,8 @@ class PageController extends Controller
 | 
			
		|||
			'/site/about' => 'site:about',
 | 
			
		||||
			'/site/privacy' => 'site:privacy',
 | 
			
		||||
			'/site/terms' => 'site:terms',
 | 
			
		||||
			'/site/kb/community-guidelines' => 'site:help:community-guidelines'
 | 
			
		||||
			'/site/kb/community-guidelines' => 'site:help:community-guidelines',
 | 
			
		||||
			'/site/legal-notice' => 'site:legal-notice'
 | 
			
		||||
		];
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -60,10 +62,11 @@ class PageController extends Controller
 | 
			
		|||
		$page->title = $request->input('title');
 | 
			
		||||
		$page->active = (bool) $request->input('active');
 | 
			
		||||
		$page->save();
 | 
			
		||||
		if($page->cached) {
 | 
			
		||||
			$keys = $this->cacheKeys();
 | 
			
		||||
			$key = $keys[$page->slug];
 | 
			
		||||
			Cache::forget($key);
 | 
			
		||||
		$keys = $this->cacheKeys();
 | 
			
		||||
		$key = $keys[$page->slug];
 | 
			
		||||
		Cache::forget($key);
 | 
			
		||||
		if($page->slug === '/site/legal-notice') {
 | 
			
		||||
			ConfigCacheService::put('instance.has_legal_notice', $page->active);
 | 
			
		||||
		}
 | 
			
		||||
		return response()->json(['msg' => 200]);
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			@ -75,14 +78,17 @@ class PageController extends Controller
 | 
			
		|||
		]);
 | 
			
		||||
 | 
			
		||||
		$page = Page::findOrFail($request->input('id'));
 | 
			
		||||
		$keys = $this->cacheKeys();
 | 
			
		||||
		$key = $keys[$page->slug];
 | 
			
		||||
		$page->delete();
 | 
			
		||||
		Cache::forget($key);
 | 
			
		||||
		return redirect(route('admin.settings.pages'));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public function generatePage(Request $request)
 | 
			
		||||
	{
 | 
			
		||||
		$this->validate($request, [
 | 
			
		||||
			'page' => 'required|string|in:about,terms,privacy,community_guidelines',
 | 
			
		||||
			'page' => 'required|string|in:about,terms,privacy,community_guidelines,legal_notice',
 | 
			
		||||
		]);
 | 
			
		||||
 | 
			
		||||
		$page = $request->input('page');
 | 
			
		||||
| 
						 | 
				
			
			@ -103,6 +109,10 @@ class PageController extends Controller
 | 
			
		|||
			case 'community_guidelines':
 | 
			
		||||
				Page::firstOrCreate(['slug' => '/site/kb/community-guidelines']);
 | 
			
		||||
				break;
 | 
			
		||||
 | 
			
		||||
			case 'legal_notice':
 | 
			
		||||
				Page::firstOrCreate(['slug' => '/site/legal-notice']);
 | 
			
		||||
				break;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		return redirect(route('admin.settings.pages'));
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -154,4 +154,14 @@ class SiteController extends Controller
 | 
			
		|||
 | 
			
		||||
		return redirect($url);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public function legalNotice(Request $request)
 | 
			
		||||
	{
 | 
			
		||||
		$page = Cache::remember('site:legal-notice', now()->addDays(120), function() {
 | 
			
		||||
			$slug = '/site/legal-notice';
 | 
			
		||||
			return Page::whereSlug($slug)->whereActive(true)->first();
 | 
			
		||||
		});
 | 
			
		||||
		abort_if(!$page, 404);
 | 
			
		||||
		return View::make('site.legal-notice')->with(compact('page'))->render();
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -53,6 +53,8 @@ class ConfigCacheService
 | 
			
		|||
				'account.autofollow',
 | 
			
		||||
				'account.autofollow_usernames',
 | 
			
		||||
				'config.discover.features',
 | 
			
		||||
 | 
			
		||||
				'instance.has_legal_notice',
 | 
			
		||||
				// 'system.user_mode'
 | 
			
		||||
			];
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -84,4 +84,6 @@ return [
 | 
			
		|||
	],
 | 
			
		||||
 | 
			
		||||
	'enable_cc' => env('ENABLE_CONFIG_CACHE', false),
 | 
			
		||||
 | 
			
		||||
	'has_legal_notice' => env('INSTANCE_LEGAL_NOTICE', false),
 | 
			
		||||
];
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,7 +11,7 @@
 | 
			
		|||
					<p class="lead text-white mt-n4 mb-0">Manage public and custom page content</p>
 | 
			
		||||
				</div>
 | 
			
		||||
 | 
			
		||||
                @if($pages->count() < 4)
 | 
			
		||||
                @if($pages->count() < 5)
 | 
			
		||||
                <div class="col-12">
 | 
			
		||||
                    <hr>
 | 
			
		||||
                    <div class="btn-group">
 | 
			
		||||
| 
						 | 
				
			
			@ -43,6 +43,13 @@
 | 
			
		|||
                            <button type="submit" class="btn btn-default font-weight-bold">Customize Guidelines Page</button>
 | 
			
		||||
                        </form>
 | 
			
		||||
                        @endif
 | 
			
		||||
                        @if(!$pages->contains('slug', '=', '/site/legal-notice'))
 | 
			
		||||
                        <form class="form-inline" method="post" action="/i/admin/settings/pages/create">
 | 
			
		||||
                            @csrf
 | 
			
		||||
                            <input type="hidden" name="page" value="legal_notice">
 | 
			
		||||
                            <button type="submit" class="btn btn-default font-weight-bold">Customize Legal Notice Page</button>
 | 
			
		||||
                        </form>
 | 
			
		||||
                        @endif
 | 
			
		||||
                  </div>
 | 
			
		||||
                </div>
 | 
			
		||||
                @endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,19 @@
 | 
			
		|||
@extends('layouts.app')
 | 
			
		||||
 | 
			
		||||
@section('content')
 | 
			
		||||
<div class="container mt-5">
 | 
			
		||||
  <div class="col-12">
 | 
			
		||||
    <p class="font-weight-bold text-lighter text-uppercase">{{ $page->title ?? 'Legal Notice' }}</p>
 | 
			
		||||
    <div class="card border shadow-none">
 | 
			
		||||
      <div class="card-body p-md-5 text-justify mx-md-3" style="white-space: pre-line">
 | 
			
		||||
        @if($page && $page->content)
 | 
			
		||||
        {!! $page->content !!}
 | 
			
		||||
        @endif
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
  </div>
 | 
			
		||||
</div>
 | 
			
		||||
@endsection
 | 
			
		||||
@push('meta')
 | 
			
		||||
<meta property="og:description" content="{{ $page->title ?? 'Legal Notice' }}">
 | 
			
		||||
@endpush
 | 
			
		||||
| 
						 | 
				
			
			@ -513,6 +513,7 @@ Route::domain(config('pixelfed.domain.app'))->middleware(['validemail', 'twofact
 | 
			
		|||
		Route::get('newsroom/archive', 'NewsroomController@archive');
 | 
			
		||||
		Route::get('newsroom/search', 'NewsroomController@search');
 | 
			
		||||
		Route::get('newsroom', 'NewsroomController@index');
 | 
			
		||||
		Route::get('legal-notice', 'SiteController@legalNotice');
 | 
			
		||||
	});
 | 
			
		||||
 | 
			
		||||
	Route::group(['prefix' => 'timeline'], function () {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Ładowanie…
	
		Reference in New Issue