mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-07-08 17:14:31 -04:00
Renamed client view to client portal
This commit is contained in:
parent
56330c1281
commit
0140da0ae2
@ -1,7 +1,6 @@
|
||||
<?php namespace App\Http\Controllers;
|
||||
<?php namespace app\Http\Controllers;
|
||||
|
||||
use Auth;
|
||||
use Exception;
|
||||
use File;
|
||||
use Image;
|
||||
use Input;
|
||||
@ -25,13 +24,10 @@ use App\Ninja\Repositories\AccountRepository;
|
||||
use App\Ninja\Repositories\ReferralRepository;
|
||||
use App\Ninja\Mailers\UserMailer;
|
||||
use App\Ninja\Mailers\ContactMailer;
|
||||
use App\Events\UserSignedUp;
|
||||
use App\Events\UserLoggedIn;
|
||||
use App\Events\UserSettingsChanged;
|
||||
use App\Services\AuthService;
|
||||
|
||||
use App\Commands\CreateClient;
|
||||
|
||||
class AccountController extends BaseController
|
||||
{
|
||||
protected $accountRepo;
|
||||
@ -103,6 +99,7 @@ class AccountController extends BaseController
|
||||
event(new UserLoggedIn());
|
||||
|
||||
$redirectTo = Input::get('redirect_to') ?: 'invoices/create';
|
||||
|
||||
return Redirect::to($redirectTo)->with('sign_up', Input::get('sign_up'));
|
||||
}
|
||||
|
||||
@ -129,13 +126,14 @@ class AccountController extends BaseController
|
||||
public function getSearchData()
|
||||
{
|
||||
$data = $this->accountRepo->getSearchData();
|
||||
|
||||
return Response::json($data);
|
||||
}
|
||||
|
||||
public function showSection($section = false)
|
||||
{
|
||||
if (!$section) {
|
||||
return Redirect::to('/settings/' . ACCOUNT_COMPANY_DETAILS, 301);
|
||||
return Redirect::to('/settings/'.ACCOUNT_COMPANY_DETAILS, 301);
|
||||
}
|
||||
|
||||
if ($section == ACCOUNT_COMPANY_DETAILS) {
|
||||
@ -152,7 +150,7 @@ class AccountController extends BaseController
|
||||
return View::make('accounts.import_export', ['title' => trans('texts.import_export')]);
|
||||
} elseif ($section == ACCOUNT_INVOICE_DESIGN || $section == ACCOUNT_CUSTOMIZE_DESIGN) {
|
||||
return self::showInvoiceDesign($section);
|
||||
} elseif ($section == ACCOUNT_CLIENT_VIEW_STYLING) {
|
||||
} elseif ($section == ACCOUNT_CLIENT_PORTAL) {
|
||||
return self::showClientViewStyling();
|
||||
} elseif ($section === ACCOUNT_TEMPLATES_AND_REMINDERS) {
|
||||
return self::showTemplates();
|
||||
@ -166,8 +164,9 @@ class AccountController extends BaseController
|
||||
$data = [
|
||||
'account' => Account::with('users')->findOrFail(Auth::user()->account_id),
|
||||
'title' => trans("texts.{$section}"),
|
||||
'section' => $section
|
||||
'section' => $section,
|
||||
];
|
||||
|
||||
return View::make("accounts.{$section}", $data);
|
||||
}
|
||||
}
|
||||
@ -192,7 +191,7 @@ class AccountController extends BaseController
|
||||
$account = Auth::user()->account;
|
||||
$recurringHours = [];
|
||||
|
||||
for ($i=0; $i<24; $i++) {
|
||||
for ($i = 0; $i<24; $i++) {
|
||||
if ($account->military_time) {
|
||||
$format = 'H:i';
|
||||
} else {
|
||||
@ -205,8 +204,9 @@ class AccountController extends BaseController
|
||||
'account' => Account::with('users')->findOrFail(Auth::user()->account_id),
|
||||
'title' => trans("texts.invoice_settings"),
|
||||
'section' => ACCOUNT_INVOICE_SETTINGS,
|
||||
'recurringHours' => $recurringHours
|
||||
'recurringHours' => $recurringHours,
|
||||
];
|
||||
|
||||
return View::make("accounts.invoice_settings", $data);
|
||||
}
|
||||
|
||||
@ -215,7 +215,7 @@ class AccountController extends BaseController
|
||||
// check that logo is less than the max file size
|
||||
$account = Auth::user()->account;
|
||||
if ($account->isLogoTooLarge()) {
|
||||
Session::flash('warning', trans('texts.logo_too_large', ['size' => $account->getLogoSize() . 'KB']));
|
||||
Session::flash('warning', trans('texts.logo_too_large', ['size' => $account->getLogoSize().'KB']));
|
||||
}
|
||||
|
||||
$data = [
|
||||
@ -233,7 +233,7 @@ class AccountController extends BaseController
|
||||
{
|
||||
$oauthLoginUrls = [];
|
||||
foreach (AuthService::$providers as $provider) {
|
||||
$oauthLoginUrls[] = ['label' => $provider, 'url' => '/auth/' . strtolower($provider)];
|
||||
$oauthLoginUrls[] = ['label' => $provider, 'url' => '/auth/'.strtolower($provider)];
|
||||
}
|
||||
|
||||
$data = [
|
||||
@ -270,7 +270,7 @@ class AccountController extends BaseController
|
||||
$count = count($account->account_gateways);
|
||||
|
||||
if ($accountGateway = $account->getGatewayConfig(GATEWAY_STRIPE)) {
|
||||
if ( ! $accountGateway->getPublishableStripeKey()) {
|
||||
if (! $accountGateway->getPublishableStripeKey()) {
|
||||
Session::flash('warning', trans('texts.missing_publishable_key'));
|
||||
}
|
||||
}
|
||||
@ -366,6 +366,7 @@ class AccountController extends BaseController
|
||||
if ($section == ACCOUNT_CUSTOMIZE_DESIGN) {
|
||||
$data['customDesign'] = ($account->custom_design && !$design) ? $account->custom_design : $design;
|
||||
}
|
||||
|
||||
return View::make("accounts.{$section}", $data);
|
||||
}
|
||||
|
||||
@ -374,7 +375,7 @@ class AccountController extends BaseController
|
||||
$account = Auth::user()->account->load('country');
|
||||
$css = $account->client_view_css ? $account->client_view_css : '';
|
||||
|
||||
if(Utils::isNinja() && $css){
|
||||
if (Utils::isNinja() && $css) {
|
||||
// Unescape the CSS for display purposes
|
||||
$css = str_replace(
|
||||
array('\3C ', '\3E ', '\26 '),
|
||||
@ -385,11 +386,11 @@ class AccountController extends BaseController
|
||||
|
||||
$data = [
|
||||
'client_view_css' => $css,
|
||||
'title' => trans("texts.client_view_styling"),
|
||||
'section' => ACCOUNT_CLIENT_VIEW_STYLING
|
||||
'title' => trans("texts.client_portal"),
|
||||
'section' => ACCOUNT_CLIENT_PORTAL,
|
||||
];
|
||||
|
||||
return View::make("accounts.client_view_styling", $data);
|
||||
return View::make("accounts.client_portal", $data);
|
||||
}
|
||||
|
||||
private function showTemplates()
|
||||
@ -410,6 +411,7 @@ class AccountController extends BaseController
|
||||
}
|
||||
$data['emailFooter'] = $account->getEmailFooter();
|
||||
$data['title'] = trans('texts.email_templates');
|
||||
|
||||
return View::make('accounts.templates_and_reminders', $data);
|
||||
}
|
||||
|
||||
@ -433,8 +435,8 @@ class AccountController extends BaseController
|
||||
return AccountController::saveInvoiceDesign();
|
||||
} elseif ($section === ACCOUNT_CUSTOMIZE_DESIGN) {
|
||||
return AccountController::saveCustomizeDesign();
|
||||
} elseif ($section === ACCOUNT_CLIENT_VIEW_STYLING) {
|
||||
return AccountController::saveClientViewStyling();
|
||||
} elseif ($section === ACCOUNT_CLIENT_PORTAL) {
|
||||
return AccountController::saveClientPortal();
|
||||
} elseif ($section === ACCOUNT_TEMPLATES_AND_REMINDERS) {
|
||||
return AccountController::saveEmailTemplates();
|
||||
} elseif ($section === ACCOUNT_PRODUCTS) {
|
||||
@ -444,7 +446,8 @@ class AccountController extends BaseController
|
||||
}
|
||||
}
|
||||
|
||||
private function saveCustomizeDesign() {
|
||||
private function saveCustomizeDesign()
|
||||
{
|
||||
if (Auth::user()->account->isPro()) {
|
||||
$account = Auth::user()->account;
|
||||
$account->custom_design = Input::get('custom_design');
|
||||
@ -454,15 +457,15 @@ class AccountController extends BaseController
|
||||
Session::flash('message', trans('texts.updated_settings'));
|
||||
}
|
||||
|
||||
return Redirect::to('settings/' . ACCOUNT_CUSTOMIZE_DESIGN);
|
||||
return Redirect::to('settings/'.ACCOUNT_CUSTOMIZE_DESIGN);
|
||||
}
|
||||
|
||||
private function saveClientViewStyling() {
|
||||
private function saveClientPortal()
|
||||
{
|
||||
// Only allowed for pro Invoice Ninja users or white labeled self-hosted users
|
||||
if ((Utils::isNinja() && Auth::user()->account->isPro()) || Auth::user()->account->isWhiteLabel()) {
|
||||
|
||||
$input_css = Input::get('client_view_css');
|
||||
if(Utils::isNinja()){
|
||||
if (Utils::isNinja()) {
|
||||
// Allow referencing the body element
|
||||
$input_css = preg_replace('/(?<![a-z0-9\-\_\#\.])body(?![a-z0-9\-\_])/i', '.body', $input_css);
|
||||
|
||||
@ -488,9 +491,8 @@ class AccountController extends BaseController
|
||||
$output_css = $purifier->context->get('StyleBlocks');
|
||||
|
||||
// Get the first style block
|
||||
$sanitized_css = $output_css[0];
|
||||
}
|
||||
else{
|
||||
$sanitized_css = count($output_css) ? $output_css[0] : '';
|
||||
} else {
|
||||
$sanitized_css = $input_css;
|
||||
}
|
||||
|
||||
@ -501,7 +503,7 @@ class AccountController extends BaseController
|
||||
Session::flash('message', trans('texts.updated_settings'));
|
||||
}
|
||||
|
||||
return Redirect::to('settings/' . ACCOUNT_CLIENT_VIEW_STYLING);
|
||||
return Redirect::to('settings/'.ACCOUNT_CLIENT_PORTAL);
|
||||
}
|
||||
|
||||
private function saveEmailTemplates()
|
||||
@ -535,7 +537,7 @@ class AccountController extends BaseController
|
||||
Session::flash('message', trans('texts.updated_settings'));
|
||||
}
|
||||
|
||||
return Redirect::to('settings/' . ACCOUNT_TEMPLATES_AND_REMINDERS);
|
||||
return Redirect::to('settings/'.ACCOUNT_TEMPLATES_AND_REMINDERS);
|
||||
}
|
||||
|
||||
private function saveTaxRates()
|
||||
@ -549,7 +551,8 @@ class AccountController extends BaseController
|
||||
$account->save();
|
||||
|
||||
Session::flash('message', trans('texts.updated_settings'));
|
||||
return Redirect::to('settings/' . ACCOUNT_TAX_RATES);
|
||||
|
||||
return Redirect::to('settings/'.ACCOUNT_TAX_RATES);
|
||||
}
|
||||
|
||||
private function saveProducts()
|
||||
@ -561,7 +564,8 @@ class AccountController extends BaseController
|
||||
$account->save();
|
||||
|
||||
Session::flash('message', trans('texts.updated_settings'));
|
||||
return Redirect::to('settings/' . ACCOUNT_PRODUCTS);
|
||||
|
||||
return Redirect::to('settings/'.ACCOUNT_PRODUCTS);
|
||||
}
|
||||
|
||||
private function saveEmailSettings()
|
||||
@ -583,7 +587,7 @@ class AccountController extends BaseController
|
||||
$validator = Validator::make(Input::all(), $rules);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return Redirect::to('settings/' . ACCOUNT_EMAIL_SETTINGS)
|
||||
return Redirect::to('settings/'.ACCOUNT_EMAIL_SETTINGS)
|
||||
->withErrors($validator)
|
||||
->withInput();
|
||||
} else {
|
||||
@ -602,13 +606,12 @@ class AccountController extends BaseController
|
||||
}
|
||||
}
|
||||
|
||||
return Redirect::to('settings/' . ACCOUNT_EMAIL_SETTINGS);
|
||||
return Redirect::to('settings/'.ACCOUNT_EMAIL_SETTINGS);
|
||||
}
|
||||
|
||||
private function saveInvoiceSettings()
|
||||
{
|
||||
if (Auth::user()->account->isPro()) {
|
||||
|
||||
$rules = [
|
||||
'invoice_number_pattern' => 'has_counter',
|
||||
'quote_number_pattern' => 'has_counter',
|
||||
@ -617,7 +620,7 @@ class AccountController extends BaseController
|
||||
$validator = Validator::make(Input::all(), $rules);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return Redirect::to('settings/' . ACCOUNT_INVOICE_SETTINGS)
|
||||
return Redirect::to('settings/'.ACCOUNT_INVOICE_SETTINGS)
|
||||
->withErrors($validator)
|
||||
->withInput();
|
||||
} else {
|
||||
@ -668,7 +671,8 @@ class AccountController extends BaseController
|
||||
|
||||
if (!$account->share_counter && $account->invoice_number_prefix == $account->quote_number_prefix) {
|
||||
Session::flash('error', trans('texts.invalid_counter'));
|
||||
return Redirect::to('settings/' . ACCOUNT_INVOICE_SETTINGS)->withInput();
|
||||
|
||||
return Redirect::to('settings/'.ACCOUNT_INVOICE_SETTINGS)->withInput();
|
||||
} else {
|
||||
$account->save();
|
||||
Session::flash('message', trans('texts.updated_settings'));
|
||||
@ -676,7 +680,7 @@ class AccountController extends BaseController
|
||||
}
|
||||
}
|
||||
|
||||
return Redirect::to('settings/' . ACCOUNT_INVOICE_SETTINGS);
|
||||
return Redirect::to('settings/'.ACCOUNT_INVOICE_SETTINGS);
|
||||
}
|
||||
|
||||
private function saveInvoiceDesign()
|
||||
@ -704,7 +708,7 @@ class AccountController extends BaseController
|
||||
Session::flash('message', trans('texts.updated_settings'));
|
||||
}
|
||||
|
||||
return Redirect::to('settings/' . ACCOUNT_INVOICE_DESIGN);
|
||||
return Redirect::to('settings/'.ACCOUNT_INVOICE_DESIGN);
|
||||
}
|
||||
|
||||
private function saveNotifications()
|
||||
@ -718,20 +722,20 @@ class AccountController extends BaseController
|
||||
|
||||
Session::flash('message', trans('texts.updated_settings'));
|
||||
|
||||
return Redirect::to('settings/' . ACCOUNT_NOTIFICATIONS);
|
||||
return Redirect::to('settings/'.ACCOUNT_NOTIFICATIONS);
|
||||
}
|
||||
|
||||
private function saveDetails()
|
||||
{
|
||||
$rules = array(
|
||||
'name' => 'required',
|
||||
'logo' => 'sometimes|max:' . MAX_LOGO_FILE_SIZE . '|mimes:jpeg,gif,png',
|
||||
'logo' => 'sometimes|max:'.MAX_LOGO_FILE_SIZE.'|mimes:jpeg,gif,png',
|
||||
);
|
||||
|
||||
$validator = Validator::make(Input::all(), $rules);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return Redirect::to('settings/' . ACCOUNT_COMPANY_DETAILS)
|
||||
return Redirect::to('settings/'.ACCOUNT_COMPANY_DETAILS)
|
||||
->withErrors($validator)
|
||||
->withInput();
|
||||
} else {
|
||||
@ -762,11 +766,11 @@ class AccountController extends BaseController
|
||||
$mimeType = $file->getMimeType();
|
||||
|
||||
if ($mimeType == 'image/jpeg') {
|
||||
$path = 'logo/' . $account->account_key . '.jpg';
|
||||
$file->move('logo/', $account->account_key . '.jpg');
|
||||
} else if ($mimeType == 'image/png') {
|
||||
$path = 'logo/' . $account->account_key . '.png';
|
||||
$file->move('logo/', $account->account_key . '.png');
|
||||
$path = 'logo/'.$account->account_key.'.jpg';
|
||||
$file->move('logo/', $account->account_key.'.jpg');
|
||||
} elseif ($mimeType == 'image/png') {
|
||||
$path = 'logo/'.$account->account_key.'.png';
|
||||
$file->move('logo/', $account->account_key.'.png');
|
||||
} else {
|
||||
if (extension_loaded('fileinfo')) {
|
||||
$image = Image::make($path);
|
||||
@ -792,7 +796,8 @@ class AccountController extends BaseController
|
||||
event(new UserSettingsChanged());
|
||||
|
||||
Session::flash('message', trans('texts.updated_settings'));
|
||||
return Redirect::to('settings/' . ACCOUNT_COMPANY_DETAILS);
|
||||
|
||||
return Redirect::to('settings/'.ACCOUNT_COMPANY_DETAILS);
|
||||
}
|
||||
}
|
||||
|
||||
@ -803,7 +808,7 @@ class AccountController extends BaseController
|
||||
$validator = Validator::make(Input::all(), $rules);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return Redirect::to('settings/' . ACCOUNT_USER_DETAILS)
|
||||
return Redirect::to('settings/'.ACCOUNT_USER_DETAILS)
|
||||
->withErrors($validator)
|
||||
->withInput();
|
||||
} else {
|
||||
@ -826,7 +831,8 @@ class AccountController extends BaseController
|
||||
|
||||
event(new UserSettingsChanged());
|
||||
Session::flash('message', trans('texts.updated_settings'));
|
||||
return Redirect::to('settings/' . ACCOUNT_USER_DETAILS);
|
||||
|
||||
return Redirect::to('settings/'.ACCOUNT_USER_DETAILS);
|
||||
}
|
||||
}
|
||||
|
||||
@ -844,7 +850,8 @@ class AccountController extends BaseController
|
||||
event(new UserSettingsChanged());
|
||||
|
||||
Session::flash('message', trans('texts.updated_settings'));
|
||||
return Redirect::to('settings/' . ACCOUNT_LOCALIZATION);
|
||||
|
||||
return Redirect::to('settings/'.ACCOUNT_LOCALIZATION);
|
||||
}
|
||||
|
||||
public function removeLogo()
|
||||
@ -854,7 +861,7 @@ class AccountController extends BaseController
|
||||
|
||||
Session::flash('message', trans('texts.removed_logo'));
|
||||
|
||||
return Redirect::to('settings/' . ACCOUNT_COMPANY_DETAILS);
|
||||
return Redirect::to('settings/'.ACCOUNT_COMPANY_DETAILS);
|
||||
}
|
||||
|
||||
public function checkEmail()
|
||||
@ -953,7 +960,7 @@ class AccountController extends BaseController
|
||||
$user = Auth::user();
|
||||
$this->userMailer->sendConfirmation($user);
|
||||
|
||||
return Redirect::to('/settings/' . ACCOUNT_USER_DETAILS)->with('message', trans('texts.confirmation_resent'));
|
||||
return Redirect::to('/settings/'.ACCOUNT_USER_DETAILS)->with('message', trans('texts.confirmation_resent'));
|
||||
}
|
||||
|
||||
public function redirectLegacy($section, $subSection = false)
|
||||
|
@ -278,7 +278,7 @@ if (!defined('CONTACT_EMAIL')) {
|
||||
define('ACCOUNT_ADVANCED_SETTINGS', 'advanced_settings');
|
||||
define('ACCOUNT_INVOICE_SETTINGS', 'invoice_settings');
|
||||
define('ACCOUNT_INVOICE_DESIGN', 'invoice_design');
|
||||
define('ACCOUNT_CLIENT_VIEW_STYLING', 'client_view_styling');
|
||||
define('ACCOUNT_CLIENT_PORTAL', 'client_portal');
|
||||
define('ACCOUNT_EMAIL_SETTINGS', 'email_settings');
|
||||
define('ACCOUNT_CHARTS_AND_REPORTS', 'charts_and_reports');
|
||||
define('ACCOUNT_USER_MANAGEMENT', 'user_management');
|
||||
|
@ -35,7 +35,7 @@ class Account extends Eloquent
|
||||
public static $advancedSettings = [
|
||||
ACCOUNT_INVOICE_SETTINGS,
|
||||
ACCOUNT_INVOICE_DESIGN,
|
||||
ACCOUNT_CLIENT_VIEW_STYLING,
|
||||
ACCOUNT_CLIENT_PORTAL,
|
||||
ACCOUNT_EMAIL_SETTINGS,
|
||||
ACCOUNT_TEMPLATES_AND_REMINDERS,
|
||||
ACCOUNT_CHARTS_AND_REPORTS,
|
||||
|
@ -476,8 +476,6 @@ return array(
|
||||
'id_number' => 'ID Number',
|
||||
'white_label_link' => 'White label',
|
||||
'white_label_text' => 'Purchase a white label license for $'.WHITE_LABEL_PRICE.' to remove the Invoice Ninja branding from the client portal and help support our project.',
|
||||
'white_label_custom_css' => ':link for $'.WHITE_LABEL_PRICE.' to enable custom styling and help support our project.',
|
||||
'white_label_purchase_link' => 'Purchase a white label license',
|
||||
'white_label_header' => 'White Label',
|
||||
'bought_white_label' => 'Successfully enabled white label license',
|
||||
'white_labeled' => 'White labeled',
|
||||
@ -997,4 +995,7 @@ return array(
|
||||
'email_designs' => 'Email Designs',
|
||||
'assigned_when_sent' => 'Assigned when sent',
|
||||
|
||||
'white_label_custom_css' => ':link for $'.WHITE_LABEL_PRICE.' to enable custom styling and help support our project.',
|
||||
'white_label_purchase_link' => 'Purchase a white label license',
|
||||
|
||||
);
|
||||
|
@ -22,7 +22,7 @@
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@include('accounts.nav', ['selected' => ACCOUNT_CLIENT_VIEW_STYLING])
|
||||
@include('accounts.nav', ['selected' => ACCOUNT_CLIENT_PORTAL])
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
Loading…
x
Reference in New Issue
Block a user