Merging files from parent.
This commit is contained in:
blkmutt 2014-04-07 09:53:26 -04:00
commit f613caec07
36 changed files with 842 additions and 176 deletions

1
.gitignore vendored
View File

@ -4,6 +4,7 @@
/app/config/ubuntu
/app/config/packages/anahkiasen/rocketeer/
/app/storage
/public/logo
/public/build
/public/vendor
/bootstrap/compiled.php

View File

@ -39,18 +39,8 @@ class AccountController extends \BaseController {
if (!$user)
{
$account = new Account;
$account->ip = Request::getClientIp();
$account->account_key = str_random(RANDOM_KEY_LENGTH);
$account->save();
$random = str_random(RANDOM_KEY_LENGTH);
$user = new User;
$user->password = $random;
$user->password_confirmation = $random;
$user->username = $random;
$account->users()->save($user);
$account = $this->accountRepo->create();
$user = $account->users()->first();
Session::forget(RECENTLY_VIEWED);
}
@ -73,8 +63,8 @@ class AccountController extends \BaseController {
$ninjaAccount = $this->getNinjaAccount();
$ninjaClient = $this->getNinjaClient($ninjaAccount);
//$invoice = new Invoice();
//$ninjaClient->invoices()->save($invoice);
}
private function getNinjaAccount()
@ -651,7 +641,7 @@ class AccountController extends \BaseController {
{
$path = Input::file('logo')->getRealPath();
File::delete('logo/' . $account->account_key . '.jpg');
Image::make($path)->resize(null, 120, true, false)->save('logo/' . $account->account_key . '.jpg');
Image::make($path)->resize(200, 120, true, false)->save('logo/' . $account->account_key . '.jpg');
}
Event::fire('user.refresh');

View File

@ -356,6 +356,8 @@ class InvoiceController extends \BaseController {
*/
public function show($publicId)
{
Session::reflash();
return Redirect::to('invoices/'.$publicId.'/edit');
}

View File

@ -24,6 +24,8 @@ class AddLanguageSupport extends Migration {
DB::table('languages')->insert(['name' => 'German', 'locale' => 'de']);
DB::table('languages')->insert(['name' => 'French', 'locale' => 'fr']);
DB::table('languages')->insert(['name' => 'Brazilian Portuguese', 'locale' => 'pt_BR']);
DB::table('languages')->insert(['name' => 'Dutch', 'locale' => 'nl']);
DB::table('languages')->insert(['name' => 'Spanish', 'locale' => 'es']);
Schema::table('accounts', function($table)
{

View File

@ -23,7 +23,9 @@ App::before(function($request)
if (Input::has('lang'))
{
App::setLocale(Input::get('lang'));
$locale = Input::get('lang');
Session::set(SESSION_LOCALE, $locale);
App::setLocale($locale);
}
else if (Auth::check())
{

View File

@ -252,9 +252,8 @@ return array(
'confirmation_subject' => 'Invoice Ninja Konto Bestätigung',
'confirmation_header' => 'Konto Bestätigung',
'confirmation_message' => 'Bitte klicke auf den folgenden Link um dein Konto zu bestätigen.',
'invoice_subject' => 'Neue Rechnung :invoice',
'invoice_message' => 'Um Ihre Rechnung über :amount einzusehen, klicken Sie bitte auf den folgenden Link.',
'payment_subject' => 'Zahlungseingang :invoice',
'payment_subject' => 'Zahlungseingang',
'payment_message' => 'Vielen Dank für Ihre Zahlung von :amount.',
'email_salutation' => 'Sehr geehrte/r :name,',
'email_signature' => 'Freundliche Grüße,',
@ -294,4 +293,17 @@ return array(
'remove_logo_link' => 'Click here',
],
'logout' => 'Log Out',
'sign_up_to_save' => 'Sign up to save your work',
'agree_to_terms' =>'I agree to the Invoice Ninja :terms',
'terms_of_service' => 'Terms of Service',
'email_taken' => 'The email address is already regiestered',
'working' => 'Working',
'success' => 'Success',
'success_message' => 'You have succesfully registered. Please visit the link in the account confirmation email to verify your email address.',
'erase_data' => 'This will permanently erase your data.',
'password' => 'Password',
'invoice_subject' => 'New invoice from :account',
'close' => 'Close',
);

View File

@ -96,6 +96,7 @@ return array(
'import' => 'Import',
'download' => 'Download',
'cancel' => 'Cancel',
'close' => 'Close',
'provide_email' => 'Please provide a valid email address',
'powered_by' => 'Powered by',
'no_items' => 'No items',
@ -230,10 +231,10 @@ return array(
'cloned_invoice' => 'Successfully cloned invoice',
'emailed_invoice' => 'Successfully emailed invoice',
'and_created_client' => 'and created client',
'archived_invoice' => 'Successfully archived credit',
'archived_invoices' => 'Successfully archived :count credits',
'deleted_invoice' => 'Successfully deleted credit',
'deleted_invoices' => 'Successfully deleted :count credits',
'archived_invoice' => 'Successfully archived invoice',
'archived_invoices' => 'Successfully archived :count invoices',
'deleted_invoice' => 'Successfully deleted invoice',
'deleted_invoices' => 'Successfully deleted :count invoices',
'created_payment' => 'Successfully created payment',
'archived_payment' => 'Successfully archived payment',
@ -252,9 +253,9 @@ return array(
'confirmation_subject' => 'Invoice Ninja Account Confirmation',
'confirmation_header' => 'Account Confirmation',
'confirmation_message' => 'Please access the link below to confirm your account.',
'invoice_subject' => 'New invoice :invoice',
'invoice_subject' => 'New invoice from :account',
'invoice_message' => 'To view your invoice for :amount, click the link below.',
'payment_subject' => 'Payment Received :invoice',
'payment_subject' => 'Payment Received',
'payment_message' => 'Thank you for your payment of :amount.',
'email_salutation' => 'Dear :name,',
'email_signature' => 'Regards,',
@ -294,4 +295,16 @@ return array(
'remove_logo_link' => 'Click here',
],
'logout' => 'Log Out',
'sign_up_to_save' => 'Sign up to save your work',
'agree_to_terms' =>'I agree to the Invoice Ninja :terms',
'terms_of_service' => 'Terms of Service',
'email_taken' => 'The email address is already registered',
'working' => 'Working',
'success' => 'Success',
'success_message' => 'You have succesfully registered. Please visit the link in the account confirmation email to verify your email address.',
'erase_data' => 'This will permanently erase your data.',
'password' => 'Password',
);

View File

@ -95,6 +95,7 @@ return array(
'import' => 'Import',
'download' => 'Download',
'cancel' => 'Cancel',
'close' => 'Close',
'provide_email' => 'Please provide a valid email address',
'powered_by' => 'Powered by',
'no_items' => 'No items',
@ -229,10 +230,10 @@ return array(
'cloned_invoice' => 'Successfully cloned invoice',
'emailed_invoice' => 'Successfully emailed invoice',
'and_created_client' => 'and created client',
'archived_invoice' => 'Successfully archived credit',
'archived_invoices' => 'Successfully archived :count credits',
'deleted_invoice' => 'Successfully deleted credit',
'deleted_invoices' => 'Successfully deleted :count credits',
'archived_invoice' => 'Successfully archived invoice',
'archived_invoices' => 'Successfully archived :count invoices',
'deleted_invoice' => 'Successfully deleted invoice',
'deleted_invoices' => 'Successfully deleted :count invoices',
'created_payment' => 'Successfully created payment',
'archived_payment' => 'Successfully archived payment',
@ -251,9 +252,9 @@ return array(
'confirmation_subject' => 'Invoice Ninja Account Confirmation',
'confirmation_header' => 'Account Confirmation',
'confirmation_message' => 'Please access the link below to confirm your account.',
'invoice_subject' => 'New invoice :invoice',
'invoice_subject' => 'New invoice from :account',
'invoice_message' => 'To view your invoice for :amount, click the link below.',
'payment_subject' => 'Payment Received :invoice',
'payment_subject' => 'Payment Received',
'payment_message' => 'Thank you for your payment of :amount.',
'email_salutation' => 'Dear :name,',
'email_signature' => 'Regards,',
@ -293,5 +294,16 @@ return array(
'remove_logo_link' => 'Click here',
],
'logout' => 'Log Out',
'sign_up_to_save' => 'Sign up to save your work',
'agree_to_terms' =>'I agree to the Invoice Ninja :terms',
'terms_of_service' => 'Terms of Service',
'email_taken' => 'The email address is already regiestered',
'working' => 'Working',
'success' => 'Success',
'success_message' => 'You have succesfully registered. Please visit the link in the account confirmation email to verify your email address.',
'erase_data' => 'This will permanently erase your data.',
'password' => 'Password',
);

View File

@ -96,6 +96,7 @@ return array(
'import' => 'Import',
'download' => 'Download',
'cancel' => 'Cancel',
'close' => 'Close',
'provide_email' => 'Please provide a valid email address',
'powered_by' => 'Powered by',
'no_items' => 'No items',
@ -230,10 +231,10 @@ return array(
'cloned_invoice' => 'Successfully cloned invoice',
'emailed_invoice' => 'Successfully emailed invoice',
'and_created_client' => 'and created client',
'archived_invoice' => 'Successfully archived credit',
'archived_invoices' => 'Successfully archived :count credits',
'deleted_invoice' => 'Successfully deleted credit',
'deleted_invoices' => 'Successfully deleted :count credits',
'archived_invoice' => 'Successfully archived invoice',
'archived_invoices' => 'Successfully archived :count invoices',
'deleted_invoice' => 'Successfully deleted invoice',
'deleted_invoices' => 'Successfully deleted :count invoices',
'created_payment' => 'Successfully created payment',
'archived_payment' => 'Successfully archived payment',
@ -252,9 +253,9 @@ return array(
'confirmation_subject' => 'Invoice Ninja Account Confirmation',
'confirmation_header' => 'Account Confirmation',
'confirmation_message' => 'Please access the link below to confirm your account.',
'invoice_subject' => 'New invoice :invoice',
'invoice_subject' => 'New invoice from :account',
'invoice_message' => 'To view your invoice for :amount, click the link below.',
'payment_subject' => 'Payment Received :invoice',
'payment_subject' => 'Payment Received',
'payment_message' => 'Thank you for your payment of :amount.',
'email_salutation' => 'Dear :name,',
'email_signature' => 'Regards,',
@ -294,5 +295,16 @@ return array(
'remove_logo_link' => 'Click here',
],
'logout' => 'Log Out',
'sign_up_to_save' => 'Sign up to save your work',
'agree_to_terms' =>'I agree to the Invoice Ninja :terms',
'terms_of_service' => 'Terms of Service',
'email_taken' => 'The email address is already regiestered',
'working' => 'Working',
'success' => 'Success',
'success_message' => 'You have succesfully registered. Please visit the link in the account confirmation email to verify your email address.',
'erase_data' => 'This will permanently erase your data.',
'password' => 'Password',
);

View File

@ -96,6 +96,7 @@ return array(
'import' => 'Import',
'download' => 'Download',
'cancel' => 'Cancel',
'close' => 'Close',
'provide_email' => 'Please provide a valid email address',
'powered_by' => 'Powered by',
'no_items' => 'No items',
@ -230,10 +231,10 @@ return array(
'cloned_invoice' => 'Successfully cloned invoice',
'emailed_invoice' => 'Successfully emailed invoice',
'and_created_client' => 'and created client',
'archived_invoice' => 'Successfully archived credit',
'archived_invoices' => 'Successfully archived :count credits',
'deleted_invoice' => 'Successfully deleted credit',
'deleted_invoices' => 'Successfully deleted :count credits',
'archived_invoice' => 'Successfully archived invoice',
'archived_invoices' => 'Successfully archived :count invoices',
'deleted_invoice' => 'Successfully deleted invoice',
'deleted_invoices' => 'Successfully deleted :count invoices',
'created_payment' => 'Successfully created payment',
'archived_payment' => 'Successfully archived payment',
@ -252,9 +253,9 @@ return array(
'confirmation_subject' => 'Invoice Ninja Account Confirmation',
'confirmation_header' => 'Account Confirmation',
'confirmation_message' => 'Please access the link below to confirm your account.',
'invoice_subject' => 'New invoice :invoice',
'invoice_subject' => 'New invoice from :account',
'invoice_message' => 'To view your invoice for :amount, click the link below.',
'payment_subject' => 'Payment Received :invoice',
'payment_subject' => 'Payment Received',
'payment_message' => 'Thank you for your payment of :amount.',
'email_salutation' => 'Dear :name,',
'email_signature' => 'Regards,',
@ -294,6 +295,17 @@ return array(
'remove_logo_link' => 'Click here',
],
'logout' => 'Log Out',
'sign_up_to_save' => 'Sign up to save your work',
'agree_to_terms' =>'I agree to the Invoice Ninja :terms',
'terms_of_service' => 'Terms of Service',
'email_taken' => 'The email address is already regiestered',
'working' => 'Working',
'success' => 'Success',
'success_message' => 'You have succesfully registered. Please visit the link in the account confirmation email to verify your email address.',
'erase_data' => 'This will permanently erase your data.',
'password' => 'Password',
);

View File

@ -0,0 +1,20 @@
<?php
return array(
/*
|--------------------------------------------------------------------------
| Pagination Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are used by the paginator library to build
| the simple pagination links. You are free to change them to anything
| you want to customize your views to better match your application.
|
*/
'previous' => '&laquo; Vorige',
'next' => 'Volgende &raquo;',
);

24
app/lang/nl/reminders.php Normal file
View File

@ -0,0 +1,24 @@
<?php
return array(
/*
|--------------------------------------------------------------------------
| Password Reminder Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are the default lines which match reasons
| that are given by the password broker for a password update attempt
| has failed, such as for an invalid token or invalid new password.
|
*/
"password" => "Wachtwoord moet minimaal zes tekens lang zijn en de wachtwoorden moeten overeenkomen.",
"user" => "Geen gebruiker bekend met dat e-mailadres.",
"token" => "Dit wachtwoord reset token is niet geldig.",
"sent" => "Wachtwoord herinnering verzonden!",
);

309
app/lang/nl/texts.php Normal file
View File

@ -0,0 +1,309 @@
<?php
return array(
// client
'organization' => 'Organisatie',
'name' => 'Naam',
'website' => 'Website',
'work_phone' => 'Telefoon',
'address' => 'Adres',
'address1' => 'Straat',
'address2' => 'Bus/Suite',
'city' => 'Gemeente',
'state' => 'Staat/Provincie',
'postal_code' => 'Postcode',
'country_id' => 'Land',
'contacts' => 'Contacten',
'first_name' => 'Voornaam',
'last_name' => 'Achternaam',
'phone' => 'Telefoon',
'email' => 'E-mail',
'additional_info' => 'Extra Informatie',
'payment_terms' => 'Betalingsvoorwaarden',
'currency_id' => 'Munteenheid',
'size_id' => 'Grootte',
'industry_id' => 'Industrie',
'private_notes' => 'Priv&eacute; Bericht',
// invoice
'invoice' => 'Factuur',
'client' => 'Klant',
'invoice_date' => 'Factuurdatum',
'due_date' => 'Vervaldatum',
'invoice_number' => 'Factuur nummer',
'invoice_number_short' => 'Factuur #',
'po_number' => 'Bestelnummer',
'po_number_short' => 'Bestel #',
'frequency_id' => 'Hoe vaak',
'discount' => 'Korting',
'taxes' => 'Belastingen',
'tax' => 'Belasting',
'item' => 'Naam',
'description' => 'Beschrijving',
'unit_cost' => 'Eenheidsprijs',
'quantity' => 'Aantal',
'line_total' => 'Totaal lijn',
'subtotal' => 'Subtotaal',
'paid_to_date' => 'Betaal Datum',
'balance_due' => 'Openstaand saldo',
'invoice_design_id' => 'Ontwerp',
'terms' => 'Voorwaarden',
'your_invoice' => 'Jouw factuur',
'remove_contact' => 'Verwijder contact',
'add_contact' => 'Voeg contact toe',
'create_new_client' => 'Maak nieuwe klant',
'edit_client_details' => 'Pas klantdetails aan',
'enable' => 'Activeer',
'learn_more' => 'Meer te weten komen',
'manage_rates' => 'Beheer prijzen',
'note_to_client' => 'Bericht aan klant',
'invoice_terms' => 'Factuur voorwaarden',
'save_as_default_terms' => 'Opslaan als standaard voorwaarden',
'download_pdf' => 'Download PDF',
'pay_now' => 'Betaal nu',
'save_invoice' => 'Sla Factuur op',
'clone_invoice' => 'Kopieer Factuur',
'archive_invoice' => 'Archiveer Factuur',
'delete_invoice' => 'Verwijder Factuur',
'email_invoice' => 'E-mail Factuur',
'enter_payment' => 'Betaling ingeven',
'tax_rates' => 'BTW tarief',
'rate' => 'Tarief',
'settings' => 'Instellingen',
'enable_invoice_tax' => 'Activeer instelling van <b>BTW op volledige factuur</b>',
'enable_line_item_tax' => 'Activeer instelling van <b>BTW per lijn</b>',
// navigation
'dashboard' => 'Dashboard',
'clients' => 'Klanten',
'invoices' => 'Facturen',
'payments' => 'Betalingen',
'credits' => 'Kredietnota\'s',
'history' => 'Geschiedenis',
'search' => 'Zoeken',
'sign_up' => 'Aanmelden',
'guest' => 'Gast',
'company_details' => 'Bedrijfsdetails',
'online_payments' => 'Online betalingen',
'notifications' => 'Meldingen',
'import_export' => 'Importeer/Exporteer',
'done' => 'Klaar',
'save' => 'Opslaan',
'create' => 'Aanmaken',
'upload' => 'Uploaden',
'import' => 'Importeer',
'download' => 'Downloaden',
'cancel' => 'Annuleren',
'provide_email' => 'Geef een geldig e-mailadres aub.',
'powered_by' => 'Factuur gemaakt via',
'no_items' => 'Geen artikelen',
// recurring invoices
'recurring_invoices' => 'Terugkerende facturen',
'recurring_help' => '<p>Zend klanten automatisch wekelijks, twee keer per maand, maandelijks, per kwartaal of jaarlijks dezelfde facturen.</p>
<p>Gebruik :MONTH, :QUARTER of :YEAR voor dynamische datums. Eenvoudige wiskunde werkt ook, bijvoorbeeld :MONTH-1.</p>
<p>Voorbeelden van dynamische factuur variabelen:</p>
<ul>
<li>"Fitness lidmaatschap voor de maand :MONTH" => "Fitness lidmaatschap voor de maand juli"</li>
<li>"Jaarlijks abonnement :YEAR+1" => "Jaarlijks abonnement 2015"</li>
<li>"Betaling voor :QUARTER+1" => "Betaling voor Q2"</li>
</ul>',
// dashboard
'in_total_revenue' => 'in totale opbrengst',
'billed_client' => 'Gefactureerde klant',
'billed_clients' => 'Gefactureerde klanten',
'active_client' => 'Actieve klant',
'active_clients' => 'Actieve klanten',
'invoices_past_due' => 'Vervallen facturen',
'upcoming_invoices' => 'Aankomende facturen',
'average_invoice' => 'Gemiddelde factuur',
// list pages
'archive' => 'Archiveer',
'delete' => 'Verwijder',
'archive_client' => 'Archiveer klant',
'delete_client' => 'Verwijder klant',
'archive_payment' => 'Archiveer betaling',
'delete_payment' => 'Verwijder betaling',
'archive_credit' => 'Archiveer kredietnota',
'delete_credit' => 'Verwijder kredietnota',
'show_archived_deleted' => 'Toon gearchiveerde/verwijderde',
'filter' => 'Filter',
'new_client' => 'Nieuwe Klant',
'new_invoice' => 'Nieuwe Factuur',
'new_payment' => 'Nieuwe Betaling',
'new_credit' => 'Nieuwe Kredietnota',
'contact' => 'Contact',
'date_created' => 'Aanmaakdatum',
'last_login' => 'Laatste login',
'balance' => 'Saldo',
'action' => 'Actie',
'status' => 'Status',
'invoice_total' => 'Factuur totaal',
'frequency' => 'Frequentie',
'start_date' => 'Startdatum',
'end_date' => 'Einddatum',
'transaction_reference' => 'Transactie Referentie',
'method' => 'Methode',
'payment_amount' => 'Betalingsbedrag',
'payment_date' => 'Betalingsdatum',
'credit_amount' => 'Kredietbedrag',
'credit_balance' => 'Kredietsaldo',
'credit_date' => 'Kredietdatum',
'empty_table' => 'Geen gegevens beschikbaar in de tabel',
'select' => 'Selecteer',
'edit_client' => 'Klant aanpassen',
'edit_invoice' => 'Factuur aanpassen',
// client view page
'create_invoice' => 'Factuur aanmaken',
'enter_credit' => 'Kredietnota ingeven',
'last_logged_in' => 'Laatste login',
'details' => 'Details',
'standing' => 'Openstaand',
'credit' => 'Krediet',
'activity' => 'Activiteit',
'date' => 'Datum',
'message' => 'Bericht',
'adjustment' => 'Aanpassing',
'are_you_sure' => 'Ben je zeker?',
// payment pages
'payment_type_id' => 'Betalingstype',
'amount' => 'Bedrag',
// account/company pages
'work_email' => 'E-mail',
'language_id' => 'Taal',
'timezone_id' => 'Tijdszone',
'date_format_id' => 'Formaat datum',
'datetime_format_id' => 'Datum/Tijd Formaat',
'users' => 'Gebruikers',
'localization' => 'Localisatie',
'remove_logo' => 'Verwijder logo',
'logo_help' => 'Ondersteund: JPEG, GIF en PNG. Aangeraden hoogte: 120px',
'payment_gateway' => 'Betalingsmiddel',
'gateway_id' => 'Leverancier',
'email_notifications' => 'E-mail meldingen',
'email_sent' => 'E-mail me wanneer een factuur is <b>verzonden</b>',
'email_viewed' => 'E-mail me wanneer een factuur is <b>bekeken</b>',
'email_paid' => 'E-mail me wanneer een factuur is <b>betaald</b>',
'site_updates' => 'Site Aanpassingen',
'custom_messages' => 'Aangepaste berichten',
'default_invoice_terms' => 'Stel standaard factuursvoorwaarden in',
'default_email_footer' => 'Stel standaard e-mail signatuur in',
'import_clients' => 'Importeer Klant Gegevens',
'csv_file' => 'Selecteer CSV bestand',
'export_clients' => 'Exporteer Klant Gegevens',
'select_file' => 'Selecteer alstublieft een bestand',
'first_row_headers' => 'Gebruik eerste rij als hoofdding',
'column' => 'Kolom',
'sample' => 'Voorbeeld',
'import_to' => 'Importeer naar',
'client_will_create' => 'klant zal aangemaakt worden',
'clients_will_create' => 'klanten zullen aangemaakt worden',
// application messages
'created_client' => 'Klant succesvol aangemaakt',
'created_clients' => ':count klanten succesvol aangemaakt',
'updated_settings' => 'Instellingen succesvol aangepast',
'removed_logo' => 'Logo succesvol verwijderd',
'sent_message' => 'Bericht succesvol verzonden',
'invoice_error' => 'Selecteer een klant alstublieft en corrigeer mogelijke fouten',
'limit_clients' => 'Sorry, dit zal de klantenlimiet van :count klanten overschrijden',
'payment_error' => 'Er was een fout bij het verwerken van uw betaling. Probeer later alstublieft opnieuw.',
'registration_required' => 'Meld je aan om een factuur te mailen',
'confirmation_required' => 'Bevestig je e-mail adres alstublieft',
'updated_client' => 'Klant succesvol aangepast',
'created_client' => 'Klant succesvol aangemaakt',
'archived_client' => 'Klant succesvol gearchiveerd',
'archived_clients' => ':count klanten succesvol gearchiveerd',
'deleted_client' => 'Klant succesvol verwijderd',
'deleted_clients' => ':count klanten succesvol verwijderd',
'updated_invoice' => 'Factuur succesvol aangepast',
'created_invoice' => 'Factuur succesvol aangemaakt',
'cloned_invoice' => 'Factuur succesvol gekopieerd',
'emailed_invoice' => 'Factuur succesvol gemaild',
'and_created_client' => 'en klant aangemaakt',
'archived_invoice' => 'Factuur succesvol gearchiveerd',
'archived_invoices' => ':count facturen succesvol gearchiveerd',
'deleted_invoice' => 'Factuur succesvol verwijderd',
'deleted_invoices' => ':count facturen succesvol verwijderd',
'created_payment' => 'Betaling succesvol aangemaakt',
'archived_payment' => 'Betaling succesvol gearchiveerd',
'archived_payments' => ':count betalingen succesvol gearchiveerd',
'deleted_payment' => 'Betaling succesvol verwijderd',
'deleted_payments' => ':count betalingen succesvol verwijderd',
'applied_payment' => 'Betaling succesvol toegepast',
'created_credit' => 'Kredietnota succesvol aangemaakt',
'archived_credit' => 'Kredietnota succesvol gearchiveerd',
'archived_credits' => ':count kredietnota\'s succesvol gearchiveerd',
'deleted_credit' => 'Kredietnota succesvol verwijderd',
'deleted_credits' => ':count kredietnota\'s succesvol verwijderd',
// E-mails
'confirmation_subject' => 'Invoice Ninja Bevestiging Account',
'confirmation_header' => 'Bevestiging Account',
'confirmation_message' => 'Ga alstublieft naar onderstaande link om je account te bevestiging.',
'invoice_message' => 'Om je factuur voor :amount te bekijken, klik op onderstaande link.',
'payment_subject' => 'Betaling ontvangen',
'payment_message' => 'Bedankt voor je betaling van :amount.',
'email_salutation' => 'Beste :name,',
'email_signature' => 'Met vriendelijke groeten,',
'email_from' => 'Het InvoiceNinja Team',
'user_email_footer' => 'Ga alstublieft naar http://www.invoiceninja.com/company/notifications om je e-mail notificatie instellingen aan te passen ',
'invoice_link_message' => 'Klik op volgende link om de Factuur van je klant te bekijken:',
'notification_paid_subject' => 'Factuur :invoice is betaald door :client',
'notification_sent_subject' => 'Factuur :invoice is gezonden door :client',
'notification_viewed_subject' => 'Factuur :invoice is bekeken door :client',
'notification_paid' => 'Een betaling voor :amount is gemaakt door klant :client voor Factuur :invoice.',
'notification_sent' => 'De volgende klant :client heeft Factuur :invoice voor :amount gemaild gekregen.',
'notification_viewed' => 'De volgende klant :client heeft Factuur :invoice voor :amount bekeken.',
'reset_password' => 'Je kan het paswoord van je account resetten door op volgende link te klikken:',
'reset_password_footer' => 'Als je deze paswoord reset niet aangevraagd hebt contacteer dan onze helpdesk alstublieft: ' . CONTACT_EMAIL,
// Payment page
'secure_payment' => 'Veilige betaling',
'card_number' => 'Kaart nummer',
'expiration_month' => 'Verval maand',
'expiration_year' => 'Verval jaar',
'cvv' => 'CVV',
// Security alerts
'confide' => [
'too_many_attempts' => 'Te veel pogingen. Probeer opnieuw binnen enkele minuten.',
'wrong_credentials' => 'Verkeerd e-mailadres of paswoord.',
'confirmation' => 'Je account is bevestigd!',
'wrong_confirmation' => 'Verkeerde bevestigingscode.',
'password_forgot' => 'De informatie over je paswoord reset is verzonden naar je e-mailadres.',
'password_reset' => 'Je paswoord is succesvol aangepast.',
'wrong_password_reset' => 'Ongeldig paswoord. Probeer opnieuw',
],
// Pro Plan
'pro_plan' => [
'remove_logo' => ':link om het Invoice Ninja logo te verwijderen door het pro plan te nemen',
'remove_logo_link' => 'Klik hier',
],
'logout' => 'Afmelden',
'sign_up_to_save' => 'Registreer je om je werk op te slaan',
'agree_to_terms' =>'Ik accepteer de Invoice Ninja :terms',
'terms_of_service' => 'Gebruiksvoorwaarden',
'email_taken' => 'Het e-mailadres is al geregistreerd',
'working' => 'Actief',
'success' => 'Succes',
'success_message' => 'Je bent succesvol geregistreerd. Ga alstublieft naar de link in de bevestigingsmail om je e-mailadres te verifi&euml;ren.',
'erase_data' => 'Dit zal uw data permanent verwijderen.',
'password' => 'Wachtwoord',
'invoice_subject' => 'Nieuwe factuur van :account',
'close' => 'Sluiten',
);

107
app/lang/nl/validation.php Normal file
View File

@ -0,0 +1,107 @@
<?php
return array(
/*
|--------------------------------------------------------------------------
| Validation Language Lines
|--------------------------------------------------------------------------
|
| The following language lines contain the default error messages used by
| the validator class. Some of these rules have multiple versions such
| such as the size rules. Feel free to tweak each of these messages.
|
*/
"accepted" => ":attribute moet geaccepteerd zijn.",
"active_url" => ":attribute is geen geldige URL.",
"after" => ":attribute moet een datum na :date zijn.",
"alpha" => ":attribute mag alleen letters bevatten.",
"alpha_dash" => ":attribute mag alleen letters, nummers, onderstreep(_) en strepen(-) bevatten.",
"alpha_num" => ":attribute mag alleen letters en nummers bevatten.",
"array" => ":attribute moet geselecteerde elementen bevatten.",
"before" => ":attribute moet een datum voor :date zijn.",
"between" => array(
"numeric" => ":attribute moet tussen :min en :max zijn.",
"file" => ":attribute moet tussen :min en :max kilobytes zijn.",
"string" => ":attribute moet tussen :min en :max karakters zijn.",
"array" => ":attribute moet tussen :min en :max items bevatten."
),
"confirmed" => ":attribute bevestiging komt niet overeen.",
"count" => ":attribute moet precies :count geselecteerde elementen bevatten.",
"countbetween" => ":attribute moet tussen :min en :max geselecteerde elementen bevatten.",
"countmax" => ":attribute moet minder dan :max geselecteerde elementen bevatten.",
"countmin" => ":attribute moet minimaal :min geselecteerde elementen bevatten.",
"date_format" => ":attribute moet een geldig datum formaat bevatten.",
"different" => ":attribute en :other moeten verschillend zijn.",
"email" => ":attribute is geen geldig e-mailadres.",
"exists" => ":attribute bestaat niet.",
"image" => ":attribute moet een afbeelding zijn.",
"in" => ":attribute is ongeldig.",
"integer" => ":attribute moet een getal zijn.",
"ip" => ":attribute moet een geldig IP-adres zijn.",
"match" => "Het formaat van :attribute is ongeldig.",
"max" => array(
"numeric" => ":attribute moet minder dan :max zijn.",
"file" => ":attribute moet minder dan :max kilobytes zijn.",
"string" => ":attribute moet minder dan :max karakters zijn.",
"array" => ":attribute mag maximaal :max items bevatten."
),
"mimes" => ":attribute moet een bestand zijn van het bestandstype :values.",
"min" => array(
"numeric" => ":attribute moet minimaal :min zijn.",
"file" => ":attribute moet minimaal :min kilobytes zijn.",
"string" => ":attribute moet minimaal :min karakters zijn.",
"array" => ":attribute moet minimaal :min items bevatten."
),
"not_in" => "Het formaat van :attribute is ongeldig.",
"numeric" => ":attribute moet een nummer zijn.",
"required" => ":attribute is verplicht.",
"required_with" => ":attribute is verplicht i.c.m. :values",
"required_with_all" => ":attribute is verplicht i.c.m. :values",
"required_without" => ":attribute is verplicht als :values niet ingevuld is.",
"required_without_all" => ":attribute is verplicht als :values niet ingevuld zijn.",
"same" => ":attribute en :other moeten overeenkomen.",
"size" => array(
"numeric" => ":attribute moet :size zijn.",
"file" => ":attribute moet :size kilobyte zijn.",
"string" => ":attribute moet :size characters zijn.",
"array" => ":attribute moet :size items bevatten."
),
"unique" => ":attribute is al in gebruik.",
"url" => ":attribute is geen geldige URL.",
"positive" => ":attribute moet groter zijn dan nul.",
"has_credit" => "De klant heeft niet voldoende krediet.",
/*
|--------------------------------------------------------------------------
| Custom Validation Language Lines
|--------------------------------------------------------------------------
|
| Here you may specify custom validation messages for attributes using the
| convention "attribute.rule" to name the lines. This makes it quick to
| specify a specific custom language line for a given attribute rule.
|
*/
'custom' => array(
'attribute-name' => array(
'rule-name' => 'custom-message',
),
),
/*
|--------------------------------------------------------------------------
| Custom Validation Attributes
|--------------------------------------------------------------------------
|
| The following language lines are used to swap attribute place-holders
| with something more reader friendly such as E-Mail Address instead
| of "email". This simply helps us make messages a little cleaner.
|
*/
'attributes' => array(),
);

View File

@ -229,10 +229,10 @@ return array(
'cloned_invoice' => 'Fatura clonada com sucesso',
'emailed_invoice' => 'Fatura enviada por email com sucesso',
'and_created_client' => 'e o cliente foi criado',
'archived_invoice' => 'Crédito arquivado com sucesso',
'archived_invoices' => ':count créditos arquivados com sucesso',
'deleted_invoice' => 'Créditos apagados com sucesso',
'deleted_invoices' => ':count créditos apagados com sucesso',
'archived_invoice' => 'Fatura arquivado com sucesso',
'archived_invoices' => ':count faturas arquivados com sucesso',
'deleted_invoice' => 'Fatura apagados com sucesso',
'deleted_invoices' => ':count faturas apagados com sucesso',
'created_payment' => 'Pagamento criado com sucesso',
'archived_payment' => 'Pagamento arquivado com sucesso',
@ -251,9 +251,7 @@ return array(
'confirmation_subject' => 'Confirmação de Conta do Invoice Ninja',
'confirmation_header' => 'Confirmação de Conta',
'confirmation_message' => 'Favor acessar o link abaixo para confirmar a sua conta.',
'invoice_subject' => 'Nova fatura :invoice',
'invoice_message' => 'Para visualizar a sua fatura de :amount, clique no link abaixo.',
'payment_subject' => 'Recebido Pagamento de :invoice',
'payment_message' => 'Obrigado pelo seu pagamento de :amount.',
'email_salutation' => 'Caro :name,',
'email_signature' => 'Até mais,',
@ -282,5 +280,18 @@ return array(
'remove_logo_link' => 'Click here',
],
'logout' => 'Log Out',
'sign_up_to_save' => 'Sign up to save your work',
'agree_to_terms' =>'I agree to the Invoice Ninja :terms',
'terms_of_service' => 'Terms of Service',
'email_taken' => 'The email address is already regiestered',
'working' => 'Working',
'success' => 'Success',
'success_message' => 'You have succesfully registered. Please visit the link in the account confirmation email to verify your email address.',
'erase_data' => 'This will permanently erase your data.',
'password' => 'Password',
'close' => 'Close',
'invoice_subject' => 'New invoice from :account',
'payment_subject' => 'Recebido Pagamento de', // I remove the invoice number, is it still correct? Thanks!
);

View File

@ -52,6 +52,13 @@ class Invoice extends EntityModel
return $this->invoice_status_id >= INVOICE_STATUS_VIEWED;
}
public function isPaid()
{
return $this->invoice_status_id >= INVOICE_STATUS_PAID;
}
public function hidePrivateFields()
{
$this->setVisible(['invoice_number', 'discount', 'po_number', 'invoice_date', 'due_date', 'terms', 'public_notes', 'amount', 'balance', 'invoice_items', 'client', 'tax_name', 'tax_rate', 'account', 'invoice_design_id']);

View File

@ -13,11 +13,11 @@ class ContactMailer extends Mailer {
public function sendInvoice(Invoice $invoice)
{
$view = 'invoice';
$subject = trans('texts.invoice_subject', ['invoice' => $invoice->invoice_number]);
$invoice->load('invitations', 'client', 'account');
$view = 'invoice';
$subject = trans('texts.invoice_subject', ['invoice' => $invoice->invoice_number, 'account' => $invoice->account->getDisplayName()]);
foreach ($invoice->invitations as $invitation)
{
if (!$invitation->user->email)

View File

@ -2,9 +2,44 @@
use Client;
use Contact;
use Account;
use Request;
use Session;
use Language;
use User;
class AccountRepository
{
public function create()
{
$account = new Account;
$account->ip = Request::getClientIp();
$account->account_key = str_random(RANDOM_KEY_LENGTH);
if (Session::has(SESSION_LOCALE))
{
$locale = Session::get(SESSION_LOCALE);
$language = Language::whereLocale($locale)->first();
if ($language)
{
$account->language_id = $language->id;
}
}
$account->save();
$random = str_random(RANDOM_KEY_LENGTH);
$user = new User;
$user->password = $random;
$user->password_confirmation = $random;
$user->username = $random;
$account->users()->save($user);
return $account;
}
public function getSearchData()
{
$clients = \DB::table('clients')

View File

@ -113,20 +113,13 @@ HTML::macro('menu_link', function($type) {
$Type = ucfirst($type);
$Types = ucfirst($types);
$class = ( Request::is($types) || Request::is('*'.$type.'*')) ? ' active' : '';
$str= '<li class="dropdown '.$class.'">
<a href="'.URL::to($types).'" class="dropdown-toggle">'.$Types.'</a>
<ul class="dropdown-menu" id="menu1">
<li><a href="'.URL::to($types.'/create').'">New '.$Type.'</a></li>';
//<li><a href="'.URL::to($types).'">View '.$Types.'</a></li>';
/*
if ($Type == 'Invoice') {
$str .= '<li><a href="'.URL::to('recurring_invoices').'">Recurring Invoices</a></li>';
}
*/
return $str . '</ul>
</li>';
return '<li class="dropdown '.$class.'">
<a href="'.URL::to($types).'" class="dropdown-toggle">'.trans("texts.$types").'</a>
<ul class="dropdown-menu" id="menu1">
<li><a href="'.URL::to($types.'/create').'">'.trans("texts.new_$type").'</a></li>
</ul>
</li>';
});
HTML::macro('image_data', function($imagePath) {

View File

@ -108,11 +108,11 @@
<div class="navbar-form navbar-right">
@if (Auth::check() && !Auth::user()->registered)
{{ Button::sm_success_primary('Sign up', array('id' => 'signUpButton', 'data-toggle'=>'modal', 'data-target'=>'#signUpModal')) }} &nbsp;
{{ Button::sm_success_primary(trans('texts.sign_up'), array('id' => 'signUpButton', 'data-toggle'=>'modal', 'data-target'=>'#signUpModal')) }} &nbsp;
@if (Auth::check() && Auth::user()->showSignUpPopOver())
<button id="signUpPopOver" type="button" class="btn btn-default" data-toggle="popover" data-placement="bottom" data-content="Sign up to save your work" data-html="true" style="display:none">
Sign Up
<button id="signUpPopOver" type="button" class="btn btn-default" data-toggle="popover" data-placement="bottom" data-content="{{ trans('texts.sign_up_to_save') }}" data-html="true" style="display:none">
{{ trans('texts.sign_up') }}
</button>
<script>
@ -133,19 +133,19 @@
@if (Auth::user()->registered)
{{ Auth::user()->getFullName() }}
@else
Guest
{{ trans('texts.guest') }}
@endif
</span>
<span class="caret"></span>
</button>
<ul class="dropdown-menu" role="menu">
<li>{{ link_to('company/details', 'Company Details') }}</li>
<li>{{ link_to('company/payments', 'Online Payments') }}</li>
<li>{{ link_to('company/notifications', 'Notifications') }}</li>
<li>{{ link_to('company/import_export', 'Import/Export') }}</li>
<li>{{ link_to('company/details', trans('texts.company_details')) }}</li>
<li>{{ link_to('company/payments', trans('texts.online_payments')) }}</li>
<li>{{ link_to('company/notifications', trans('texts.notifications')) }}</li>
<li>{{ link_to('company/import_export', trans('texts.import_export')) }}</li>
<li class="divider"></li>
<li>{{ link_to('#', 'Logout', array('onclick'=>'logout()')) }}</li>
<li>{{ link_to('#', trans('texts.logout'), array('onclick'=>'logout()')) }}</li>
</ul>
</div>
</div>
@ -242,7 +242,7 @@ Want something changed? We're {{ link_to('https://github.com/hillelcoren/invoice
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
<h4 class="modal-title" id="myModalLabel">Sign up</h4>
<h4 class="modal-title" id="myModalLabel">{{ trans('texts.sign_up') }}</h4>
</div>
<div style="background-color: #fff; padding-right:20px" id="signUpDiv" onkeyup="validateSignUp()" onclick="validateSignUp()" onkeydown="checkForEnter(event)">
@ -257,23 +257,21 @@ Want something changed? We're {{ link_to('https://github.com/hillelcoren/invoice
@endif
{{ Former::hidden('path')->value(Request::path()) }}
{{ Former::text('new_first_name')->label('First name') }}
{{ Former::text('new_last_name')->label('Last name') }}
{{ Former::text('new_email')->label('Email') }}
{{ Former::password('new_password')->label('Password') }}
{{ Former::checkbox('terms_checkbox')->label(' ')->text('I agree to the Invoice Ninja <a href="'.URL::to('terms').'" target="_blank">Terms of Service</a>') }}
{{ Former::text('new_first_name')->label(trans('texts.first_name')) }}
{{ Former::text('new_last_name')->label(trans('texts.last_name')) }}
{{ Former::text('new_email')->label(trans('texts.email')) }}
{{ Former::password('new_password')->label(trans('texts.password')) }}
{{ Former::checkbox('terms_checkbox')->label(' ')->text(trans('texts.agree_to_terms', ['terms' => '<a href="'.URL::to('terms').'" target="_blank">'.trans('texts.terms_of_service').'</a>'])) }}
{{ Former::close() }}
<center><div id="errorTaken" style="display:none">&nbsp;<br/>The email address is already regiestered</div></center>
<center><div id="errorTaken" style="display:none">&nbsp;<br/>{{ trans('texts.email_taken') }}</div></center>
<br/>
</div>
<div style="padding-left:40px;padding-right:40px;display:none;min-height:130px" id="working">
<h3>Working...</h3>
<h3>{{ trans('texts.working') }}...</h3>
<div class="progress progress-striped active">
<div class="progress-bar" role="progressbar" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100" style="width: 100%"></div>
</div>
@ -281,15 +279,14 @@ Want something changed? We're {{ link_to('https://github.com/hillelcoren/invoice
<div style="background-color: #fff; padding-right:20px;padding-left:20px; display:none" id="signUpSuccessDiv">
<br/>
<h3>Success</h3>
You have succesfully registered. Please visit the link in the account confirmation email to verify your email address.
<br/>&nbsp;
<h3>{{ trans('texts.success') }}</h3>
{{ trans('texts.success_message') }}<br/>&nbsp;
</div>
<div class="modal-footer" id="signUpFooter" style="margin-top: 0px">
<button type="button" class="btn btn-default" data-dismiss="modal">Close <i class="glyphicon glyphicon-remove-circle"></i></button>
<button type="button" class="btn btn-primary" id="saveSignUpButton" onclick="validateServerSignUp()" disabled>Save <i class="glyphicon glyphicon-floppy-disk"></i></button>
<button type="button" class="btn btn-default" data-dismiss="modal">{{ trans('texts.close') }} <i class="glyphicon glyphicon-remove-circle"></i></button>
<button type="button" class="btn btn-primary" id="saveSignUpButton" onclick="validateServerSignUp()" disabled>{{ trans('texts.save') }} <i class="glyphicon glyphicon-floppy-disk"></i></button>
</div>
</div>
</div>
@ -301,17 +298,17 @@ Want something changed? We're {{ link_to('https://github.com/hillelcoren/invoice
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
<h4 class="modal-title" id="myModalLabel">Logout</h4>
<h4 class="modal-title" id="myModalLabel">{{ trans('texts.logout') }}</h4>
</div>
<div class="container">
<h3>Are you sure?</h3>
<p>This will permanently erase your data.</p>
<h3>{{ trans('texts.are_you_sure') }}</h3>
<p>{{ trans('texts.erase_data') }}</p>
</div>
<div class="modal-footer" id="signUpFooter">
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
<button type="button" class="btn btn-primary" onclick="logout(true)">Logout</button>
<button type="button" class="btn btn-default" data-dismiss="modal">{{ trans('texts.cancel') }}</button>
<button type="button" class="btn btn-primary" onclick="logout(true)">{{ trans('texts.logout') }}</button>
</div>
</div>
</div>

View File

@ -274,7 +274,7 @@
<iframe id="theFrame" style="display:none" frameborder="1" width="100%" height="1180"></iframe>
<canvas id="theCanvas" style="display:none;width:100%;border:solid 1px #CCCCCC;"></canvas>
@if (!Auth::user()->isPro())
@if (false && !Auth::user()->isPro())
{{ trans('texts.pro_plan.remove_logo', ['link'=>link_to('account/enable_pro_plan', trans('texts.pro_plan.remove_logo_link'))]) }}
@endif

View File

@ -9,7 +9,7 @@
@section('content')
@if ($invoice->client->account->isGatewayConfigured())
@if ($invoice->client->account->isGatewayConfigured() && !$invoice->isPaid())
<div class="pull-right" style="width:270px">
{{ Button::normal(trans('texts.download_pdf'), array('onclick' => 'onDownloadClick()', 'class' => 'btn-lg')) }}
{{ Button::primary_link(URL::to('payment/' . $invitation->invitation_key), trans('texts.pay_now'), array('class' => 'btn-lg pull-right')) }}

View File

@ -1,86 +1,90 @@
@extends('public.header')
@section('content')
<section class="hero3" data-speed="2" data-type="background">
<div class="container">
<div class="caption">
<h1>WHY INVOICE NINJA?
</h1>
</div>
</div>
</section>
<section class="hero background hero3" data-speed="2" data-type="background">
<div class="caption-side"></div>
<div class="container">
<div class="row" style="margin:0;">
<div class="caption-wrap">
<div class="caption">
<h1>About <span style="color:#ecd816"> InvoiceNinja</span></h1>
</div>
</div>
</div>
</div>
</section>
<section class="about center">
<div class="container">
<div class="row">
<div class="col-md-8 col-md-offset-2">
<h2>Open Source Platform</h2>
<p>Free yourself from online invoicing platforms with high monthly fees and limited functionality. Being <a href="https://github.com/hillelcoren/invoice-ninja" target="_blank">open source</a> allows us fast app development, security audits by the open-course community, and we can keep it <strong>FREE!</strong></p>
<h2>What is Invoice Ninja?</h2>
<p>Invoice Ninja is a free, open-source solution for invoicing and billing customers. With Invoice Ninja, you can easily build and send beautiful invoices from any device that has access to the web. Your clients can print your invoices, download them as pdf files, and even pay you online from within the system. </p>
<p>Yeah, there are other tools that do similar things, but ours is easier to use, better looking, faster, more powerful, more secure and costs less. In fact, you can use Invoice Ninja 100% free of charge. <strong>Forever</strong>.</p>
</div>
</div>
</div>
</section>
<section class="about white-bg">
<section class="team white-bg center">
<div class="container">
<div class="row">
<div class="col-md-5">
<div class="screendump">
<img src="images/about1.jpg">
</div>
</div>
<div class="col-md-7">
<h2>Live PDF Creation</h2>
<p><strong>Look professional from day #1.</strong> Select one of our beautiful invoice templates to suit your company identity, switch between designs in real time to preview invoices & email them to clients with one click. The live preview PDF function was designed for an efficient and hassle-free experience, and its awesome!
</p>
</div>
</div>
</div>
</section>
<section class="about">
<div class="container">
<div class="row">
<div class="col-md-7">
<h2>Online Payments</h2>
<p><strong>Authorize.net, Beanstream, PayPal?</strong> InvoiceNinja supports the most popular online payment gateways! If you need help integrating a third party gateway we dont yet support, please contact us! Were happy to help! If you need assistance of want to learn more about online payment solutions, contact us!</p>
</div>
<div class="col-md-5">
<div class="screendump">
<img src="images/about2.jpg">
</div>
</div>
</div>
</div>
</section>
<!--
<section class="about center white-bg">
<div class="container">
<div class="row">
<div class="row">
<div class="col-md-8 col-md-offset-2">
<h2>Info about the company/story</h2>
<p>Donec id elit non mi porta gravida at eget metus.
Fusce dapibus, tellus ac cursus commodo, tortor mauris
condimentum nibh, ut fermentum massa justo sit amet
risus. Etiam porta sem malesuada magna mollis euismod.
Donec sed odio dui.</p>
</div>
</div>
</div>
</section>
-->
<section class="upper-footer">
<div class="container">
<div class="row">
<div class="col-md-3 center-block">
<a href="#">
<div class="cta">
<h2 onclick="return getStarted()">Invoice Now <span>+</span></h2>
<h2>Team Ninja</h2>
<p>Invoice Ninja is managed by a team of seasoned web workers. Weve worked plenty with the other products out there, and we thought it was high time that a better, more powerful, lighter and less evil online invoicing tool became available. We launched in early 2014 and have been thrilled by the enthusiastic response weve received from our growing community of users.</p>
</div>
</a>
</div>
<div class="row">
<div class="col-md-3">
<img src="images/shalomstark.jpg" alt="Shalom Stark" class="img-circle">
<h2>SHALOM STARK</h2>
<p class="blue-text">Co-Founder, CEO</p>
<p>Shalom has specialized in small business development for nearly 10 years. In addition to InvoiceNinja.com Shalom is CEO of a leading tour agency in Israel.</p>
<p><span class="social"><a href="https://twitter.com/shalomstark" target="_blank"><img src="images/twitter.svg" alt="Twitter"></a></span>
<span class="social"><a href="https://twitter.com/shalomstark" target="_blank"><img src="images/linkedin.svg" alt="LinkedIn"></a></span>
</p>
<p class="blue-text" style="margin-bottom: 2px;"><a href="http://shalomisraeltours.com/">shalomisraeltours.com</a></p>
<p class="blue-text"><a href="http://shalomholytours.com/" target="_blank">shalomholytours.com</a></p>
</div>
<div class="col-md-3">
<img src="images/hillelcoren.jpg" alt="Hillel Coren" class="img-circle">
<h2>HILLEL COREN</h2>
<p class="blue-text">Co-Founder, CTO</p>
<p>Hillel has been developing enterprise applications for nearly 15 years. His open-source <a href="http://www.adobe.com/cfusion/exchange/index.cfm?event=extensionDetail&extid=1721530">AutoComplete component</a> has been used by thousands of developers around the world.</p>
<p><span class="social"><a href="https://twitter.com/hillelcoren" target="_blank"><img src="images/twitter.svg" alt="Twitter"></a></span>
<span class="social"><a href="http://www.linkedin.com/profile/view?id=105143214" target="_blank"><img src="images/linkedin.svg" alt="LinkedIn"></a></span>
</p>
<p class="blue-text"><a href="http://hillelcoren.com/" target="_blank">hillelcoren.com</a></p>
</div>
<div class="col-md-3">
<img src="images/razikantorp.jpg" alt="Razi Kantorp" class="img-circle">
<h2>RAZI KANTORP</h2>
<p class="blue-text">Designer</p>
<p>Razi is a pixel nerd with a great deal of experience in design for web sites and applications. When she isn't busy with InvoiceNinja she runs a small web agency in Stockholm called kantorp-wegl.in</p>
<p><span class="social"><a href="https://twitter.com/kantorpweglin" target="_blank"><img src="images/twitter.svg" alt="Twitter"></a></span>
<span class="social"><a href="http://www.linkedin.com/profile/view?id=105143214" target="_blank"><img src="images/linkedin.svg" alt="LinkedIn"></a></span>
<span class="social"><a href="http://instagram.com/kantorpweglin" target="_blank"><img src="images/instagram.svg" alt="Twitter"></a>
</p>
<p class="blue-text"><a href="http://kantorp-wegl.in/" target="_blank">kantorp-wegl.in</a></p>
</div>
<div class="col-md-3">
<img src="images/benjacobson.jpg" alt="Ben Jacobsen" class="img-circle">
<h2>BEN JACOBSON</h2>
<p class="blue-text">Marketing</p>
<p>A veteran digital marketer and content strategist, Ben specializes in building communities around brands that make business easier for freelancers, SMBs and micro-entrepreneurs. Ben issues electronic invoices like they were free.
</p>
<p><span class="social"><a href="https://twitter.com/osbennn" target="_blank"><img src="images/twitter.svg" alt="Twitter"></a></span>
<span class="social"><a href="https://www.linkedin.com/pub/razi-kantorp/35/368/973" target="_blank"><img src="images/linkedin.svg" alt="LinkedIn"></a></span>
<span class="social"><a href="http://about.me/osbennn" target="_blank"><img src="images/me.svg" alt="about.me"></a></span>
</p>
<p class="blue-text"><a href="http://actionpackedmedia.com/" target="_blank">actionpackedmedia.com</a></p>
</div>
</div>
</div>
</section>
@stop

View File

@ -115,6 +115,7 @@ var contactForm = {
<h2>Other ways to reach us</h2>
<p><span class="glyphicon glyphicon-send"></span><a href="mailto:contact@invoiceninja.com">contact@invoiceninja.com</a></p>
<p><span class="glyphicon glyphicon-earphone"></span>+1-800-763-1948</p>
<p><span class="glyphicon glyphicon-comment"></span><a href="http://www.invoiceninja.org" target="_blank">Google Group</a></p>
<p><span class="github"></span><div style="padding-top:10px"> &nbsp;&nbsp;<a href="https://github.com/hillelcoren/invoice-ninja" target="_blank">GitHub Project</a></div></p>
</div>

View File

@ -64,8 +64,9 @@
<a class="brand" href="/"><img src=
"images/invoiceninja-logo.png"></a>
<ul class="navbar-list">
<li>{{ link_to('features', 'Features' ) }}</li>
<li>{{ link_to('faq', 'FAQ' ) }}</li>
<!-- <li>{{ link_to('features', 'Features' ) }}</li> -->
<!-- <li>{{ link_to('faq', 'FAQ' ) }}</li> -->
<li>{{ link_to('about', 'About Us' ) }}</li>
<li>{{ link_to('contact', 'Contact Us' ) }}</li>
<li>{{ link_to('login', Auth::check() ? 'My Account' : 'Login' ) }}</li>
</ul>
@ -121,8 +122,9 @@
<div class="navbar-inner">
<ul class="navbar-list">
<li>{{ link_to('features', 'Features' ) }}</li>
<li>{{ link_to('faq', 'FAQ' ) }}</li>
<!-- <li>{{ link_to('features', 'Features' ) }}</li> -->
<!-- <li>{{ link_to('faq', 'FAQ' ) }}</li> -->
<li>{{ link_to('about', 'About Us' ) }}</li>
<li>{{ link_to('contact', 'Contact Us' ) }}</li>
<li>{{ link_to('login', Auth::check() ? 'My Account' : 'Login' ) }}</li>
</ul>
@ -138,7 +140,9 @@
</div>
</div>
</div>
</footer><script src="{{ asset('/js/retina-1.1.0.min.js') }}" type="text/javascript"></script>
</footer>
<script src="{{ asset('/js/retina-1.1.0.min.js') }}" type="text/javascript"></script>
<script type="text/javascript">
$('.expander').simpleexpand();
</script>

View File

@ -289,15 +289,20 @@ section.blue .col-md-6 h1 span {
text-transform: lowercase;
}
section.about {
section.about, section.team {
padding: 70px 0;
}
section.about h2 {
margin: 0 0 25px;
section.about h2, section.team h2 {
font-size: 25px;
margin: 0 0 25px;
text-transform: none;
}
section.team .col-md-3 h2 {
font-size: 20px;
margin-top: 20px;
margin-bottom: 10px;
}
section.about .screendump {
height: 220px;
@ -310,9 +315,25 @@ section.about.white-bg .col-md-5 {
padding-right: 43px;
padding-left: 15px;
}
section.about img {
section.about img, section.team img {
width: 100%;
min-width: 100%;
padding: 0 30px;
}
section.team .col-md-3 {
margin-top: 25px;
}
section.team .col-md-3 p {
font-size: 12px;
}
section.team .social {
width: 30px;
display:inline-block;
margin: 3px 3px 0 3px;
}
section.team .social img{
padding: 0;
}
section.contact .address .glyphicon {

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

View File

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="412px" height="412px" viewBox="50 50 412 412" enable-background="new 50 50 412 412" xml:space="preserve">
<circle fill="#1A1818" cx="256" cy="256" r="158.548"/>
<path id="instagram-circle-icon" fill="#EDD71E" d="M353.894,166.068v25.315c0,4.059-3.291,7.349-7.351,7.349h-24.771
c-4.06,0-7.35-3.291-7.35-7.349v-25.315c0-4.059,3.29-7.35,7.35-7.35h24.771C350.603,158.718,353.894,162.009,353.894,166.068z
M259,290.811c18.642,0,33.752-15.11,33.752-33.752s-15.11-33.751-33.752-33.751c-18.643,0-33.753,15.11-33.753,33.751
C225.247,275.699,240.358,290.811,259,290.811z M462,256c0,113.771-92.229,206-206,206c-113.771,0-206-92.229-206-206
c0-113.771,92.229-206,206-206C369.771,50,462,142.229,462,256z M374.837,222.731h-67.676c6.896,9.689,10.968,21.529,10.968,34.328
c0,32.738-26.541,59.279-59.279,59.279c-32.739,0-59.28-26.541-59.28-59.279c0-12.798,4.069-24.639,10.967-34.328h-67.372v103.89
c0,25.306,20.516,45.82,45.82,45.82h140.032c25.306,0,45.82-20.516,45.82-45.82V222.731z M258.85,302.729
c25.183,0,45.668-20.487,45.668-45.67c0-13.672-6.047-25.95-15.596-34.328c-3.352-2.938-7.13-5.392-11.235-7.259
c-5.748-2.614-12.121-4.083-18.837-4.083c-6.715,0-13.09,1.469-18.839,4.083c-4.104,1.867-7.884,4.321-11.234,7.259
c-9.549,8.377-15.597,20.656-15.597,34.328C213.18,282.24,233.668,302.729,258.85,302.729z M374.837,185.379
c0-25.307-20.516-45.82-45.82-45.82H203.804v57.766h-9.394v-57.766h-5.427c-0.354,0-0.705,0.018-1.059,0.026v57.74h-9.396v-56.554
c-2.274,0.531-4.484,1.229-6.615,2.086v54.468h-9.396v-49.34c-11.708,8.301-19.355,21.949-19.355,37.394v30.093h73.454
c10.751-10.917,25.697-17.693,42.231-17.693c16.532,0,31.479,6.776,42.232,17.693h73.755v-30.093H374.837z"/>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="411.999px" height="412px" viewBox="50.417 50 411.999 412" enable-background="new 50.417 50 411.999 412"
xml:space="preserve">
<circle fill="#1A1818" cx="267.952" cy="246.5" r="158.548"/>
<path id="linkedin-circle-icon" fill="#EDD71E" d="M256.417,50c-113.771,0-206,92.229-206,206c0,113.771,92.229,206,206,206
c113.771,0,205.999-92.229,205.999-206C462.416,142.229,370.188,50,256.417,50z M201.456,355.592h-45.229V209.469h45.229V355.592z
M178.626,190.333c-14.771,0-26.746-12.072-26.746-26.963c0-14.891,11.975-26.963,26.746-26.963
c14.77,0,26.745,12.072,26.745,26.963C205.371,178.261,193.396,190.333,178.626,190.333z M370.952,355.592h-45.01
c0,0,0-55.666,0-76.703s-7.991-32.781-24.626-32.781c-18.103,0-27.562,12.231-27.562,32.781c0,22.504,0,76.703,0,76.703h-43.38
V209.469h43.38v19.679c0,0,13.047-24.137,44.031-24.137c30.986,0,53.165,18.918,53.165,58.058
C370.952,302.209,370.952,355.592,370.952,355.592z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

26
public/images/me.svg Normal file
View File

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="412px" height="412px" viewBox="51.622 53.023 412 412" enable-background="new 51.622 53.023 412 412"
xml:space="preserve">
<circle fill="#EDD71E" cx="257.622" cy="259.023" r="206"/>
<g>
<g>
<path fill="#1A1818" d="M115.904,314.482V203.564h17.388v15.549c3.598-5.435,8.379-9.787,14.354-13.108
c5.978-3.297,12.785-4.958,20.408-4.958c8.493,0,15.45,1.712,20.898,5.121c5.449,3.409,9.26,8.19,11.487,14.306
c9.071-12.947,20.886-19.427,35.417-19.427c11.399,0,20.13,3.045,26.247,9.134c6.113,6.104,9.172,15.489,9.172,28.159v76.143
H251.96v-69.878c0-7.523-0.641-12.933-1.887-16.242c-1.271-3.31-3.56-5.964-6.869-7.99c-3.31-2.013-7.185-3.031-11.651-3.031
c-8.065,0-14.77,2.604-20.093,7.787c-5.334,5.184-7.988,13.488-7.988,24.912v64.442h-19.44v-72.066
c0-8.354-1.584-14.619-4.743-18.797c-3.17-4.177-8.354-6.278-15.551-6.278c-5.474,0-10.53,1.396-15.173,4.188
c-4.644,2.78-8.002,6.846-10.09,12.205c-2.103,5.385-3.134,13.11-3.134,23.201v57.547H115.904z"/>
<path fill="#1A1818" d="M378.606,278.764l20.095,2.402c-3.185,11.349-9.035,20.155-17.604,26.435
c-8.58,6.266-19.501,9.398-32.837,9.398c-16.771,0-30.058-4.996-39.896-14.997c-9.814-9.99-14.734-24.006-14.734-42.048
c0-18.646,4.97-33.14,14.91-43.443c9.927-10.304,22.811-15.464,38.65-15.464c15.337,0,27.855,5.059,37.567,15.148
c9.714,10.09,14.583,24.308,14.583,42.627c0,1.107-0.038,2.78-0.101,5.007h-85.518c0.705,12.179,4.267,21.515,10.682,27.994
c6.404,6.479,14.394,9.712,23.969,9.712c7.134,0,13.223-1.798,18.256-5.422C371.661,292.49,375.65,286.702,378.606,278.764z
M314.806,248.367h64.026c-0.867-9.323-3.308-16.319-7.36-20.999c-6.188-7.234-14.203-10.857-24.067-10.857
c-8.92,0-16.432,2.881-22.509,8.668C318.806,230.967,315.447,238.691,314.806,248.367z"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

14
public/images/twitter.svg Normal file
View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="412px" height="412px" viewBox="50 50 412 412" enable-background="new 50 50 412 412" xml:space="preserve">
<circle fill="#1A1818" cx="262.452" cy="256.384" r="149.048"/>
<path id="twitter-4-icon" fill="#EDD71E" d="M256,50C142.229,50,50,142.229,50,256c0,113.771,92.229,206,206,206
c113.771,0,206-92.229,206-206C462,142.229,369.771,50,256,50z M359.599,220.506c3.021,67.199-47.096,142.124-135.802,142.124
c-26.981,0-52.096-7.911-73.238-21.466c25.347,2.986,50.646-4.044,70.734-19.786c-20.907-0.386-38.556-14.198-44.632-33.181
c7.484,1.432,14.851,1.013,21.573-0.816c-22.976-4.617-38.839-25.316-38.319-47.453c6.438,3.58,13.81,5.729,21.642,5.977
c-21.278-14.221-27.303-42.318-14.785-63.789c23.563,28.906,58.771,47.928,98.479,49.92c-6.971-29.886,15.702-58.667,46.54-58.667
c13.742,0,26.16,5.802,34.874,15.088c10.886-2.143,21.108-6.119,30.343-11.594c-3.567,11.157-11.146,20.521-21.01,26.433
c9.665-1.153,18.874-3.722,27.441-7.523C377.033,205.355,368.935,213.771,359.599,220.506z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -91,7 +91,7 @@ function GetReportTemplate4(doc, invoice, layout, checkMath) {
doc.rect(left, top, width, height, 'FD');
doc.setFontType("bold");
doc.text(layout.footerLeft, y, 'Balance Due');
doc.text(layout.footerLeft, y, invoiceLabels.balance_due);
total = formatMoney(invoice.balance_amount, currencyId);
var totalX = layout.headerRight - (doc.getStringUnitWidth(total) * doc.internal.getFontSize());
@ -761,7 +761,7 @@ function GetReportTemplate1(doc, invoice, layout, checkMath)
doc.setFontSize(10);
Msg='Balance Due';
Msg = invoiceLabels.balance_due;
var TmpMsgX = layout.unitCostRight-(doc.getStringUnitWidth(Msg) * doc.internal.getFontSize());
doc.text(TmpMsgX, y, Msg);
@ -936,7 +936,7 @@ function GetReportTemplate2(doc, invoice, layout, checkMath)
doc.setFontSize(12);
x += doc.internal.getFontSize()*4;
Msg='Balance Due';
Msg = invoiceLabels.balance_due;
var TmpMsgX = layout.unitCostRight-(doc.getStringUnitWidth(Msg) * doc.internal.getFontSize());
@ -1172,7 +1172,7 @@ function GetReportTemplate3(doc, invoice, layout, checkMath)
SetPdfColor('White', doc);
doc.setFontSize(12);
var label='Balance Due';
var label = invoiceLabels.balance_due;
var labelX = layout.unitCostRight-(doc.getStringUnitWidth(label) * doc.internal.getFontSize());
doc.text(labelX, y+2, label);