Add documents placeholder for emails

This commit is contained in:
Joshua Dwire 2016-03-23 21:25:33 -04:00
parent 10fa256809
commit 2a7e8cb4b7
8 changed files with 58 additions and 1 deletions

View File

@ -33,6 +33,10 @@ class DocumentController extends BaseController
return $response;
}
return static::getDownloadResponse($document);
}
public static function getDownloadResponse($document){
$direct_url = $document->getDirectUrl();
if($direct_url){
return redirect($direct_url);

View File

@ -415,4 +415,29 @@ class PublicClientController extends BaseController
return $response;
}
public function getDocument($invitationKey, $publicId){
if (!$invitation = $this->invoiceRepo->findInvoiceByInvitation($invitationKey)) {
return $this->returnError();
}
Session::put('invitation_key', $invitationKey); // track current invitation
$clientId = $invitation->invoice->client_id;
$document = Document::scope($publicId, $invitation->account_id)->firstOrFail();
$authorized = false;
if($document->expense && $document->expense->client_id == $invitation->invoice->client_id){
$authorized = true;
} else if($document->invoice && $document->invoice->client_id == $invitation->invoice->client_id){
$authorized = true;
}
if(!$authorized){
return Response::view('error', array('error'=>'Not authorized'), 403);
}
return DocumentController::getDownloadResponse($document);
}
}

View File

@ -42,7 +42,7 @@ class Authenticate {
// Does this account require portal passwords?
$account = Account::whereId($account_id)->first();
if(!$account->enable_portal_password || !$account->isPro()){
if($account && (!$account->enable_portal_password || !$account->isPro())){
$authenticated = true;
}

View File

@ -48,6 +48,7 @@ Route::group(['middleware' => 'auth:client'], function() {
Route::get('client/payments', 'PublicClientController@paymentIndex');
Route::get('client/dashboard', 'PublicClientController@dashboard');
Route::get('client/document/js/{public_id}/{filename}', 'PublicClientController@getDocumentVFSJS');
Route::get('client/document/{invitation_key}/{public_id}/{filename?}', 'PublicClientController@getDocument');
});
Route::get('api/client.quotes', array('as'=>'api.client.quotes', 'uses'=>'PublicClientController@quoteDatatable'));

View File

@ -138,6 +138,10 @@ class Document extends EntityModel
return url('document/'.$this->public_id.'/'.$this->name);
}
public function getClientUrl($invitation){
return url('client/document/'.$invitation->invitation_key.'/'.$this->public_id.'/'.$this->name);
}
public function getVFSJSUrl(){
return url('document/js/'.$this->public_id.'/'.$this->name.'.js');
}

View File

@ -1,6 +1,7 @@
<?php namespace App\Ninja\Mailers;
use Form;
use HTML;
use Utils;
use Event;
use URL;
@ -28,6 +29,7 @@ class ContactMailer extends Mailer
'invoice',
'quote',
'password',
'documents',
'viewLink',
'viewButton',
'paymentLink',
@ -281,6 +283,15 @@ class ContactMailer extends Mailer
$invitation = $data['invitation'];
$invoice = $invitation->invoice;
$passwordHTML = isset($data['password'])?'<p>'.trans('texts.password').': '.$data['password'].'<p>':false;
$documentsHTML = '';
if($account->isPro() && count($invoice->documents)){
$documentsHTML .= trans('texts.email_documents_header').'<ul>';
foreach($invoice->documents as $document){
$documentsHTML .= '<li><a href="'.HTML::entities($document->getClientUrl($invitation)).'">'.HTML::entities($document->name).'</a></li>';
}
$documentsHTML .= '</ul>';
}
$variables = [
'$footer' => $account->getEmailFooter(),
@ -303,6 +314,7 @@ class ContactMailer extends Mailer
'$customClient2' => $account->custom_client_label2,
'$customInvoice1' => $account->custom_invoice_text_label1,
'$customInvoice2' => $account->custom_invoice_text_label2,
'$documents' => $documentsHTML,
];
// Add variables for available payment types

View File

@ -1098,6 +1098,9 @@ $LANG = array(
'december' => 'December',
// Documents
'email_documents_header' => 'Documents:',
'email_documents_example_1' => 'Widgets Receipt.pdf',
'email_documents_example_2' => 'Final Deliverable.zip',
'invoice_documents' => 'Attached Documents',
'document_upload_message' => 'Drop files here or click to upload.',
'invoice_embed_documents' => 'Embed Documents',

View File

@ -201,6 +201,13 @@
var keys = {!! json_encode(\App\Ninja\Mailers\ContactMailer::$variableFields) !!};
var passwordHtml = "{!! $account->isPro() && $account->enable_portal_password && $account->send_portal_password?'<p>'.trans('texts.password').': 6h2NWNdw6<p>':'' !!}";
@if ($account->isPro())
var documentsHtml = "{!! trans('texts.email_documents_header').'<ul><li><a>'.trans('texts.email_documents_example_1').'</a></li><li><a>'.trans('texts.email_documents_example_2').'</a></li></ul>' !!}";
@else
var documentsHtml = "";
@endif
var vals = [
{!! json_encode($emailFooter) !!},
"{{ $account->getDisplayName() }}",
@ -213,6 +220,7 @@
"0001",
"0001",
passwordHtml,
documentsHtml,
"{{ URL::to('/view/...') }}$password",
'{!! Form::flatButton('view_invoice', '#0b4d78') !!}$password',
"{{ URL::to('/payment/...') }}$password",