资源栏
This commit is contained in:
parent
d1e0c21a9a
commit
395b1c619a
|
@ -3,16 +3,18 @@
|
|||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\Category;
|
||||
use App\Models\Link;
|
||||
use App\Models\Topic;
|
||||
use App\Models\User;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class CategoriesController extends Controller
|
||||
{
|
||||
public function show(Category $category, Request $request, User $user)
|
||||
public function show(Category $category, Request $request, User $user, Link $link)
|
||||
{
|
||||
$topics = Topic::where('category_id', $category->id)->withOrder($request->order)->with('user', 'category')->paginate();
|
||||
$links = $link->getAllCached();
|
||||
$active_users = $user->getActiveUsers();
|
||||
return view('topics.index', compact('topics', 'category', 'active_users'));
|
||||
return view('topics.index', compact('topics', 'category', 'active_users', 'links'));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,6 +4,7 @@ namespace App\Http\Controllers;
|
|||
|
||||
use App\Http\Requests\TopicRequest;
|
||||
use App\Models\Category;
|
||||
use App\Models\Link;
|
||||
use App\Models\Topic;
|
||||
use App\Models\User;
|
||||
use App\Tools\ImageUploadTool;
|
||||
|
@ -23,11 +24,12 @@ class TopicsController extends Controller
|
|||
return view('topics.create_and_edit', compact('topic', 'categories'));
|
||||
}
|
||||
|
||||
public function index(Request $request, Topic $topic, User $user)
|
||||
public function index(Request $request, Topic $topic, User $user, Link $link)
|
||||
{
|
||||
$active_users = $user->getActiveUsers();
|
||||
$topics = $topic->with('user', 'category')->withOrder($request->order)->paginate();
|
||||
return view('topics.index', compact('topics', 'active_users'));
|
||||
$links = $link->getAllCached();
|
||||
return view('topics.index', compact('topics', 'links', 'active_users'));
|
||||
}
|
||||
|
||||
public function show(Topic $topic, Request $request)
|
||||
|
|
29
app/Models/Link.php
Normal file
29
app/Models/Link.php
Normal file
|
@ -0,0 +1,29 @@
|
|||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
|
||||
/**
|
||||
* Class Link
|
||||
* @property int id
|
||||
* @property string title
|
||||
* @property string link
|
||||
* @package App\Models
|
||||
*/
|
||||
class Link extends Model
|
||||
{
|
||||
public $cache_key = 'larabbs_key';
|
||||
public $cache_expire_in_minutes = 1440;
|
||||
protected $fillable = ['title', 'link'];
|
||||
|
||||
public function getAllCached()
|
||||
{
|
||||
return Cache::remember($this->cache_key, $this->cache_expire_in_minutes, function () {
|
||||
{
|
||||
return $this->all();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
21
app/Observers/LinkObserver.php
Normal file
21
app/Observers/LinkObserver.php
Normal file
|
@ -0,0 +1,21 @@
|
|||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: xing
|
||||
* Date: 2018/6/2
|
||||
* Time: 21:36
|
||||
*/
|
||||
|
||||
namespace App\Observers;
|
||||
|
||||
|
||||
use App\Models\Link;
|
||||
use Cache;
|
||||
|
||||
class LinkObserver
|
||||
{
|
||||
public function saved(Link $link)
|
||||
{
|
||||
Cache::forget($link->cache_key);
|
||||
}
|
||||
}
|
|
@ -2,8 +2,10 @@
|
|||
|
||||
namespace App\Providers;
|
||||
|
||||
use App\Models\Link;
|
||||
use App\Models\Reply;
|
||||
use App\Models\Topic;
|
||||
use App\Observers\LinkObserver;
|
||||
use App\Observers\ReplyObserver;
|
||||
use App\Observers\TopicObserver;
|
||||
use Carbon\Carbon;
|
||||
|
@ -21,7 +23,7 @@ class AppServiceProvider extends ServiceProvider
|
|||
Carbon::setLocale('zh');
|
||||
Topic::observe(new TopicObserver());
|
||||
Reply::observe(new ReplyObserver());
|
||||
|
||||
Link::observe(new LinkObserver());
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
<?php
|
||||
|
||||
$a = '';
|
||||
return array(
|
||||
|
||||
/**
|
||||
|
@ -67,7 +68,8 @@ return array(
|
|||
'replies'
|
||||
],
|
||||
'站点管理' => [
|
||||
'settings.site'
|
||||
'settings.site',
|
||||
'links',
|
||||
]
|
||||
],
|
||||
|
||||
|
|
56
config/administrator/links.php
Normal file
56
config/administrator/links.php
Normal file
|
@ -0,0 +1,56 @@
|
|||
<?php
|
||||
/**
|
||||
* Created by PhpStorm.
|
||||
* User: xing
|
||||
* Date: 2018/6/2
|
||||
* Time: 20:55
|
||||
*/
|
||||
|
||||
use App\Models\Link;
|
||||
|
||||
return [
|
||||
'title' => '资源推荐',
|
||||
'single' => '资源推荐',
|
||||
|
||||
'model' => Link::class,
|
||||
|
||||
// 访问权限判断
|
||||
'permission' => function () {
|
||||
// 只允许站长管理资源推荐链接
|
||||
return Auth::user()->hasRole('Founder');
|
||||
},
|
||||
|
||||
'columns' => [
|
||||
'id' => [
|
||||
'title' => 'ID',
|
||||
],
|
||||
'title' => [
|
||||
'title' => '名称',
|
||||
'sortable' => false,
|
||||
],
|
||||
'link' => [
|
||||
'title' => '链接',
|
||||
'sortable' => false,
|
||||
],
|
||||
'operation' => [
|
||||
'title' => '管理',
|
||||
'sortable' => false,
|
||||
],
|
||||
],
|
||||
'edit_fields' => [
|
||||
'title' => [
|
||||
'title' => '名称',
|
||||
],
|
||||
'link' => [
|
||||
'title' => '链接',
|
||||
],
|
||||
],
|
||||
'filters' => [
|
||||
'id' => [
|
||||
'title' => '标签 ID',
|
||||
],
|
||||
'title' => [
|
||||
'title' => '名称',
|
||||
],
|
||||
],
|
||||
];
|
10
database/factories/LinkFactory.php
Normal file
10
database/factories/LinkFactory.php
Normal file
|
@ -0,0 +1,10 @@
|
|||
<?php
|
||||
|
||||
use Faker\Generator as Faker;
|
||||
|
||||
$factory->define(\App\Models\Link::class, function (Faker $faker) {
|
||||
return [
|
||||
'title' => $faker->name,
|
||||
'link' => $faker->url,
|
||||
];
|
||||
});
|
33
database/migrations/2018_06_02_204347_create_links_table.php
Normal file
33
database/migrations/2018_06_02_204347_create_links_table.php
Normal file
|
@ -0,0 +1,33 @@
|
|||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
class CreateLinksTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('links', function (Blueprint $table) {
|
||||
$table->increments('id');
|
||||
$table->string('title')->comment('资源的描述')->index();
|
||||
$table->string('link')->comment('资源的链接')->index();
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::dropIfExists('links');
|
||||
}
|
||||
}
|
|
@ -14,5 +14,6 @@ class DatabaseSeeder extends Seeder
|
|||
$this->call(UsersTableSeeder::class);
|
||||
$this->call(TopicsTableSeeder::class);
|
||||
$this->call(ReplysTableSeeder::class);
|
||||
$this->call(LinksTableSeeder::class);
|
||||
}
|
||||
}
|
||||
|
|
17
database/seeds/LinksTableSeeder.php
Normal file
17
database/seeds/LinksTableSeeder.php
Normal file
|
@ -0,0 +1,17 @@
|
|||
<?php
|
||||
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
class LinksTableSeeder extends Seeder
|
||||
{
|
||||
/**
|
||||
* Run the database seeds.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function run()
|
||||
{
|
||||
$link = factory(\App\Models\Link::class)->times(6)->make();
|
||||
\App\Models\Link::insert($link->toArray());
|
||||
}
|
||||
}
|
|
@ -24,4 +24,22 @@
|
|||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@if (count($links))
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-body active-users">
|
||||
|
||||
<div class="text-center">资源推荐</div>
|
||||
<hr>
|
||||
@foreach ($links as $link)
|
||||
<a class="media" href="{{ $link->link }}">
|
||||
<div class="media-body">
|
||||
<span class="media-heading">{{ $link->title }}</span>
|
||||
</div>
|
||||
</a>
|
||||
@endforeach
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
Loading…
Reference in New Issue
Block a user