diff --git a/README.md b/README.md
index f72ca60d9439..8b5c93893648 100644
--- a/README.md
+++ b/README.md
@@ -8,9 +8,9 @@ Most online invoicing sites are expensive. They shouldn't be. The aim of this pr
[This guide](http://hillelcoren.com/invoice-ninja/self-hosting/) is the simplest way to setup the site. The high level instructions for setting up the site using Git are below but there's also a more detailed [setup guide](http://hillelcoren.com/invoice-ninja/laravel-ubuntu-virtualbox/).
-To connect follow [@invoiceninja](https://twitter.com/invoiceninja) or join the [Facebook Group](https://www.facebook.com/invoiceninja). For discussion of the code please use the [Google Group](https://groups.google.com/d/forum/invoiceninja).
+If you'd like to translate the site please use [caouecs/Laravel4-long](https://github.com/caouecs/Laravel4-lang) for the starter files. To make changes locally you'll need to run `bowser install` to download the JavaScript dependencies and then `grunt` to build the JS and CSS files.
-If you'd like to translate the site please use [caouecs/Laravel4-long](https://github.com/caouecs/Laravel4-lang) for the starter files.
+To connect follow [@invoiceninja](https://twitter.com/invoiceninja) or join the [Facebook Group](https://www.facebook.com/invoiceninja). For discussion of the code please use the [Google Group](https://groups.google.com/d/forum/invoiceninja).
Site design by [kantorp-wegl.in](http://kantorp-wegl.in/)
diff --git a/app/controllers/InvoiceController.php b/app/controllers/InvoiceController.php
index 675f35c06945..bb16afc146b0 100755
--- a/app/controllers/InvoiceController.php
+++ b/app/controllers/InvoiceController.php
@@ -126,7 +126,7 @@ class InvoiceController extends \BaseController {
$invoice->is_pro = $client->account->isPro();
$data = array(
- 'hideHeader' => true,
+ 'hideHeader' => $client->account->isPro() && Utils::isNinjaProd(),
'showBreadcrumbs' => false,
'invoice' => $invoice->hidePrivateFields(),
'invitation' => $invitation,
diff --git a/app/controllers/PaymentController.php b/app/controllers/PaymentController.php
index 9eb2c133fcaf..680dec12562b 100755
--- a/app/controllers/PaymentController.php
+++ b/app/controllers/PaymentController.php
@@ -258,7 +258,7 @@ class PaymentController extends \BaseController
$data = [
'showBreadcrumbs' => false,
- 'hideHeader' => true,
+ 'hideHeader' => $client->account->isPro() && Utils::isNinjaProd(),
'invitationKey' => $invitationKey,
'invoice' => $invoice,
'client' => $client,
diff --git a/app/lang/lt/pagination.php b/app/lang/lt/pagination.php
new file mode 100755
index 000000000000..eb9be3baaed5
--- /dev/null
+++ b/app/lang/lt/pagination.php
@@ -0,0 +1,20 @@
+ '« Previous',
+
+ 'next' => 'Next »',
+
+);
\ No newline at end of file
diff --git a/app/lang/lt/reminders.php b/app/lang/lt/reminders.php
new file mode 100755
index 000000000000..ad2262124d4d
--- /dev/null
+++ b/app/lang/lt/reminders.php
@@ -0,0 +1,24 @@
+ "Passwords must be at least six characters and match the confirmation.",
+
+ "user" => "We can't find a user with that e-mail address.",
+
+ "token" => "This password reset token is invalid.",
+
+ "sent" => "Password reminder sent!",
+
+);
\ No newline at end of file
diff --git a/app/lang/lt/texts.php b/app/lang/lt/texts.php
new file mode 100644
index 000000000000..9dbdf1c9cf7a
--- /dev/null
+++ b/app/lang/lt/texts.php
@@ -0,0 +1,402 @@
+ 'Įmonė',
+ 'name' => 'Vardas',
+ 'website' => 'Internetinis puslapis',
+ 'work_phone' => 'Telefonas',
+ 'address' => 'Adresas',
+ 'address1' => 'Gatvė',
+ 'address2' => 'Kabinetas',
+ 'city' => 'Miestas',
+ 'state' => 'Valstija',
+ 'postal_code' => 'Pašto kodas',
+ 'country_id' => 'Šalis',
+ 'contacts' => 'Kontaktinė infromacija',
+ 'first_name' => 'Vardas',
+ 'last_name' => 'Pavardė',
+ 'phone' => 'Telefonas',
+ 'email' => 'El. paštas',
+ 'additional_info' => 'Papidoma Info',
+ 'payment_terms' => 'Apmokėjimo sąlygos',
+ 'currency_id' => 'Valiuta',
+ 'size_id' => 'Dydis',
+ 'industry_id' => 'Veiklos sritis',
+ 'private_notes' => 'Privatūs užrašai',
+
+ // invoice
+ 'invoice' => 'Sąkaita faktūra',
+ 'client' => 'Klientas',
+ 'invoice_date' => 'Išrašymo data',
+ 'due_date' => 'Apmokėjimo Data',
+ 'invoice_number' => 'Serija ir Nr.',
+ 'invoice_number_short' => 'Nr.',
+ 'po_number' => 'PO Numeris',
+ 'po_number_short' => 'PO Nr.',
+ 'frequency_id' => 'Kaip dažnai',
+ 'discount' => 'Nuolaida',
+ 'taxes' => 'Mokesčiai',
+ 'tax' => 'PVM',
+ 'item' => 'Prekė',
+ 'description' => 'Aprašymas',
+ 'unit_cost' => 'Vnt. kaina',
+ 'quantity' => 'Kiekis',
+ 'line_total' => 'Suma',
+ 'subtotal' => 'Suma viso',
+ 'paid_to_date' => 'Apmokėta',
+ 'balance_due' => 'Apmokėti',
+ 'invoice_design_id' => 'Dizainas',
+ 'terms' => 'Sąlygos',
+ 'your_invoice' => 'Tavo sąskaitos',
+
+ 'remove_contact' => 'Pašalinti kontaktą',
+ 'add_contact' => 'Pridėti kontaktą',
+ 'create_new_client' => 'Sukurti naują klientą',
+ 'edit_client_details' => 'Redaguoti kliento informaciją',
+ 'enable' => 'Įgalinti',
+ 'learn_more' => 'Plačiau',
+ 'manage_rates' => 'Redaguoti įkainius',
+ 'note_to_client' => 'Pastaba klientui',
+ 'invoice_terms' => 'Sąskaitos sąlygos',
+ 'save_as_default_terms' => 'Išsaugoti sąlygas kaip standratrines',
+ 'download_pdf' => 'Atsisiųsti PDF',
+ 'pay_now' => 'Apmokėti dabar',
+ 'save_invoice' => 'Išsaugoti sąskaitą',
+ 'clone_invoice' => 'Kopijuoti sąskaitą',
+ 'archive_invoice' => 'Archyvuoti sąskaitą',
+ 'delete_invoice' => 'Ištrinti sąskaitą',
+ 'email_invoice' => 'Išsiųsti el. paštu sąskaitą',
+ 'enter_payment' => 'Įvesti apmokėjimą',
+ 'tax_rates' => 'Mokesčių įkainiai',
+ 'rate' => 'Įkainis',
+ 'settings' => 'Nustatymai',
+ 'enable_invoice_tax' => 'Įjungti PVM mokesčius',
+ 'enable_line_item_tax' => 'Įjungti PVM mokesčius sumai',
+
+ // navigation
+ 'dashboard' => 'Darbastalis',
+ 'clients' => 'Klientai',
+ 'invoices' => 'Sąskaitos',
+ 'payments' => 'Mokėjimai',
+ 'credits' => 'Kreditai',
+ 'history' => 'Istorija',
+ 'search' => 'Paieška',
+ 'sign_up' => 'Prisijunk',
+ 'guest' => 'Svečias',
+ 'company_details' => 'Imonės informacija',
+ 'online_payments' => 'Online mokėjimai',
+ 'notifications' => 'Priminimai',
+ 'import_export' => 'Importas/Eksportas',
+ 'done' => 'Baigta',
+ 'save' => 'Saugoti',
+ 'create' => 'Kurti',
+ 'upload' => 'Įkelti',
+ 'import' => 'Importuoti',
+ 'download' => 'Atsiųsti',
+ 'cancel' => 'Atšaukti',
+ 'close' => 'Uždaryti',
+ 'provide_email' => 'Prašome pateikti galiojantį el. pašto adresą',
+ 'powered_by' => 'Energija teikia',
+ 'no_items' => 'Įrašų nėra',
+
+ // recurring invoices
+ 'recurring_invoices' => 'Recurring Invoices',
+ 'recurring_help' => '
Automatically send clients the same invoices weekly, bi-monthly, monthly, quarterly or annually.
+ Use :MONTH, :QUARTER or :YEAR for dynamic dates. Basic math works as well, for example :MONTH-1.
+ Examples of dynamic invoice variables:
+
+ - "Gym membership for the month of :MONTH" => "Gym membership for the month of July"
+ - ":YEAR+1 yearly subscription" => "2015 Yearly Subscription"
+ - "Retainer payment for :QUARTER+1" => "Retainer payment for Q2"
+
',
+
+ // dashboard
+ 'in_total_revenue' => 'in total revenue',
+ 'billed_client' => 'billed client',
+ 'billed_clients' => 'billed clients',
+ 'active_client' => 'active client',
+ 'active_clients' => 'active clients',
+ 'invoices_past_due' => 'Invoices Past Due',
+ 'upcoming_invoices' => 'Upcoming invoices',
+ 'average_invoice' => 'Average invoice',
+
+ // list pages
+ 'archive' => 'Archive',
+ 'delete' => 'Delete',
+ 'archive_client' => 'Archive client',
+ 'delete_client' => 'Delete client',
+ 'archive_payment' => 'Archive payment',
+ 'delete_payment' => 'Delete payment',
+ 'archive_credit' => 'Archive credit',
+ 'delete_credit' => 'Delete credit',
+ 'show_archived_deleted' => 'Show archived/deleted',
+ 'filter' => 'Filter',
+ 'new_client' => 'New Client',
+ 'new_invoice' => 'New Invoice',
+ 'new_payment' => 'New Payment',
+ 'new_credit' => 'New Credit',
+ 'contact' => 'Contact',
+ 'date_created' => 'Date Created',
+ 'last_login' => 'Last Login',
+ 'balance' => 'Balance',
+ 'action' => 'Action',
+ 'status' => 'Status',
+ 'invoice_total' => 'Invoice Total',
+ 'frequency' => 'Frequency',
+ 'start_date' => 'Start Date',
+ 'end_date' => 'End Date',
+ 'transaction_reference' => 'Transaction Reference',
+ 'method' => 'Method',
+ 'payment_amount' => 'Payment Amount',
+ 'payment_date' => 'Payment Date',
+ 'credit_amount' => 'Credit Amount',
+ 'credit_balance' => 'Credit Balance',
+ 'credit_date' => 'Credit Date',
+ 'empty_table' => 'No data available in table',
+ 'select' => 'Select',
+ 'edit_client' => 'Edit Client',
+ 'edit_invoice' => 'Edit Invoice',
+
+ // client view page
+ 'create_invoice' => 'Create Invoice',
+ 'enter_credit' => 'Enter Credit',
+ 'last_logged_in' => 'Last logged in',
+ 'details' => 'Details',
+ 'standing' => 'Standing',
+ 'credit' => 'Credit',
+ 'activity' => 'Activity',
+ 'date' => 'Date',
+ 'message' => 'Message',
+ 'adjustment' => 'Adjustment',
+ 'are_you_sure' => 'Are you sure?',
+
+ // payment pages
+ 'payment_type_id' => 'Payment type',
+ 'amount' => 'Amount',
+
+ // account/company pages
+ 'work_email' => 'Email',
+ 'language_id' => 'Language',
+ 'timezone_id' => 'Timezone',
+ 'date_format_id' => 'Date format',
+ 'datetime_format_id' => 'Date/Time Format',
+ 'users' => 'Users',
+ 'localization' => 'Localization',
+ 'remove_logo' => 'Remove logo',
+ 'logo_help' => 'Supported: JPEG, GIF and PNG. Recommended size: 200px width by 120px height',
+ 'payment_gateway' => 'Payment Gateway',
+ 'gateway_id' => 'Provider',
+ 'email_notifications' => 'Email Notifications',
+ 'email_sent' => 'Email me when an invoice is sent',
+ 'email_viewed' => 'Email me when an invoice is viewed',
+ 'email_paid' => 'Email me when an invoice is paid',
+ 'site_updates' => 'Site Updates',
+ 'custom_messages' => 'Custom Messages',
+ 'default_invoice_terms' => 'Set default invoice terms',
+ 'default_email_footer' => 'Set default email signature',
+ 'import_clients' => 'Import Client Data',
+ 'csv_file' => 'Select CSV file',
+ 'export_clients' => 'Export Client Data',
+ 'select_file' => 'Please select a file',
+ 'first_row_headers' => 'Use first row as headers',
+ 'column' => 'Column',
+ 'sample' => 'Sample',
+ 'import_to' => 'Import to',
+ 'client_will_create' => 'client will be created',
+ 'clients_will_create' => 'clients will be created',
+
+ // application messages
+ 'created_client' => 'Successfully created client',
+ 'created_clients' => 'Successfully created :count clients',
+ 'updated_settings' => 'Successfully updated settings',
+ 'removed_logo' => 'Successfully removed logo',
+ 'sent_message' => 'Successfully sent message',
+ 'invoice_error' => 'Please make sure to select a client and correct any errors',
+ 'limit_clients' => 'Sorry, this will exceed the limit of :count clients',
+ 'payment_error' => 'There was an error processing your payment. Please try again later.',
+ 'registration_required' => 'Please sign up to email an invoice',
+ 'confirmation_required' => 'Please confirm your email address',
+
+ 'updated_client' => 'Successfully updated client',
+ 'created_client' => 'Successfully created client',
+ 'archived_client' => 'Successfully archived client',
+ 'archived_clients' => 'Successfully archived :count clients',
+ 'deleted_client' => 'Successfully deleted client',
+ 'deleted_clients' => 'Successfully deleted :count clients',
+
+ 'updated_invoice' => 'Successfully updated invoice',
+ 'created_invoice' => 'Successfully created invoice',
+ 'cloned_invoice' => 'Successfully cloned invoice',
+ 'emailed_invoice' => 'Successfully emailed invoice',
+ 'and_created_client' => 'and created client',
+ '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',
+ 'archived_payments' => 'Successfully archived :count payments',
+ 'deleted_payment' => 'Successfully deleted payment',
+ 'deleted_payments' => 'Successfully deleted :count payments',
+ 'applied_payment' => 'Successfully applied payment',
+
+ 'created_credit' => 'Successfully created credit',
+ 'archived_credit' => 'Successfully archived credit',
+ 'archived_credits' => 'Successfully archived :count credits',
+ 'deleted_credit' => 'Successfully deleted credit',
+ 'deleted_credits' => 'Successfully deleted :count credits',
+
+ // Emails
+ '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 from :account',
+ 'invoice_message' => 'To view your invoice for :amount, click the link below.',
+ 'payment_subject' => 'Payment Received',
+ 'payment_message' => 'Thank you for your payment of :amount.',
+ 'email_salutation' => 'Dear :name,',
+ 'email_signature' => 'Regards,',
+ 'email_from' => 'The InvoiceNinja Team',
+ 'user_email_footer' => 'To adjust your email notification settings please visit '.SITE_URL.'/company/notifications',
+ 'invoice_link_message' => 'To view your client invoice click the link below:',
+ 'notification_invoice_paid_subject' => 'Invoice :invoice was paid by :client',
+ 'notification_invoice_sent_subject' => 'Invoice :invoice was sent to :client',
+ 'notification_invoice_viewed_subject' => 'Invoice :invoice was viewed by :client',
+ 'notification_invoice_paid' => 'A payment of :amount was made by client :client towards Invoice :invoice.',
+ 'notification_invoice_sent' => 'The following client :client was emailed Invoice :invoice for :amount.',
+ 'notification_invoice_viewed' => 'The following client :client viewed Invoice :invoice for :amount.',
+ 'reset_password' => 'You can reset your account password by clicking the following link:',
+ 'reset_password_footer' => 'If you did not request this password reset please email our support: ' . CONTACT_EMAIL,
+
+
+ // Payment page
+ 'secure_payment' => 'Secure Payment',
+ 'card_number' => 'Card number',
+ 'expiration_month' => 'Expiration month',
+ 'expiration_year' => 'Expiration year',
+ 'cvv' => 'CVV',
+
+ // Security alerts
+ 'confide' => [
+ 'too_many_attempts' => 'Too many attempts. Try again in few minutes.',
+ 'wrong_credentials' => 'Incorrect email or password.',
+ 'confirmation' => 'Your account has been confirmed!',
+ 'wrong_confirmation' => 'Wrong confirmation code.',
+ 'password_forgot' => 'The information regarding password reset was sent to your email.',
+ 'password_reset' => 'Your password has been changed successfully.',
+ 'wrong_password_reset' => 'Invalid password. Try again',
+ ],
+
+ // Pro Plan
+ 'pro_plan' => [
+ 'remove_logo' => ':link to remove the Invoice Ninja logo by joining the Pro Plan',
+ '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',
+
+ 'pro_plan_product' => 'Pro Plan',
+ 'pro_plan_description' => 'One year enrollment in the Invoice Ninja Pro Plan.',
+ 'pro_plan_success' => 'Thanks for choosing Invoice Ninja\'s Pro plan!
+ Next StepsA payable invoice has been sent to the email
+ address associated with your account. To unlock all of the awesome
+ Pro features, please follow the instructions on the invoice to pay
+ for a year of Pro-level invoicing.
+ Can\'t find the invoice? Need further assistance? We\'re happy to help
+ -- email us at contact@invoiceninja.com',
+
+ 'unsaved_changes' => 'You have unsaved changes',
+ 'custom_fields' => 'Custom fields',
+ 'company_fields' => 'Company Fields',
+ 'client_fields' => 'Client Fields',
+ 'field_label' => 'Field Label',
+ 'field_value' => 'Field Value',
+ 'edit' => 'Edit',
+ 'set_name' => 'Set your company name',
+ 'view_as_recipient' => 'View as recipient',
+
+ // product management
+ 'product_library' => 'Product Library',
+ 'product' => 'Product',
+ 'products' => 'Products',
+ 'fill_products' => 'Auto-fill products',
+ 'fill_products_help' => 'Selecting a product will automatically fill in the description and cost',
+ 'update_products' => 'Auto-update products',
+ 'update_products_help' => 'Updating an invoice will automatically update the product library',
+ 'create_product' => 'Create Product',
+ 'edit_product' => 'Edit Product',
+ 'archive_product' => 'Archive Product',
+ 'updated_product' => 'Successfully updated product',
+ 'created_product' => 'Successfully created product',
+ 'archived_product' => 'Successfully archived product',
+ 'pro_plan_custom_fields' => ':link to enable custom fields by joining the Pro Plan',
+
+ 'advanced_settings' => 'Advanced Settings',
+ 'pro_plan_advanced_settings' => ':link to enable the advanced settings by joining the Pro Plan',
+ 'invoice_design' => 'Invoice Design',
+ 'specify_colors' => 'Specify colors',
+ 'specify_colors_label' => 'Select the colors used in the invoice',
+
+ 'chart_builder' => 'Chart Builder',
+ 'ninja_email_footer' => 'Use :site to invoice your clients and get paid online for free!',
+ 'go_pro' => 'Go Pro',
+
+ // Quotes
+ 'quote' => 'Quote',
+ 'quotes' => 'Quotes',
+ 'quote_number' => 'Quote Number',
+ 'quote_number_short' => 'Quote #',
+ 'quote_date' => 'Quote Date',
+ 'quote_total' => 'Quote Total',
+ 'your_quote' => 'Your Quote',
+ 'total' => 'Total',
+ 'clone' => 'Clone',
+
+ 'new_quote' => 'New Quote',
+ 'create_quote' => 'Create Quote',
+ 'edit_quote' => 'Edit Quote',
+ 'archive_quote' => 'Archive Quote',
+ 'delete_quote' => 'Delete Quote',
+ 'save_quote' => 'Save Quote',
+ 'email_quote' => 'Email Quote',
+ 'clone_quote' => 'Clone Quote',
+ 'convert_to_invoice' => 'Convert to Invoice',
+ 'view_invoice' => 'View Invoice',
+ 'view_client' => 'View Client',
+ 'view_quote' => 'View Quote',
+
+ 'updated_quote' => 'Successfully updated quote',
+ 'created_quote' => 'Successfully created quote',
+ 'cloned_quote' => 'Successfully cloned quote',
+ 'emailed_quote' => 'Successfully emailed quote',
+ 'archived_quote' => 'Successfully archived quote',
+ 'archived_quotes' => 'Successfully archived :count quotes',
+ 'deleted_quote' => 'Successfully deleted quote',
+ 'deleted_quotes' => 'Successfully deleted :count quotes',
+ 'converted_to_invoice' => 'Successfully converted quote to invoice',
+
+ 'quote_subject' => 'New quote from :account',
+ 'quote_message' => 'To view your quote for :amount, click the link below.',
+ 'quote_link_message' => 'To view your client quote click the link below:',
+ 'notification_quote_sent_subject' => 'Quote :invoice was sent to :client',
+ 'notification_quote_viewed_subject' => 'Quote :invoice was viewed by :client',
+ 'notification_quote_sent' => 'The following client :client was emailed Quote :invoice for :amount.',
+ 'notification_quote_viewed' => 'The following client :client viewed Quote :invoice for :amount.',
+
+ 'session_expired' => 'Your session has expired.',
+
+
+);
+
diff --git a/app/lang/lt/validation.php b/app/lang/lt/validation.php
new file mode 100755
index 000000000000..68b39c68af2f
--- /dev/null
+++ b/app/lang/lt/validation.php
@@ -0,0 +1,102 @@
+ "The :attribute must be accepted.",
+ "active_url" => "The :attribute is not a valid URL.",
+ "after" => "The :attribute must be a date after :date.",
+ "alpha" => "The :attribute may only contain letters.",
+ "alpha_dash" => "The :attribute may only contain letters, numbers, and dashes.",
+ "alpha_num" => "The :attribute may only contain letters and numbers.",
+ "array" => "The :attribute must be an array.",
+ "before" => "The :attribute must be a date before :date.",
+ "between" => array(
+ "numeric" => "The :attribute must be between :min - :max.",
+ "file" => "The :attribute must be between :min - :max kilobytes.",
+ "string" => "The :attribute must be between :min - :max characters.",
+ "array" => "The :attribute must have between :min - :max items.",
+ ),
+ "confirmed" => "The :attribute confirmation does not match.",
+ "date" => "The :attribute is not a valid date.",
+ "date_format" => "The :attribute does not match the format :format.",
+ "different" => "The :attribute and :other must be different.",
+ "digits" => "The :attribute must be :digits digits.",
+ "digits_between" => "The :attribute must be between :min and :max digits.",
+ "email" => "The :attribute format is invalid.",
+ "exists" => "The selected :attribute is invalid.",
+ "image" => "The :attribute must be an image.",
+ "in" => "The selected :attribute is invalid.",
+ "integer" => "The :attribute must be an integer.",
+ "ip" => "The :attribute must be a valid IP address.",
+ "max" => array(
+ "numeric" => "The :attribute may not be greater than :max.",
+ "file" => "The :attribute may not be greater than :max kilobytes.",
+ "string" => "The :attribute may not be greater than :max characters.",
+ "array" => "The :attribute may not have more than :max items.",
+ ),
+ "mimes" => "The :attribute must be a file of type: :values.",
+ "min" => array(
+ "numeric" => "The :attribute must be at least :min.",
+ "file" => "The :attribute must be at least :min kilobytes.",
+ "string" => "The :attribute must be at least :min characters.",
+ "array" => "The :attribute must have at least :min items.",
+ ),
+ "not_in" => "The selected :attribute is invalid.",
+ "numeric" => "The :attribute must be a number.",
+ "regex" => "The :attribute format is invalid.",
+ "required" => "The :attribute field is required.",
+ "required_if" => "The :attribute field is required when :other is :value.",
+ "required_with" => "The :attribute field is required when :values is present.",
+ "required_without" => "The :attribute field is required when :values is not present.",
+ "same" => "The :attribute and :other must match.",
+ "size" => array(
+ "numeric" => "The :attribute must be :size.",
+ "file" => "The :attribute must be :size kilobytes.",
+ "string" => "The :attribute must be :size characters.",
+ "array" => "The :attribute must contain :size items.",
+ ),
+ "unique" => "The :attribute has already been taken.",
+ "url" => "The :attribute format is invalid.",
+
+ "positive" => "The :attribute must be greater than zero.",
+ "has_credit" => "The client does not have enough credit.",
+ "notmasked" => "The values are masked",
+
+ /*
+ |--------------------------------------------------------------------------
+ | 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(),
+
+ /*
+ |--------------------------------------------------------------------------
+ | 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(),
+
+);
diff --git a/app/models/Account.php b/app/models/Account.php
index 7c85a1b23ba3..5b9140908e3e 100755
--- a/app/models/Account.php
+++ b/app/models/Account.php
@@ -217,7 +217,7 @@ class Account extends Eloquent
return $data;
}
-
+
public function isPro()
{
if (!Utils::isNinjaProd())
diff --git a/app/models/Activity.php b/app/models/Activity.php
index 8724b3eab113..fd728b373fb1 100755
--- a/app/models/Activity.php
+++ b/app/models/Activity.php
@@ -140,21 +140,12 @@ class Activity extends Eloquent
if (!$invoice->is_deleted)
{
- if (!$invoice->is_quote)
- {
- $client = $invoice->client;
- $client->balance = $client->balance - $invoice->balance;
- $client->paid_to_date = $client->paid_to_date - ($invoice->amount - $invoice->balance);
- $client->save();
- }
-
$activity = Activity::getBlank();
$activity->invoice_id = $invoice->id;
$activity->client_id = $invoice->client_id;
$activity->activity_type_id = $invoice->is_quote ? ACTIVITY_TYPE_ARCHIVE_QUOTE : ACTIVITY_TYPE_ARCHIVE_INVOICE;
$activity->message = Utils::encodeActivity(Auth::user(), 'archived', $invoice);
$activity->balance = $invoice->client->balance;
- $activity->adjustment = $invoice->is_quote ? 0 : $invoice->balance;
$activity->save();
}
@@ -359,13 +350,7 @@ class Activity extends Eloquent
}
$client = $payment->client;
- $client->balance = $client->balance + $payment->amount;
- $client->paid_to_date = $client->paid_to_date - $payment->amount;
- $client->save();
-
$invoice = $payment->invoice;
- $invoice->balance = $invoice->balance + $payment->amount;
- $invoice->save();
$activity = Activity::getBlank();
$activity->payment_id = $payment->id;
@@ -374,7 +359,7 @@ class Activity extends Eloquent
$activity->activity_type_id = ACTIVITY_TYPE_ARCHIVE_PAYMENT;
$activity->message = Utils::encodeActivity(Auth::user(), 'archived payment');
$activity->balance = $client->balance;
- $activity->adjustment = $payment->amount;
+ $activity->adjustment = 0;
$activity->save();
}
diff --git a/app/routes.php b/app/routes.php
index 1c4f83ef072b..e47bbeb06c47 100755
--- a/app/routes.php
+++ b/app/routes.php
@@ -271,7 +271,7 @@ HTML::macro('menu_link', function($type) {
});
HTML::macro('image_data', function($imagePath) {
- return 'data:image/jpeg;base64,' . base64_encode(file_get_contents($imagePath));
+ return 'data:image/jpeg;base64,' . base64_encode(file_get_contents(public_path().'/'.$imagePath));
});
diff --git a/app/views/header.blade.php b/app/views/header.blade.php
index 85789321a686..49f0d3b65374 100755
--- a/app/views/header.blade.php
+++ b/app/views/header.blade.php
@@ -84,7 +84,6 @@
- @if (Auth::check() && !isset($hideHeader))
{{ HTML::nav_link('dashboard', 'dashboard') }}
{{ HTML::menu_link('client') }}
@@ -175,9 +174,6 @@
- @else
-
- @endif
diff --git a/app/views/public/header.blade.php b/app/views/public/header.blade.php
index 6243f4a2df38..4b02fd373ba2 100644
--- a/app/views/public/header.blade.php
+++ b/app/views/public/header.blade.php
@@ -96,6 +96,7 @@
return false;
}
+@if (!isset($hideHeader) || !$hideHeader)
+@else
+
+@endif