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\PresentsInvoice;
|
||||||
use App\Models\Traits\SendsEmails;
|
use App\Models\Traits\SendsEmails;
|
||||||
use App\Models\Traits\HasLogo;
|
use App\Models\Traits\HasLogo;
|
||||||
|
use App\Models\Traits\HasCustomMessages;
|
||||||
use Cache;
|
use Cache;
|
||||||
use Carbon;
|
use Carbon;
|
||||||
use DateTime;
|
use DateTime;
|
||||||
@ -30,6 +31,7 @@ class Account extends Eloquent
|
|||||||
use GeneratesNumbers;
|
use GeneratesNumbers;
|
||||||
use SendsEmails;
|
use SendsEmails;
|
||||||
use HasLogo;
|
use HasLogo;
|
||||||
|
use HasCustomMessages;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string
|
* @var string
|
||||||
@ -280,7 +282,7 @@ class Account extends Eloquent
|
|||||||
CUSTOM_MESSAGE_PAID_INVOICE,
|
CUSTOM_MESSAGE_PAID_INVOICE,
|
||||||
CUSTOM_MESSAGE_UNAPPROVED_QUOTE,
|
CUSTOM_MESSAGE_UNAPPROVED_QUOTE,
|
||||||
//CUSTOM_MESSAGE_APPROVED_QUOTE,
|
//CUSTOM_MESSAGE_APPROVED_QUOTE,
|
||||||
CUSTOM_MESSAGE_UNAPPROVED_PROPOSAL,
|
//CUSTOM_MESSAGE_UNAPPROVED_PROPOSAL,
|
||||||
//CUSTOM_MESSAGE_APPROVED_PROPOSAL,
|
//CUSTOM_MESSAGE_APPROVED_PROPOSAL,
|
||||||
];
|
];
|
||||||
|
|
||||||
@ -548,38 +550,6 @@ class Account extends Eloquent
|
|||||||
return ! empty($labels->$field) ? $labels->$field : '';
|
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
|
* @param int $gatewayId
|
||||||
*
|
*
|
||||||
|
@ -6,6 +6,7 @@ use Carbon;
|
|||||||
use DB;
|
use DB;
|
||||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||||
use Laracasts\Presenter\PresentableTrait;
|
use Laracasts\Presenter\PresentableTrait;
|
||||||
|
use App\Models\Traits\HasCustomMessages;
|
||||||
use Utils;
|
use Utils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -15,6 +16,7 @@ class Client extends EntityModel
|
|||||||
{
|
{
|
||||||
use PresentableTrait;
|
use PresentableTrait;
|
||||||
use SoftDeletes;
|
use SoftDeletes;
|
||||||
|
use HasCustomMessages;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string
|
* @var string
|
||||||
@ -61,6 +63,7 @@ class Client extends EntityModel
|
|||||||
'shipping_country_id',
|
'shipping_country_id',
|
||||||
'show_tasks_in_portal',
|
'show_tasks_in_portal',
|
||||||
'send_reminders',
|
'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,
|
'show_tasks_in_portal' => (bool) $client->show_tasks_in_portal,
|
||||||
'send_reminders' => (bool) $client->send_reminders,
|
'send_reminders' => (bool) $client->send_reminders,
|
||||||
'credit_number_counter' => (int) $client->credit_number_counter,
|
'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();
|
$table->mediumText('custom_messages')->nullable();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Schema::table('clients', function ($table) {
|
||||||
|
$table->mediumText('custom_messages')->nullable();
|
||||||
|
});
|
||||||
|
|
||||||
Schema::table('tasks', function ($table) {
|
Schema::table('tasks', function ($table) {
|
||||||
$table->text('custom_value1')->nullable();
|
$table->text('custom_value1')->nullable();
|
||||||
$table->text('custom_value2')->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>
|
<a href="#navigation" aria-controls="navigation" role="tab" data-toggle="tab">{{ trans('texts.navigation') }}</a>
|
||||||
</li>
|
</li>
|
||||||
<li role="presentation">
|
<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>
|
||||||
<li role="presentation">
|
<li role="presentation">
|
||||||
<a href="#custom_css" aria-controls="custom_css" role="tab" data-toggle="tab">{{ trans('texts.custom_css') }}</a>
|
<a href="#custom_css" aria-controls="custom_css" role="tab" data-toggle="tab">{{ trans('texts.custom_css') }}</a>
|
||||||
|
@ -196,6 +196,9 @@
|
|||||||
<a href="#notes" aria-controls="notes" role="tab" data-toggle="tab">{{ trans('texts.notes') }}</a>
|
<a href="#notes" aria-controls="notes" role="tab" data-toggle="tab">{{ trans('texts.notes') }}</a>
|
||||||
</li>
|
</li>
|
||||||
<li role="presentation">
|
<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>
|
<a href="#classify" aria-controls="classify" role="tab" data-toggle="tab">{{ trans('texts.classify') }}</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
@ -232,6 +235,12 @@
|
|||||||
{!! Former::textarea('public_notes')->rows(6) !!}
|
{!! Former::textarea('public_notes')->rows(6) !!}
|
||||||
{!! Former::textarea('private_notes')->rows(6) !!}
|
{!! Former::textarea('private_notes')->rows(6) !!}
|
||||||
</div>
|
</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">
|
<div role="tabpanel" class="tab-pane" id="classify">
|
||||||
{!! Former::select('size_id')->addOption('','')
|
{!! Former::select('size_id')->addOption('','')
|
||||||
->fromQuery($sizes, 'name', 'id') !!}
|
->fromQuery($sizes, 'name', 'id') !!}
|
||||||
|
@ -276,7 +276,7 @@
|
|||||||
|
|
||||||
<div class="container main-container">
|
<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>
|
<div class="alert alert-warning custom-message">{!! Utils::isNinja() ? HTMLUtils::sanitizeHTML($message) : $message !!}</div>
|
||||||
@endif
|
@endif
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="container" style="padding: 20px;">
|
<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>
|
<div class="alert alert-warning custom-message">{!! Utils::isNinja() ? HTMLUtils::sanitizeHTML($message) : $message !!}</div>
|
||||||
@endif
|
@endif
|
||||||
|
|
||||||
|
@ -152,7 +152,7 @@
|
|||||||
|
|
||||||
<div class="container">
|
<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>
|
<div class="alert alert-warning custom-message">{!! Utils::isNinja() ? HTMLUtils::sanitizeHTML($message) : $message !!}</div>
|
||||||
@endif
|
@endif
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user