mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2024-11-10 05:02:36 +01:00
Merge pull request #1353 from joshuadwire/2017-02-login-styling
Login/Dashboard Styling
This commit is contained in:
commit
67f05cdcfb
@ -797,7 +797,8 @@ class AccountController extends BaseController
|
||||
{
|
||||
$account = $request->user()->account;
|
||||
$account->fill($request->all());
|
||||
$account->subdomain = $request->subdomain;
|
||||
$account->client_view_css = $request->client_view_css;
|
||||
$account->subdomain = $request->subdomain;
|
||||
$account->iframe_url = $request->iframe_url;
|
||||
$account->save();
|
||||
|
||||
|
@ -28,18 +28,9 @@ class AuthController extends Controller
|
||||
*/
|
||||
public function showLoginForm()
|
||||
{
|
||||
$data = [];
|
||||
|
||||
$contactKey = session('contact_key');
|
||||
if ($contactKey) {
|
||||
$contact = Contact::where('contact_key', '=', $contactKey)->first();
|
||||
if ($contact && ! $contact->is_deleted) {
|
||||
$account = $contact->account;
|
||||
|
||||
$data['account'] = $account;
|
||||
$data['clientFontUrl'] = $account->getFontsUrl();
|
||||
}
|
||||
}
|
||||
$data = [
|
||||
'clientauth' => true,
|
||||
];
|
||||
|
||||
return view('clientauth.login')->with($data);
|
||||
}
|
||||
@ -86,6 +77,6 @@ class AuthController extends Controller
|
||||
*/
|
||||
public function getSessionExpired()
|
||||
{
|
||||
return view('clientauth.sessionexpired');
|
||||
return view('clientauth.sessionexpired')->with(['clientauth' => true]);
|
||||
}
|
||||
}
|
||||
|
@ -48,16 +48,11 @@ class PasswordController extends Controller
|
||||
*/
|
||||
public function showLinkRequestForm()
|
||||
{
|
||||
$data = [];
|
||||
$data = [
|
||||
'clientauth' => true,
|
||||
];
|
||||
$contactKey = session('contact_key');
|
||||
if ($contactKey) {
|
||||
$contact = Contact::where('contact_key', '=', $contactKey)->first();
|
||||
if ($contact && ! $contact->is_deleted) {
|
||||
$account = $contact->account;
|
||||
$data['account'] = $account;
|
||||
$data['clientFontUrl'] = $account->getFontsUrl();
|
||||
}
|
||||
} else {
|
||||
if (!$contactKey) {
|
||||
return \Redirect::to('/client/sessionexpired');
|
||||
}
|
||||
|
||||
@ -115,7 +110,11 @@ class PasswordController extends Controller
|
||||
return $this->getEmail();
|
||||
}
|
||||
|
||||
$data = compact('token');
|
||||
$data = array(
|
||||
'token' => $token,
|
||||
'clientauth' => true,
|
||||
);
|
||||
|
||||
if ($key) {
|
||||
$contact = Contact::where('contact_key', '=', $key)->first();
|
||||
if ($contact && ! $contact->is_deleted) {
|
||||
@ -130,10 +129,7 @@ class PasswordController extends Controller
|
||||
}
|
||||
}
|
||||
|
||||
if (! empty($account)) {
|
||||
$data['account'] = $account;
|
||||
$data['clientFontUrl'] = $account->getFontsUrl();
|
||||
} else {
|
||||
if ( empty($account)) {
|
||||
return \Redirect::to('/client/sessionexpired');
|
||||
}
|
||||
}
|
||||
|
@ -59,9 +59,6 @@ class ClientPortalController extends BaseController
|
||||
if (! $account->checkSubdomain(Request::server('HTTP_HOST'))) {
|
||||
return response()->view('error', [
|
||||
'error' => trans('texts.invoice_not_found'),
|
||||
'hideHeader' => true,
|
||||
'clientViewCSS' => $account->clientViewCSS(),
|
||||
'clientFontUrl' => $account->getFontsUrl(),
|
||||
]);
|
||||
}
|
||||
|
||||
@ -134,7 +131,6 @@ class ClientPortalController extends BaseController
|
||||
'account' => $account,
|
||||
'showApprove' => $showApprove,
|
||||
'showBreadcrumbs' => false,
|
||||
'clientFontUrl' => $account->getFontsUrl(),
|
||||
'invoice' => $invoice->hidePrivateFields(),
|
||||
'invitation' => $invitation,
|
||||
'invoiceLabels' => $account->getInvoiceLabels(),
|
||||
@ -255,7 +251,6 @@ class ClientPortalController extends BaseController
|
||||
'contact' => $contact,
|
||||
'account' => $account,
|
||||
'client' => $client,
|
||||
'clientFontUrl' => $account->getFontsUrl(),
|
||||
'gateway' => $account->getTokenGateway(),
|
||||
'paymentMethods' => $customer ? $customer->payment_methods : false,
|
||||
'transactionToken' => $paymentDriver ? $paymentDriver->createTransactionToken() : false,
|
||||
@ -321,7 +316,6 @@ class ClientPortalController extends BaseController
|
||||
'color' => $color,
|
||||
'account' => $account,
|
||||
'client' => $contact->client,
|
||||
'clientFontUrl' => $account->getFontsUrl(),
|
||||
'title' => trans('texts.recurring_invoices'),
|
||||
'entityType' => ENTITY_RECURRING_INVOICE,
|
||||
'columns' => Utils::trans(['frequency', 'start_date', 'end_date', 'invoice_total', 'auto_bill']),
|
||||
@ -349,7 +343,6 @@ class ClientPortalController extends BaseController
|
||||
'color' => $color,
|
||||
'account' => $account,
|
||||
'client' => $contact->client,
|
||||
'clientFontUrl' => $account->getFontsUrl(),
|
||||
'title' => trans('texts.invoices'),
|
||||
'entityType' => ENTITY_INVOICE,
|
||||
'columns' => Utils::trans(['invoice_number', 'invoice_date', 'invoice_total', 'balance_due', 'due_date']),
|
||||
@ -394,7 +387,6 @@ class ClientPortalController extends BaseController
|
||||
$data = [
|
||||
'color' => $color,
|
||||
'account' => $account,
|
||||
'clientFontUrl' => $account->getFontsUrl(),
|
||||
'entityType' => ENTITY_PAYMENT,
|
||||
'title' => trans('texts.payments'),
|
||||
'columns' => Utils::trans(['invoice', 'transaction_reference', 'method', 'payment_amount', 'payment_date', 'status']),
|
||||
@ -479,7 +471,6 @@ class ClientPortalController extends BaseController
|
||||
$data = [
|
||||
'color' => $color,
|
||||
'account' => $account,
|
||||
'clientFontUrl' => $account->getFontsUrl(),
|
||||
'title' => trans('texts.quotes'),
|
||||
'entityType' => ENTITY_QUOTE,
|
||||
'columns' => Utils::trans(['quote_number', 'quote_date', 'quote_total', 'due_date']),
|
||||
@ -515,7 +506,6 @@ class ClientPortalController extends BaseController
|
||||
$data = [
|
||||
'color' => $color,
|
||||
'account' => $account,
|
||||
'clientFontUrl' => $account->getFontsUrl(),
|
||||
'title' => trans('texts.credits'),
|
||||
'entityType' => ENTITY_CREDIT,
|
||||
'columns' => Utils::trans(['credit_date', 'credit_amount', 'credit_balance']),
|
||||
@ -551,7 +541,6 @@ class ClientPortalController extends BaseController
|
||||
$data = [
|
||||
'color' => $color,
|
||||
'account' => $account,
|
||||
'clientFontUrl' => $account->getFontsUrl(),
|
||||
'title' => trans('texts.documents'),
|
||||
'entityType' => ENTITY_DOCUMENT,
|
||||
'columns' => Utils::trans(['invoice_number', 'name', 'document_date', 'document_size']),
|
||||
@ -760,8 +749,6 @@ class ClientPortalController extends BaseController
|
||||
'contact' => $contact,
|
||||
'color' => $account->primary_color ? $account->primary_color : '#0b4d78',
|
||||
'client' => $client,
|
||||
'clientViewCSS' => $account->clientViewCSS(),
|
||||
'clientFontUrl' => $account->getFontsUrl(),
|
||||
'paymentMethods' => $customer ? $customer->payment_methods : false,
|
||||
'gateway' => $account->getTokenGateway(),
|
||||
'title' => trans('texts.payment_methods'),
|
||||
|
@ -102,6 +102,46 @@ class Utils
|
||||
return self::getResllerType() ? true : false;
|
||||
}
|
||||
|
||||
public static function clientViewCSS()
|
||||
{
|
||||
$account = false;
|
||||
|
||||
if (Auth::check()) {
|
||||
$account = Auth::user()->account;
|
||||
} elseif ($contactKey = session('contact_key')) {
|
||||
if ($contact = \App\Models\Contact::whereContactKey($contactKey)->first()) {
|
||||
$account = $contact->account;
|
||||
}
|
||||
}
|
||||
|
||||
if ( !$account && ! self::isNinja()) {
|
||||
// For self-hosted accounts, pick the first account
|
||||
$account = \App\Models\Account::first();
|
||||
}
|
||||
|
||||
return $account ? $account->clientViewCSS() : '';
|
||||
}
|
||||
|
||||
public static function getAccountFontsUrl($protocol = '')
|
||||
{
|
||||
$account = false;
|
||||
|
||||
if (Auth::check()) {
|
||||
$account = Auth::user()->account;
|
||||
} elseif ($contactKey = session('contact_key')) {
|
||||
if ($contact = \App\Models\Contact::whereContactKey($contactKey)->first()) {
|
||||
$account = $contact->account;
|
||||
}
|
||||
}
|
||||
|
||||
if ( !$account && ! self::isNinja()) {
|
||||
// For self-hosted accounts, pick the first account
|
||||
$account = \App\Models\Account::first();
|
||||
}
|
||||
|
||||
return $account ? $account->getFontsUrl($protocol) : false;
|
||||
}
|
||||
|
||||
public static function isWhiteLabel()
|
||||
{
|
||||
$account = false;
|
||||
|
@ -166,7 +166,6 @@ class BasePaymentDriver
|
||||
'currencyCode' => $this->client()->getCurrencyCode(),
|
||||
'account' => $this->account(),
|
||||
'sourceId' => $sourceId,
|
||||
'clientFontUrl' => $this->account()->getFontsUrl(),
|
||||
'tokenize' => $this->tokenize(),
|
||||
'transactionToken' => $this->createTransactionToken(),
|
||||
];
|
||||
|
@ -55,9 +55,13 @@ elixir(function(mix) {
|
||||
'style.css',
|
||||
'sidebar.css',
|
||||
'colors.css',
|
||||
'fonts.css'
|
||||
'fonts.css',
|
||||
], 'public/css/built.css');
|
||||
|
||||
mix.styles([
|
||||
'login.css'
|
||||
], 'public/css/built.login.css');
|
||||
|
||||
mix.styles([
|
||||
bowerDir + '/bootstrap-daterangepicker/daterangepicker.css'
|
||||
], 'public/css/daterangepicker.css');
|
||||
|
68347
public/built.js
68347
public/built.js
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
13553
public/css/built.css
vendored
13553
public/css/built.css
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
325
public/css/built.login.css
vendored
Normal file
325
public/css/built.login.css
vendored
Normal file
@ -0,0 +1,325 @@
|
||||
.container {
|
||||
padding-bottom: 50px;
|
||||
}
|
||||
|
||||
hr.green {
|
||||
background: #5ebb5e;
|
||||
margin-top: 0px;
|
||||
margin-bottom: 30px;
|
||||
width: 55px;
|
||||
height: 4px;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.alert li{
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
/****** HEADER ********************************************************************/
|
||||
|
||||
.row.header {
|
||||
background: #3c3b3b; /* Old browsers */
|
||||
background: -moz-linear-gradient(top, #3c3b3b 0%, #2f2c2c 100%); /* FF3.6-15 */
|
||||
background: -webkit-linear-gradient(top, #3c3b3b 0%, #2f2c2c 100%); /* Chrome10-25,Safari5.1-6 */
|
||||
background: linear-gradient(to bottom, #3c3b3b 0%, #2f2c2c 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#3c3b3b', endColorstr='#2f2c2c', GradientType=0); /* IE6-9 */
|
||||
padding: 30px 55px;
|
||||
margin-bottom: 95px;
|
||||
}
|
||||
|
||||
.row.header .text-right {
|
||||
font-size: 13px;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 4px;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 64.063em) {
|
||||
.row.header .col-md-6.col-xs-12.text-center {
|
||||
text-align: left;
|
||||
}
|
||||
}
|
||||
|
||||
/****** FORM ********************************************************************/
|
||||
|
||||
.form-signin {
|
||||
max-width: 400px;
|
||||
padding: 15px;
|
||||
margin: 0 auto;
|
||||
font-weight: 200;
|
||||
}
|
||||
|
||||
.form-signin .form-signin-heading,
|
||||
.form-signin .checkbox {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.form-signin .checkbox {
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.form-signin .form-control {
|
||||
position: relative;
|
||||
height: auto;
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
padding: 10px;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.form-signin .form-control:focus {
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.form-signin input:not(:last-child) {
|
||||
margin-bottom: -1px;
|
||||
border-bottom-right-radius: 0;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
|
||||
.form-signin input:not(:first-child) {
|
||||
border-top-left-radius: 0;
|
||||
border-top-right-radius: 0;
|
||||
}
|
||||
|
||||
.form-signin input {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.btn-block {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.form-signin h2 {
|
||||
font-weight: 200;
|
||||
font-size: 28px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.row.existing-accounts {
|
||||
margin-top: 60px;
|
||||
text-align: center;
|
||||
font-weight: 200;
|
||||
}
|
||||
|
||||
.row.existing-accounts .col-md-3.col-xs-6:nth-of-type(1), .row.existing-accounts .col-md-3.col-xs-6:nth-of-type(2) {
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
.row.existing-accounts a {
|
||||
width: 100%;
|
||||
font-size: 22px;
|
||||
padding-left: 2px;
|
||||
}
|
||||
|
||||
.row.meta {
|
||||
font-size: 11px;
|
||||
text-transform: uppercase;
|
||||
color: #464545;
|
||||
letter-spacing: 2px;
|
||||
padding: 13px 0 0 0;
|
||||
}
|
||||
|
||||
.row.meta .col-md-7, .row.meta .col-md-5 {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.row.meta a {
|
||||
color: #9b9c9b;
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 64.063em) {
|
||||
.row.existing-accounts .col-md-3.col-xs-6:nth-of-type(1), .row.existing-accounts .col-md-3.col-xs-6:nth-of-type(2) {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.row.meta .col-md-7 {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.row.meta .col-md-5 {
|
||||
text-align: right;
|
||||
}
|
||||
}
|
||||
|
||||
/****** SIGN UP ********************************************************************/
|
||||
|
||||
.row.sign-up {
|
||||
margin-top: 100px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.row.sign-up h3 {
|
||||
font-size: 26px;
|
||||
font-weight: 200;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.row.sign-up p {
|
||||
font-size: 17px;
|
||||
font-weight: 200;
|
||||
}
|
||||
|
||||
.row.sign-up button {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.row.sign-up .col-md-3 {
|
||||
border-top: 1px solid #eee;
|
||||
padding: 30px;
|
||||
}
|
||||
|
||||
.row.sign-up .col-md-3:nth-child(2) {
|
||||
border-left: 0;
|
||||
padding-left: 30px;
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 64.063em) {
|
||||
.row.sign-up {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.row.sign-up .col-md-3 {
|
||||
padding: 40px 0 30px 0
|
||||
}
|
||||
|
||||
.row.sign-up .col-md-3:nth-child(2) {
|
||||
border-left: 1px solid #eee;
|
||||
padding-left: 70px;
|
||||
}
|
||||
}
|
||||
|
||||
/****** SIGN UP ********************************************************************/
|
||||
|
||||
.btn {
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 3px;
|
||||
border-radius: 3px;
|
||||
font-size: 15px;
|
||||
padding: 20px 0;
|
||||
}
|
||||
|
||||
.btn-primary {
|
||||
background-image: -webkit-linear-gradient(top, #474646 0%, #3d3d3d 100%);
|
||||
background-image: -o-linear-gradient(top, #474646 0%, #3d3d3d 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#474646), to(#3d3d3d));
|
||||
background-image: linear-gradient(to bottom, #474646 0%, #3d3d3d 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #3d3d3d;
|
||||
}
|
||||
|
||||
.btn-primary:hover,
|
||||
.btn-primary:focus {
|
||||
background-color: #3d3d3d;
|
||||
background-position: 0 -15px;
|
||||
}
|
||||
|
||||
.btn-primary:active,
|
||||
.btn-primary.active {
|
||||
background-color: #3d3d3d;
|
||||
border-color: #3d3d3d;
|
||||
}
|
||||
|
||||
.btn-primary.green {
|
||||
background-image: -webkit-linear-gradient(top, #62c362 0%, #5cb85c 100%);
|
||||
background-image: -o-linear-gradient(top, #62c362 0%, #5cb85c 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#62c362), to(#5cb85c));
|
||||
background-image: linear-gradient(to bottom, #62c362 0%, #5cb85c 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #5cb85c;
|
||||
}
|
||||
|
||||
.btn-primary.green:hover,
|
||||
.btn-primary.green:focus {
|
||||
background-color: #5cb85c;
|
||||
background-position: 0 -15px;
|
||||
}
|
||||
|
||||
.btn-primary.green:active,
|
||||
.btn-primary.green.active {
|
||||
background-color: #5cb85c;
|
||||
border-color: #5cb85c;
|
||||
}
|
||||
|
||||
.btn-primary.blue {
|
||||
background-image: -webkit-linear-gradient(top, #3e8ccc 0%, #377db6 100%);
|
||||
background-image: -o-linear-gradient(top, #3e8ccc 0%, #377db6 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#3e8ccc), to(#377db6));
|
||||
background-image: linear-gradient(to bottom, #3e8ccc 0%, #377db6 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #377db6;
|
||||
}
|
||||
|
||||
.btn-primary.blue:hover,
|
||||
.btn-primary.blue:focus {
|
||||
background-color: #377db6;
|
||||
background-position: 0 -15px;
|
||||
}
|
||||
|
||||
.btn-primary.blue:active,
|
||||
.btn-primary.blue.active {
|
||||
background-color: #377db6;
|
||||
border-color: #377db6;
|
||||
}
|
||||
|
||||
.btn-primary.disabled,
|
||||
.btn-primary[disabled],
|
||||
fieldset[disabled] .btn-primary,
|
||||
.btn-primary.disabled:hover,
|
||||
.btn-primary[disabled]:hover,
|
||||
fieldset[disabled] .btn-primary:hover,
|
||||
.btn-primary.disabled:focus,
|
||||
.btn-primary[disabled]:focus,
|
||||
fieldset[disabled] .btn-primary:focus,
|
||||
.btn-primary.disabled.focus,
|
||||
.btn-primary[disabled].focus,
|
||||
fieldset[disabled] .btn-primary.focus,
|
||||
.btn-primary.disabled:active,
|
||||
.btn-primary[disabled]:active,
|
||||
fieldset[disabled] .btn-primary:active,
|
||||
.btn-primary.disabled.active,
|
||||
.btn-primary[disabled].active,
|
||||
fieldset[disabled] .btn-primary.active {
|
||||
background-color: #3d3d3d;
|
||||
background-image: none;
|
||||
}
|
||||
|
||||
.btn-default,
|
||||
.btn-primary,
|
||||
.btn-success,
|
||||
.btn-info,
|
||||
.btn-warning,
|
||||
.btn-danger {
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, .2);
|
||||
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
|
||||
box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
|
||||
}
|
||||
|
||||
.btn-default:active,
|
||||
.btn-primary:active,
|
||||
.btn-success:active,
|
||||
.btn-info:active,
|
||||
.btn-warning:active,
|
||||
.btn-danger:active,
|
||||
.btn-default.active,
|
||||
.btn-primary.active,
|
||||
.btn-success.active,
|
||||
.btn-info.active,
|
||||
.btn-warning.active,
|
||||
.btn-danger.active {
|
||||
-webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
|
||||
box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
|
||||
}
|
||||
|
||||
.form-signin .form-control {
|
||||
padding: 15px;
|
||||
border: 1px solid #e8e8e8;
|
||||
}
|
||||
/*# sourceMappingURL=built.login.css.map */
|
1
public/css/built.login.css.map
Normal file
1
public/css/built.login.css.map
Normal file
File diff suppressed because one or more lines are too long
9793
public/css/built.public.css
vendored
9793
public/css/built.public.css
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
271
public/css/daterangepicker.css
vendored
271
public/css/daterangepicker.css
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
69
public/css/login.css
vendored
Normal file
69
public/css/login.css
vendored
Normal file
@ -0,0 +1,69 @@
|
||||
body {
|
||||
padding-top: 40px;
|
||||
padding-bottom: 40px;
|
||||
}
|
||||
.modal-header {
|
||||
border-top-left-radius: 3px;
|
||||
border-top-right-radius: 3px;
|
||||
background-color: #337ab7;
|
||||
}
|
||||
.modal-header h4 {
|
||||
margin:0;
|
||||
color:#fff;
|
||||
}
|
||||
.modal-header img {
|
||||
float: left;
|
||||
margin-right: 20px;
|
||||
}
|
||||
.form-signin {
|
||||
max-width: 400px;
|
||||
margin: 0 auto;
|
||||
background: #fff;
|
||||
}
|
||||
p.link a {
|
||||
font-size: 11px;
|
||||
}
|
||||
.form-signin .inner {
|
||||
padding: 20px;
|
||||
border-bottom-right-radius: 3px;
|
||||
border-bottom-left-radius: 3px;
|
||||
border-left: 1px solid #ddd;
|
||||
border-right: 1px solid #ddd;
|
||||
border-bottom: 1px solid #ddd;
|
||||
}
|
||||
.form-signin .checkbox {
|
||||
font-weight: normal;
|
||||
}
|
||||
.form-signin .form-control {
|
||||
margin-bottom: 17px !important;
|
||||
}
|
||||
.form-signin .form-control:focus {
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.modal-header a:link,
|
||||
.modal-header a:visited,
|
||||
.modal-header a:hover,
|
||||
.modal-header a:active {
|
||||
text-decoration: none;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.form-control {
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: 40px;
|
||||
padding: 9px 12px;
|
||||
font-size: 16px;
|
||||
line-height: 1.42857143;
|
||||
color: #000 !important;
|
||||
background: #f9f9f9 !important;
|
||||
background-image: none;
|
||||
border: 1px solid #dfe0e1;
|
||||
border-radius: 2px;
|
||||
-webkit-box-shadow: none;
|
||||
box-shadow: none;
|
||||
-webkit-transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s;
|
||||
transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s;
|
||||
}
|
||||
/*# sourceMappingURL=login.css.map */
|
1
public/css/login.css.map
Normal file
1
public/css/login.css.map
Normal file
@ -0,0 +1 @@
|
||||
{"version":3,"sources":["login.css"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"login.css","sourcesContent":["body {\n padding-top: 40px;\n padding-bottom: 40px;\n}\n.modal-header {\n border-top-left-radius: 3px;\n border-top-right-radius: 3px;\n background-color: #337ab7;\n}\n.modal-header h4 {\n margin:0;\n color:#fff;\n}\n.modal-header img {\n float: left;\n margin-right: 20px;\n}\n.form-signin {\n max-width: 400px;\n margin: 0 auto;\n background: #fff;\n}\np.link a {\n font-size: 11px;\n}\n.form-signin .inner {\n padding: 20px;\n border-bottom-right-radius: 3px;\n border-bottom-left-radius: 3px;\n border-left: 1px solid #ddd;\n border-right: 1px solid #ddd;\n border-bottom: 1px solid #ddd;\n}\n.form-signin .checkbox {\n font-weight: normal;\n}\n.form-signin .form-control {\n margin-bottom: 17px !important;\n}\n.form-signin .form-control:focus {\n z-index: 2;\n}\n\n.modal-header a:link,\n.modal-header a:visited,\n.modal-header a:hover,\n.modal-header a:active {\n text-decoration: none;\n color: white;\n}\n\n.form-control {\n display: block;\n width: 100%;\n height: 40px;\n padding: 9px 12px;\n font-size: 16px;\n line-height: 1.42857143;\n color: #000 !important;\n background: #f9f9f9 !important;\n background-image: none;\n border: 1px solid #dfe0e1;\n border-radius: 2px;\n -webkit-box-shadow: none;\n box-shadow: none;\n -webkit-transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s;\n transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s;\n}"],"sourceRoot":"/source/"}
|
486
public/css/select2.css
vendored
486
public/css/select2.css
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
4
public/css/tablesorter.css
vendored
4
public/css/tablesorter.css
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
public/images/icon-balance.svg
Normal file
1
public/images/icon-balance.svg
Normal file
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 6.3 KiB |
1
public/images/icon-paidtodate.svg
Normal file
1
public/images/icon-paidtodate.svg
Normal file
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 10 KiB |
1
public/images/icon-total-invoiced.svg
Normal file
1
public/images/icon-total-invoiced.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="39.25" height="50.493" viewBox="28.925 23.771 39.25 50.493"><g fill="#FFF"><path d="M65.928 63.838h-7.156c-.564 0-1.022.457-1.022 1.021v7.157H31.174V26.019h34.754v37.819zm-6.133 6.731v-4.686h4.687l-4.687 4.686zm7.154-46.594H30.153c-.565 0-1.023.457-1.023 1.022v48.04c0 .564.458 1.022 1.023 1.022H58.77c.267 0 .528-.104.723-.3l8.178-8.176c.195-.196.297-.457.297-.724h.002V24.997c0-.565-.457-1.022-1.022-1.022"/><path d="M59.998 66.086v3.99l3.99-3.99h-3.99zm-.408 4.977v-5.385h5.385l-5.385 5.385zm-28.21.748h26.166v-6.952c0-.675.55-1.226 1.226-1.226h6.95v-37.41H31.38v45.588zm26.574.408H30.97V25.815h35.16v38.227h-7.357a.82.82 0 0 0-.819.817v7.36zm-27.801-48.04a.819.819 0 0 0-.818.818v48.04c0 .451.367.817.818.817H58.77a.815.815 0 0 0 .58-.239l8.176-8.178a.816.816 0 0 0 .238-.578l.003-.203V24.997a.819.819 0 0 0-.819-.818H30.153zM58.77 74.264H30.153c-.677 0-1.228-.551-1.228-1.227v-48.04c0-.677.551-1.226 1.228-1.226h36.796c.676 0 1.227.55 1.227 1.226v40.067h-.02c-.04.25-.158.482-.34.663l-8.176 8.177a1.22 1.22 0 0 1-.869.36"/><path d="M34.752 29.085h8.177v2.045h-8.177v-2.045"/><path d="M34.956 30.925h7.769V29.29h-7.769v1.635zm8.177.409h-8.586v-2.453h8.586v2.453M34.752 32.151H48.04v2.045H34.752V32.15"/><path d="M34.956 33.992h12.88v-1.635h-12.88v1.635zm13.288.408H34.547v-2.453h13.697V34.4M36.796 44.417h5.623v21.466h-5.623V44.417zm0-5.621h5.623v3.577h-5.623v-3.577zm7.666 11.754h15.843v4.089H44.462v-4.09zm0-6.133h15.843v4.089H44.462v-4.09zm0-5.621h15.843v3.577H44.462v-3.577zm-8.688 29.13h18.398v-2.043h-9.71v-9.2h15.843v4.089h2.045V37.774c0-.565-.457-1.022-1.022-1.022H35.774c-.565 0-1.022.457-1.022 1.022v29.13c0 .565.457 1.023 1.022 1.023"/><path d="M37 42.169h5.213V39H37v3.169zm5.623.409h-6.031V38.59h6.03v3.987zm2.044-.41h15.435V39H44.667v3.169zm15.843.41H44.258V38.59H60.51v3.987zm-15.843 5.724h15.435v-3.68H44.667v3.68zm15.843.409H44.258v-4.498H60.51v4.498zm-15.843 5.724h15.435v-3.68H44.667v3.68zm15.843.409H44.258v-4.498H60.51v4.498zM37 65.678h5.213V44.622H37v21.056zm5.623.408h-6.031V44.213h6.03v21.873zm-6.85-29.13a.819.819 0 0 0-.817.817v29.131c0 .451.367.818.818.818h18.195v-1.636h-9.711v-9.608H60.51v4.09h1.635V37.773a.818.818 0 0 0-.817-.818H35.774zM54.378 68.13H35.774c-.676 0-1.227-.551-1.227-1.227v-29.13c0-.677.55-1.227 1.227-1.227h25.554c.676 0 1.227.55 1.227 1.226v23.204h-2.453v-4.09H44.667v8.79h9.71v2.454"/><path d="M38.33 45.95h2.555v2.045H38.33V45.95"/><path d="M38.534 47.79h2.146v-1.635h-2.146v1.636zm2.555.409h-2.964v-2.452h2.964v2.452M38.33 52.084h2.555v2.043H38.33v-2.043"/><path d="M38.534 53.924h2.146v-1.637h-2.146v1.637zm2.555.408h-2.964v-2.453h2.964v2.453M38.33 58.217h2.555v2.043H38.33v-2.043"/><path d="M38.534 60.057h2.146V58.42h-2.146v1.637zm2.555.408h-2.964v-2.453h2.964v2.453M38.33 62.305h2.555v2.045H38.33v-2.045"/><path d="M38.534 64.145h2.146v-1.636h-2.146v1.636zm2.555.408h-2.964V62.1h2.964v2.452"/></g></svg>
|
After Width: | Height: | Size: 2.8 KiB |
BIN
public/images/invoiceninja-logox53.png
Normal file
BIN
public/images/invoiceninja-logox53.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 6.8 KiB |
10530
public/js/Chart.min.js
vendored
10530
public/js/Chart.min.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
9559
public/js/d3.min.js
vendored
9559
public/js/d3.min.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1629
public/js/daterangepicker.min.js
vendored
1629
public/js/daterangepicker.min.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
81
public/js/jSignature.min.js
vendored
81
public/js/jSignature.min.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
5882
public/js/select2.min.js
vendored
5882
public/js/select2.min.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
5853
public/js/tablesorter.min.js
vendored
5853
public/js/tablesorter.min.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
74417
public/pdf.built.js
74417
public/pdf.built.js
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
324
resources/assets/css/login.css
vendored
Normal file
324
resources/assets/css/login.css
vendored
Normal file
@ -0,0 +1,324 @@
|
||||
.container {
|
||||
padding-bottom: 50px;
|
||||
}
|
||||
|
||||
hr.green {
|
||||
background: #5ebb5e;
|
||||
margin-top: 0px;
|
||||
margin-bottom: 30px;
|
||||
width: 55px;
|
||||
height: 4px;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.alert li{
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
/****** HEADER ********************************************************************/
|
||||
|
||||
.row.header {
|
||||
background: #3c3b3b; /* Old browsers */
|
||||
background: -moz-linear-gradient(top, #3c3b3b 0%, #2f2c2c 100%); /* FF3.6-15 */
|
||||
background: -webkit-linear-gradient(top, #3c3b3b 0%, #2f2c2c 100%); /* Chrome10-25,Safari5.1-6 */
|
||||
background: linear-gradient(to bottom, #3c3b3b 0%, #2f2c2c 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#3c3b3b', endColorstr='#2f2c2c', GradientType=0); /* IE6-9 */
|
||||
padding: 30px 55px;
|
||||
margin-bottom: 95px;
|
||||
}
|
||||
|
||||
.row.header .text-right {
|
||||
font-size: 13px;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 4px;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 64.063em) {
|
||||
.row.header .col-md-6.col-xs-12.text-center {
|
||||
text-align: left;
|
||||
}
|
||||
}
|
||||
|
||||
/****** FORM ********************************************************************/
|
||||
|
||||
.form-signin {
|
||||
max-width: 400px;
|
||||
padding: 15px;
|
||||
margin: 0 auto;
|
||||
font-weight: 200;
|
||||
}
|
||||
|
||||
.form-signin .form-signin-heading,
|
||||
.form-signin .checkbox {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.form-signin .checkbox {
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.form-signin .form-control {
|
||||
position: relative;
|
||||
height: auto;
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
padding: 10px;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.form-signin .form-control:focus {
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.form-signin input:not(:last-child) {
|
||||
margin-bottom: -1px;
|
||||
border-bottom-right-radius: 0;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
|
||||
.form-signin input:not(:first-child) {
|
||||
border-top-left-radius: 0;
|
||||
border-top-right-radius: 0;
|
||||
}
|
||||
|
||||
.form-signin input {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.btn-block {
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.form-signin h2 {
|
||||
font-weight: 200;
|
||||
font-size: 28px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.row.existing-accounts {
|
||||
margin-top: 60px;
|
||||
text-align: center;
|
||||
font-weight: 200;
|
||||
}
|
||||
|
||||
.row.existing-accounts .col-md-3.col-xs-6:nth-of-type(1), .row.existing-accounts .col-md-3.col-xs-6:nth-of-type(2) {
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
.row.existing-accounts a {
|
||||
width: 100%;
|
||||
font-size: 22px;
|
||||
padding-left: 2px;
|
||||
}
|
||||
|
||||
.row.meta {
|
||||
font-size: 11px;
|
||||
text-transform: uppercase;
|
||||
color: #464545;
|
||||
letter-spacing: 2px;
|
||||
padding: 13px 0 0 0;
|
||||
}
|
||||
|
||||
.row.meta .col-md-7, .row.meta .col-md-5 {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.row.meta a {
|
||||
color: #9b9c9b;
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 64.063em) {
|
||||
.row.existing-accounts .col-md-3.col-xs-6:nth-of-type(1), .row.existing-accounts .col-md-3.col-xs-6:nth-of-type(2) {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.row.meta .col-md-7 {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.row.meta .col-md-5 {
|
||||
text-align: right;
|
||||
}
|
||||
}
|
||||
|
||||
/****** SIGN UP ********************************************************************/
|
||||
|
||||
.row.sign-up {
|
||||
margin-top: 100px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.row.sign-up h3 {
|
||||
font-size: 26px;
|
||||
font-weight: 200;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.row.sign-up p {
|
||||
font-size: 17px;
|
||||
font-weight: 200;
|
||||
}
|
||||
|
||||
.row.sign-up button {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.row.sign-up .col-md-3 {
|
||||
border-top: 1px solid #eee;
|
||||
padding: 30px;
|
||||
}
|
||||
|
||||
.row.sign-up .col-md-3:nth-child(2) {
|
||||
border-left: 0;
|
||||
padding-left: 30px;
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 64.063em) {
|
||||
.row.sign-up {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.row.sign-up .col-md-3 {
|
||||
padding: 40px 0 30px 0
|
||||
}
|
||||
|
||||
.row.sign-up .col-md-3:nth-child(2) {
|
||||
border-left: 1px solid #eee;
|
||||
padding-left: 70px;
|
||||
}
|
||||
}
|
||||
|
||||
/****** SIGN UP ********************************************************************/
|
||||
|
||||
.btn {
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 3px;
|
||||
border-radius: 3px;
|
||||
font-size: 15px;
|
||||
padding: 20px 0;
|
||||
}
|
||||
|
||||
.btn-primary {
|
||||
background-image: -webkit-linear-gradient(top, #474646 0%, #3d3d3d 100%);
|
||||
background-image: -o-linear-gradient(top, #474646 0%, #3d3d3d 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#474646), to(#3d3d3d));
|
||||
background-image: linear-gradient(to bottom, #474646 0%, #3d3d3d 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #3d3d3d;
|
||||
}
|
||||
|
||||
.btn-primary:hover,
|
||||
.btn-primary:focus {
|
||||
background-color: #3d3d3d;
|
||||
background-position: 0 -15px;
|
||||
}
|
||||
|
||||
.btn-primary:active,
|
||||
.btn-primary.active {
|
||||
background-color: #3d3d3d;
|
||||
border-color: #3d3d3d;
|
||||
}
|
||||
|
||||
.btn-primary.green {
|
||||
background-image: -webkit-linear-gradient(top, #62c362 0%, #5cb85c 100%);
|
||||
background-image: -o-linear-gradient(top, #62c362 0%, #5cb85c 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#62c362), to(#5cb85c));
|
||||
background-image: linear-gradient(to bottom, #62c362 0%, #5cb85c 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #5cb85c;
|
||||
}
|
||||
|
||||
.btn-primary.green:hover,
|
||||
.btn-primary.green:focus {
|
||||
background-color: #5cb85c;
|
||||
background-position: 0 -15px;
|
||||
}
|
||||
|
||||
.btn-primary.green:active,
|
||||
.btn-primary.green.active {
|
||||
background-color: #5cb85c;
|
||||
border-color: #5cb85c;
|
||||
}
|
||||
|
||||
.btn-primary.blue {
|
||||
background-image: -webkit-linear-gradient(top, #3e8ccc 0%, #377db6 100%);
|
||||
background-image: -o-linear-gradient(top, #3e8ccc 0%, #377db6 100%);
|
||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#3e8ccc), to(#377db6));
|
||||
background-image: linear-gradient(to bottom, #3e8ccc 0%, #377db6 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
|
||||
background-repeat: repeat-x;
|
||||
border-color: #377db6;
|
||||
}
|
||||
|
||||
.btn-primary.blue:hover,
|
||||
.btn-primary.blue:focus {
|
||||
background-color: #377db6;
|
||||
background-position: 0 -15px;
|
||||
}
|
||||
|
||||
.btn-primary.blue:active,
|
||||
.btn-primary.blue.active {
|
||||
background-color: #377db6;
|
||||
border-color: #377db6;
|
||||
}
|
||||
|
||||
.btn-primary.disabled,
|
||||
.btn-primary[disabled],
|
||||
fieldset[disabled] .btn-primary,
|
||||
.btn-primary.disabled:hover,
|
||||
.btn-primary[disabled]:hover,
|
||||
fieldset[disabled] .btn-primary:hover,
|
||||
.btn-primary.disabled:focus,
|
||||
.btn-primary[disabled]:focus,
|
||||
fieldset[disabled] .btn-primary:focus,
|
||||
.btn-primary.disabled.focus,
|
||||
.btn-primary[disabled].focus,
|
||||
fieldset[disabled] .btn-primary.focus,
|
||||
.btn-primary.disabled:active,
|
||||
.btn-primary[disabled]:active,
|
||||
fieldset[disabled] .btn-primary:active,
|
||||
.btn-primary.disabled.active,
|
||||
.btn-primary[disabled].active,
|
||||
fieldset[disabled] .btn-primary.active {
|
||||
background-color: #3d3d3d;
|
||||
background-image: none;
|
||||
}
|
||||
|
||||
.btn-default,
|
||||
.btn-primary,
|
||||
.btn-success,
|
||||
.btn-info,
|
||||
.btn-warning,
|
||||
.btn-danger {
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, .2);
|
||||
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
|
||||
box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
|
||||
}
|
||||
|
||||
.btn-default:active,
|
||||
.btn-primary:active,
|
||||
.btn-success:active,
|
||||
.btn-info:active,
|
||||
.btn-warning:active,
|
||||
.btn-danger:active,
|
||||
.btn-default.active,
|
||||
.btn-primary.active,
|
||||
.btn-success.active,
|
||||
.btn-info.active,
|
||||
.btn-warning.active,
|
||||
.btn-danger.active {
|
||||
-webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
|
||||
box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
|
||||
}
|
||||
|
||||
.form-signin .form-control {
|
||||
padding: 15px;
|
||||
border: 1px solid #e8e8e8;
|
||||
}
|
101
resources/assets/css/public.style.css
vendored
101
resources/assets/css/public.style.css
vendored
@ -1,17 +1,28 @@
|
||||
body {
|
||||
font-family: 'Roboto', sans-serif;
|
||||
font-size: 14px;
|
||||
background-color: #f8f8f8;
|
||||
background-color: #f0f0f0;
|
||||
}
|
||||
html {
|
||||
overflow-y: scroll;
|
||||
}
|
||||
|
||||
@media (min-width: 1400px) {
|
||||
.container {
|
||||
width: 1370px;
|
||||
}
|
||||
}
|
||||
|
||||
.navbar-header {
|
||||
padding-top: 4px;
|
||||
padding-bottom: 4px;
|
||||
}
|
||||
|
||||
.navbar-brand {
|
||||
height: 62px;
|
||||
padding: 21px 15px;
|
||||
}
|
||||
|
||||
.navbar li a {
|
||||
padding-top: 18px;
|
||||
font-weight: 500;
|
||||
@ -25,8 +36,56 @@ html {
|
||||
x-moz-box-shadow: 0 0 10px 2px rgba(0,0,0,.05);
|
||||
x-webkit-box-shadow: 0 0 10px 2px rgba(0,0,0,.05);
|
||||
box-shadow: 0 0 10px 2px rgba(0,0,0,.05);
|
||||
border-width: 0;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
.navbar-inverse .navbar-nav > li > a {
|
||||
font-weight: 400;
|
||||
text-transform: uppercase;
|
||||
border-top: 2px solid transparent;
|
||||
letter-spacing: 2px;
|
||||
font-size: 14px;
|
||||
color: #838181;
|
||||
}
|
||||
|
||||
.navbar-inverse .navbar-nav > .active > a,
|
||||
.navbar-inverse .navbar-nav > .active > a:hover,
|
||||
.navbar-inverse .navbar-nav > .active > a:focus {
|
||||
background: none;
|
||||
border-top-color: #42d165;
|
||||
}
|
||||
|
||||
@media (min-width: 768px) {
|
||||
.navbar-nav > li > a {
|
||||
padding: 24px 0 26px;
|
||||
margin: 0 10px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 1200px) {
|
||||
.navbar-nav > li > a {
|
||||
margin: 0 25px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 1220px) and (max-width: 1399px) {
|
||||
.navbar .container {
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 1420px) {
|
||||
.navbar .container {
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.navbar-nav > li > a:last-child {
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
|
||||
#footer {
|
||||
text-align: center
|
||||
}
|
||||
@ -195,3 +254,43 @@ table td {
|
||||
|
||||
/* hide table sorting indicators */
|
||||
table.data-table thead .sorting { background: url('') no-repeat center right; }
|
||||
|
||||
/* Make Success color match the Dashboard's green */
|
||||
.label-success,
|
||||
.progress-bar-success,
|
||||
.btn-success,
|
||||
.btn-success.disabled,
|
||||
.btn-success[disabled],
|
||||
fieldset[disabled] .btn-success,
|
||||
.btn-success.disabled:hover,
|
||||
.btn-success[disabled]:hover,
|
||||
fieldset[disabled] .btn-success:hover,
|
||||
.btn-success.disabled:focus,
|
||||
.btn-success[disabled]:focus,
|
||||
fieldset[disabled] .btn-success:focus,
|
||||
.btn-success.disabled.focus,
|
||||
.btn-success[disabled].focus,
|
||||
fieldset[disabled] .btn-success.focus,
|
||||
.btn-success.disabled:active,
|
||||
.btn-success[disabled]:active,
|
||||
fieldset[disabled] .btn-success:active,
|
||||
.btn-success.disabled.active,
|
||||
.btn-success[disabled].active,
|
||||
fieldset[disabled] .btn-success.active {
|
||||
background: #42d165;
|
||||
}
|
||||
|
||||
.btn-success .badge {
|
||||
color: #42d165;
|
||||
}
|
||||
|
||||
.btn-success:hover,
|
||||
.btn-success:focus,
|
||||
.btn-success.focus,
|
||||
.btn-success:active,
|
||||
.btn-success.active,
|
||||
.open > .dropdown-toggle.btn-success,
|
||||
.label-success[href]:hover,
|
||||
.label-success[href]:focus{
|
||||
background-color: #38b254;
|
||||
}
|
@ -2359,6 +2359,16 @@ $LANG = array(
|
||||
'reports_help' => 'Shift + Click to sort by multple columns, Ctrl + Click to clear the grouping.',
|
||||
'this_year' => 'This Year',
|
||||
|
||||
// Updated login screen
|
||||
'ninja_tagline' => 'Create. Send. Get Paid.',
|
||||
'login_or_existing' => 'Or login with an existing account.',
|
||||
'sign_up_now' => 'Sign Up Now',
|
||||
'not_a_member_yet' => 'Not a member yet?',
|
||||
'login_create_an_account' => 'Create an Account!',
|
||||
'client_login' => 'Client Login',
|
||||
|
||||
// New Client Portal styling
|
||||
'invoice_from' => 'Invoices From:',
|
||||
);
|
||||
|
||||
return $LANG;
|
||||
|
@ -1,165 +1,91 @@
|
||||
@extends('master')
|
||||
@extends('login')
|
||||
|
||||
@section('head')
|
||||
|
||||
<link href="{{ asset('css/bootstrap.min.css') }}" rel="stylesheet" type="text/css"/>
|
||||
<link href="{{ asset('css/built.public.min.css') }}" rel="stylesheet" type="text/css"/>
|
||||
|
||||
<style type="text/css">
|
||||
body {
|
||||
padding-top: 40px;
|
||||
padding-bottom: 40px;
|
||||
}
|
||||
.modal-header {
|
||||
border-top-left-radius: 3px;
|
||||
border-top-right-radius: 3px;
|
||||
background-color: #337ab7;
|
||||
}
|
||||
.modal-header h4 {
|
||||
margin:0;
|
||||
color:#fff;
|
||||
}
|
||||
.modal-header img {
|
||||
float: left;
|
||||
margin-right: 20px;
|
||||
}
|
||||
.form-signin {
|
||||
max-width: 400px;
|
||||
margin: 0 auto;
|
||||
background: #fff;
|
||||
}
|
||||
p.link a {
|
||||
font-size: 11px;
|
||||
}
|
||||
.form-signin .inner {
|
||||
padding: 20px;
|
||||
border-bottom-right-radius: 3px;
|
||||
border-bottom-left-radius: 3px;
|
||||
border-left: 1px solid #ddd;
|
||||
border-right: 1px solid #ddd;
|
||||
border-bottom: 1px solid #ddd;
|
||||
}
|
||||
.form-signin .checkbox {
|
||||
font-weight: normal;
|
||||
}
|
||||
.form-signin .form-control {
|
||||
margin-bottom: 17px !important;
|
||||
}
|
||||
.form-signin .form-control:focus {
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.modal-header a:link,
|
||||
.modal-header a:visited,
|
||||
.modal-header a:hover,
|
||||
.modal-header a:active {
|
||||
text-decoration: none;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.form-control {
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: 40px;
|
||||
padding: 9px 12px;
|
||||
font-size: 16px;
|
||||
line-height: 1.42857143;
|
||||
color: #000 !important;
|
||||
background: #f9f9f9 !important;
|
||||
background-image: none;
|
||||
border: 1px solid #dfe0e1;
|
||||
border-radius: 2px;
|
||||
-webkit-box-shadow: none;
|
||||
box-shadow: none;
|
||||
-webkit-transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s;
|
||||
transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
@endsection
|
||||
|
||||
@section('body')
|
||||
<div class="container">
|
||||
@section('form')
|
||||
|
||||
@include('partials.warn_session', ['redirectTo' => '/logout?reason=inactivity'])
|
||||
|
||||
{!! Former::open('login')
|
||||
->rules(['email' => 'required|email', 'password' => 'required'])
|
||||
->addClass('form-signin') !!}
|
||||
{{ Former::populateField('remember', 'true') }}
|
||||
<div class="container">
|
||||
|
||||
<div class="modal-header">
|
||||
@if (Utils::isWhiteLabel())
|
||||
<h4>{{ trans('texts.account_login') }}</h4>
|
||||
@else
|
||||
<a href="{{ NINJA_WEB_URL }}" target="_blank">
|
||||
<img src="{{ asset('images/icon-login.png') }}" />
|
||||
<h4>Invoice Ninja | {{ trans('texts.account_login') }}</h4>
|
||||
</a>
|
||||
{!! Former::open('login')
|
||||
->rules(['email' => 'required|email', 'password' => 'required'])
|
||||
->addClass('form-signin') !!}
|
||||
|
||||
<h2 class="form-signin-heading">{{ trans('texts.account_login') }}</h2>
|
||||
<hr class="green">
|
||||
|
||||
@if (count($errors->all()))
|
||||
<div class="alert alert-danger">
|
||||
@foreach ($errors->all() as $error)
|
||||
<li>{{ $error }}</li>
|
||||
@endforeach
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
<div class="inner">
|
||||
<p>
|
||||
{!! Former::text('email')->placeholder(trans('texts.email_address'))->raw() !!}
|
||||
{!! Former::password('password')->placeholder(trans('texts.password'))->raw() !!}
|
||||
{!! Former::hidden('remember')->raw() !!}
|
||||
</p>
|
||||
|
||||
<p>{!! Button::success(trans('texts.login'))
|
||||
->withAttributes(['id' => 'loginButton'])
|
||||
->large()->submit()->block() !!}</p>
|
||||
@if (Session::has('warning'))
|
||||
<div class="alert alert-warning">{!! Session::get('warning') !!}</div>
|
||||
@endif
|
||||
|
||||
@if (Input::get('new_company') && Utils::allowNewAccounts())
|
||||
{!! Former::hidden('link_accounts')->value('true') !!}
|
||||
<center><p>- {{ trans('texts.or') }} -</p></center>
|
||||
<p>{!! Button::primary(trans('texts.new_company'))->asLinkTo(URL::to('/invoice_now?new_company=true&sign_up=true'))->large()->submit()->block() !!}</p><br/>
|
||||
@elseif (Utils::isOAuthEnabled())
|
||||
<center><p>- {{ trans('texts.or') }} -</p></center>
|
||||
<div class="row">
|
||||
@if (Session::has('message'))
|
||||
<div class="alert alert-info">{!! Session::get('message') !!}</div>
|
||||
@endif
|
||||
|
||||
@if (Session::has('error'))
|
||||
<div class="alert alert-danger">
|
||||
<li>{!! Session::get('error') !!}</li>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
{{ Former::populateField('remember', 'true') }}
|
||||
|
||||
<div>
|
||||
{!! Former::text('email')->placeholder(trans('texts.email_address'))->raw() !!}
|
||||
{!! Former::password('password')->placeholder(trans('texts.password'))->raw() !!}
|
||||
</div>
|
||||
{!! Former::hidden('remember')->raw() !!}
|
||||
|
||||
{!! Button::success(trans('texts.login'))
|
||||
->withAttributes(['id' => 'loginButton', 'class' => 'green'])
|
||||
->large()->submit()->block() !!}
|
||||
|
||||
@if (Utils::isOAuthEnabled())
|
||||
<div class="row existing-accounts">
|
||||
<p>{{ trans('texts.login_or_existing') }}</p>
|
||||
@foreach (App\Services\AuthService::$providers as $provider)
|
||||
<div class="col-md-6">
|
||||
<a href="{{ URL::to('auth/' . $provider) }}" class="btn btn-primary btn-block social-login-button" id="{{ strtolower($provider) }}LoginButton">
|
||||
<i class="fa fa-{{ strtolower($provider) }}"></i>
|
||||
{{ $provider }}
|
||||
</a><br/>
|
||||
<div class="col-md-3 col-xs-6">
|
||||
<a href="{{ URL::to('auth/' . $provider) }}" class="btn btn-primary btn-lg"
|
||||
id="{{ strtolower($provider) }}LoginButton">
|
||||
@if($provider == SOCIAL_GITHUB)
|
||||
<i class="fa fa-github-alt"></i>
|
||||
@else
|
||||
<i class="fa fa-{{ strtolower($provider) }}"></i>
|
||||
@endif
|
||||
</a>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<p class="link">
|
||||
{!! link_to('/recover_password', trans('texts.recover_password'), ['class' => 'pull-left']) !!}
|
||||
{!! link_to(NINJA_WEB_URL.'/knowledgebase/', trans('texts.knowledge_base'), ['target' => '_blank', 'class' => 'pull-right']) !!}
|
||||
</p>
|
||||
<br/>
|
||||
|
||||
@if (count($errors->all()))
|
||||
<div class="alert alert-danger">
|
||||
@foreach ($errors->all() as $error)
|
||||
<li>{{ $error }}</li>
|
||||
@endforeach
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@if (Session::has('warning'))
|
||||
<div class="alert alert-warning">{!! Session::get('warning') !!}</div>
|
||||
@endif
|
||||
|
||||
@if (Session::has('message'))
|
||||
<div class="alert alert-info">{!! Session::get('message') !!}</div>
|
||||
@endif
|
||||
|
||||
@if (Session::has('error'))
|
||||
<div class="alert alert-danger"><li>{!! Session::get('error') !!}</li></div>
|
||||
@endif
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="row meta">
|
||||
<div class="col-md-7 col-sm-12">
|
||||
{!! link_to('/recover_password', trans('texts.recover_password')) !!}
|
||||
</div>
|
||||
<div class="col-md-5 col-sm-12">
|
||||
{!! link_to(NINJA_WEB_URL.'/knowledgebase/', trans('texts.knowledge_base'), ['target' => '_blank']) !!}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{!! Former::close() !!}
|
||||
|
||||
<p/>
|
||||
|
||||
@if(Utils::allowNewAccounts())
|
||||
<div class="row sign-up">
|
||||
<div class="col-md-3 col-md-offset-3 col-xs-12">
|
||||
<h3>{{trans('texts.not_a_member_yet')}}</h3>
|
||||
<p>{{trans('texts.login_create_an_account')}}</p>
|
||||
</div>
|
||||
<div class="col-md-3 col-xs-12">
|
||||
{!! Button::primary(trans('texts.sign_up_now'))->asLinkTo(URL::to('/invoice_now?sign_up=true'))->withAttributes(['class' => 'blue'])->large()->submit()->block() !!}
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
|
||||
|
@ -1,99 +1,12 @@
|
||||
@extends('master')
|
||||
@extends('login')
|
||||
|
||||
@section('head')
|
||||
|
||||
<link href="{{ asset('css/bootstrap.min.css') }}" rel="stylesheet" type="text/css"/>
|
||||
<link href="{{ asset('css/built.public.min.css') }}" rel="stylesheet" type="text/css"/>
|
||||
|
||||
<style type="text/css">
|
||||
body {
|
||||
padding-top: 40px;
|
||||
padding-bottom: 40px;
|
||||
}
|
||||
.modal-header {
|
||||
border-top-left-radius: 3px;
|
||||
border-top-right-radius: 3px;
|
||||
background-color: #337ab7;
|
||||
color: #FFf;
|
||||
}
|
||||
.modal-header h4 {
|
||||
margin:0;
|
||||
}
|
||||
.modal-header img {
|
||||
float: left;
|
||||
margin-right: 20px;
|
||||
}
|
||||
.form-signin {
|
||||
max-width: 400px;
|
||||
margin: 0 auto;
|
||||
background: #fff;
|
||||
}
|
||||
p.link a {
|
||||
font-size: 11px;
|
||||
}
|
||||
.form-signin .inner {
|
||||
padding: 20px;
|
||||
border-bottom-right-radius: 3px;
|
||||
border-bottom-left-radius: 3px;
|
||||
border-left: 1px solid #ddd;
|
||||
border-right: 1px solid #ddd;
|
||||
border-bottom: 1px solid #ddd;
|
||||
}
|
||||
.form-signin .checkbox {
|
||||
font-weight: normal;
|
||||
}
|
||||
.form-signin .form-control {
|
||||
margin-bottom: 17px !important;
|
||||
}
|
||||
.form-signin .form-control:focus {
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.form-control {
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: 40px;
|
||||
padding: 9px 12px;
|
||||
font-size: 16px;
|
||||
line-height: 1.42857143;
|
||||
color: #000 !important;
|
||||
background: #f9f9f9 !important;
|
||||
background-image: none;
|
||||
border: 1px solid #dfe0e1;
|
||||
border-radius: 2px;
|
||||
-webkit-box-shadow: none;
|
||||
box-shadow: none;
|
||||
-webkit-transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s;
|
||||
transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
@stop
|
||||
|
||||
@section('body')
|
||||
@section('form')
|
||||
<div class="container">
|
||||
|
||||
{!! Former::open('recover_password')->rules(['email' => 'required|email'])->addClass('form-signin') !!}
|
||||
<div class="modal-header">
|
||||
@if (Utils::isWhiteLabel())
|
||||
<h4>{{ trans('texts.password_recovery') }}</h4>
|
||||
@else
|
||||
<a href="{{ NINJA_WEB_URL }}" target="_blank">
|
||||
<img src="{{ asset('images/icon-login.png') }}" />
|
||||
</a>
|
||||
<h4>Invoice Ninja | {{ trans('texts.password_recovery') }}</h4>
|
||||
@endif
|
||||
</div>
|
||||
<div class="inner">
|
||||
|
||||
<p>
|
||||
{!! Former::text('email')->placeholder(trans('texts.email_address'))->raw() !!}
|
||||
</p>
|
||||
|
||||
<p>
|
||||
{!! Button::success(trans('texts.send_email'))->large()->submit()->block() !!}
|
||||
</p>
|
||||
<h2 class="form-signin-heading">{{ trans('texts.password_recovery') }}</h2>
|
||||
<hr class="green">
|
||||
|
||||
@if (count($errors->all()))
|
||||
<div class="alert alert-danger">
|
||||
@ -111,21 +24,25 @@
|
||||
|
||||
<!-- if there are login errors, show them here -->
|
||||
@if (Session::has('warning'))
|
||||
<div class="alert alert-warning">{{ Session::get('warning') }}</div>
|
||||
<div class="alert alert-warning">{{ Session::get('warning') }}</div>
|
||||
@endif
|
||||
|
||||
@if (Session::has('message'))
|
||||
<div class="alert alert-info">{{ Session::get('message') }}</div>
|
||||
<div class="alert alert-info">{{ Session::get('message') }}</div>
|
||||
@endif
|
||||
|
||||
@if (Session::has('error'))
|
||||
<div class="alert alert-danger">{{ Session::get('error') }}</div>
|
||||
<div class="alert alert-danger">{{ Session::get('error') }}</div>
|
||||
@endif
|
||||
|
||||
<div>
|
||||
{!! Former::text('email')->placeholder(trans('texts.email_address'))->raw() !!}
|
||||
</div>
|
||||
{!! Button::success(trans('texts.send_email'))->large()->submit()->withAttributes(['class' => 'green'])->block() !!}
|
||||
|
||||
{!! Former::close() !!}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
|
@ -1,77 +1,6 @@
|
||||
@extends('master')
|
||||
@extends('login')
|
||||
|
||||
@section('head')
|
||||
|
||||
<link href="{{ asset('css/bootstrap.min.css') }}" rel="stylesheet" type="text/css"/>
|
||||
<link href="{{ asset('css/built.public.min.css') }}" rel="stylesheet" type="text/css"/>
|
||||
|
||||
<style type="text/css">
|
||||
body {
|
||||
padding-top: 40px;
|
||||
padding-bottom: 40px;
|
||||
}
|
||||
.modal-header {
|
||||
border-top-left-radius: 3px;
|
||||
border-top-right-radius: 3px;
|
||||
background-color: #337ab7;
|
||||
color: #FFF;
|
||||
}
|
||||
.modal-header h4 {
|
||||
margin:0;
|
||||
}
|
||||
.modal-header img {
|
||||
float: left;
|
||||
margin-right: 20px;
|
||||
}
|
||||
.form-signin {
|
||||
max-width: 400px;
|
||||
margin: 0 auto;
|
||||
background: #fff;
|
||||
}
|
||||
p.link a {
|
||||
font-size: 11px;
|
||||
}
|
||||
.form-signin .inner {
|
||||
padding: 20px;
|
||||
border-bottom-right-radius: 3px;
|
||||
border-bottom-left-radius: 3px;
|
||||
border-left: 1px solid #ddd;
|
||||
border-right: 1px solid #ddd;
|
||||
border-bottom: 1px solid #ddd;
|
||||
}
|
||||
.form-signin .checkbox {
|
||||
font-weight: normal;
|
||||
}
|
||||
.form-signin .form-control {
|
||||
margin-bottom: 17px !important;
|
||||
}
|
||||
.form-signin .form-control:focus {
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.form-control {
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: 40px;
|
||||
padding: 9px 12px;
|
||||
font-size: 16px;
|
||||
line-height: 1.42857143;
|
||||
color: #000 !important;
|
||||
background: #f9f9f9 !important;
|
||||
background-image: none;
|
||||
border: 1px solid #dfe0e1;
|
||||
border-radius: 2px;
|
||||
-webkit-box-shadow: none;
|
||||
box-shadow: none;
|
||||
-webkit-transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s;
|
||||
transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
@stop
|
||||
|
||||
@section('body')
|
||||
@section('form')
|
||||
<div class="container">
|
||||
|
||||
{!! Former::open('/password/reset')->addClass('form-signin')->rules(array(
|
||||
@ -79,22 +8,8 @@
|
||||
'password_confirmation' => 'required',
|
||||
)) !!}
|
||||
|
||||
<div class="modal-header">
|
||||
<img src="{{ asset('images/icon-login.png') }}" />
|
||||
<h4>Invoice Ninja | {{ trans('texts.set_password') }}</h4></div>
|
||||
<div class="inner">
|
||||
|
||||
<input type="hidden" name="token" value="{{{ $token }}}">
|
||||
|
||||
<p>
|
||||
{!! Former::text('email')->placeholder(trans('texts.email'))->raw() !!}
|
||||
{!! Former::password('password')->placeholder(trans('texts.password'))->raw() !!}
|
||||
{!! Former::password('password_confirmation')->placeholder(trans('texts.confirm_password'))->raw() !!}
|
||||
|
||||
</p>
|
||||
|
||||
<p>{!! Button::success(trans('texts.save'))->large()->submit()->block() !!}</p>
|
||||
|
||||
<h2 class="form-signin-heading">{{ trans('texts.set_password') }}</h2>
|
||||
<hr class="green">
|
||||
|
||||
@if (count($errors->all()))
|
||||
<div class="alert alert-danger">
|
||||
@ -106,27 +21,34 @@
|
||||
|
||||
<!-- if there are login errors, show them here -->
|
||||
@if (Session::has('warning'))
|
||||
<div class="alert alert-warning">{{ Session::get('warning') }}</div>
|
||||
<div class="alert alert-warning">{{ Session::get('warning') }}</div>
|
||||
@endif
|
||||
|
||||
@if (Session::has('message'))
|
||||
<div class="alert alert-info">{{ Session::get('message') }}</div>
|
||||
<div class="alert alert-info">{{ Session::get('message') }}</div>
|
||||
@endif
|
||||
|
||||
@if (Session::has('error'))
|
||||
<div class="alert alert-danger">{{ Session::get('error') }}</div>
|
||||
<div class="alert alert-danger">{{ Session::get('error') }}</div>
|
||||
@endif
|
||||
|
||||
<input type="hidden" name="token" value="{{{ $token }}}">
|
||||
|
||||
<div>
|
||||
{!! Former::text('email')->placeholder(trans('texts.email'))->raw() !!}
|
||||
{!! Former::password('password')->placeholder(trans('texts.password'))->raw() !!}
|
||||
{!! Former::password('password_confirmation')->placeholder(trans('texts.confirm_password'))->raw() !!}
|
||||
</div>
|
||||
|
||||
<p>{!! Button::success(trans('texts.save'))->large()->submit()->withAttributes(['class' => 'green'])->block() !!}</p>
|
||||
|
||||
|
||||
{!! Former::close() !!}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
$('#email').focus();
|
||||
})
|
||||
</script>
|
||||
|
||||
@stop
|
||||
@endsection
|
||||
|
@ -1,120 +1,67 @@
|
||||
@extends('public.header')
|
||||
@extends('login')
|
||||
|
||||
@section('head')
|
||||
@parent
|
||||
<style type="text/css">
|
||||
body {
|
||||
padding-top: 40px;
|
||||
padding-bottom: 40px;
|
||||
}
|
||||
.modal-header {
|
||||
border-top-left-radius: 3px;
|
||||
border-top-right-radius: 3px;
|
||||
background:#222;
|
||||
color:#fff
|
||||
}
|
||||
.modal-header h4 {
|
||||
margin:0;
|
||||
}
|
||||
.modal-header img {
|
||||
float: left;
|
||||
margin-right: 20px;
|
||||
}
|
||||
.form-signin {
|
||||
max-width: 400px;
|
||||
margin: 0 auto;
|
||||
background: #fff;
|
||||
}
|
||||
p.link a {
|
||||
font-size: 11px;
|
||||
}
|
||||
.form-signin .inner {
|
||||
padding: 20px;
|
||||
border-bottom-right-radius: 3px;
|
||||
border-bottom-left-radius: 3px;
|
||||
border-left: 1px solid #ddd;
|
||||
border-right: 1px solid #ddd;
|
||||
border-bottom: 1px solid #ddd;
|
||||
}
|
||||
.form-signin .checkbox {
|
||||
font-weight: normal;
|
||||
}
|
||||
.form-signin .form-control {
|
||||
margin-bottom: 17px !important;
|
||||
}
|
||||
.form-signin .form-control:focus {
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.modal-header a:link,
|
||||
.modal-header a:visited,
|
||||
.modal-header a:hover,
|
||||
.modal-header a:active {
|
||||
text-decoration: none;
|
||||
color: white;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
@endsection
|
||||
|
||||
@section('body')
|
||||
<div class="container">
|
||||
@section('form')
|
||||
|
||||
@include('partials.warn_session', ['redirectTo' => '/client/sessionexpired'])
|
||||
|
||||
{!! Former::open('client/login')
|
||||
<div class="container">
|
||||
|
||||
{!! Former::open('client/login')
|
||||
->rules(['password' => 'required'])
|
||||
->addClass('form-signin') !!}
|
||||
{{ Former::populateField('remember', 'true') }}
|
||||
|
||||
<div class="modal-header">
|
||||
@if (!isset($account) || !$account->hasFeature(FEATURE_WHITE_LABEL))
|
||||
<a href="{{ NINJA_WEB_URL }}" target="_blank">
|
||||
<img src="{{ asset('images/icon-login.png') }}" />
|
||||
<h4>Invoice Ninja | {{ trans('texts.account_login') }}</h4>
|
||||
</a>
|
||||
@else
|
||||
<h4>{{ trans('texts.account_login') }}</h4>
|
||||
<h2 class="form-signin-heading">{{ trans('texts.client_login') }}</h2>
|
||||
<hr class="green">
|
||||
|
||||
|
||||
@if (count($errors->all()))
|
||||
<div class="alert alert-danger">
|
||||
@foreach ($errors->all() as $error)
|
||||
<li>{{ $error }}</li>
|
||||
@endforeach
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
<div class="inner">
|
||||
<p>
|
||||
{!! Former::password('password')->placeholder(trans('texts.password'))->raw() !!}
|
||||
{!! Former::hidden('remember')->raw() !!}
|
||||
</p>
|
||||
|
||||
<p>{!! Button::success(trans('texts.login'))
|
||||
->withAttributes(['id' => 'loginButton'])
|
||||
->large()->submit()->block() !!}</p>
|
||||
|
||||
<p class="link">
|
||||
{!! link_to('/client/recover_password', trans('texts.recover_password')) !!}
|
||||
</p>
|
||||
|
||||
|
||||
@if (count($errors->all()))
|
||||
<div class="alert alert-danger">
|
||||
@foreach ($errors->all() as $error)
|
||||
<li>{{ $error }}</li>
|
||||
@endforeach
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@if (Session::has('warning'))
|
||||
@if (Session::has('warning'))
|
||||
<div class="alert alert-warning">{{ Session::get('warning') }}</div>
|
||||
@endif
|
||||
@endif
|
||||
|
||||
@if (Session::has('message'))
|
||||
@if (Session::has('message'))
|
||||
<div class="alert alert-info">{{ Session::get('message') }}</div>
|
||||
@endif
|
||||
@endif
|
||||
|
||||
@if (Session::has('error'))
|
||||
@if (Session::has('error'))
|
||||
<div class="alert alert-danger"><li>{{ Session::get('error') }}</li></div>
|
||||
@endif
|
||||
@endif
|
||||
|
||||
{{ Former::populateField('remember', 'true') }}
|
||||
|
||||
<div>
|
||||
{!! Former::password('password')->placeholder(trans('texts.password'))->raw() !!}
|
||||
</div>
|
||||
{!! Former::hidden('remember')->raw() !!}
|
||||
|
||||
{!! Button::success(trans('texts.login'))
|
||||
->withAttributes(['id' => 'loginButton', 'class' => 'green'])
|
||||
->large()->submit()->block() !!}
|
||||
|
||||
<div class="row meta">
|
||||
<div class="col-md-7 col-sm-12">
|
||||
{!! link_to('/client/recover_password', trans('texts.recover_password')) !!}
|
||||
</div>
|
||||
</div>
|
||||
{!! Former::close() !!}
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
if ($('#email').val()) {
|
||||
$('#password').focus();
|
||||
} else {
|
||||
$('#email').focus();
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
@endsection
|
||||
|
@ -1,116 +1,44 @@
|
||||
@extends('public.header')
|
||||
@extends('login')
|
||||
|
||||
@section('head')
|
||||
@parent
|
||||
<style type="text/css">
|
||||
body {
|
||||
padding-top: 40px;
|
||||
padding-bottom: 40px;
|
||||
}
|
||||
.modal-header {
|
||||
border-top-left-radius: 3px;
|
||||
border-top-right-radius: 3px;
|
||||
background:#222;
|
||||
color:#fff
|
||||
}
|
||||
.modal-header h4 {
|
||||
margin:0;
|
||||
}
|
||||
.modal-header img {
|
||||
float: left;
|
||||
margin-right: 20px;
|
||||
}
|
||||
.form-signin {
|
||||
max-width: 400px;
|
||||
margin: 0 auto;
|
||||
background: #fff;
|
||||
}
|
||||
p.link a {
|
||||
font-size: 11px;
|
||||
}
|
||||
.form-signin .inner {
|
||||
padding: 20px;
|
||||
border-bottom-right-radius: 3px;
|
||||
border-bottom-left-radius: 3px;
|
||||
border-left: 1px solid #ddd;
|
||||
border-right: 1px solid #ddd;
|
||||
border-bottom: 1px solid #ddd;
|
||||
}
|
||||
.form-signin .checkbox {
|
||||
font-weight: normal;
|
||||
}
|
||||
.form-signin .form-control {
|
||||
margin-bottom: 17px !important;
|
||||
}
|
||||
.form-signin .form-control:focus {
|
||||
z-index: 2;
|
||||
}
|
||||
@section('form')
|
||||
@include('partials.warn_session', ['redirectTo' => '/client/sessionexpired'])
|
||||
<div class="container">
|
||||
{!! Former::open('client/recover_password')->addClass('form-signin') !!}
|
||||
|
||||
.modal-header a:link,
|
||||
.modal-header a:visited,
|
||||
.modal-header a:hover,
|
||||
.modal-header a:active {
|
||||
text-decoration: none;
|
||||
color: white;
|
||||
}
|
||||
</style>
|
||||
<h2 class="form-signin-heading">{{ trans('texts.password_recovery') }}</h2>
|
||||
<hr class="green">
|
||||
|
||||
@stop
|
||||
|
||||
@section('body')
|
||||
<div class="container">
|
||||
|
||||
{!! Former::open('client/recover_password')->addClass('form-signin') !!}
|
||||
<div class="modal-header">
|
||||
@if (!isset($account) || !$account->hasFeature(FEATURE_WHITE_LABEL))
|
||||
<a href="{{ NINJA_WEB_URL }}" target="_blank">
|
||||
<img src="{{ asset('images/icon-login.png') }}" />
|
||||
<h4>Invoice Ninja | {{ trans('texts.password_recovery') }}</h4>
|
||||
</a>
|
||||
@else
|
||||
<h4>{{ trans('texts.password_recovery') }}</h4>
|
||||
@if (count($errors->all()))
|
||||
<div class="alert alert-danger">
|
||||
@foreach ($errors->all() as $error)
|
||||
<li>{{ $error }}</li>
|
||||
@endforeach
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@if (session('status'))
|
||||
<div class="alert alert-info">
|
||||
{{ session('status') }}
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<!-- if there are login errors, show them here -->
|
||||
@if (Session::has('warning'))
|
||||
<div class="alert alert-warning">{{ Session::get('warning') }}</div>
|
||||
@endif
|
||||
|
||||
@if (Session::has('message'))
|
||||
<div class="alert alert-info">{{ Session::get('message') }}</div>
|
||||
@endif
|
||||
|
||||
@if (Session::has('error'))
|
||||
<div class="alert alert-danger">{{ Session::get('error') }}</div>
|
||||
@endif
|
||||
|
||||
{!! Button::success(trans('texts.send_email'))
|
||||
->withAttributes(['class' => 'green'])
|
||||
->large()->submit()->block() !!}
|
||||
|
||||
{!! Former::close() !!}
|
||||
</div>
|
||||
<div class="inner">
|
||||
|
||||
<p>{!! Button::success(trans('texts.send_email'))->large()->submit()->block() !!}</p>
|
||||
|
||||
@if (count($errors->all()))
|
||||
<div class="alert alert-danger">
|
||||
@foreach ($errors->all() as $error)
|
||||
<li>{{ $error }}</li>
|
||||
@endforeach
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@if (session('status'))
|
||||
<div class="alert alert-info">
|
||||
{{ session('status') }}
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<!-- if there are login errors, show them here -->
|
||||
@if (Session::has('warning'))
|
||||
<div class="alert alert-warning">{{ Session::get('warning') }}</div>
|
||||
@endif
|
||||
|
||||
@if (Session::has('message'))
|
||||
<div class="alert alert-info">{{ Session::get('message') }}</div>
|
||||
@endif
|
||||
|
||||
@if (Session::has('error'))
|
||||
<div class="alert alert-danger">{{ Session::get('error') }}</div>
|
||||
@endif
|
||||
|
||||
{!! Former::close() !!}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
$('#email').focus();
|
||||
})
|
||||
</script>
|
||||
|
||||
@stop
|
||||
@endsection
|
@ -1,119 +1,52 @@
|
||||
@extends('public.header')
|
||||
@extends('login')
|
||||
|
||||
@section('head')
|
||||
@parent
|
||||
<style type="text/css">
|
||||
body {
|
||||
padding-top: 40px;
|
||||
padding-bottom: 40px;
|
||||
}
|
||||
.modal-header {
|
||||
border-top-left-radius: 3px;
|
||||
border-top-right-radius: 3px;
|
||||
background:#222;
|
||||
color:#fff
|
||||
}
|
||||
.modal-header h4 {
|
||||
margin:0;
|
||||
}
|
||||
.modal-header img {
|
||||
float: left;
|
||||
margin-right: 20px;
|
||||
}
|
||||
.form-signin {
|
||||
max-width: 400px;
|
||||
margin: 0 auto;
|
||||
background: #fff;
|
||||
}
|
||||
p.link a {
|
||||
font-size: 11px;
|
||||
}
|
||||
.form-signin .inner {
|
||||
padding: 20px;
|
||||
border-bottom-right-radius: 3px;
|
||||
border-bottom-left-radius: 3px;
|
||||
border-left: 1px solid #ddd;
|
||||
border-right: 1px solid #ddd;
|
||||
border-bottom: 1px solid #ddd;
|
||||
}
|
||||
.form-signin .checkbox {
|
||||
font-weight: normal;
|
||||
}
|
||||
.form-signin .form-control {
|
||||
margin-bottom: 17px !important;
|
||||
}
|
||||
.form-signin .form-control:focus {
|
||||
z-index: 2;
|
||||
}
|
||||
@section('form')
|
||||
<div class="container">
|
||||
|
||||
.modal-header a:link,
|
||||
.modal-header a:visited,
|
||||
.modal-header a:hover,
|
||||
.modal-header a:active {
|
||||
text-decoration: none;
|
||||
color: white;
|
||||
}
|
||||
</style>
|
||||
{!! Former::open('/client/password/reset')->addClass('form-signin')->rules(array(
|
||||
'password' => 'required',
|
||||
'password_confirmation' => 'required',
|
||||
)) !!}
|
||||
|
||||
@stop
|
||||
<h2 class="form-signin-heading">{{ trans('texts.set_password') }}</h2>
|
||||
<hr class="green">
|
||||
|
||||
@section('body')
|
||||
<div class="container">
|
||||
|
||||
{!! Former::open('/client/password/reset')->addClass('form-signin')->rules(array(
|
||||
'password' => 'required',
|
||||
'password_confirmation' => 'required',
|
||||
)) !!}
|
||||
|
||||
<div class="modal-header">
|
||||
@if (!isset($account) || !$account->hasFeature(FEATURE_WHITE_LABEL))
|
||||
<a href="{{ NINJA_WEB_URL }}" target="_blank">
|
||||
<img src="{{ asset('images/icon-login.png') }}" />
|
||||
<h4>Invoice Ninja | {{ trans('texts.set_password') }}</h4>
|
||||
</a>
|
||||
@else
|
||||
<h4>{{ trans('texts.set_password') }}</h4>
|
||||
@if (count($errors->all()))
|
||||
<div class="alert alert-danger">
|
||||
@foreach ($errors->all() as $error)
|
||||
<li>{{ $error }}</li>
|
||||
@endforeach
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
<div class="inner">
|
||||
|
||||
<input type="hidden" name="token" value="{{{ $token }}}">
|
||||
<input type="hidden" name="contact_key" value="{{{ $contact_key }}}">
|
||||
|
||||
<p>
|
||||
{!! Former::password('password')->placeholder(trans('texts.password'))->raw() !!}
|
||||
{!! Former::password('password_confirmation')->placeholder(trans('texts.confirm_password'))->raw() !!}
|
||||
|
||||
</p>
|
||||
|
||||
<p>{!! Button::success(trans('texts.save'))->large()->submit()->block() !!}</p>
|
||||
|
||||
|
||||
@if (count($errors->all()))
|
||||
<div class="alert alert-danger">
|
||||
@foreach ($errors->all() as $error)
|
||||
<li>{{ $error }}</li>
|
||||
@endforeach
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<!-- if there are login errors, show them here -->
|
||||
@if (Session::has('warning'))
|
||||
<div class="alert alert-warning">{{ Session::get('warning') }}</div>
|
||||
@endif
|
||||
@if (Session::has('warning'))
|
||||
<div class="alert alert-warning">{{ Session::get('warning') }}</div>
|
||||
@endif
|
||||
|
||||
@if (Session::has('message'))
|
||||
<div class="alert alert-info">{{ Session::get('message') }}</div>
|
||||
@endif
|
||||
@if (Session::has('message'))
|
||||
<div class="alert alert-info">{{ Session::get('message') }}</div>
|
||||
@endif
|
||||
|
||||
@if (Session::has('error'))
|
||||
<div class="alert alert-danger">{{ Session::get('error') }}</div>
|
||||
@endif
|
||||
@if (Session::has('error'))
|
||||
<div class="alert alert-danger">{{ Session::get('error') }}</div>
|
||||
@endif
|
||||
|
||||
<input type="hidden" name="token" value="{{{ $token }}}">
|
||||
<input type="hidden" name="contact_key" value="{{{ $contact_key }}}">
|
||||
|
||||
{!! Former::close() !!}
|
||||
</div>
|
||||
<div>
|
||||
{!! Former::password('password')->placeholder(trans('texts.password'))->raw() !!}
|
||||
{!! Former::password('password_confirmation')->placeholder(trans('texts.confirm_password'))->raw() !!}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@stop
|
||||
<p>{!! Button::success(trans('texts.save'))->large()->submit()->withAttributes(['class' => 'green'])->block() !!}</p>
|
||||
|
||||
{!! Former::close() !!}
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
$(function () {
|
||||
$('#password').focus();
|
||||
})
|
||||
</script>
|
||||
@endsection
|
@ -1,72 +1,8 @@
|
||||
@extends('public.header')
|
||||
|
||||
@section('head')
|
||||
@parent
|
||||
<style type="text/css">
|
||||
body {
|
||||
padding-top: 40px;
|
||||
padding-bottom: 40px;
|
||||
}
|
||||
.modal-header {
|
||||
border-top-left-radius: 3px;
|
||||
border-top-right-radius: 3px;
|
||||
background:#222;
|
||||
color:#fff
|
||||
}
|
||||
.modal-header h4 {
|
||||
margin:0;
|
||||
}
|
||||
.modal-header img {
|
||||
float: left;
|
||||
margin-right: 20px;
|
||||
}
|
||||
.form-signin {
|
||||
max-width: 400px;
|
||||
margin: 0 auto;
|
||||
background: #fff;
|
||||
}
|
||||
p.link a {
|
||||
font-size: 11px;
|
||||
}
|
||||
.form-signin .inner {
|
||||
padding: 20px;
|
||||
border-bottom-right-radius: 3px;
|
||||
border-bottom-left-radius: 3px;
|
||||
border-left: 1px solid #ddd;
|
||||
border-right: 1px solid #ddd;
|
||||
border-bottom: 1px solid #ddd;
|
||||
}
|
||||
.form-signin .checkbox {
|
||||
font-weight: normal;
|
||||
}
|
||||
.form-signin .form-control {
|
||||
margin-bottom: 17px !important;
|
||||
}
|
||||
.form-signin .form-control:focus {
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.modal-header a:link,
|
||||
.modal-header a:visited,
|
||||
.modal-header a:hover,
|
||||
.modal-header a:active {
|
||||
text-decoration: none;
|
||||
color: white;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
@endsection
|
||||
|
||||
@section('body')
|
||||
<div class="container">
|
||||
<div class="form-signin">
|
||||
<div class="modal-header">
|
||||
<h4>{{ trans('texts.session_expired') }}</h4>
|
||||
</div>
|
||||
<div class="inner">
|
||||
<div class="alert alert-info">{{ trans('texts.client_session_expired_message') }}</div>
|
||||
</div>
|
||||
</div>
|
||||
@extends('login')
|
||||
@section('form')
|
||||
<div class="form-signin">
|
||||
<h2 class="form-signin-heading">{{ trans('texts.session_expired') }}</h2>
|
||||
<hr class="green">
|
||||
<div><center>{{ trans('texts.client_session_expired_message') }}</center></div>
|
||||
</div>
|
||||
@endsection
|
||||
@endsection
|
@ -3,7 +3,9 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<!--[if !mso]><!-- -->
|
||||
<link href="{{ isset($account) ? $account->getFontsUrl('http') : '' }}" rel="stylesheet" type="text/css" />
|
||||
@if($fontsUrl = Utils::getAccountFontsUrl())
|
||||
<link href="{{ $fontsUrl }}" rel="stylesheet" type="text/css" />
|
||||
@endif
|
||||
<!--<![endif]-->
|
||||
</head>
|
||||
<body style="color: #000000;{!! isset($account) ? $account->getBodyFontCss() : '' !!}font-size: 12px; -webkit-text-size-adjust: none; -ms-text-size-adjust: none; background: #F4F5F5; margin: 0; padding: 0;"
|
||||
|
@ -12,58 +12,246 @@
|
||||
min-height: 700px;
|
||||
}
|
||||
|
||||
div.row {
|
||||
padding-top: 2em;
|
||||
padding-bottom: 2em;
|
||||
#main-row {
|
||||
background: #fff;
|
||||
line-height: 1.5;
|
||||
position: relative;
|
||||
margin-top: 50px;
|
||||
margin-bottom: 50px;
|
||||
}
|
||||
|
||||
#main-row > div {
|
||||
padding: 25px;
|
||||
position: static;
|
||||
}
|
||||
|
||||
@media (max-width: 991px) {
|
||||
#contact-details {
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 992px) {
|
||||
#main-row,
|
||||
#account-row {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
#main-row {
|
||||
margin-top: 100px;
|
||||
margin-bottom: 100px;
|
||||
}
|
||||
}
|
||||
|
||||
#main-row h3 {
|
||||
font-weight: 700;
|
||||
color: #424343;
|
||||
margin-top: 0;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
#main-row,
|
||||
#main-row a,
|
||||
#account-row,
|
||||
#account-row a {
|
||||
color: #838181;
|
||||
}
|
||||
|
||||
#main-row .amount-label {
|
||||
color: #868787;
|
||||
font-size: 21px;
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
#main-row .amount {
|
||||
color: #222;
|
||||
font-size: 30px;
|
||||
font-weight: 700;
|
||||
line-height: 1.1;
|
||||
}
|
||||
|
||||
#main-row .amount-col {
|
||||
padding: 40px 20px;
|
||||
}
|
||||
|
||||
@media (min-width: 1200px) {
|
||||
#main-row .amount {
|
||||
font-size: 38px;
|
||||
}
|
||||
|
||||
#main-row > div {
|
||||
padding: 60px;
|
||||
}
|
||||
}
|
||||
|
||||
#main-row .amount,
|
||||
#main-row .amount-label {
|
||||
position: relative;
|
||||
z-index: 9;
|
||||
}
|
||||
|
||||
.amount-col .inner {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#main-row i {
|
||||
width: 56px;
|
||||
height: 56px;
|
||||
border-radius: 50%;
|
||||
background-color: #42d165;
|
||||
position: absolute;
|
||||
top: -20px;
|
||||
margin-left: -28px;
|
||||
text-align: center;
|
||||
padding: 13px;
|
||||
z-index: 9;
|
||||
}
|
||||
|
||||
#main-row i img {
|
||||
height: 30px;
|
||||
}
|
||||
|
||||
#total-invoiced-col:before,
|
||||
#paidtodate-col:before,
|
||||
#balance-col:before {
|
||||
content: '';
|
||||
background: #dbd9d9;
|
||||
width: 1px;
|
||||
position: absolute;
|
||||
height: 100%;
|
||||
top: 0;
|
||||
margin-left: -20px;
|
||||
}
|
||||
|
||||
#total-invoiced-col:before {
|
||||
width: 67px;
|
||||
background: transparent;
|
||||
background: -webkit-linear-gradient(0deg, #f8f8f8 0%, #ffffff 100%);
|
||||
background: -moz-linear-gradient(0deg, #f8f8f8 0%, #ffffff 100%);
|
||||
background: -o-linear-gradient(0deg, #f8f8f8 0%, #ffffff 100%);
|
||||
background: -ms-linear-gradient(0deg, #f8f8f8 0%, #ffffff 100%);
|
||||
background: linear-gradient(90deg, #f8f8f8 0%, #ffffff 100%);
|
||||
}
|
||||
|
||||
@media (max-width: 991px) {
|
||||
#main-row .amount-col {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
#total-invoiced-col:before,
|
||||
#paidtodate-col:before,
|
||||
#balance-col:before {
|
||||
width: 100%;
|
||||
top: auto;
|
||||
height: 1px;
|
||||
margin-top: -40px;
|
||||
}
|
||||
|
||||
#main-row i {
|
||||
left: -20px;
|
||||
top: 50%;
|
||||
margin-top: -28px;
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
#total-invoiced-col:before {
|
||||
background: -webkit-linear-gradient(270deg, #f8f8f8 0%, #ffffff 100%);
|
||||
background: -moz-linear-gradient(270deg, #f8f8f8 0%, #ffffff 100%);
|
||||
background: -o-linear-gradient(270deg, #f8f8f8 0%, #ffffff 100%);
|
||||
background: -ms-linear-gradient(270deg, #f8f8f8 0%, #ffffff 100%);
|
||||
background: linear-gradient(180deg, #f8f8f8 0%, #ffffff 100%);
|
||||
|
||||
height: 50px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 815px) {
|
||||
#main-row i {
|
||||
left: 30px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 400px) {
|
||||
#main-row i {
|
||||
display: none
|
||||
}
|
||||
}
|
||||
|
||||
.invoices-from {
|
||||
color: #424343;
|
||||
font-weight: 700;
|
||||
letter-spacing: 1px;
|
||||
font-size: 13px;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
div.logo img {
|
||||
max-width:300px;
|
||||
max-height:200px;
|
||||
max-width: 100%;
|
||||
max-height: 75px;
|
||||
}
|
||||
|
||||
div.address-details {
|
||||
color: #666666;
|
||||
font-size: 15px;
|
||||
line-height: 1.8em;
|
||||
#account-row > div {
|
||||
padding: 20px 50px 20px 110px;
|
||||
}
|
||||
|
||||
div.col-md-4-left {
|
||||
padding-left: 15px;
|
||||
padding-right: 6px;
|
||||
}
|
||||
div.col-md-4-center {
|
||||
padding-left: 6px;
|
||||
padding-right: 6px;
|
||||
}
|
||||
div.col-md-4-right {
|
||||
padding-left: 6px;
|
||||
padding-right: 15px;
|
||||
#account-row .invoices-from {
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
div.well {
|
||||
background-color: white;
|
||||
color: #0b4d78;
|
||||
text-transform: uppercase;
|
||||
text-align: center;
|
||||
font-weight: 600;
|
||||
padding-top: 40px;
|
||||
padding-bottom: 40px;
|
||||
#account-row .phone-web-details {
|
||||
padding-right: 0;
|
||||
}
|
||||
|
||||
div.well .fa {
|
||||
color: green;
|
||||
font-size: 18px;
|
||||
margin-bottom: 6px;
|
||||
#account-row .phone-web-details .inner {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
div.well .amount {
|
||||
margin-top: 10px;
|
||||
font-size: 32px;
|
||||
font-weight: 300;
|
||||
color: black;
|
||||
#account-row > div:before {
|
||||
content: '';
|
||||
border-left: 1px solid #dbd9d9;
|
||||
position: absolute;
|
||||
height: 100%;
|
||||
top: 0;
|
||||
margin-left: -80px;
|
||||
}
|
||||
|
||||
#account-row .logo {
|
||||
padding-left: 70px;
|
||||
}
|
||||
|
||||
#account-row .invoices-from:before {
|
||||
content: none;
|
||||
}
|
||||
|
||||
@media (max-width: 1199px) {
|
||||
#account-row .logo,
|
||||
#account-row > div {
|
||||
padding-left: 40px;
|
||||
padding-right: 5px;
|
||||
}
|
||||
|
||||
#account-row > div:before {
|
||||
margin-left: -25px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 991px) {
|
||||
#account-row,
|
||||
#account-row .phone-web-details .inner {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#account-row > div {
|
||||
padding: 15px 30px !important;
|
||||
}
|
||||
|
||||
#account-row > div:before {
|
||||
content: none;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
table.dataTable thead > tr > th, table.invoice-table thead > tr > th {
|
||||
background-color: {{ $color }} !important;
|
||||
}
|
||||
@ -92,8 +280,98 @@
|
||||
|
||||
<div class="container main-container">
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-6 logo">
|
||||
|
||||
<div class="row" id="main-row">
|
||||
<div class="col-md-3" id="contact-details">
|
||||
<h3>{{$client->name}}</h3>
|
||||
@if ($contact->first_name || $contact->last_name)
|
||||
{{ $contact->first_name.' '.$contact->last_name }}<br>
|
||||
@endif
|
||||
@if ($client->address1)
|
||||
{{ $client->address1 }}<br/>
|
||||
@endif
|
||||
@if ($client->address2)
|
||||
{{ $client->address2 }}<br/>
|
||||
@endif
|
||||
@if ($client->getCityState())
|
||||
{{ $client->getCityState() }}<br/>
|
||||
@endif
|
||||
@if ($client->country)
|
||||
{{ $client->country->name }}<br/>
|
||||
@endif
|
||||
<br>
|
||||
@if ($contact->email)
|
||||
{!! HTML::mailto($contact->email, $contact->email) !!}<br>
|
||||
@endif
|
||||
@if ($client->website)
|
||||
{!! HTML::link($client->website, $client->website) !!}<br>
|
||||
@endif
|
||||
@if ($contact->phone)
|
||||
{{ $contact->phone }}<br>
|
||||
@endif
|
||||
</div>
|
||||
<div class="col-md-3 amount-col" id="total-invoiced-col">
|
||||
<div class="inner">
|
||||
<i><img src="{{asset('images/icon-total-invoiced.svg')}}"></i>
|
||||
<div class="amount-label">
|
||||
{{ trans('texts.total_invoiced') }}
|
||||
</div>
|
||||
<div class="amount">
|
||||
{{ Utils::formatMoney($client->paid_to_date + $client->balance, $client->currency_id ?: $account->currency_id) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3 amount-col" id="paidtodate-col">
|
||||
<div class="inner">
|
||||
<i><img src="{{asset('images/icon-paidtodate.svg')}}"></i>
|
||||
<div class="amount-label">
|
||||
{{ trans('texts.paid_to_date') }}
|
||||
</div>
|
||||
<div class="amount">
|
||||
{{ Utils::formatMoney($client->paid_to_date, $client->currency_id ?: $account->currency_id) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3 amount-col" id="balance-col">
|
||||
<div class="inner">
|
||||
<i><img src="{{asset('images/icon-balance.svg')}}"></i>
|
||||
<div class="amount-label">
|
||||
{{ trans('texts.open_balance') }}
|
||||
</div>
|
||||
<div class="amount">
|
||||
{{ Utils::formatMoney($client->balance, $client->currency_id ?: $account->currency_id) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if (!empty($account->getTokenGatewayId()))
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
@include('payments.paymentmethods_list')
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div style="min-height: 550px" class="hide">
|
||||
{!! Datatable::table()
|
||||
->addColumn(
|
||||
trans('texts.date'),
|
||||
trans('texts.message'),
|
||||
trans('texts.balance'),
|
||||
trans('texts.adjustment'))
|
||||
->setUrl(route('api.client.activity'))
|
||||
->setOptions('bFilter', false)
|
||||
->setOptions('aaSorting', [['0', 'desc']])
|
||||
->setOptions('sPaginationType', 'bootstrap')
|
||||
->render('datatable') !!}
|
||||
</div>
|
||||
|
||||
<div class="row" id="account-row">
|
||||
<div class="col-md-2 invoices-from">
|
||||
{{trans('texts.invoice_from')}}
|
||||
</div>
|
||||
<div class="col-md-4 logo">
|
||||
@if ($account->hasLogo())
|
||||
{!! HTML::image($account->getLogoURL()) !!}
|
||||
@else
|
||||
@ -114,74 +392,20 @@
|
||||
{{ $account->country->name }}
|
||||
@endif
|
||||
</div>
|
||||
<div class="col-md-3 address-details">
|
||||
@if ($account->website)
|
||||
<i class="fa fa-globe" style="width: 20px"></i><a href="{{ Utils::addHttp($account->website) }}" target="_blank">{{ $account->website }}</a><br/>
|
||||
@endif
|
||||
@if ($account->work_phone)
|
||||
<i class="fa fa-phone" style="width: 20px"></i>{{ $account->work_phone }}<br/>
|
||||
@endif
|
||||
@if ($account->work_email)
|
||||
<i class="fa fa-envelope" style="width: 20px"></i>{!! HTML::mailto($account->work_email, $account->work_email) !!}<br/>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-4 col-md-4-left">
|
||||
<div class="well">
|
||||
<div class="fa fa-file-text-o"></div>
|
||||
<div>
|
||||
{{ trans('texts.total_invoiced') }}
|
||||
</div>
|
||||
<div class="amount">
|
||||
{{ Utils::formatMoney($client->paid_to_date + $client->balance, $client->currency_id ?: $account->currency_id) }}
|
||||
</div>
|
||||
<div class="col-md-3 phone-web-details">
|
||||
<div class="inner">
|
||||
@if ($account->work_phone)
|
||||
{{ $account->work_phone }}<br/>
|
||||
@endif
|
||||
@if ($account->website)
|
||||
<a href="{{ Utils::addHttp($account->website) }}" target="_blank">{{ $account->website }}</a>
|
||||
<br/>
|
||||
@endif
|
||||
@if ($account->work_email)
|
||||
{!! HTML::mailto($account->work_email, $account->work_email) !!}<br/>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4 col-md-4-center">
|
||||
<div class="well">
|
||||
<div class="fa fa-credit-card"></div>
|
||||
<div>
|
||||
{{ trans('texts.paid_to_date') }}
|
||||
</div>
|
||||
<div class="amount">
|
||||
{{ Utils::formatMoney($client->paid_to_date, $client->currency_id ?: $account->currency_id) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4 col-md-4-right">
|
||||
<div class="well">
|
||||
<div class="fa fa-server"></div>
|
||||
<div>
|
||||
{{ trans('texts.open_balance') }}
|
||||
</div>
|
||||
<div class="amount">
|
||||
{{ Utils::formatMoney($client->balance, $client->currency_id ?: $account->currency_id) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if (!empty($account->getTokenGatewayId()))
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
@include('payments.paymentmethods_list')
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div style="min-height: 550px">
|
||||
{!! Datatable::table()
|
||||
->addColumn(
|
||||
trans('texts.date'),
|
||||
trans('texts.message'),
|
||||
trans('texts.balance'),
|
||||
trans('texts.adjustment'))
|
||||
->setUrl(route('api.client.activity'))
|
||||
->setOptions('bFilter', false)
|
||||
->setOptions('aaSorting', [['0', 'desc']])
|
||||
->setOptions('sPaginationType', 'bootstrap')
|
||||
->render('datatable') !!}
|
||||
</div>
|
||||
|
||||
<p> </p>
|
||||
|
33
resources/views/login.blade.php
Normal file
33
resources/views/login.blade.php
Normal file
@ -0,0 +1,33 @@
|
||||
@extends('master')
|
||||
|
||||
@section('head')
|
||||
@if (!empty($clientauth) && $fontsUrl = Utils::getAccountFontsUrl())
|
||||
<link href="{!! $fontsUrl !!}" rel="stylesheet" type="text/css">
|
||||
@endif
|
||||
<link href="{{ asset('css/built.public.css') }}?no_cache={{ NINJA_VERSION }}" rel="stylesheet" type="text/css"/>
|
||||
|
||||
<link href="{{ asset('css/bootstrap.min.css') }}" rel="stylesheet" type="text/css"/>
|
||||
<link href="{{ asset('css/built.css') }}" rel="stylesheet" type="text/css"/>
|
||||
<link href="{{ asset('css/built.login.css') }}" rel="stylesheet" type="text/css"/>
|
||||
|
||||
@if (!empty($clientauth))
|
||||
<style type="text/css">{!! Utils::clientViewCSS() !!}</style>
|
||||
@endif
|
||||
@endsection
|
||||
|
||||
@section('body')
|
||||
@if (!Utils::isWhiteLabel() || empty($clientauth))
|
||||
<div class="container-fluid">
|
||||
<div class="row header">
|
||||
<div class="col-md-6 col-xs-12 text-center">
|
||||
<a><img width="231" src="{{ asset('images/invoiceninja-logox53.png') }}"/></a>
|
||||
</div>
|
||||
<div class="col-md-6 text-right visible-lg">
|
||||
<p>{{trans('texts.ninja_tagline')}}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@yield('form')
|
||||
@endsection
|
@ -125,7 +125,7 @@ header h3 em {
|
||||
}
|
||||
|
||||
.secure h3 {
|
||||
color: #36b855;
|
||||
color: #42d165;
|
||||
font-size: 30px;
|
||||
margin-bottom: 8px;
|
||||
margin-top: 0px;
|
||||
|
@ -43,11 +43,16 @@
|
||||
}
|
||||
|
||||
$(function() {
|
||||
// check that the footer appears at the bottom of the screen
|
||||
var height = $(window).height() - ($('#header').height() + $('#footer').height());
|
||||
if ($('#mainContent').height() < height) {
|
||||
$('#mainContent').height(height);
|
||||
function positionFooter() {
|
||||
// check that the footer appears at the bottom of the screen
|
||||
var height = $(window).height() - ($('#header').height() + $('#footer').height());
|
||||
if ($('#mainContent').height() < height) {
|
||||
$('#mainContent').css('min-height', height);
|
||||
}
|
||||
}
|
||||
|
||||
positionFooter();
|
||||
$(window).resize(positionFooter);
|
||||
})
|
||||
|
||||
</script>
|
||||
@ -65,7 +70,8 @@
|
||||
</button>
|
||||
@if (!isset($account) || !$account->hasFeature(FEATURE_WHITE_LABEL))
|
||||
{{-- Per our license, please do not remove or modify this link. --}}
|
||||
<a class="navbar-brand" href="{{ URL::to(NINJA_WEB_URL) }}" target="_blank"><img src="{{ asset('images/invoiceninja-logo.png') }}" style="height:20px"></a>
|
||||
<a class="navbar-brand" href="{{ URL::to(NINJA_WEB_URL) }}" target="_blank"><img
|
||||
src="{{ asset('images/invoiceninja-logo.png') }}" style="height:27px"></a>
|
||||
@endif
|
||||
</div>
|
||||
<div id="navbar" class="collapse navbar-collapse">
|
||||
|
Loading…
Reference in New Issue
Block a user