mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-07-09 03:14:30 -04:00
Custom portal messages
This commit is contained in:
parent
b7f2e9b1ab
commit
c31221149b
@ -9,6 +9,7 @@ use App\Models\Traits\GeneratesNumbers;
|
||||
use App\Models\Traits\PresentsInvoice;
|
||||
use App\Models\Traits\SendsEmails;
|
||||
use App\Models\Traits\HasLogo;
|
||||
use App\Models\Traits\HasCustomMessages;
|
||||
use Cache;
|
||||
use Carbon;
|
||||
use DateTime;
|
||||
@ -30,6 +31,7 @@ class Account extends Eloquent
|
||||
use GeneratesNumbers;
|
||||
use SendsEmails;
|
||||
use HasLogo;
|
||||
use HasCustomMessages;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
@ -280,7 +282,7 @@ class Account extends Eloquent
|
||||
CUSTOM_MESSAGE_PAID_INVOICE,
|
||||
CUSTOM_MESSAGE_UNAPPROVED_QUOTE,
|
||||
//CUSTOM_MESSAGE_APPROVED_QUOTE,
|
||||
CUSTOM_MESSAGE_UNAPPROVED_PROPOSAL,
|
||||
//CUSTOM_MESSAGE_UNAPPROVED_PROPOSAL,
|
||||
//CUSTOM_MESSAGE_APPROVED_PROPOSAL,
|
||||
];
|
||||
|
||||
@ -548,38 +550,6 @@ class Account extends Eloquent
|
||||
return ! empty($labels->$field) ? $labels->$field : '';
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $value
|
||||
*/
|
||||
public function setCustomMessagesAttribute($data)
|
||||
{
|
||||
$fields = [];
|
||||
|
||||
if (! is_array($data)) {
|
||||
$data = json_decode($data);
|
||||
}
|
||||
|
||||
foreach ($data as $key => $value) {
|
||||
if ($value) {
|
||||
$fields[$key] = $value;
|
||||
}
|
||||
}
|
||||
|
||||
$this->attributes['custom_messages'] = count($fields) ? json_encode($fields) : null;
|
||||
}
|
||||
|
||||
public function getCustomMessagesAttribute($value)
|
||||
{
|
||||
return json_decode($value ?: '{}');
|
||||
}
|
||||
|
||||
public function customMessage($type)
|
||||
{
|
||||
$messages = $this->custom_messages;
|
||||
|
||||
return ! empty($messages->$type) ? $messages->$type : '';
|
||||
}
|
||||
|
||||
/**
|
||||
* @param int $gatewayId
|
||||
*
|
||||
|
@ -6,6 +6,7 @@ use Carbon;
|
||||
use DB;
|
||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
use Laracasts\Presenter\PresentableTrait;
|
||||
use App\Models\Traits\HasCustomMessages;
|
||||
use Utils;
|
||||
|
||||
/**
|
||||
@ -15,6 +16,7 @@ class Client extends EntityModel
|
||||
{
|
||||
use PresentableTrait;
|
||||
use SoftDeletes;
|
||||
use HasCustomMessages;
|
||||
|
||||
/**
|
||||
* @var string
|
||||
@ -61,6 +63,7 @@ class Client extends EntityModel
|
||||
'shipping_country_id',
|
||||
'show_tasks_in_portal',
|
||||
'send_reminders',
|
||||
'custom_messages',
|
||||
];
|
||||
|
||||
/**
|
||||
|
49
app/Models/Traits/HasCustomMessages.php
Normal file
49
app/Models/Traits/HasCustomMessages.php
Normal file
@ -0,0 +1,49 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models\Traits;
|
||||
|
||||
/**
|
||||
* Class HasCustomMessages.
|
||||
*/
|
||||
trait HasCustomMessages
|
||||
{
|
||||
/**
|
||||
* @param $value
|
||||
*/
|
||||
public function setCustomMessagesAttribute($data)
|
||||
{
|
||||
$fields = [];
|
||||
|
||||
if (! is_array($data)) {
|
||||
$data = json_decode($data);
|
||||
}
|
||||
|
||||
foreach ($data as $key => $value) {
|
||||
if ($value) {
|
||||
$fields[$key] = $value;
|
||||
}
|
||||
}
|
||||
|
||||
$this->attributes['custom_messages'] = count($fields) ? json_encode($fields) : null;
|
||||
}
|
||||
|
||||
public function getCustomMessagesAttribute($value)
|
||||
{
|
||||
return json_decode($value ?: '{}');
|
||||
}
|
||||
|
||||
public function customMessage($type)
|
||||
{
|
||||
$messages = $this->custom_messages;
|
||||
|
||||
if (! empty($messages->$type)) {
|
||||
return $messages->$type;
|
||||
}
|
||||
|
||||
if ($this->account) {
|
||||
return $this->account->customMessage($type);
|
||||
} else {
|
||||
return '';
|
||||
}
|
||||
}
|
||||
}
|
@ -155,6 +155,7 @@ class ClientTransformer extends EntityTransformer
|
||||
'show_tasks_in_portal' => (bool) $client->show_tasks_in_portal,
|
||||
'send_reminders' => (bool) $client->send_reminders,
|
||||
'credit_number_counter' => (int) $client->credit_number_counter,
|
||||
'custom_messages' => json_encode($client->custom_messages),
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
@ -82,6 +82,10 @@ class AddMoreCustomFields extends Migration
|
||||
$table->mediumText('custom_messages')->nullable();
|
||||
});
|
||||
|
||||
Schema::table('clients', function ($table) {
|
||||
$table->mediumText('custom_messages')->nullable();
|
||||
});
|
||||
|
||||
Schema::table('tasks', function ($table) {
|
||||
$table->text('custom_value1')->nullable();
|
||||
$table->text('custom_value2')->nullable();
|
||||
|
@ -59,7 +59,7 @@
|
||||
<a href="#navigation" aria-controls="navigation" role="tab" data-toggle="tab">{{ trans('texts.navigation') }}</a>
|
||||
</li>
|
||||
<li role="presentation">
|
||||
<a href="#messages" aria-controls="navigation" role="tab" data-toggle="tab">{{ trans('texts.messages') }}</a>
|
||||
<a href="#messages" aria-controls="messages" role="tab" data-toggle="tab">{{ trans('texts.messages') }}</a>
|
||||
</li>
|
||||
<li role="presentation">
|
||||
<a href="#custom_css" aria-controls="custom_css" role="tab" data-toggle="tab">{{ trans('texts.custom_css') }}</a>
|
||||
|
@ -194,6 +194,9 @@
|
||||
</li>
|
||||
<li role="presentation">
|
||||
<a href="#notes" aria-controls="notes" role="tab" data-toggle="tab">{{ trans('texts.notes') }}</a>
|
||||
</li>
|
||||
<li role="presentation">
|
||||
<a href="#messages" aria-controls="messages" role="tab" data-toggle="tab">{{ trans('texts.messages') }}</a>
|
||||
</li>
|
||||
<li role="presentation">
|
||||
<a href="#classify" aria-controls="classify" role="tab" data-toggle="tab">{{ trans('texts.classify') }}</a>
|
||||
@ -232,6 +235,12 @@
|
||||
{!! Former::textarea('public_notes')->rows(6) !!}
|
||||
{!! Former::textarea('private_notes')->rows(6) !!}
|
||||
</div>
|
||||
<div role="tabpanel" class="tab-pane" id="messages">
|
||||
@foreach (App\Models\Account::$customMessageTypes as $type)
|
||||
{!! Former::textarea('custom_messages[' . $type . ']')
|
||||
->label($type) !!}
|
||||
@endforeach
|
||||
</div>
|
||||
<div role="tabpanel" class="tab-pane" id="classify">
|
||||
{!! Former::select('size_id')->addOption('','')
|
||||
->fromQuery($sizes, 'name', 'id') !!}
|
||||
|
@ -276,7 +276,7 @@
|
||||
|
||||
<div class="container main-container">
|
||||
|
||||
@if ($message = $account->customMessage(CUSTOM_MESSAGE_DASHBOARD))
|
||||
@if ($message = $client->customMessage(CUSTOM_MESSAGE_DASHBOARD))
|
||||
<div class="alert alert-warning custom-message">{!! Utils::isNinja() ? HTMLUtils::sanitizeHTML($message) : $message !!}</div>
|
||||
@endif
|
||||
|
||||
|
@ -24,7 +24,7 @@
|
||||
</script>
|
||||
|
||||
<div class="container" style="padding: 20px;">
|
||||
@if ($message = $account->customMessage($proposal->getCustomMessageType()))
|
||||
@if ($message = $proposal->invoice->client->customMessage($proposal->getCustomMessageType()))
|
||||
<div class="alert alert-warning custom-message">{!! Utils::isNinja() ? HTMLUtils::sanitizeHTML($message) : $message !!}</div>
|
||||
@endif
|
||||
|
||||
|
@ -152,7 +152,7 @@
|
||||
|
||||
<div class="container">
|
||||
|
||||
@if ($message = $account->customMessage($invoice->getCustomMessageType()))
|
||||
@if ($message = $invoice->client->customMessage($invoice->getCustomMessageType()))
|
||||
<div class="alert alert-warning custom-message">{!! Utils::isNinja() ? HTMLUtils::sanitizeHTML($message) : $message !!}</div>
|
||||
@endif
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user