1
0
mirror of https://github.com/BookStackApp/BookStack.git synced 2025-07-30 04:23:11 +03:00

Added auto-suggestions to tag names and values

This commit is contained in:
Dan Brown
2016-05-15 20:12:53 +01:00
parent eebad3e2a0
commit e80ae76856
8 changed files with 254 additions and 10 deletions

View File

@ -60,5 +60,15 @@ class TagController extends Controller
return response()->json($suggestions);
}
/**
* Get tag value suggestions from a given search term.
* @param Request $request
*/
public function getValueSuggestions(Request $request)
{
$searchTerm = $request->get('search');
$suggestions = $this->tagRepo->getValueSuggestions($searchTerm);
return response()->json($suggestions);
}
}

View File

@ -88,7 +88,8 @@ Route::group(['middleware' => 'auth'], function () {
// Tag routes (AJAX)
Route::group(['prefix' => 'ajax/tags'], function() {
Route::get('/get/{entityType}/{entityId}', 'TagController@getForEntity');
Route::get('/suggest', 'TagController@getNameSuggestions');
Route::get('/suggest/names', 'TagController@getNameSuggestions');
Route::get('/suggest/values', 'TagController@getValueSuggestions');
Route::post('/update/{entityType}/{entityId}', 'TagController@updateForEntity');
});

View File

@ -69,6 +69,18 @@ class TagRepo
return $query->get(['name'])->pluck('name');
}
/**
* Get tag value suggestions from scanning existing tag values.
* @param $searchTerm
* @return array
*/
public function getValueSuggestions($searchTerm)
{
if ($searchTerm === '') return [];
$query = $this->tag->where('value', 'LIKE', $searchTerm . '%')->groupBy('value')->orderBy('value', 'desc');
$query = $this->permissionService->filterRestrictedEntityRelations($query, 'tags', 'entity_id', 'entity_type');
return $query->get(['value'])->pluck('value');
}
/**
* Save an array of tags to an entity
* @param Entity $entity