Skip to content
This repository has been archived by the owner on Mar 9, 2020. It is now read-only.

Commit

Permalink
add search
Browse files Browse the repository at this point in the history
  • Loading branch information
summerblue committed Jan 16, 2017
1 parent 66bfe91 commit 6a46fcd
Show file tree
Hide file tree
Showing 16 changed files with 486 additions and 111 deletions.
8 changes: 7 additions & 1 deletion app/Http/Controllers/PagesController.php
Expand Up @@ -34,7 +34,13 @@ public function wiki()
public function search(Request $request)
{
$query = Purifier::clean($request->input('q'), 'search_q');
return redirect()->away('https://www.google.com/search?q=site:laravel-china.org ' . $query, 301);
$users = User::search($query, null, true)->limit(3)->get();
$topics = Topic::search($query, null, true)
->withoutBlocked()
->withoutBoardTopics()
->paginate(30);

return view('pages.search', compact('users', 'query', 'topics'));
}

public function feed()
Expand Down
9 changes: 9 additions & 0 deletions app/Models/Topic.php
Expand Up @@ -10,6 +10,7 @@
use Illuminate\Pagination\Paginator;
use Venturecraft\Revisionable\RevisionableTrait;
use Cache;
use Nicolaslopezj\Searchable\SearchableTrait;

class Topic extends Model
{
Expand All @@ -28,6 +29,14 @@ class Topic extends Model
'order',
];

use SearchableTrait;
protected $searchable = [
'columns' => [
'topics.title' => 10,
'topics.body' => 5,
]
];

use PresentableTrait;
protected $presenter = 'Phphub\Presenters\TopicPresenter';

Expand Down
9 changes: 9 additions & 0 deletions app/Models/User.php
Expand Up @@ -17,14 +17,23 @@
use App\Models\Traits\UserAvatarHelper;
use Carbon\Carbon;
use Cache;
use Nicolaslopezj\Searchable\SearchableTrait;

class User extends Model implements AuthenticatableContract,
AuthorizableContract
{
use UserRememberTokenHelper,UserSocialiteHelper,UserAvatarHelper;

use PresentableTrait;
public $presenter = 'Phphub\Presenters\UserPresenter';

use SearchableTrait;
protected $searchable = [
'columns' => [
'users.name' => 10,
],
];

// For admin log
use RevisionableTrait;
protected $keepRevisionOf = [
Expand Down
3 changes: 2 additions & 1 deletion composer.json
Expand Up @@ -38,7 +38,8 @@
"jpush/jpush": "^3.2",
"socialiteproviders/manager": "2.1.5",
"overtrue/laravel-follow": "dev-master",
"pda/pheanstalk": "^3.1"
"pda/pheanstalk": "^3.1",
"nicolaslopezj/searchable": "1.*"
},
"require-dev": {
"fzaninotto/faker": "~1.4",
Expand Down
254 changes: 150 additions & 104 deletions composer.lock

Large diffs are not rendered by default.

8 changes: 6 additions & 2 deletions gulpfile.js
Expand Up @@ -79,6 +79,11 @@ elixir(function(mix) {
'vendor/simplemde.min.js',
], 'public/assets/js/editor.js')

// search
.scripts([
'vendor/jquery.highlight.js',
], 'public/assets/js/highlight.js')

// API Web View
.sass([
'vendor/simplemde.min.scss'
Expand All @@ -96,9 +101,8 @@ elixir(function(mix) {
// API Web View
'assets/css/editor.css',
'assets/js/editor.js',
])

.livereload();
]);

if (production) {
mix.compress();
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion public/build/assets/css/styles.css.map

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions public/build/assets/js/highlight.js.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion public/build/rev-manifest.json
@@ -1,7 +1,7 @@
{
"assets/css/api.css": "assets/css/api-16419e470e.css",
"assets/css/editor.css": "assets/css/editor-03a7115913.css",
"assets/css/styles.css": "assets/css/styles-1e0d5e9a4c.css",
"assets/css/styles.css": "assets/css/styles-f9f7cb4a38.css",
"assets/js/api.js": "assets/js/api-7e40a02c6c.js",
"assets/js/editor.js": "assets/js/editor-7c1634df3a.js",
"assets/js/scripts.js": "assets/js/scripts-e8997eb225.js"
Expand Down
1 change: 1 addition & 0 deletions resources/assets/js/vendor/jquery.highlight.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

102 changes: 102 additions & 0 deletions resources/assets/sass/main.scss
Expand Up @@ -1906,6 +1906,10 @@ a {
width: 66px;
height: 66px;
}
.avatar-96 {
width: 96px;
height: 96px;
}
.more-excellent-topic-link {
color: #999;
font-size: 13px;
Expand Down Expand Up @@ -2215,3 +2219,101 @@ hr {
}

}

.search-results {
padding: 20px;
line-height: 25px;

.panel-heading h3 {
color: #696969;
font-size: 15px;
margin-bottom: 12px;
}

a {
color: #333;
}
.result {
margin-bottom: 20px;
}
.user.result {
margin-top: 8px;
margin-bottom: 0px;
}

.result em {
color: #EB5424;
font-style: normal
}

.result .title {
font-size: 18px;
}

.result .title .badge {
background: #EBEDEE;
color: #9A9DA0;
font-weight: normal;
font-size: 12px;
margin-left: 4px
}

.result .info {
margin-bottom: 6px;
font-size: 12px
}

.result .info .url a {
color: #23863F
}

.result .info .date {
color: #999;
margin-left: 8px
}

.result .desc {
color: #666;
font-size: 14px;
word-break: break-all
}

.result .desc em {
color: #F86334
}

.user .info {
margin-top: 4px;
font-size: 14px
}

.user .info.number {
color: #666;
font-size: 13px
}
.highlight {
background-color: #ffd7d7
}
.role-label {
display: inline-block;
position: absolute;

a.label {
font-size: 85%;
font-weight: 100;
padding: 0.2em 1em .2em;
position: relative;
margin: 8px;
color: #fff;
}
}
.user-info {
padding-top: 8px;
padding-left: 8px;
}

hr {
margin-top: 15px;
margin-bottom: 15px;
}
}
2 changes: 1 addition & 1 deletion resources/views/layouts/partials/nav.blade.php
Expand Up @@ -31,7 +31,7 @@
</ul>

<div class="navbar-right">
<form method="GET" action="{{route('search')}}" accept-charset="UTF-8" class="navbar-form navbar-left" target="_blank">
<form method="GET" action="{{route('search')}}" accept-charset="UTF-8" class="navbar-form navbar-left">
<div class="form-group">
<input class="form-control search-input mac-style" placeholder="{{lang('Search')}}" name="q" type="text">
</div>
Expand Down
34 changes: 34 additions & 0 deletions resources/views/pages/partials/topics_result.blade.php
@@ -0,0 +1,34 @@
<div class="result">
<h2 class="title">
@if ($topic->category->id == config('phphub.blog_category_id'))
<a href="{{ route('articles.show', [$topic->id]) }}">{{ $topic->title }}</a>
@else
<a href="{{ route('topics.show', [$topic->id]) }}">{{ $topic->title }}</a>
@endif
</h2>
<div class="info">
<span class="url">
@if ($topic->category->id == config('phphub.blog_category_id'))
<a href="{{ route('articles.show', [$topic->id]) }}">{{ route('articles.show', [$topic->id]) }}</a>
@else
<a href="{{ route('topics.show', [$topic->id]) }}">{{ route('topics.show', [$topic->id]) }}</a>
@endif
</span>
<span class="date" title="Last Updated At">
{{ Carbon\Carbon::parse($topic->created_at)->format('Y-m-d') }}

<i class="fa fa-eye"></i> {{ $topic->view_count }}
<i class="fa fa-thumbs-o-up"></i> {{ $topic->vote_count }}
<i class="fa fa-comments-o"></i> {{ $topic->reply_count }}

</span>

</div>
<div class="desc">
{{ str_limit($topic->body_original, 250) }}
</div>
<hr>
</div>
33 changes: 33 additions & 0 deletions resources/views/pages/partials/users_result.blade.php
@@ -0,0 +1,33 @@
<div class="result user media">
<div class="media">
<div class="avatar media-left">
<div class="image"><a title="{{ $user->name }}" href="{{ route('users.show', $user->id) }}">
<img class="media-object img-thumbnail avatar avatar-66" src="{{ $user->present()->gravatar }}" alt="96"></a>
</div>
</div>
<div class="media-body user-info">
<div class="info">
<a href="{{ route('users.show', $user->id) }}">{{ $user->name }}</a>
@if ($user->present()->hasBadge())
<div class="role-label">
<a class="label label-success role" href="{{ route('roles.show', [$user->present()->badgeID()]) }}">{{{ $user->present()->badgeName() }}}</a>
</div>
@endif
</div>
<div class="info number">
{{ $user->id }} 位会员
<span title="注册日期">
{{ Carbon\Carbon::parse($user->created_at)->format('Y-m-d') }}
</span>

⋅ <span>{{ $user->follower_count }}</span> 关注者
⋅ <span>{{ $user->topic_count }}</span> 篇话题
⋅ <span>{{ $user->reply_count }}</span> 条回帖
⋅ <span>{{ $user->article_count }}</span> 篇文章
</div>
</div>
</div>

</div>
<hr>

0 comments on commit 6a46fcd

Please sign in to comment.