diff --git a/app/Http/Controllers/ProposalController.php b/app/Http/Controllers/ProposalController.php index 0dfa74971f..0824cb51c1 100644 --- a/app/Http/Controllers/ProposalController.php +++ b/app/Http/Controllers/ProposalController.php @@ -63,6 +63,7 @@ class ProposalController extends BaseController 'invoices' => Invoice::scope()->with('client.contacts', 'client.country')->unapprovedQuotes()->orderBy('id')->get(), 'templates' => ProposalTemplate::whereAccountId($account->id)->orWhereNull('account_id')->orderBy('name')->get(), 'invoicePublicId' => $request->invoice_id, + 'templatePublicId' => $request->proposal_template_id, ]; return View::make('proposals.edit', $data); diff --git a/app/Ninja/Datatables/ProposalTemplateDatatable.php b/app/Ninja/Datatables/ProposalTemplateDatatable.php index b7564845e8..9b18798bbd 100644 --- a/app/Ninja/Datatables/ProposalTemplateDatatable.php +++ b/app/Ninja/Datatables/ProposalTemplateDatatable.php @@ -62,6 +62,15 @@ class ProposalTemplateDatatable extends EntityDatatable return Auth::user()->can('editByOwner', [ENTITY_PROPOSAL_TEMPLATE, $model->user_id]); }, ], + [ + trans('texts.new_proposal'), + function ($model) { + return URL::to("proposals/create/0/{$model->public_id}"); + }, + function ($model) { + return Auth::user()->can('create', [ENTITY_PROPOSAL, $model->user_id]); + }, + ], ]; } } diff --git a/resources/views/proposals/edit.blade.php b/resources/views/proposals/edit.blade.php index d06c82ef8d..a67630d9bd 100644 --- a/resources/views/proposals/edit.blade.php +++ b/resources/views/proposals/edit.blade.php @@ -174,6 +174,7 @@ @include('partials/entity_combobox', ['entityType' => ENTITY_PROPOSAL_TEMPLATE]) if (templateId) { var template = templateMap[templateId]; + $proposal_templateSelect.val(template.public_id); setComboboxValue($('.template-select'), template.public_id, template.name); } $proposal_templateSelect.change(loadTemplate); @@ -190,6 +191,10 @@ var html = mergeTemplate(grapesjsEditor.getHtml()); grapesjsEditor.setComponents(html); }); + + @if (! $proposal && $templatePublicId) + loadTemplate(); + @endif }); diff --git a/resources/views/proposals/templates/edit.blade.php b/resources/views/proposals/templates/edit.blade.php index 6dc14065df..2202a5cd25 100644 --- a/resources/views/proposals/templates/edit.blade.php +++ b/resources/views/proposals/templates/edit.blade.php @@ -62,6 +62,7 @@ @if ($template) {!! Button::primary(trans('texts.new_proposal')) + ->appendIcon(Icon::create('plus-sign')) ->asLinkTo(url('/proposals/create/0/' . $template->public_id)) !!} @endif diff --git a/routes/web.php b/routes/web.php index 8798fe47db..2416309743 100644 --- a/routes/web.php +++ b/routes/web.php @@ -227,7 +227,7 @@ Route::group(['middleware' => ['lookup:user', 'auth:user']], function () { Route::post('proposals/proposals/bulk', 'ProposalController@bulk'); Route::get('proposals/{proposals}/edit', 'ProposalController@edit'); - Route::get('proposals/create/{invoice_id?}', 'ProposalController@create'); + Route::get('proposals/create/{invoice_id?}/{proposal_template_id?}', 'ProposalController@create'); Route::resource('proposals', 'ProposalController'); Route::get('api/proposals', 'ProposalController@getDatatable');