Rewrite Article relate feature

This commit is contained in:
兔姬桑
2022-12-26 20:54:29 +08:00
parent c601f4a2bf
commit b3734c5c48
148 changed files with 28909 additions and 1055 deletions

View File

@@ -5,6 +5,7 @@ namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Http\Requests\Admin\ArticleRequest;
use App\Models\Article;
use App\Services\ArticleService;
use Exception;
use Illuminate\Http\UploadedFile;
use Log;
@@ -12,42 +13,41 @@ use Str;
class ArticleController extends Controller
{
// 文章列表
public function index()
{
{ // 文章列表
return view('admin.article.index', ['articles' => Article::latest()->orderByDesc('sort')->paginate()->appends(request('page'))]);
}
// 添加文章页面
public function create()
{
return view('admin.article.create');
}
// 添加文章
public function store(ArticleRequest $request)
{
{ // 添加文章
$data = $request->validated();
// LOGO
if ($data['type'] !== '4' && $request->hasFile('logo')) {
$path = $this->fileUpload($request->file('logo'));
if (is_string($path)) {
$data['logo'] = $path;
} else {
return $path;
try {
if ($data['type'] !== '4' && $request->hasFile('logo')) {
$path = $this->fileUpload($request->file('logo'));
if (is_string($path)) {
$data['logo'] = $path;
} else {
return $path;
}
}
}
if ($article = Article::create($data)) {
return redirect(route('admin.article.edit', $article))->with('successMsg', '添加成功');
$data['content'] = json_encode($data['content']);
if ($article = Article::create($data)) {
return redirect(route('admin.article.edit', $article))->with('successMsg', '添加成功');
}
} catch (Exception $e) {
Log::error('添加文章错误:'.$e->getMessage());
return redirect()->back()->withInput()->withErrors($e->getMessage());
}
return redirect()->back()->withInput()->withErrors('添加失败');
}
// 图片上传
public function fileUpload(UploadedFile $file)
{
{ // 图片上传
$fileName = Str::random(8).time().'.'.$file->getClientOriginalExtension();
if (! $file->storeAs('public', $fileName)) {
@@ -57,21 +57,29 @@ class ArticleController extends Controller
return 'upload/'.$fileName;
}
// 文章页面
public function create()
{ // 添加文章页面
$categories = Article::whereNotNull('category')->distinct()->get('category');
return view('admin.article.info', compact('categories'));
}
public function show(Article $article)
{
{ // 文章页面
$article->content = (new ArticleService($article))->getContent();
return view('admin.article.show', compact('article'));
}
// 编辑文章页面
public function edit(Article $article)
{
return view('admin.article.edit', compact('article'));
{ // 编辑文章页面
$categories = Article::whereNotNull('category')->distinct()->get('category');
return view('admin.article.info', compact('article', 'categories'));
}
// 编辑文章
public function update(ArticleRequest $request, Article $article)
{
{ // 编辑文章
$data = $request->validated();
$data['logo'] = $data['logo'] ?? null;
// LOGO
@@ -91,9 +99,8 @@ class ArticleController extends Controller
return redirect()->back()->withInput()->withErrors('编辑失败');
}
// 删除文章
public function destroy(Article $article)
{
{ // 删除文章
try {
$article->delete();
} catch (Exception $e) {

View File

@@ -15,6 +15,7 @@ use App\Models\Ticket;
use App\Models\User;
use App\Notifications\TicketCreated;
use App\Notifications\TicketReplied;
use App\Services\ArticleService;
use App\Services\CouponService;
use App\Services\ProxyService;
use App\Services\UserService;
@@ -134,10 +135,11 @@ class UserController extends Controller
]);
}
// 公告详情
public function article(Article $article)
{
return view('user.article', compact('article'));
{ // 公告详情
$articleService = new ArticleService($article);
return response()->json(['title' => $article->title, 'content' => $articleService->getContent()]);
}
// 修改个人资料
@@ -441,9 +443,8 @@ class UserController extends Controller
}
// 帮助中心
public function help()
public function knowledge()
{
//$view['articleList'] = Article::type(1)->orderByDesc('sort')->latest()->limit(10)->paginate(5);
$data = [];
if (Node::whereType(0)->whereStatus(1)->exists()) {
$data[] = 'ss';
@@ -459,28 +460,12 @@ class UserController extends Controller
}
$subscribe = auth()->user()->subscribe;
$subscribe_link = route('sub', $subscribe->code);
return view('user.help', [
'sub' => $data,
'paying_user' => auth()->user()->activePayingUser(), // 付费用户判断
'Shadowrocket_install' => 'itms-services://?action=download-manifest&url='.sysConfig('website_url').'/clients/Shadowrocket.plist', // 客户端安装
'Quantumult_install' => 'itms-services://?action=download-manifest&url='.sysConfig('website_url').'/clients/Quantumult.plist', // 客户端安装
'QuantumultX_install' => 'itms-services://?action=download-manifest&url='.sysConfig('website_url').'/clients/QuantumultX.plist', // 客户端安装
'subscribe_status' => $subscribe->status, // 订阅连接
'link' => $subscribe_link,
'subscribe_link' => 'sub://'.base64url_encode($subscribe_link),
'Shadowrocket_link' => 'shadowrocket://add/sub://'.base64url_encode($subscribe_link).'?remarks='.urlencode(sysConfig('website_name').' '.sysConfig('website_url')),
'Shadowrocket_linkQrcode' => 'sub://'.base64url_encode($subscribe_link).'#'.base64url_encode(sysConfig('website_name')),
'Clash_link' => "clash://install-config?url={$subscribe_link}",
'Surge_link' => "surge:///install-config?url={$subscribe_link}",
'QuantumultX_link' => 'quantumult-x:///update-configuration?remote-resource='.json_encode([
'server_remote' => ["{$subscribe_link}, tag=".sysConfig('website_name')],
'filter_remote' => [],
'rewrite_remote' => [],
]),
'Quantumult_linkOut' => 'quantumult://configuration?server='.base64url_encode($subscribe_link).'&filter='.base64url_encode('https://raw.githubusercontent.com/ZBrettonYe/VPN-Rules-Collection/master/Profiles/Quantumult/Pro.conf').'&rejection='.base64url_encode('https://raw.githubusercontent.com/ZBrettonYe/VPN-Rules-Collection/master/Profiles/Quantumult/Rejection.conf'),
'Quantumult_linkIn' => 'quantumult://configuration?server='.base64url_encode($subscribe_link).'&filter='.base64url_encode('https://raw.githubusercontent.com/ZBrettonYe/VPN-Rules-Collection/master/Profiles/Quantumult/BacktoCN.conf').'&rejection='.base64url_encode('https://raw.githubusercontent.com/ZBrettonYe/VPN-Rules-Collection/master/Profiles/Quantumult/Rejection.conf'),
return view('user.knowledge', [
'subType' => $data,
'subUrl' => route('sub', $subscribe->code),
'subStatus' => $subscribe->status,
'knowledges' => Article::type(1)->lang()->latest()->orderByDesc('sort')->get()->groupBy('category'),
]);
}