Form Templates for self hosted (#546)
Co-authored-by: Julien Nahum <julien@nahum.net>
This commit is contained in:
parent
6736e15074
commit
8e777ecca6
|
|
@ -7,10 +7,34 @@ use App\Http\Resources\FormTemplateResource;
|
||||||
use App\Models\Template;
|
use App\Models\Template;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\Auth;
|
use Illuminate\Support\Facades\Auth;
|
||||||
|
use Illuminate\Support\Facades\Http;
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
|
|
||||||
class TemplateController extends Controller
|
class TemplateController extends Controller
|
||||||
{
|
{
|
||||||
|
private function getProdTemplates($slug = false)
|
||||||
|
{
|
||||||
|
if (!config('app.self_hosted')) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
$prodTemplates = \Cache::remember('prod_templates', 3600, function () {
|
||||||
|
$response = Http::get('https://api.opnform.com/templates');
|
||||||
|
if ($response->successful()) {
|
||||||
|
return collect($response->json())->map(function ($item) {
|
||||||
|
$item['from_prod'] = true;
|
||||||
|
return $item;
|
||||||
|
})->toArray();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if ($slug) {
|
||||||
|
return collect($prodTemplates)->filter(function ($item) use ($slug) {
|
||||||
|
return $item['slug'] === $slug;
|
||||||
|
})->toArray();
|
||||||
|
}
|
||||||
|
return $prodTemplates;
|
||||||
|
}
|
||||||
|
|
||||||
public function index(Request $request)
|
public function index(Request $request)
|
||||||
{
|
{
|
||||||
$limit = (int) $request->get('limit', 0);
|
$limit = (int) $request->get('limit', 0);
|
||||||
|
|
@ -37,7 +61,10 @@ class TemplateController extends Controller
|
||||||
|
|
||||||
$templates = $query->orderByDesc('created_at')->get();
|
$templates = $query->orderByDesc('created_at')->get();
|
||||||
|
|
||||||
return FormTemplateResource::collection($templates);
|
return response()->json(array_merge(
|
||||||
|
FormTemplateResource::collection($templates)->toArray($request),
|
||||||
|
$this->getProdTemplates()
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function create(FormTemplateRequest $request)
|
public function create(FormTemplateRequest $request)
|
||||||
|
|
@ -83,8 +110,7 @@ class TemplateController extends Controller
|
||||||
|
|
||||||
public function show(string $slug)
|
public function show(string $slug)
|
||||||
{
|
{
|
||||||
return new FormTemplateResource(
|
$template = Template::whereSlug($slug)->first();
|
||||||
Template::whereSlug($slug)->firstOrFail()
|
return ($template) ? new FormTemplateResource($template) : $this->getProdTemplates($slug);
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -334,6 +334,7 @@ const canEditTemplate = computed(
|
||||||
() =>
|
() =>
|
||||||
authStore.check &&
|
authStore.check &&
|
||||||
template.value &&
|
template.value &&
|
||||||
|
template.value?.from_prod !== true &&
|
||||||
(authStore.user.admin ||
|
(authStore.user.admin ||
|
||||||
authStore.user.template_editor ||
|
authStore.user.template_editor ||
|
||||||
template.value.creator_id === authStore.user.id),
|
template.value.creator_id === authStore.user.id),
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue