initial work on seach changes
This commit is contained in:
parent
fb2428e21b
commit
f935fd94c6
|
@ -12,6 +12,7 @@ use Illuminate\Http\Request;
|
|||
use Illuminate\Support\Facades\Storage;
|
||||
use App\SupportedApps;
|
||||
use App\Jobs\ProcessApps;
|
||||
use App\Search;
|
||||
|
||||
class ItemController extends Controller
|
||||
{
|
||||
|
@ -168,6 +169,8 @@ class ItemController extends Controller
|
|||
|
||||
$item = Item::create($request->all());
|
||||
|
||||
Search::storeSearchProvider($request->input('class'), $item);
|
||||
|
||||
$item->parents()->sync($request->tags);
|
||||
|
||||
$route = route('dash', [], false);
|
||||
|
@ -241,6 +244,8 @@ class ItemController extends Controller
|
|||
$item = Item::find($id);
|
||||
$item->update($request->all());
|
||||
|
||||
Search::storeSearchProvider($request->input('class'), $item);
|
||||
|
||||
$item->parents()->sync($request->tags);
|
||||
|
||||
$route = route('dash', [], false);
|
||||
|
|
|
@ -163,6 +163,12 @@ class Item extends Model
|
|||
return (bool)($app instanceof \App\EnhancedApps);
|
||||
}
|
||||
|
||||
public static function isSearchProvider($class)
|
||||
{
|
||||
$app = new $class;
|
||||
return ((bool)($app instanceof \App\EnhancedApps)) ? $app : false;
|
||||
}
|
||||
|
||||
public function enabled()
|
||||
{
|
||||
if($this->enhanced()) {
|
||||
|
|
61
app/Search.php
Normal file
61
app/Search.php
Normal file
|
@ -0,0 +1,61 @@
|
|||
<?php namespace App;
|
||||
|
||||
use GuzzleHttp\Exception\GuzzleException;
|
||||
use GuzzleHttp\Client;
|
||||
use App\Item;
|
||||
|
||||
abstract class Search
|
||||
{
|
||||
|
||||
public static function providers()
|
||||
{
|
||||
$providers = self::standardProviders();
|
||||
// Need something to add in none standard providers
|
||||
|
||||
return $providers;
|
||||
}
|
||||
|
||||
public static function providerDetails($provider)
|
||||
{
|
||||
$providers = self::providers();
|
||||
return (object)$providers[$provider] ?? false;
|
||||
}
|
||||
|
||||
public static function standardProviders()
|
||||
{
|
||||
return [
|
||||
'google' => [
|
||||
'url' => 'https://www.google.com/search',
|
||||
'var' => 'q',
|
||||
'method' => 'get',
|
||||
],
|
||||
'ddg' => [
|
||||
'url' => 'https://duckduckgo.com/',
|
||||
'var' => 'q',
|
||||
'method' => 'get',
|
||||
],
|
||||
'bing' => [
|
||||
'url' => 'https://www.bing.com/search',
|
||||
'var' => 'q',
|
||||
'method' => 'get',
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
public static function storeSearchProvider($class, $app)
|
||||
{
|
||||
if(!empty($class)) {
|
||||
if(($provider = Item::isSearchProvider($class)) !== false) {
|
||||
$providers = Cache::get('search_providers', []);
|
||||
$name = Item::nameFromClass($class);
|
||||
|
||||
$search = new $class;
|
||||
|
||||
$providers[strtolower($name)] = [
|
||||
'method' => $search->method;
|
||||
];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
10
app/SearchInterface.php
Normal file
10
app/SearchInterface.php
Normal file
|
@ -0,0 +1,10 @@
|
|||
<?php namespace App;
|
||||
|
||||
use GuzzleHttp\Exception\GuzzleException;
|
||||
use GuzzleHttp\Client;
|
||||
|
||||
interface SearchInterface
|
||||
{
|
||||
public function getResults();
|
||||
|
||||
}
|
|
@ -7,6 +7,7 @@ use Illuminate\Support\Facades\Input;
|
|||
use Form;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use App\User;
|
||||
use App\Search;
|
||||
|
||||
class Setting extends Model
|
||||
{
|
||||
|
@ -237,30 +238,14 @@ class Setting extends Model
|
|||
|
||||
if((bool)$homepage_search && (bool)$search_provider) {
|
||||
|
||||
$options = (array)json_decode($search_provider->options);
|
||||
$name = $options[$user_search_provider];
|
||||
if((bool)$user_search_provider) {
|
||||
switch($user_search_provider) {
|
||||
case 'google':
|
||||
$url = 'https://www.google.com/search';
|
||||
$var = 'q';
|
||||
break;
|
||||
case 'ddg':
|
||||
$url = 'https://duckduckgo.com/';
|
||||
$var = 'q';
|
||||
break;
|
||||
case 'bing':
|
||||
$url = 'https://www.bing.com/search';
|
||||
$var = 'q';
|
||||
break;
|
||||
case 'startpage':
|
||||
$url = 'https://www.startpage.com/';
|
||||
$var = 'q';
|
||||
}
|
||||
$name = 'app.options.'.$user_search_provider;
|
||||
$provider = Search::providerDetails($user_search_provider);
|
||||
|
||||
$output .= '<div class="searchform">';
|
||||
$output .= Form::open(['url' => $url, 'method' => 'get']);
|
||||
$output .= Form::open(['url' => $provider->url, 'method' => $provider->method]);
|
||||
$output .= '<div class="input-container">';
|
||||
$output .= Form::text($var, null, ['class' => 'homesearch', 'autofocus' => 'autofocus', 'placeholder' => __($name).' '.__('app.settings.search').'...']);
|
||||
$output .= Form::text($provider->var, null, ['class' => 'homesearch', 'autofocus' => 'autofocus', 'placeholder' => __($name).' '.__('app.settings.search').'...']);
|
||||
$output .= '<button type="submit">'.ucwords(__('app.settings.search')).'</button>';
|
||||
$output .= '</div>';
|
||||
$output .= Form::close();
|
||||
|
|
Loading…
Reference in a new issue