Improve Templates (#183)
* Improve Templates * Fix test case * Update AI GenerateTemplate * update openai client and GPT completer * composer.lock * Update types and list json with script * Template changes * fix on draft template * Finish opnform templates --------- Co-authored-by: Forms Dev <chirag+new@notionforms.io> Co-authored-by: Julien Nahum <julien@nahum.net>
This commit is contained in:
@@ -2,7 +2,6 @@
|
||||
|
||||
namespace App\Http\Controllers\Forms;
|
||||
|
||||
use App\Console\Commands\GenerateTemplate;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\AiGenerateFormRequest;
|
||||
use App\Models\Forms\AI\AiFormCompletion;
|
||||
|
||||
@@ -42,9 +42,9 @@ class SitemapController extends Controller
|
||||
|
||||
private function addTemplatesUrls(Sitemap $sitemap)
|
||||
{
|
||||
Template::chunk(100, function ($templates) use ($sitemap) {
|
||||
Template::where('publicly_listed', true)->chunk(100, function ($templates) use ($sitemap) {
|
||||
foreach ($templates as $template) {
|
||||
$sitemap->add($this->createUrl('/templates/' . $template->slug, 0.7));
|
||||
$sitemap->add($this->createUrl('/form-templates/' . $template->slug, 0.8));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -3,19 +3,28 @@
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\Templates\CreateTemplateRequest;
|
||||
use App\Http\Resources\TemplateResource;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Requests\Templates\FormTemplateRequest;
|
||||
use App\Http\Resources\FormTemplateResource;
|
||||
use App\Models\Template;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class TemplateController extends Controller
|
||||
{
|
||||
public function index()
|
||||
public function index(Request $request)
|
||||
{
|
||||
return TemplateResource::collection(Template::all());
|
||||
$limit = null;
|
||||
if ($request->offsetExists('limit') && $request->get('limit') > 0) {
|
||||
$limit = (int) $request->get('limit');
|
||||
}
|
||||
return FormTemplateResource::collection(
|
||||
Template::where('publicly_listed', true)
|
||||
->orderByDesc('created_at')
|
||||
->limit($limit)
|
||||
->get()
|
||||
);
|
||||
}
|
||||
|
||||
public function create(CreateTemplateRequest $request)
|
||||
public function create(FormTemplateRequest $request)
|
||||
{
|
||||
$this->authorize('create', Template::class);
|
||||
|
||||
@@ -24,8 +33,41 @@ class TemplateController extends Controller
|
||||
$template->save();
|
||||
|
||||
return $this->success([
|
||||
'message' => 'Template created.',
|
||||
'message' => 'Template was created.',
|
||||
'template_id' => $template->id
|
||||
]);
|
||||
}
|
||||
|
||||
public function update(FormTemplateRequest $request, string $id)
|
||||
{
|
||||
$template = Template::findOrFail($id);
|
||||
$this->authorize('update', $template);
|
||||
|
||||
$template->update($request->all());
|
||||
|
||||
return $this->success([
|
||||
'message' => 'Template was updated.',
|
||||
'template_id' => $template->id,
|
||||
'data' => new FormTemplateResource($template)
|
||||
]);
|
||||
}
|
||||
|
||||
public function destroy($id)
|
||||
{
|
||||
$template = Template::findOrFail($id);
|
||||
$this->authorize('delete', $template);
|
||||
|
||||
$template->delete();
|
||||
|
||||
return $this->success([
|
||||
'message' => 'Template was deleted.',
|
||||
]);
|
||||
}
|
||||
|
||||
public function show(string $slug)
|
||||
{
|
||||
return new FormTemplateResource(
|
||||
Template::whereSlug($slug)->firstOrFail()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ namespace App\Http\Requests\Templates;
|
||||
use App\Models\Template;
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
|
||||
class CreateTemplateRequest extends FormRequest
|
||||
class FormTemplateRequest extends FormRequest
|
||||
{
|
||||
const IGNORED_KEYS = [
|
||||
'id',
|
||||
@@ -48,12 +48,21 @@ class CreateTemplateRequest extends FormRequest
|
||||
*/
|
||||
public function rules()
|
||||
{
|
||||
$slugRule = '';
|
||||
if($this->id){
|
||||
$slugRule = ','.$this->id;
|
||||
}
|
||||
return [
|
||||
'form' => 'required|array',
|
||||
'publicly_listed' => 'boolean',
|
||||
'name' => 'required|string|max:60',
|
||||
'slug' => 'required|string|unique:templates',
|
||||
'slug' => 'required|string|alpha_dash|unique:templates,slug'.$slugRule,
|
||||
'short_description' => 'required|string|max:1000',
|
||||
'description' => 'required|string|max:2000',
|
||||
'image_url' => 'required|string',
|
||||
'types' => 'nullable|array',
|
||||
'industries' => 'nullable|array',
|
||||
'related_templates' => 'nullable|array',
|
||||
'questions' => 'array',
|
||||
];
|
||||
}
|
||||
@@ -66,12 +75,18 @@ class CreateTemplateRequest extends FormRequest
|
||||
unset($structure[$key]);
|
||||
}
|
||||
}
|
||||
|
||||
return new Template([
|
||||
'publicly_listed' => $this->publicly_listed,
|
||||
'name' => $this->name,
|
||||
'slug' => $this->slug,
|
||||
'short_description' => $this->short_description,
|
||||
'description' => $this->description,
|
||||
'image_url' => $this->image_url,
|
||||
'structure' => $structure,
|
||||
'types' => $this->types ?? [],
|
||||
'industries' => $this->industries ?? [],
|
||||
'related_templates' => $this->related_templates ?? [],
|
||||
'questions' => $this->questions ?? []
|
||||
]);
|
||||
}
|
||||
@@ -2,10 +2,9 @@
|
||||
|
||||
namespace App\Http\Resources;
|
||||
|
||||
use App\Http\Requests\Templates\CreateTemplateRequest;
|
||||
use Illuminate\Http\Resources\Json\JsonResource;
|
||||
|
||||
class TemplateResource extends JsonResource
|
||||
class FormTemplateResource extends JsonResource
|
||||
{
|
||||
/**
|
||||
* Transform the resource into an array.
|
||||
@@ -15,10 +14,8 @@ class TemplateResource extends JsonResource
|
||||
*/
|
||||
public function toArray($request)
|
||||
{
|
||||
$data = parent::toArray($request);
|
||||
foreach (CreateTemplateRequest::IGNORED_KEYS as $key) {
|
||||
unset($data[$key]);
|
||||
}
|
||||
return $data;
|
||||
return array_merge(parent::toArray($request), [
|
||||
'is_new' => $this->created_at->isAfter(now()->subDays(7))
|
||||
]);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user