mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-06-01 10:44:35 -04:00
Merge pull request #4375 from turbo124/v5-develop
Fixes for preview route.
This commit is contained in:
commit
6ce2c17ebf
@ -1 +1 @@
|
|||||||
5.0.25
|
5.0.26
|
34
app/Http/Controllers/ClientPortal/TempRouteController.php
Normal file
34
app/Http/Controllers/ClientPortal/TempRouteController.php
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Invoice Ninja (https://invoiceninja.com).
|
||||||
|
*
|
||||||
|
* @link https://github.com/invoiceninja/invoiceninja source repository
|
||||||
|
*
|
||||||
|
* @copyright Copyright (c) 2020. Invoice Ninja LLC (https://invoiceninja.com)
|
||||||
|
*
|
||||||
|
* @license https://opensource.org/licenses/AAL
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\ClientPortal;
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
|
use Auth;
|
||||||
|
use Illuminate\Support\Facades\Cache;
|
||||||
|
|
||||||
|
class TempRouteController extends Controller
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Logs a user into the client portal using their contact_key
|
||||||
|
* @param string $contact_key The contact key
|
||||||
|
* @return Auth|Redirect
|
||||||
|
*/
|
||||||
|
public function index(string $hash)
|
||||||
|
{
|
||||||
|
$data = [];
|
||||||
|
$data['html'] = Cache::get($hash);
|
||||||
|
|
||||||
|
return view('pdf.html', $data);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -20,6 +20,7 @@ use App\Models\InvoiceInvitation;
|
|||||||
use App\Services\PdfMaker\Design;
|
use App\Services\PdfMaker\Design;
|
||||||
use App\Services\PdfMaker\PdfMaker;
|
use App\Services\PdfMaker\PdfMaker;
|
||||||
use App\Utils\HtmlEngine;
|
use App\Utils\HtmlEngine;
|
||||||
|
use App\Utils\PhantomJS\Phantom;
|
||||||
use App\Utils\Traits\MakesHash;
|
use App\Utils\Traits\MakesHash;
|
||||||
use App\Utils\Traits\MakesInvoiceHtml;
|
use App\Utils\Traits\MakesInvoiceHtml;
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
@ -121,6 +122,12 @@ class PreviewController extends BaseController
|
|||||||
->design($design)
|
->design($design)
|
||||||
->build();
|
->build();
|
||||||
|
|
||||||
|
//if phantom js...... inject here..
|
||||||
|
if (config('ninja.phantomjs_pdf_generation')) {
|
||||||
|
return (new Phantom)->convertHtmlToPdf($maker->getCompiledHTML(true));
|
||||||
|
}
|
||||||
|
|
||||||
|
//else
|
||||||
$file_path = PreviewPdf::dispatchNow($maker->getCompiledHTML(true), auth()->user()->company());
|
$file_path = PreviewPdf::dispatchNow($maker->getCompiledHTML(true), auth()->user()->company());
|
||||||
|
|
||||||
return response()->download($file_path)->deleteFileAfterSend(true);
|
return response()->download($file_path)->deleteFileAfterSend(true);
|
||||||
@ -192,6 +199,10 @@ class PreviewController extends BaseController
|
|||||||
->design($design)
|
->design($design)
|
||||||
->build();
|
->build();
|
||||||
|
|
||||||
|
if (config('ninja.phantomjs_pdf_generation')) {
|
||||||
|
return (new Phantom)->convertHtmlToPdf($maker->getCompiledHTML(true));
|
||||||
|
}
|
||||||
|
|
||||||
$file_path = PreviewPdf::dispatchNow($maker->getCompiledHTML(true), auth()->user()->company());
|
$file_path = PreviewPdf::dispatchNow($maker->getCompiledHTML(true), auth()->user()->company());
|
||||||
|
|
||||||
DB::rollBack();
|
DB::rollBack();
|
||||||
|
@ -24,6 +24,8 @@ use App\Utils\Traits\MakesHash;
|
|||||||
use Illuminate\Support\Facades\App;
|
use Illuminate\Support\Facades\App;
|
||||||
use Illuminate\Support\Facades\Storage;
|
use Illuminate\Support\Facades\Storage;
|
||||||
use Illuminate\Support\Str;
|
use Illuminate\Support\Str;
|
||||||
|
use Illuminate\Support\Facades\Response;
|
||||||
|
use Illuminate\Support\Facades\Cache;
|
||||||
|
|
||||||
class Phantom
|
class Phantom
|
||||||
{
|
{
|
||||||
@ -75,8 +77,6 @@ class Phantom
|
|||||||
$phantom_url = "https://phantomjscloud.com/api/browser/v2/{$key}/?request=%7Burl:%22{$url}%22,renderType:%22pdf%22%7D";
|
$phantom_url = "https://phantomjscloud.com/api/browser/v2/{$key}/?request=%7Burl:%22{$url}%22,renderType:%22pdf%22%7D";
|
||||||
$pdf = CurlUtils::get($phantom_url);
|
$pdf = CurlUtils::get($phantom_url);
|
||||||
|
|
||||||
//info($pdf);
|
|
||||||
|
|
||||||
Storage::makeDirectory($path, 0775);
|
Storage::makeDirectory($path, 0775);
|
||||||
|
|
||||||
$instance = Storage::disk(config('filesystems.default'))->put($file_path, $pdf);
|
$instance = Storage::disk(config('filesystems.default'))->put($file_path, $pdf);
|
||||||
@ -84,6 +84,23 @@ class Phantom
|
|||||||
return $file_path;
|
return $file_path;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function convertHtmlToPdf($html)
|
||||||
|
{
|
||||||
|
$hash = Str::random(32);
|
||||||
|
Cache::put($hash, $html, 300);
|
||||||
|
|
||||||
|
$url = route('tmp_pdf', ['hash' => $hash]);
|
||||||
|
info($url);
|
||||||
|
$key = config('ninja.phantomjs_key');
|
||||||
|
$phantom_url = "https://phantomjscloud.com/api/browser/v2/{$key}/?request=%7Burl:%22{$url}%22,renderType:%22pdf%22%7D";
|
||||||
|
$pdf = CurlUtils::get($phantom_url);
|
||||||
|
|
||||||
|
$response = Response::make($pdf, 200);
|
||||||
|
$response->header('Content-Type', 'application/pdf');
|
||||||
|
|
||||||
|
return $response;
|
||||||
|
}
|
||||||
|
|
||||||
public function displayInvitation(string $entity, string $invitation_key)
|
public function displayInvitation(string $entity, string $invitation_key)
|
||||||
{
|
{
|
||||||
$key = $entity.'_id';
|
$key = $entity.'_id';
|
||||||
|
@ -12,7 +12,7 @@ return [
|
|||||||
'require_https' => env('REQUIRE_HTTPS', true),
|
'require_https' => env('REQUIRE_HTTPS', true),
|
||||||
'app_url' => rtrim(env('APP_URL', ''), '/').'/',
|
'app_url' => rtrim(env('APP_URL', ''), '/').'/',
|
||||||
'app_domain' => env('APP_DOMAIN', ''),
|
'app_domain' => env('APP_DOMAIN', ''),
|
||||||
'app_version' => '5.0.25',
|
'app_version' => '5.0.26',
|
||||||
'minimum_client_version' => '5.0.16',
|
'minimum_client_version' => '5.0.16',
|
||||||
'terms_version' => '1.0.1',
|
'terms_version' => '1.0.1',
|
||||||
'api_secret' => env('API_SECRET', false),
|
'api_secret' => env('API_SECRET', false),
|
||||||
|
@ -19,6 +19,8 @@ Route::get('view/{entity_type}/{invitation_key}', 'ClientPortal\EntityViewContro
|
|||||||
Route::get('view/{entity_type}/{invitation_key}/password', 'ClientPortal\EntityViewController@password')->name('client.entity_view.password');
|
Route::get('view/{entity_type}/{invitation_key}/password', 'ClientPortal\EntityViewController@password')->name('client.entity_view.password');
|
||||||
Route::post('view/{entity_type}/{invitation_key}/password', 'ClientPortal\EntityViewController@handlePassword');
|
Route::post('view/{entity_type}/{invitation_key}/password', 'ClientPortal\EntityViewController@handlePassword');
|
||||||
|
|
||||||
|
Route::get('tmp_pdf/{hash}', 'ClientPortal\TempRouteController@index')->name('tmp_pdf');
|
||||||
|
|
||||||
Route::get('client/key_login/{contact_key}', 'ClientPortal\ContactHashLoginController@login')->name('client.contact_login')->middleware(['contact_key_login']);
|
Route::get('client/key_login/{contact_key}', 'ClientPortal\ContactHashLoginController@login')->name('client.contact_login')->middleware(['contact_key_login']);
|
||||||
|
|
||||||
//todo implement domain DB
|
//todo implement domain DB
|
||||||
|
Loading…
x
Reference in New Issue
Block a user