Minor improvements

This commit is contained in:
Hillel Coren 2015-11-21 23:10:26 +02:00
parent d35b0f7f35
commit 61ed298699
12 changed files with 88 additions and 23 deletions

View File

@ -590,8 +590,8 @@ class AccountController extends BaseController
} }
$labels = []; $labels = [];
foreach (['item', 'description', 'unit_cost', 'quantity', 'line_total'] as $field) { foreach (['item', 'description', 'unit_cost', 'quantity', 'line_total', 'terms'] as $field) {
$labels[$field] = trim(Input::get("labels_{$field}")); $labels[$field] = Input::get("labels_{$field}");
} }
$account->invoice_labels = json_encode($labels); $account->invoice_labels = json_encode($labels);

View File

@ -79,7 +79,7 @@ class AuthController extends Controller {
$userId = Auth::check() ? Auth::user()->id : null; $userId = Auth::check() ? Auth::user()->id : null;
$user = User::where('email', '=', $request->input('email'))->first(); $user = User::where('email', '=', $request->input('email'))->first();
if ($user && $user->failed_logins >= 3) { if ($user && $user->failed_logins >= MAX_FAILED_LOGINS) {
Session::flash('error', trans('texts.invalid_credentials')); Session::flash('error', trans('texts.invalid_credentials'));
return redirect()->to('login'); return redirect()->to('login');
} }

View File

@ -338,6 +338,7 @@ if (!defined('CONTACT_EMAIL')) {
define('MAX_SUBDOMAIN_LENGTH', 30); define('MAX_SUBDOMAIN_LENGTH', 30);
define('MAX_IFRAME_URL_LENGTH', 250); define('MAX_IFRAME_URL_LENGTH', 250);
define('MAX_LOGO_FILE_SIZE', 200); // KB define('MAX_LOGO_FILE_SIZE', 200); // KB
define('MAX_FAILED_LOGINS', 5);
define('DEFAULT_FONT_SIZE', 9); define('DEFAULT_FONT_SIZE', 9);
define('DEFAULT_SEND_RECURRING_HOUR', 8); define('DEFAULT_SEND_RECURRING_HOUR', 8);
@ -488,6 +489,12 @@ if (!defined('CONTACT_EMAIL')) {
define('SOCIAL_GITHUB', 'GitHub'); define('SOCIAL_GITHUB', 'GitHub');
define('SOCIAL_LINKEDIN', 'LinkedIn'); define('SOCIAL_LINKEDIN', 'LinkedIn');
define('USER_STATE_ACTIVE', 'active');
define('USER_STATE_PENDING', 'pending');
define('USER_STATE_DISABLED', 'disabled');
define('USER_STATE_ADMIN', 'admin');
$creditCards = [ $creditCards = [
1 => ['card' => 'images/credit_cards/Test-Visa-Icon.png', 'text' => 'Visa'], 1 => ['card' => 'images/credit_cards/Test-Visa-Icon.png', 'text' => 'Visa'],
2 => ['card' => 'images/credit_cards/Test-MasterCard-Icon.png', 'text' => 'Master Card'], 2 => ['card' => 'images/credit_cards/Test-MasterCard-Icon.png', 'text' => 'Master Card'],

View File

@ -22,8 +22,7 @@ class UserRepository extends BaseRepository
$query->where('users.deleted_at', '=', null); $query->where('users.deleted_at', '=', null);
} }
$query->where('users.public_id', '>', 0) $query->select('users.public_id', 'users.first_name', 'users.last_name', 'users.email', 'users.confirmed', 'users.public_id', 'users.deleted_at');
->select('users.public_id', 'users.first_name', 'users.last_name', 'users.email', 'users.confirmed', 'users.public_id', 'users.deleted_at');
return $query; return $query;
} }

View File

@ -80,7 +80,9 @@ class DatatableService
$str .= "<li class=\"divider\"></li>"; $str .= "<li class=\"divider\"></li>";
} }
$str .= "<li><a href=\"javascript:archiveEntity({$model->public_id})\">" . trans("texts.archive_{$entityType}") . "</a></li>"; if ($entityType != ENTITY_USER || $model->public_id) {
$str .= "<li><a href=\"javascript:archiveEntity({$model->public_id})\">" . trans("texts.archive_{$entityType}") . "</a></li>";
}
} else { } else {
$str .= "<li><a href=\"javascript:restoreEntity({$model->public_id})\">" . trans("texts.restore_{$entityType}") . "</a></li>"; $str .= "<li><a href=\"javascript:restoreEntity({$model->public_id})\">" . trans("texts.restore_{$entityType}") . "</a></li>";
} }

View File

@ -52,7 +52,15 @@ class UserService extends BaseService
[ [
'confirmed', 'confirmed',
function ($model) { function ($model) {
return $model->deleted_at ? trans('texts.deleted') : ($model->confirmed ? trans('texts.active') : trans('texts.pending')); if (!$model->public_id) {
return self::getStatusLabel(USER_STATE_ADMIN);
} elseif ($model->deleted_at) {
return self::getStatusLabel(USER_STATE_DISABLED);
} elseif ($model->confirmed) {
return self::getStatusLabel(USER_STATE_ACTIVE);
} else {
return self::getStatusLabel(USER_STATE_PENDING);
}
} }
], ],
]; ];
@ -65,6 +73,9 @@ class UserService extends BaseService
uctrans('texts.edit_user'), uctrans('texts.edit_user'),
function ($model) { function ($model) {
return URL::to("users/{$model->public_id}/edit"); return URL::to("users/{$model->public_id}/edit");
},
function ($model) {
return $model->public_id;
} }
], ],
[ [
@ -73,10 +84,31 @@ class UserService extends BaseService
return URL::to("send_confirmation/{$model->public_id}"); return URL::to("send_confirmation/{$model->public_id}");
}, },
function ($model) { function ($model) {
return !$model->confirmed; return $model->public_id && ! $model->confirmed;
} }
] ]
]; ];
} }
private function getStatusLabel($state)
{
$label = trans("texts.{$state}");
$class = 'default';
switch ($state) {
case USER_STATE_PENDING:
$class = 'info';
break;
case USER_STATE_ACTIVE:
$class = 'primary';
break;
case USER_STATE_DISABLED:
$class = 'warning';
break;
case USER_STATE_ADMIN:
$class = 'success';
break;
}
return "<h4><div class=\"label label-{$class}\">$label</div></h4>";
}
} }

View File

@ -942,5 +942,7 @@ return array(
], ],
'client_portal' => 'Client Portal', 'client_portal' => 'Client Portal',
'admin' => 'Admin',
'disabled' => 'Disabled',
'show_archived_users' => 'Show archived users',
); );

View File

@ -37,7 +37,7 @@
NINJA.secondaryColor = $('#secondary_color').val(); NINJA.secondaryColor = $('#secondary_color').val();
NINJA.fontSize = parseInt($('#font_size').val()); NINJA.fontSize = parseInt($('#font_size').val());
var fields = ['item', 'description', 'unit_cost', 'quantity', 'line_total']; var fields = ['item', 'description', 'unit_cost', 'quantity', 'line_total', 'terms'];
invoiceLabels.old = {}; invoiceLabels.old = {};
for (var i=0; i<fields.length; i++) { for (var i=0; i<fields.length; i++) {
var field = fields[i]; var field = fields[i];
@ -102,12 +102,22 @@
<div class="panel-body"> <div class="panel-body">
@if (!Utils::isPro() || \App\Models\InvoiceDesign::count() == COUNT_FREE_DESIGNS_SELF_HOST) @if (!Utils::isPro() || \App\Models\InvoiceDesign::count() == COUNT_FREE_DESIGNS_SELF_HOST)
{!! Former::select('invoice_design_id')->style('display:inline')->fromQuery($invoiceDesigns, 'name', 'id')->addOption(trans('texts.more_designs') . '...', '-1') !!} {!! Former::select('invoice_design_id')
->style('display:inline; width:300px')
->fromQuery($invoiceDesigns, 'name', 'id')
->addOption(trans('texts.more_designs') . '...', '-1') !!}
@else @else
{!! Former::select('invoice_design_id')->style('display:inline')->fromQuery($invoiceDesigns, 'name', 'id') !!} {!! Former::select('invoice_design_id')
->style('display:inline; width:300px')
->fromQuery($invoiceDesigns, 'name', 'id') !!}
@endif @endif
{!! Former::text('font_size')->type('number')->min('0')->step('1') !!} {!! Former::text('font_size')
->style('width:300px')
->type('number')
->min('0')
->step('1') !!}
{!! Former::text('primary_color') !!} {!! Former::text('primary_color') !!}
{!! Former::text('secondary_color') !!} {!! Former::text('secondary_color') !!}
@ -116,13 +126,18 @@
<div role="tabpanel" class="tab-pane" id="invoiceLabels"> <div role="tabpanel" class="tab-pane" id="invoiceLabels">
<div class="panel-body"> <div class="panel-body">
<div class="row">
{!! Former::text('labels_item')->label(trans('texts.item')) !!} <div class="col-md-6">
{!! Former::text('labels_description')->label(trans('texts.description')) !!} {!! Former::text('labels_item')->label(trans('texts.item')) !!}
{!! Former::text('labels_unit_cost')->label(trans('texts.unit_cost')) !!} {!! Former::text('labels_description')->label(trans('texts.description')) !!}
{!! Former::text('labels_quantity')->label(trans('texts.quantity')) !!} {!! Former::text('labels_unit_cost')->label(trans('texts.unit_cost')) !!}
{!! Former::text('labels_line_total')->label(trans('texts.line_total')) !!} </div>
<div class="col-md-6">
{!! Former::text('labels_quantity')->label(trans('texts.quantity')) !!}
{!! Former::text('labels_line_total')->label(trans('texts.line_total')) !!}
{!! Former::text('labels_terms')->label(trans('texts.terms')) !!}
</div>
</div>
</div> </div>
</div> </div>

View File

@ -14,7 +14,7 @@
<label for="trashed" style="font-weight:normal; margin-left: 10px;"> <label for="trashed" style="font-weight:normal; margin-left: 10px;">
<input id="trashed" type="checkbox" onclick="setTrashVisible()" <input id="trashed" type="checkbox" onclick="setTrashVisible()"
{!! Session::get('show_trash:user') ? 'checked' : ''!!}/> {!! trans('texts.show_deleted_users')!!} {!! Session::get('show_trash:user') ? 'checked' : ''!!}/> {!! trans('texts.show_archived_users')!!}
</label> </label>
@include('partials.bulk_form', ['entityType' => ENTITY_USER]) @include('partials.bulk_form', ['entityType' => ENTITY_USER])

View File

@ -68,7 +68,7 @@
<div class="form-group" style="margin-bottom: 8px"> <div class="form-group" style="margin-bottom: 8px">
<div class="col-lg-8 col-sm-8 col-lg-offset-4 col-sm-offset-4"> <div class="col-lg-8 col-sm-8 col-lg-offset-4 col-sm-offset-4">
<a id="createClientLink" class="pointer" data-bind="click: $root.showClientForm, html: $root.clientLinkText"></a> <a id="createClientLink" class="pointer" data-bind="click: $root.showClientForm, html: $root.clientLinkText"></a>
<span data-bind="visible: $root.invoice().client().public_id() > 0">| <span data-bind="visible: $root.invoice().client().public_id() > 0" style="display:none">|
<a data-bind="attr: {href: '{{ url('/clients') }}/' + $root.invoice().client().public_id()}" target="_blank">{{ trans('texts.view_client') }}</a> <a data-bind="attr: {href: '{{ url('/clients') }}/' + $root.invoice().client().public_id()}" target="_blank">{{ trans('texts.view_client') }}</a>
</span> </span>
</div> </div>

View File

@ -72,7 +72,7 @@
@endif @endif
var NINJA = NINJA || {}; var NINJA = NINJA || {};
@if (Utils::isPro()) @if ($account->isPro())
NINJA.primaryColor = "{{ $account->primary_color }}"; NINJA.primaryColor = "{{ $account->primary_color }}";
NINJA.secondaryColor = "{{ $account->secondary_color }}"; NINJA.secondaryColor = "{{ $account->secondary_color }}";
NINJA.fontSize = {{ $account->font_size }}; NINJA.fontSize = {{ $account->font_size }};

View File

@ -50,12 +50,20 @@
return generatePDF(invoice, invoice.invoice_design.javascript, true, cb); return generatePDF(invoice, invoice.invoice_design.javascript, true, cb);
} }
if (window.hasOwnProperty('pjsc_meta')) {
window['pjsc_meta'].remainingTasks++;
}
$(function() { $(function() {
@if (Input::has('phantomjs')) @if (Input::has('phantomjs'))
doc = getPDFString(); doc = getPDFString();
doc.getDataUrl(function(pdfString) { doc.getDataUrl(function(pdfString) {
document.write(pdfString); document.write(pdfString);
document.close(); document.close();
if (window.hasOwnProperty('pjsc_meta')) {
window['pjsc_meta'].remainingTasks--;
}
}); });
@else @else
refreshPDF(); refreshPDF();