From a74ede6cf75fd19a01bdafbdc13d432cc45036a2 Mon Sep 17 00:00:00 2001 From: vincentdh Date: Mon, 14 Mar 2016 21:49:52 -0400 Subject: [PATCH 01/46] Create 2016_03_14_214710_add_support_three_decimal_taxes.php Changes made to the DB to support 3 decimals tax rates. --- ...214710_add_support_three_decimal_taxes.php | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 database/migrations/2016_03_14_214710_add_support_three_decimal_taxes.php diff --git a/database/migrations/2016_03_14_214710_add_support_three_decimal_taxes.php b/database/migrations/2016_03_14_214710_add_support_three_decimal_taxes.php new file mode 100644 index 000000000000..af35fc927564 --- /dev/null +++ b/database/migrations/2016_03_14_214710_add_support_three_decimal_taxes.php @@ -0,0 +1,28 @@ +decimal('rate', 13, 3)->change(); + }); + } + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('tax_rates', function($table) { + $table->decimal('rate', 13, 2)->change(); + }); + } +} From 2cfdc6c2447c4b64725823f8fff5396df46cde82 Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Tue, 15 Mar 2016 11:59:04 +0200 Subject: [PATCH 02/46] Working on Travis tests --- public/css/built.css | 2 ++ public/css/style.css | 2 ++ 2 files changed, 4 insertions(+) diff --git a/public/css/built.css b/public/css/built.css index 4a7c3612187f..64c3fb6ff0ea 100644 --- a/public/css/built.css +++ b/public/css/built.css @@ -2916,6 +2916,7 @@ box-shadow: 0px 0px 15px 0px rgba(0, 5, 5, 0.2); } /* Style to fix navigation by show icon instead of name */ +/* @media only screen and (min-width : 1200px) { .nav-account-icon { display: none; @@ -2931,6 +2932,7 @@ box-shadow: 0px 0px 15px 0px rgba(0, 5, 5, 0.2); display: none; } } +*/ @media (max-width: 992px) { .hide-phone { diff --git a/public/css/style.css b/public/css/style.css index 97f2bbf79edf..239ec333cc41 100644 --- a/public/css/style.css +++ b/public/css/style.css @@ -789,6 +789,7 @@ box-shadow: 0px 0px 15px 0px rgba(0, 5, 5, 0.2); } /* Style to fix navigation by show icon instead of name */ +/* @media only screen and (min-width : 1200px) { .nav-account-icon { display: none; @@ -804,6 +805,7 @@ box-shadow: 0px 0px 15px 0px rgba(0, 5, 5, 0.2); display: none; } } +*/ @media (max-width: 992px) { .hide-phone { From 2eb569ebbc11db1c1e5237148a0b62d6cc07be8b Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Tue, 15 Mar 2016 12:00:29 +0200 Subject: [PATCH 03/46] Working on Travis tests --- public/css/built.css | 2 -- public/css/style.css | 2 -- 2 files changed, 4 deletions(-) diff --git a/public/css/built.css b/public/css/built.css index 64c3fb6ff0ea..4a7c3612187f 100644 --- a/public/css/built.css +++ b/public/css/built.css @@ -2916,7 +2916,6 @@ box-shadow: 0px 0px 15px 0px rgba(0, 5, 5, 0.2); } /* Style to fix navigation by show icon instead of name */ -/* @media only screen and (min-width : 1200px) { .nav-account-icon { display: none; @@ -2932,7 +2931,6 @@ box-shadow: 0px 0px 15px 0px rgba(0, 5, 5, 0.2); display: none; } } -*/ @media (max-width: 992px) { .hide-phone { diff --git a/public/css/style.css b/public/css/style.css index 239ec333cc41..97f2bbf79edf 100644 --- a/public/css/style.css +++ b/public/css/style.css @@ -789,7 +789,6 @@ box-shadow: 0px 0px 15px 0px rgba(0, 5, 5, 0.2); } /* Style to fix navigation by show icon instead of name */ -/* @media only screen and (min-width : 1200px) { .nav-account-icon { display: none; @@ -805,7 +804,6 @@ box-shadow: 0px 0px 15px 0px rgba(0, 5, 5, 0.2); display: none; } } -*/ @media (max-width: 992px) { .hide-phone { From aa011855227a029f98474a28cdc2c51adad32a3c Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Tue, 15 Mar 2016 12:34:46 +0200 Subject: [PATCH 04/46] Working on Travis tests --- composer.json | 3 ++- composer.lock | 22 +++++++++++----------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/composer.json b/composer.json index 45e6e1872640..b330bdd86f11 100644 --- a/composer.json +++ b/composer.json @@ -66,7 +66,8 @@ "maatwebsite/excel": "~2.0", "ezyang/htmlpurifier": "~v4.7", "cerdic/css-tidy": "~v1.5", - "asgrim/ofxparser": "^1.1" + "asgrim/ofxparser": "^1.1", + "paragonie/random_compat": "^1.2" }, "require-dev": { "phpunit/phpunit": "~4.0", diff --git a/composer.lock b/composer.lock index 61af58eb88b9..43d06631b40a 100644 --- a/composer.lock +++ b/composer.lock @@ -4,8 +4,8 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "e5e8524886bd38794a15e406acc3745a", - "content-hash": "6b3f343959ba3f330c425325574dfe28", + "hash": "1bcfb75493d56560ac96995398b32dec", + "content-hash": "d0e5fab7dcb9832d08159c0bcf2e849f", "packages": [ { "name": "agmscode/omnipay-agms", @@ -127,7 +127,7 @@ }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/formers/former/zipball/795f7b9b200a4ff4a33b37a96eaaab0229e36325", + "url": "https://api.github.com/repos/formers/former/zipball/e196c4336db77be97131f6a3b3c3b69b3a22b683", "reference": "795f7b9b200a4ff4a33b37a96eaaab0229e36325", "shasum": "" }, @@ -385,7 +385,7 @@ }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/19553f63e4635480363ff2254350075f285fbbc5", + "url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/e97ed532f09e290b91ff7713b785ed7ab11d0812", "reference": "19553f63e4635480363ff2254350075f285fbbc5", "shasum": "" }, @@ -579,7 +579,7 @@ "laravel" ], "abandoned": "OpenSkill/Datatable", - "time": "2015-11-23 21:33:41" + "time": "2015-04-29 07:00:36" }, { "name": "classpreloader/classpreloader", @@ -3933,7 +3933,7 @@ }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/omnipay-bitpay/zipball/e659f0e993c586cb36acafaf50835570b4a16eb2", + "url": "https://api.github.com/repos/thephpleague/omnipay-bitpay/zipball/cf813f1d5436a1d2f942d3df6666695d1e2b5280", "reference": "e659f0e993c586cb36acafaf50835570b4a16eb2", "shasum": "" }, @@ -5536,16 +5536,16 @@ }, { "name": "paragonie/random_compat", - "version": "v1.2.1", + "version": "v1.2.2", "source": { "type": "git", "url": "https://github.com/paragonie/random_compat.git", - "reference": "f078eba3bcf140fd69b5fcc3ea5ac809abf729dc" + "reference": "b3313b618f4edd76523572531d5d7e22fe747430" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paragonie/random_compat/zipball/f078eba3bcf140fd69b5fcc3ea5ac809abf729dc", - "reference": "f078eba3bcf140fd69b5fcc3ea5ac809abf729dc", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/b3313b618f4edd76523572531d5d7e22fe747430", + "reference": "b3313b618f4edd76523572531d5d7e22fe747430", "shasum": "" }, "require": { @@ -5580,7 +5580,7 @@ "pseudorandom", "random" ], - "time": "2016-02-29 17:25:04" + "time": "2016-03-11 19:54:08" }, { "name": "patricktalmadge/bootstrapper", From d7ed77b42cb24341910bed244b44fdcf768d151d Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Tue, 15 Mar 2016 12:38:52 +0200 Subject: [PATCH 05/46] Working on Travis tests --- composer.json | 5 +- composer.lock | 145 +++++++++++++++++++++++++------------------------- 2 files changed, 75 insertions(+), 75 deletions(-) diff --git a/composer.json b/composer.json index b330bdd86f11..bc315ba6c285 100644 --- a/composer.json +++ b/composer.json @@ -15,7 +15,7 @@ "omnipay/2checkout": "dev-master#e9c079c2dde0d7ba461903b3b7bd5caf6dee1248", "omnipay/gocardless": "dev-master", "omnipay/stripe": "2.3.0", - "laravel/framework": "5.2.*", + "laravel/framework": "5.2.22", "laravelcollective/html": "5.2.*", "laravelcollective/bus": "5.2.*", "symfony/css-selector": "~3.0", @@ -66,8 +66,7 @@ "maatwebsite/excel": "~2.0", "ezyang/htmlpurifier": "~v4.7", "cerdic/css-tidy": "~v1.5", - "asgrim/ofxparser": "^1.1", - "paragonie/random_compat": "^1.2" + "asgrim/ofxparser": "^1.1" }, "require-dev": { "phpunit/phpunit": "~4.0", diff --git a/composer.lock b/composer.lock index 43d06631b40a..bd2369f87954 100644 --- a/composer.lock +++ b/composer.lock @@ -4,8 +4,8 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "1bcfb75493d56560ac96995398b32dec", - "content-hash": "d0e5fab7dcb9832d08159c0bcf2e849f", + "hash": "a33dce96f4ded3fb269a6d9dcbf24b27", + "content-hash": "f73a83c64422ef3560da4adb988850ae", "packages": [ { "name": "agmscode/omnipay-agms", @@ -123,12 +123,12 @@ "source": { "type": "git", "url": "https://github.com/formers/former.git", - "reference": "795f7b9b200a4ff4a33b37a96eaaab0229e36325" + "reference": "e196c4336db77be97131f6a3b3c3b69b3a22b683" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/formers/former/zipball/e196c4336db77be97131f6a3b3c3b69b3a22b683", - "reference": "795f7b9b200a4ff4a33b37a96eaaab0229e36325", + "reference": "e196c4336db77be97131f6a3b3c3b69b3a22b683", "shasum": "" }, "require": { @@ -174,7 +174,7 @@ "foundation", "laravel" ], - "time": "2015-11-05 15:53:52" + "time": "2016-03-02 17:21:21" }, { "name": "anahkiasen/html-object", @@ -381,12 +381,12 @@ "source": { "type": "git", "url": "https://github.com/barryvdh/laravel-ide-helper.git", - "reference": "19553f63e4635480363ff2254350075f285fbbc5" + "reference": "e97ed532f09e290b91ff7713b785ed7ab11d0812" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/e97ed532f09e290b91ff7713b785ed7ab11d0812", - "reference": "19553f63e4635480363ff2254350075f285fbbc5", + "reference": "e97ed532f09e290b91ff7713b785ed7ab11d0812", "shasum": "" }, "require": { @@ -436,7 +436,7 @@ "phpstorm", "sublime" ], - "time": "2016-03-02 10:03:09" + "time": "2016-03-03 14:38:04" }, { "name": "cardgate/omnipay-cardgate", @@ -2000,16 +2000,16 @@ }, { "name": "guzzlehttp/promises", - "version": "1.0.3", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "b1e1c0d55f8083c71eda2c28c12a228d708294ea" + "reference": "bb9024c526b22f3fe6ae55a561fd70653d470aa8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/b1e1c0d55f8083c71eda2c28c12a228d708294ea", - "reference": "b1e1c0d55f8083c71eda2c28c12a228d708294ea", + "url": "https://api.github.com/repos/guzzle/promises/zipball/bb9024c526b22f3fe6ae55a561fd70653d470aa8", + "reference": "bb9024c526b22f3fe6ae55a561fd70653d470aa8", "shasum": "" }, "require": { @@ -2047,7 +2047,7 @@ "keywords": [ "promise" ], - "time": "2015-10-15 22:28:00" + "time": "2016-03-08 01:15:46" }, { "name": "guzzlehttp/psr7", @@ -2975,16 +2975,16 @@ }, { "name": "league/flysystem", - "version": "1.0.17", + "version": "1.0.20", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "02f5b6c9a8b9278c8381e3361e7bd9d641c740ca" + "reference": "e87a786e3ae12a25cf78a71bb07b4b384bfaa83a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/02f5b6c9a8b9278c8381e3361e7bd9d641c740ca", - "reference": "02f5b6c9a8b9278c8381e3361e7bd9d641c740ca", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/e87a786e3ae12a25cf78a71bb07b4b384bfaa83a", + "reference": "e87a786e3ae12a25cf78a71bb07b4b384bfaa83a", "shasum": "" }, "require": { @@ -3054,7 +3054,7 @@ "sftp", "storage" ], - "time": "2016-02-19 15:35:38" + "time": "2016-03-14 21:54:11" }, { "name": "league/fractal", @@ -3587,16 +3587,16 @@ }, { "name": "monolog/monolog", - "version": "1.18.0", + "version": "1.18.1", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "e19b764b5c855580e8ffa7e615f72c10fd2f99cc" + "reference": "a5f2734e8c16f3aa21b3da09715d10e15b4d2d45" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/e19b764b5c855580e8ffa7e615f72c10fd2f99cc", - "reference": "e19b764b5c855580e8ffa7e615f72c10fd2f99cc", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/a5f2734e8c16f3aa21b3da09715d10e15b4d2d45", + "reference": "a5f2734e8c16f3aa21b3da09715d10e15b4d2d45", "shasum": "" }, "require": { @@ -3661,7 +3661,7 @@ "logging", "psr-3" ], - "time": "2016-03-01 18:00:40" + "time": "2016-03-13 16:08:35" }, { "name": "mtdowling/cron-expression", @@ -3866,16 +3866,16 @@ }, { "name": "omnipay/authorizenet", - "version": "v2.3.0", + "version": "2.3.1", "source": { "type": "git", "url": "https://github.com/thephpleague/omnipay-authorizenet.git", - "reference": "142a95f550a5320db09e66019ecf5c8b8c3885b9" + "reference": "e2e813b0b6306ef97b8763037f05476456546b3e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/omnipay-authorizenet/zipball/142a95f550a5320db09e66019ecf5c8b8c3885b9", - "reference": "142a95f550a5320db09e66019ecf5c8b8c3885b9", + "url": "https://api.github.com/repos/thephpleague/omnipay-authorizenet/zipball/e2e813b0b6306ef97b8763037f05476456546b3e", + "reference": "e2e813b0b6306ef97b8763037f05476456546b3e", "shasum": "" }, "require": { @@ -3921,7 +3921,7 @@ "pay", "payment" ], - "time": "2015-07-15 18:11:17" + "time": "2016-03-10 11:35:24" }, { "name": "omnipay/bitpay", @@ -3929,12 +3929,12 @@ "source": { "type": "git", "url": "https://github.com/thephpleague/omnipay-bitpay.git", - "reference": "e659f0e993c586cb36acafaf50835570b4a16eb2" + "reference": "cf813f1d5436a1d2f942d3df6666695d1e2b5280" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/thephpleague/omnipay-bitpay/zipball/cf813f1d5436a1d2f942d3df6666695d1e2b5280", - "reference": "e659f0e993c586cb36acafaf50835570b4a16eb2", + "reference": "cf813f1d5436a1d2f942d3df6666695d1e2b5280", "shasum": "" }, "require": { @@ -3979,7 +3979,7 @@ "pay", "payment" ], - "time": "2015-03-23 14:18:26" + "time": "2016-03-10 03:16:04" }, { "name": "omnipay/buckaroo", @@ -5836,16 +5836,16 @@ }, { "name": "psy/psysh", - "version": "v0.7.1", + "version": "v0.7.2", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "5e8cedbe0a3681f18782594eefc78423f8401fc8" + "reference": "e64e10b20f8d229cac76399e1f3edddb57a0f280" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/5e8cedbe0a3681f18782594eefc78423f8401fc8", - "reference": "5e8cedbe0a3681f18782594eefc78423f8401fc8", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/e64e10b20f8d229cac76399e1f3edddb57a0f280", + "reference": "e64e10b20f8d229cac76399e1f3edddb57a0f280", "shasum": "" }, "require": { @@ -5904,20 +5904,20 @@ "interactive", "shell" ], - "time": "2016-02-27 18:59:18" + "time": "2016-03-09 05:03:14" }, { "name": "samvaughton/omnipay-barclays-epdq", - "version": "2.1.1", + "version": "2.2.0", "source": { "type": "git", "url": "https://github.com/samvaughton/omnipay-barclays-epdq.git", - "reference": "f971de37aa40c72cc58f02d05f540a93b2c5958e" + "reference": "b7f9263afa73b8e6c3c5e8bb2bf04a82548a41da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/samvaughton/omnipay-barclays-epdq/zipball/f971de37aa40c72cc58f02d05f540a93b2c5958e", - "reference": "f971de37aa40c72cc58f02d05f540a93b2c5958e", + "url": "https://api.github.com/repos/samvaughton/omnipay-barclays-epdq/zipball/b7f9263afa73b8e6c3c5e8bb2bf04a82548a41da", + "reference": "b7f9263afa73b8e6c3c5e8bb2bf04a82548a41da", "shasum": "" }, "require": { @@ -5966,7 +5966,7 @@ "pay", "payment" ], - "time": "2015-05-07 14:45:43" + "time": "2016-03-03 14:40:27" }, { "name": "simshaun/recurr", @@ -6716,7 +6716,7 @@ }, { "name": "symfony/polyfill-mbstring", - "version": "v1.1.0", + "version": "v1.1.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", @@ -6775,16 +6775,16 @@ }, { "name": "symfony/polyfill-php54", - "version": "v1.1.0", + "version": "v1.1.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php54.git", - "reference": "74663d5a2ff3c530c1bc0571500e0feec9094054" + "reference": "9ba741ca01c77282ecf5796c2c1d667f03454ffb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php54/zipball/74663d5a2ff3c530c1bc0571500e0feec9094054", - "reference": "74663d5a2ff3c530c1bc0571500e0feec9094054", + "url": "https://api.github.com/repos/symfony/polyfill-php54/zipball/9ba741ca01c77282ecf5796c2c1d667f03454ffb", + "reference": "9ba741ca01c77282ecf5796c2c1d667f03454ffb", "shasum": "" }, "require": { @@ -6829,11 +6829,11 @@ "portable", "shim" ], - "time": "2016-01-20 09:13:37" + "time": "2016-01-25 19:13:00" }, { "name": "symfony/polyfill-php55", - "version": "v1.1.0", + "version": "v1.1.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php55.git", @@ -6889,7 +6889,7 @@ }, { "name": "symfony/polyfill-php56", - "version": "v1.1.0", + "version": "v1.1.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php56.git", @@ -6945,7 +6945,7 @@ }, { "name": "symfony/polyfill-util", - "version": "v1.1.0", + "version": "v1.1.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-util.git", @@ -8211,41 +8211,42 @@ }, { "name": "codeception/codeception", - "version": "2.1.6", + "version": "2.1.7", "source": { "type": "git", "url": "https://github.com/Codeception/Codeception.git", - "reference": "b199941f5e59d1e7fd32d78296c8ab98db873d89" + "reference": "65971b0dee4972710365b6102154cd412a9bf7b1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/Codeception/zipball/b199941f5e59d1e7fd32d78296c8ab98db873d89", - "reference": "b199941f5e59d1e7fd32d78296c8ab98db873d89", + "url": "https://api.github.com/repos/Codeception/Codeception/zipball/65971b0dee4972710365b6102154cd412a9bf7b1", + "reference": "65971b0dee4972710365b6102154cd412a9bf7b1", "shasum": "" }, "require": { "ext-json": "*", "ext-mbstring": "*", - "facebook/webdriver": ">=1.0.1", + "facebook/webdriver": ">=1.0.1 <2.0", "guzzlehttp/guzzle": ">=4.1.4 <7.0", "guzzlehttp/psr7": "~1.0", - "php": ">=5.4.0", - "phpunit/phpunit": "~4.8.0", - "symfony/browser-kit": ">=2.4|<3.1", - "symfony/console": ">=2.4|<3.1", - "symfony/css-selector": ">=2.4|<3.1", - "symfony/dom-crawler": ">=2.4|<3.1", - "symfony/event-dispatcher": ">=2.4|<3.1", - "symfony/finder": ">=2.4|<3.1", - "symfony/yaml": ">=2.4|<3.1" + "php": ">=5.4.0 <8.0", + "phpunit/php-code-coverage": ">=2.1.3", + "phpunit/phpunit": ">4.8.20 <6.0", + "symfony/browser-kit": ">=2.5 <3.1", + "symfony/console": ">=2.5 <3.1", + "symfony/css-selector": ">=2.5 <3.1", + "symfony/dom-crawler": ">=2.5 <3.1", + "symfony/event-dispatcher": ">=2.5 <3.1", + "symfony/finder": ">=2.5 <3.1", + "symfony/yaml": ">=2.5 <3.1" }, "require-dev": { "codeception/specify": "~0.3", - "facebook/php-sdk-v4": "~4.0", + "facebook/php-sdk-v4": "~5.0", "flow/jsonpath": "~0.2", "monolog/monolog": "~1.8", "pda/pheanstalk": "~2.0", - "videlalvaro/php-amqplib": "~2.4" + "php-amqplib/php-amqplib": "~2.4" }, "suggest": { "codeception/phpbuiltinserver": "Extension to start and stop PHP built-in web server for your tests", @@ -8287,7 +8288,7 @@ "functional testing", "unit testing" ], - "time": "2016-02-09 22:27:48" + "time": "2016-03-12 01:15:25" }, { "name": "doctrine/instantiator", @@ -8854,16 +8855,16 @@ }, { "name": "phpunit/phpunit", - "version": "4.8.23", + "version": "4.8.24", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "6e351261f9cd33daf205a131a1ba61c6d33bd483" + "reference": "a1066c562c52900a142a0e2bbf0582994671385e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/6e351261f9cd33daf205a131a1ba61c6d33bd483", - "reference": "6e351261f9cd33daf205a131a1ba61c6d33bd483", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a1066c562c52900a142a0e2bbf0582994671385e", + "reference": "a1066c562c52900a142a0e2bbf0582994671385e", "shasum": "" }, "require": { @@ -8922,7 +8923,7 @@ "testing", "xunit" ], - "time": "2016-02-11 14:56:33" + "time": "2016-03-14 06:16:08" }, { "name": "phpunit/phpunit-mock-objects", From 8f99fc0b870109c29660aac4f792422a7a311319 Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Tue, 15 Mar 2016 13:13:46 +0200 Subject: [PATCH 06/46] Working on Travis tests --- tests/acceptance/AllPagesCept.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/acceptance/AllPagesCept.php b/tests/acceptance/AllPagesCept.php index 24d43a9eccf8..a393487bbc96 100644 --- a/tests/acceptance/AllPagesCept.php +++ b/tests/acceptance/AllPagesCept.php @@ -80,9 +80,9 @@ $I->amOnPage('/settings/user_management'); $I->see('Add User'); //try to logout -$I->click('#myAccountButton'); -$I->see('Log Out'); -$I->click('Log Out'); +//$I->click('#myAccountButton'); +//$I->see('Log Out'); +//$I->click('Log Out'); // Miscellaneous pages $I->amOnPage('/terms'); From b076ed07ea2c2e97ae95e364f859b24658717501 Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Tue, 15 Mar 2016 13:50:33 +0200 Subject: [PATCH 07/46] Working on Travis tests --- tests/acceptance/OnlinePaymentCest.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/acceptance/OnlinePaymentCest.php b/tests/acceptance/OnlinePaymentCest.php index 2bf92663503d..44bb04ea6498 100644 --- a/tests/acceptance/OnlinePaymentCest.php +++ b/tests/acceptance/OnlinePaymentCest.php @@ -67,6 +67,7 @@ class OnlinePaymentCest $I->amOnPage('/view/' . $invitationKey); $I->click('Pay Now'); + /* $I->fillField(['name' => 'first_name'], $this->faker->firstName); $I->fillField(['name' => 'last_name'], $this->faker->lastName); $I->fillField(['name' => 'address1'], $this->faker->streetAddress); @@ -75,6 +76,8 @@ class OnlinePaymentCest $I->fillField(['name' => 'state'], $this->faker->state); $I->fillField(['name' => 'postal_code'], $this->faker->postcode); $I->selectDropdown($I, 'United States', '.country-select .dropdown-toggle'); + */ + $I->fillField('#card_number', '4242424242424242'); $I->fillField('#cvv', '1234'); $I->selectOption('#expiration_month', 12); From a31d8b8176d5956ef37fba542d8acd6b643a35aa Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Tue, 15 Mar 2016 13:57:50 +0200 Subject: [PATCH 08/46] Capitalize payment gateway fields --- resources/views/accounts/account_gateway.blade.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/views/accounts/account_gateway.blade.php b/resources/views/accounts/account_gateway.blade.php index eda78b3c000c..f07b62f2ffb7 100644 --- a/resources/views/accounts/account_gateway.blade.php +++ b/resources/views/accounts/account_gateway.blade.php @@ -64,11 +64,11 @@ && isset($_ENV['DWOLLA_KEY']) && isset($_ENV['DWOLLA_SECRET'])) {{-- do nothing --}} @elseif ($field == 'testMode' || $field == 'developerMode' || $field == 'sandbox') - {!! Former::checkbox($gateway->id.'_'.$field)->label(Utils::toSpaceCase($field))->text('Enable')->value('true') !!} + {!! Former::checkbox($gateway->id.'_'.$field)->label(ucwords(Utils::toSpaceCase($field)))->text('Enable')->value('true') !!} @elseif ($field == 'username' || $field == 'password') {!! Former::text($gateway->id.'_'.$field)->label('API '. ucfirst(Utils::toSpaceCase($field))) !!} @else - {!! Former::text($gateway->id.'_'.$field)->label($gateway->id == GATEWAY_STRIPE ? trans('texts.secret_key') : Utils::toSpaceCase($field)) !!} + {!! Former::text($gateway->id.'_'.$field)->label($gateway->id == GATEWAY_STRIPE ? trans('texts.secret_key') : ucwords(Utils::toSpaceCase($field))) !!} @endif @endforeach From ad12557c78a58a70e171d03e60c1f96ddb67c3e2 Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Tue, 15 Mar 2016 15:25:00 +0200 Subject: [PATCH 09/46] Fix for tax rates test --- resources/lang/en/texts.php | 1 + tests/acceptance/TaxRatesCest.php | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/resources/lang/en/texts.php b/resources/lang/en/texts.php index e587699b927f..f53f2471871e 100644 --- a/resources/lang/en/texts.php +++ b/resources/lang/en/texts.php @@ -1062,6 +1062,7 @@ $LANG = array( 'invalid_card_number' => 'The credit card number is not valid.', 'invalid_expiry' => 'The expiration date is not valid.', 'invalid_cvv' => 'The CVV is not valid.', + 'cost' => 'Cost', ); diff --git a/tests/acceptance/TaxRatesCest.php b/tests/acceptance/TaxRatesCest.php index 051d504ed9cf..7517c5c16557 100644 --- a/tests/acceptance/TaxRatesCest.php +++ b/tests/acceptance/TaxRatesCest.php @@ -30,8 +30,8 @@ class TaxRatesCest $total += round($itemCost * $itemTaxRate / 100, 2); $total += round($itemCost * $invoiceTaxRate / 100, 2); - $itemTaxRate = number_format($itemTaxRate, 2); - $invoiceTaxRate = number_format($invoiceTaxRate, 2); + $itemTaxRate = number_format($itemTaxRate, 3); + $invoiceTaxRate = number_format($invoiceTaxRate, 3); // create tax rates $I->amOnPage('/tax_rates/create'); From f32a497d0d26519b0d80d2af79fed96593b5d6a3 Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Tue, 15 Mar 2016 16:55:23 +0200 Subject: [PATCH 10/46] Fix for tax rates test --- resources/lang/en/texts.php | 4 ++-- tests/acceptance/TaxRatesCest.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/resources/lang/en/texts.php b/resources/lang/en/texts.php index f53f2471871e..9861a5e2d939 100644 --- a/resources/lang/en/texts.php +++ b/resources/lang/en/texts.php @@ -161,7 +161,7 @@ $LANG = array( 'work_email' => 'Email', 'language_id' => 'Language', 'timezone_id' => 'Timezone', - 'date_format_id' => 'Date format', + 'date_format_id' => 'Date Format', 'datetime_format_id' => 'Date/Time Format', 'users' => 'Users', 'localization' => 'Localization', @@ -950,7 +950,7 @@ $LANG = array( 'add_bank_account' => 'Add Bank Account', 'setup_account' => 'Setup Account', 'import_expenses' => 'Import Expenses', - 'bank_id' => 'bank', + 'bank_id' => 'Bank', 'integration_type' => 'Integration Type', 'updated_bank_account' => 'Successfully updated bank account', 'edit_bank_account' => 'Edit Bank Account', diff --git a/tests/acceptance/TaxRatesCest.php b/tests/acceptance/TaxRatesCest.php index 7517c5c16557..6320482c9e62 100644 --- a/tests/acceptance/TaxRatesCest.php +++ b/tests/acceptance/TaxRatesCest.php @@ -72,7 +72,7 @@ class TaxRatesCest $I->selectDropdown($I, $clientEmail, '.client_select .dropdown-toggle'); $I->fillField('table.invoice-table tbody tr:nth-child(1) #product_key', $productKey); $I->click('table.invoice-table tbody tr:nth-child(1) .tt-selectable'); - $I->selectOption('#taxRateSelect', $invoiceTaxName . ' ' . $invoiceTaxRate . '%'); + $I->selectOption('#taxRateSelect', $invoiceTaxName . ' ' . floatval($invoiceTaxRate) . '%'); $I->wait(2); // check total is right before saving From 4e27b526186b3ab8ed1781584e9bccd0ea1ef8b1 Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Tue, 15 Mar 2016 17:35:36 +0200 Subject: [PATCH 11/46] Update import error message --- resources/lang/da/texts.php | 2 +- resources/lang/de/texts.php | 2 +- resources/lang/en/texts.php | 2 +- resources/lang/es/texts.php | 2 +- resources/lang/fr/texts.php | 2 +- resources/lang/it/texts.php | 2 +- resources/lang/lt/texts.php | 2 +- resources/lang/nb_NO/texts.php | 2 +- resources/lang/nl/texts.php | 2 +- resources/lang/sv/texts.php | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/resources/lang/da/texts.php b/resources/lang/da/texts.php index 35a559ac6ade..e3fe7a081917 100644 --- a/resources/lang/da/texts.php +++ b/resources/lang/da/texts.php @@ -942,7 +942,7 @@ return array( 'notes' => 'Notes', 'invoice_will_create' => 'client will be created', 'invoices_will_create' => 'invoices will be created', - 'failed_to_import' => 'The following records failed to import', + 'failed_to_import' => 'The following records failed to import, they either already exist or are missing required fields.', 'publishable_key' => 'Publishable Key', 'secret_key' => 'Secret Key', diff --git a/resources/lang/de/texts.php b/resources/lang/de/texts.php index 80289bfa29f0..a3ea1ac658f9 100644 --- a/resources/lang/de/texts.php +++ b/resources/lang/de/texts.php @@ -943,7 +943,7 @@ return array( 'notes' => 'Notes', 'invoice_will_create' => 'client will be created', 'invoices_will_create' => 'invoices will be created', - 'failed_to_import' => 'The following records failed to import', + 'failed_to_import' => 'The following records failed to import, they either already exist or are missing required fields.', 'publishable_key' => 'Publishable Key', 'secret_key' => 'Secret Key', diff --git a/resources/lang/en/texts.php b/resources/lang/en/texts.php index 9861a5e2d939..1585340452a5 100644 --- a/resources/lang/en/texts.php +++ b/resources/lang/en/texts.php @@ -826,7 +826,7 @@ $LANG = array( 'notes' => 'Notes', 'invoice_will_create' => 'client will be created', 'invoices_will_create' => 'invoices will be created', - 'failed_to_import' => 'The following records failed to import', + 'failed_to_import' => 'The following records failed to import, they either already exist or are missing required fields.', 'publishable_key' => 'Publishable Key', 'secret_key' => 'Secret Key', 'missing_publishable_key' => 'Set your Stripe publishable key for an improved checkout process', diff --git a/resources/lang/es/texts.php b/resources/lang/es/texts.php index 1b1f27947c46..56fb42534f5c 100644 --- a/resources/lang/es/texts.php +++ b/resources/lang/es/texts.php @@ -920,7 +920,7 @@ return array( 'notes' => 'Notes', 'invoice_will_create' => 'client will be created', 'invoices_will_create' => 'invoices will be created', - 'failed_to_import' => 'The following records failed to import', + 'failed_to_import' => 'The following records failed to import, they either already exist or are missing required fields.', 'publishable_key' => 'Publishable Key', 'secret_key' => 'Secret Key', diff --git a/resources/lang/fr/texts.php b/resources/lang/fr/texts.php index 1572eb219137..2bc358e6a822 100644 --- a/resources/lang/fr/texts.php +++ b/resources/lang/fr/texts.php @@ -934,7 +934,7 @@ return array( 'notes' => 'Notes', 'invoice_will_create' => 'client will be created', 'invoices_will_create' => 'invoices will be created', - 'failed_to_import' => 'The following records failed to import', + 'failed_to_import' => 'The following records failed to import, they either already exist or are missing required fields.', 'publishable_key' => 'Publishable Key', 'secret_key' => 'Secret Key', diff --git a/resources/lang/it/texts.php b/resources/lang/it/texts.php index 5c358ae62627..acc4cdeebab3 100644 --- a/resources/lang/it/texts.php +++ b/resources/lang/it/texts.php @@ -937,7 +937,7 @@ return array( 'notes' => 'Notes', 'invoice_will_create' => 'client will be created', 'invoices_will_create' => 'invoices will be created', - 'failed_to_import' => 'The following records failed to import', + 'failed_to_import' => 'The following records failed to import, they either already exist or are missing required fields.', 'publishable_key' => 'Publishable Key', 'secret_key' => 'Secret Key', diff --git a/resources/lang/lt/texts.php b/resources/lang/lt/texts.php index 4dc55e9e5e4f..584f7776b435 100644 --- a/resources/lang/lt/texts.php +++ b/resources/lang/lt/texts.php @@ -944,7 +944,7 @@ return array( 'notes' => 'Notes', 'invoice_will_create' => 'client will be created', 'invoices_will_create' => 'invoices will be created', - 'failed_to_import' => 'The following records failed to import', + 'failed_to_import' => 'The following records failed to import, they either already exist or are missing required fields.', 'publishable_key' => 'Publishable Key', 'secret_key' => 'Secret Key', diff --git a/resources/lang/nb_NO/texts.php b/resources/lang/nb_NO/texts.php index 875df81d4639..afc916a5def3 100644 --- a/resources/lang/nb_NO/texts.php +++ b/resources/lang/nb_NO/texts.php @@ -942,7 +942,7 @@ return array( 'notes' => 'Notes', 'invoice_will_create' => 'client will be created', 'invoices_will_create' => 'invoices will be created', - 'failed_to_import' => 'The following records failed to import', + 'failed_to_import' => 'The following records failed to import, they either already exist or are missing required fields.', 'publishable_key' => 'Publishable Key', 'secret_key' => 'Secret Key', diff --git a/resources/lang/nl/texts.php b/resources/lang/nl/texts.php index 9794f7c0089b..db06a981f4f1 100644 --- a/resources/lang/nl/texts.php +++ b/resources/lang/nl/texts.php @@ -937,7 +937,7 @@ return array( 'notes' => 'Notities', 'invoice_will_create' => 'klant zal worden aangemaakt', 'invoices_will_create' => 'factuur zal worden aangemaakt', - 'failed_to_import' => 'The following records failed to import', + 'failed_to_import' => 'The following records failed to import, they either already exist or are missing required fields.', 'publishable_key' => 'Publishable Key', 'secret_key' => 'Secret Key', diff --git a/resources/lang/sv/texts.php b/resources/lang/sv/texts.php index 8f72d9bb40d3..5d526092c4a8 100644 --- a/resources/lang/sv/texts.php +++ b/resources/lang/sv/texts.php @@ -939,7 +939,7 @@ return array( 'notes' => 'Notes', 'invoice_will_create' => 'client will be created', 'invoices_will_create' => 'invoices will be created', - 'failed_to_import' => 'The following records failed to import', + 'failed_to_import' => 'The following records failed to import, they either already exist or are missing required fields.', 'publishable_key' => 'Publishable Key', 'secret_key' => 'Secret Key', From 4e9cc45a554226b1c514b8e9ad8c89cf0d9bcb0d Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Tue, 15 Mar 2016 22:08:12 +0200 Subject: [PATCH 12/46] Hide custom invoice line item fields if not pro --- app/Models/Account.php | 2 +- public/built.js | 12 ++++++------ public/js/pdf.pdfmake.js | 12 ++++++------ resources/views/invoices/edit.blade.php | 10 +++++----- 4 files changed, 18 insertions(+), 18 deletions(-) diff --git a/app/Models/Account.php b/app/Models/Account.php index 368ecac825ab..b2d5a7d22dce 100644 --- a/app/Models/Account.php +++ b/app/Models/Account.php @@ -1023,7 +1023,7 @@ class Account extends Eloquent return true; } - public function showCustomField($field, $entity) + public function showCustomField($field, $entity = false) { if ($this->isPro()) { return $this->$field ? true : false; diff --git a/public/built.js b/public/built.js index 5e28b8fb3f18..9d1e0d3a3ee2 100644 --- a/public/built.js +++ b/public/built.js @@ -31259,10 +31259,10 @@ NINJA.invoiceColumns = function(invoice) columns.push("*") - if (account.custom_invoice_item_label1) { + if (invoice.is_pro && account.custom_invoice_item_label1) { columns.push("10%"); } - if (account.custom_invoice_item_label2) { + if (invoice.is_pro && account.custom_invoice_item_label2) { columns.push("10%"); } @@ -31314,10 +31314,10 @@ NINJA.invoiceLines = function(invoice) { grid[0].push({text: invoiceLabels.description, style: ['tableHeader', 'descriptionTableHeader']}); - if (account.custom_invoice_item_label1) { + if (invoice.is_pro && account.custom_invoice_item_label1) { grid[0].push({text: account.custom_invoice_item_label1, style: ['tableHeader', 'custom1TableHeader']}); } - if (account.custom_invoice_item_label2) { + if (invoice.is_pro && account.custom_invoice_item_label2) { grid[0].push({text: account.custom_invoice_item_label2, style: ['tableHeader', 'custom2TableHeader']}); } @@ -31372,10 +31372,10 @@ NINJA.invoiceLines = function(invoice) { row.push({style:["productKey", rowStyle], text:productKey || ' '}); // product key can be blank when selecting from a datalist } row.push({style:["notes", rowStyle], stack:[{text:notes || ' '}]}); - if (account.custom_invoice_item_label1) { + if (invoice.is_pro && account.custom_invoice_item_label1) { row.push({style:["customValue1", rowStyle], text:item.custom_value1 || ' '}); } - if (account.custom_invoice_item_label2) { + if (invoice.is_pro && account.custom_invoice_item_label2) { row.push({style:["customValue2", rowStyle], text:item.custom_value2 || ' '}); } row.push({style:["cost", rowStyle], text:cost}); diff --git a/public/js/pdf.pdfmake.js b/public/js/pdf.pdfmake.js index 3a9f40280c74..d6e7906ca6d6 100644 --- a/public/js/pdf.pdfmake.js +++ b/public/js/pdf.pdfmake.js @@ -267,10 +267,10 @@ NINJA.invoiceColumns = function(invoice) columns.push("*") - if (account.custom_invoice_item_label1) { + if (invoice.is_pro && account.custom_invoice_item_label1) { columns.push("10%"); } - if (account.custom_invoice_item_label2) { + if (invoice.is_pro && account.custom_invoice_item_label2) { columns.push("10%"); } @@ -322,10 +322,10 @@ NINJA.invoiceLines = function(invoice) { grid[0].push({text: invoiceLabels.description, style: ['tableHeader', 'descriptionTableHeader']}); - if (account.custom_invoice_item_label1) { + if (invoice.is_pro && account.custom_invoice_item_label1) { grid[0].push({text: account.custom_invoice_item_label1, style: ['tableHeader', 'custom1TableHeader']}); } - if (account.custom_invoice_item_label2) { + if (invoice.is_pro && account.custom_invoice_item_label2) { grid[0].push({text: account.custom_invoice_item_label2, style: ['tableHeader', 'custom2TableHeader']}); } @@ -380,10 +380,10 @@ NINJA.invoiceLines = function(invoice) { row.push({style:["productKey", rowStyle], text:productKey || ' '}); // product key can be blank when selecting from a datalist } row.push({style:["notes", rowStyle], stack:[{text:notes || ' '}]}); - if (account.custom_invoice_item_label1) { + if (invoice.is_pro && account.custom_invoice_item_label1) { row.push({style:["customValue1", rowStyle], text:item.custom_value1 || ' '}); } - if (account.custom_invoice_item_label2) { + if (invoice.is_pro && account.custom_invoice_item_label2) { row.push({style:["customValue2", rowStyle], text:item.custom_value2 || ' '}); } row.push({style:["cost", rowStyle], text:cost}); diff --git a/resources/views/invoices/edit.blade.php b/resources/views/invoices/edit.blade.php index ded91d7e0c90..5fa93dd3c8e3 100644 --- a/resources/views/invoices/edit.blade.php +++ b/resources/views/invoices/edit.blade.php @@ -191,10 +191,10 @@ {{ $invoiceLabels['item'] }} {{ $invoiceLabels['description'] }} - @if ($account->custom_invoice_item_label1) + @if ($account->showCustomField('custom_invoice_item_label1')) {{ $account->custom_invoice_item_label1 }} @endif - @if ($account->custom_invoice_item_label2) + @if ($account->showCustomField('custom_invoice_item_label2')) {{ $account->custom_invoice_item_label2 }} @endif {{ $invoiceLabels['unit_cost'] }} @@ -219,12 +219,12 @@ - @if ($account->custom_invoice_item_label1) + @if ($account->showCustomField('custom_invoice_item_label1')) @endif - @if ($account->custom_invoice_item_label2) + @if ($account->showCustomField('custom_invoice_item_label2')) @@ -257,7 +257,7 @@ - +
From e0499ccf67f5fbd703146809527550640df2a4cc Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Tue, 15 Mar 2016 22:24:09 +0200 Subject: [PATCH 13/46] Show 'Create first invoice' for sample message --- resources/lang/en/texts.php | 1 + resources/views/accounts/customize_design.blade.php | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/resources/lang/en/texts.php b/resources/lang/en/texts.php index 1585340452a5..e40467673c62 100644 --- a/resources/lang/en/texts.php +++ b/resources/lang/en/texts.php @@ -1063,6 +1063,7 @@ $LANG = array( 'invalid_expiry' => 'The expiration date is not valid.', 'invalid_cvv' => 'The CVV is not valid.', 'cost' => 'Cost', + 'create_invoice_for_sample' => 'Note: create your first invoice to see a preview here.', ); diff --git a/resources/views/accounts/customize_design.blade.php b/resources/views/accounts/customize_design.blade.php index 2f60a9dd97e4..439ef1d4acef 100644 --- a/resources/views/accounts/customize_design.blade.php +++ b/resources/views/accounts/customize_design.blade.php @@ -153,7 +153,6 @@ @if (isset($sampleInvoice) && $sampleInvoice) var sample = {!! $sampleInvoice->toJSON() !!} - console.log(sample); $('#sampleData').show().html(prettyJson(sample)); @endif }); @@ -222,6 +221,9 @@ {!! trans('texts.customize_help') !!} + @if (empty($sampleInvoice)) +
{{ trans('texts.create_invoice_for_sample') }}
+ @endif
From 9b9e99ee78c05081c00681e142fa5c96a2f3541d Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Thu, 17 Mar 2016 15:28:28 +0200 Subject: [PATCH 16/46] Added SagePay referral --- app/Http/routes.php | 2 ++ app/Models/Gateway.php | 2 ++ resources/lang/en/texts.php | 2 ++ .../views/accounts/account_gateway.blade.php | 18 +++++++++--------- 4 files changed, 15 insertions(+), 9 deletions(-) diff --git a/app/Http/routes.php b/app/Http/routes.php index 55f65e99a491..f43317ed10f3 100644 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -508,6 +508,8 @@ if (!defined('CONTACT_EMAIL')) { define('GATEWAY_PAYFAST', 13); define('GATEWAY_PAYPAL_EXPRESS', 17); define('GATEWAY_PAYPAL_PRO', 18); + define('GATEWAY_SAGE_PAY_DIRECT', 20); + define('GATEWAY_SAGE_PAY_SERVER', 21); define('GATEWAY_STRIPE', 23); define('GATEWAY_GOCARDLESS', 6); define('GATEWAY_TWO_CHECKOUT', 27); diff --git a/app/Models/Gateway.php b/app/Models/Gateway.php index 06621518403b..681e8315c512 100644 --- a/app/Models/Gateway.php +++ b/app/Models/Gateway.php @@ -75,6 +75,8 @@ class Gateway extends Eloquent $link = 'https://bitpay.com/dashboard/signup'; } elseif ($this->id == GATEWAY_DWOLLA) { $link = 'https://www.dwolla.com/register'; + } elseif ($this->id == GATEWAY_SAGE_PAY_DIRECT || $this->id == GATEWAY_SAGE_PAY_SERVER) { + $link = 'https://applications.sagepay.com/apply/2C02C252-0F8A-1B84-E10D-CF933EFCAA99'; } $key = 'texts.gateway_help_'.$this->id; diff --git a/resources/lang/en/texts.php b/resources/lang/en/texts.php index 1afab6f99815..5913944f9d79 100644 --- a/resources/lang/en/texts.php +++ b/resources/lang/en/texts.php @@ -1072,6 +1072,8 @@ $LANG = array( 'user_create_all' => 'Create clients, invoices, etc.', 'user_view_all' => 'View all clients, invoices, etc.', 'user_edit_all' => 'Edit all clients, invoices, etc.', + 'gateway_help_20' => ':link to sign up for Sage Pay.', + 'gateway_help_21' => ':link to sign up for Sage Pay.', ); diff --git a/resources/views/accounts/account_gateway.blade.php b/resources/views/accounts/account_gateway.blade.php index f07b62f2ffb7..c19268c258fd 100644 --- a/resources/views/accounts/account_gateway.blade.php +++ b/resources/views/accounts/account_gateway.blade.php @@ -52,6 +52,15 @@ @foreach ($gateways as $gateway)
- {!! Former::text('labels_quantity')->label(trans('texts.quantity')) !!} {!! Former::text('labels_line_total')->label(trans('texts.line_total')) !!} {!! Former::text('labels_terms')->label(trans('texts.terms')) !!} + {!! Former::text('labels_balance_due')->label(trans('texts.balance_due')) !!} + {!! Former::text('labels_partial_due')->label(trans('texts.partial_due')) !!}
diff --git a/resources/views/invoices/edit.blade.php b/resources/views/invoices/edit.blade.php index c3c21fd5f50a..ce8160d25c02 100644 --- a/resources/views/invoices/edit.blade.php +++ b/resources/views/invoices/edit.blade.php @@ -385,11 +385,18 @@ @endif - + - {{ trans($entityType == ENTITY_INVOICE ? 'texts.balance_due' : 'texts.total') }} - + {{ $entityType == ENTITY_INVOICE ? $invoiceLabels['balance_due'] : trans('texts.total') }} + + + + + + + {{ $invoiceLabels['partial_due'] }} + diff --git a/resources/views/invoices/knockout.blade.php b/resources/views/invoices/knockout.blade.php index 3798cb458131..029a81bc0b67 100644 --- a/resources/views/invoices/knockout.blade.php +++ b/resources/views/invoices/knockout.blade.php @@ -512,7 +512,11 @@ function InvoiceModel(data) { }); self.totals.total = ko.computed(function() { - return self.formatMoney(self.partial() ? self.partial() : self.totals.rawTotal()); + return self.formatMoney(self.totals.rawTotal()); + }); + + self.totals.partial = ko.computed(function() { + return self.formatMoney(self.partial()); }); self.onDragged = function(item) { From 09414ca3f5b03ba3f5d45d5bdfacfd2917f143e2 Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Sat, 19 Mar 2016 23:30:23 +0200 Subject: [PATCH 19/46] Fix for #776 Deleting expense vendor results in error --- app/Models/Vendor.php | 1 + resources/lang/en/texts.php | 3 +++ 2 files changed, 4 insertions(+) diff --git a/app/Models/Vendor.php b/app/Models/Vendor.php index ce21a6446364..573a581e4774 100644 --- a/app/Models/Vendor.php +++ b/app/Models/Vendor.php @@ -5,6 +5,7 @@ use DB; use Carbon; use App\Events\VendorWasCreated; use App\Events\VendorWasUpdated; +use App\Events\VendorWasDeleted; use Laracasts\Presenter\PresentableTrait; use Illuminate\Database\Eloquent\SoftDeletes; diff --git a/resources/lang/en/texts.php b/resources/lang/en/texts.php index f31e61a03263..6d0f963d2893 100644 --- a/resources/lang/en/texts.php +++ b/resources/lang/en/texts.php @@ -1075,6 +1075,9 @@ $LANG = array( 'gateway_help_20' => ':link to sign up for Sage Pay.', 'gateway_help_21' => ':link to sign up for Sage Pay.', 'partial_due' => 'Partial Due', + 'restore_vendor' => 'Restore Vendor', + 'restored_vendor' => 'Successfully restored vendor', + 'restored_expense' => 'Successfully restored expense', ); From c25cd7f2329358a0736d6c9fe7c3d522abe15c83 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Sun, 20 Mar 2016 09:38:05 +1100 Subject: [PATCH 20/46] working on dashboard for API --- .../Controllers/DashboardApiController.php | 177 ++++++++++++++++++ app/Http/routes.php | 1 + 2 files changed, 178 insertions(+) create mode 100644 app/Http/Controllers/DashboardApiController.php diff --git a/app/Http/Controllers/DashboardApiController.php b/app/Http/Controllers/DashboardApiController.php new file mode 100644 index 000000000000..5439efc2871e --- /dev/null +++ b/app/Http/Controllers/DashboardApiController.php @@ -0,0 +1,177 @@ +hasPermission('view_all'); + $user_id = Auth::user()->id; + + // total_income, billed_clients, invoice_sent and active_clients + $select = DB::raw('COUNT(DISTINCT CASE WHEN invoices.id IS NOT NULL THEN clients.id ELSE null END) billed_clients, + SUM(CASE WHEN invoices.invoice_status_id >= '.INVOICE_STATUS_SENT.' THEN 1 ELSE 0 END) invoices_sent, + COUNT(DISTINCT clients.id) active_clients'); + $metrics = DB::table('accounts') + ->select($select) + ->leftJoin('clients', 'accounts.id', '=', 'clients.account_id') + ->leftJoin('invoices', 'clients.id', '=', 'invoices.client_id') + ->where('accounts.id', '=', Auth::user()->account_id) + ->where('clients.is_deleted', '=', false) + ->where('invoices.is_deleted', '=', false) + ->where('invoices.is_recurring', '=', false) + ->where('invoices.is_quote', '=', false); + + if(!$view_all){ + $metrics = $metrics->where(function($query) use($user_id){ + $query->where('invoices.user_id', '=', $user_id); + $query->orwhere(function($query) use($user_id){ + $query->where('invoices.user_id', '=', null); + $query->where('clients.user_id', '=', $user_id); + }); + }); + } + + $metrics = $metrics->groupBy('accounts.id') + ->first(); + + $select = DB::raw('SUM(clients.paid_to_date) as value, clients.currency_id as currency_id'); + $paidToDate = DB::table('accounts') + ->select($select) + ->leftJoin('clients', 'accounts.id', '=', 'clients.account_id') + ->where('accounts.id', '=', Auth::user()->account_id) + ->where('clients.is_deleted', '=', false); + + if(!$view_all){ + $paidToDate = $paidToDate->where('clients.user_id', '=', $user_id); + } + + $paidToDate = $paidToDate->groupBy('accounts.id') + ->groupBy(DB::raw('CASE WHEN clients.currency_id IS NULL THEN CASE WHEN accounts.currency_id IS NULL THEN 1 ELSE accounts.currency_id END ELSE clients.currency_id END')) + ->get(); + + $select = DB::raw('AVG(invoices.amount) as invoice_avg, clients.currency_id as currency_id'); + $averageInvoice = DB::table('accounts') + ->select($select) + ->leftJoin('clients', 'accounts.id', '=', 'clients.account_id') + ->leftJoin('invoices', 'clients.id', '=', 'invoices.client_id') + ->where('accounts.id', '=', Auth::user()->account_id) + ->where('clients.is_deleted', '=', false) + ->where('invoices.is_deleted', '=', false) + ->where('invoices.is_quote', '=', false) + ->where('invoices.is_recurring', '=', false); + + if(!$view_all){ + $averageInvoice = $averageInvoice->where('invoices.user_id', '=', $user_id); + } + + $averageInvoice = $averageInvoice->groupBy('accounts.id') + ->groupBy(DB::raw('CASE WHEN clients.currency_id IS NULL THEN CASE WHEN accounts.currency_id IS NULL THEN 1 ELSE accounts.currency_id END ELSE clients.currency_id END')) + ->get(); + + $select = DB::raw('SUM(clients.balance) as value, clients.currency_id as currency_id'); + $balances = DB::table('accounts') + ->select($select) + ->leftJoin('clients', 'accounts.id', '=', 'clients.account_id') + ->where('accounts.id', '=', Auth::user()->account_id) + ->where('clients.is_deleted', '=', false) + ->groupBy('accounts.id') + ->groupBy(DB::raw('CASE WHEN clients.currency_id IS NULL THEN CASE WHEN accounts.currency_id IS NULL THEN 1 ELSE accounts.currency_id END ELSE clients.currency_id END')) + ->get(); + + $pastDue = DB::table('invoices') + ->leftJoin('clients', 'clients.id', '=', 'invoices.client_id') + ->leftJoin('contacts', 'contacts.client_id', '=', 'clients.id') + ->where('invoices.account_id', '=', Auth::user()->account_id) + ->where('clients.deleted_at', '=', null) + ->where('contacts.deleted_at', '=', null) + ->where('invoices.is_recurring', '=', false) + //->where('invoices.is_quote', '=', false) + ->where('invoices.balance', '>', 0) + ->where('invoices.is_deleted', '=', false) + ->where('invoices.deleted_at', '=', null) + ->where('contacts.is_primary', '=', true) + ->where('invoices.due_date', '<', date('Y-m-d')); + + if(!$view_all){ + $pastDue = $pastDue->where('invoices.user_id', '=', $user_id); + } + + $pastDue = $pastDue->select(['invoices.due_date', 'invoices.balance', 'invoices.public_id', 'invoices.invoice_number', 'clients.name as client_name', 'contacts.email', 'contacts.first_name', 'contacts.last_name', 'clients.currency_id', 'clients.public_id as client_public_id', 'clients.user_id as client_user_id', 'is_quote']) + ->orderBy('invoices.due_date', 'asc') + ->take(50) + ->get(); + + $upcoming = DB::table('invoices') + ->leftJoin('clients', 'clients.id', '=', 'invoices.client_id') + ->leftJoin('contacts', 'contacts.client_id', '=', 'clients.id') + ->where('invoices.account_id', '=', Auth::user()->account_id) + ->where('clients.deleted_at', '=', null) + ->where('contacts.deleted_at', '=', null) + ->where('invoices.deleted_at', '=', null) + ->where('invoices.is_recurring', '=', false) + //->where('invoices.is_quote', '=', false) + ->where('invoices.balance', '>', 0) + ->where('invoices.is_deleted', '=', false) + ->where('contacts.is_primary', '=', true) + ->where('invoices.due_date', '>=', date('Y-m-d')) + ->orderBy('invoices.due_date', 'asc'); + + if(!$view_all){ + $upcoming = $upcoming->where('invoices.user_id', '=', $user_id); + } + + $upcoming = $upcoming->take(50) + ->select(['invoices.due_date', 'invoices.balance', 'invoices.public_id', 'invoices.invoice_number', 'clients.name as client_name', 'contacts.email', 'contacts.first_name', 'contacts.last_name', 'clients.currency_id', 'clients.public_id as client_public_id', 'clients.user_id as client_user_id', 'is_quote']) + ->get(); + + $payments = DB::table('payments') + ->leftJoin('clients', 'clients.id', '=', 'payments.client_id') + ->leftJoin('contacts', 'contacts.client_id', '=', 'clients.id') + ->leftJoin('invoices', 'invoices.id', '=', 'payments.invoice_id') + ->where('payments.account_id', '=', Auth::user()->account_id) + ->where('payments.is_deleted', '=', false) + ->where('invoices.is_deleted', '=', false) + ->where('clients.is_deleted', '=', false) + ->where('contacts.deleted_at', '=', null) + ->where('contacts.is_primary', '=', true); + + if(!$view_all){ + $payments = $payments->where('payments.user_id', '=', $user_id); + } + + $payments = $payments->select(['payments.payment_date', 'payments.amount', 'invoices.public_id', 'invoices.invoice_number', 'clients.name as client_name', 'contacts.email', 'contacts.first_name', 'contacts.last_name', 'clients.currency_id', 'clients.public_id as client_public_id', 'clients.user_id as client_user_id']) + ->orderBy('payments.payment_date', 'desc') + ->take(50) + ->get(); + + $hasQuotes = false; + foreach ([$upcoming, $pastDue] as $data) { + foreach ($data as $invoice) { + if ($invoice->is_quote) { + $hasQuotes = true; + } + } + } + + $data = [ + 'paidToDate' => $paidToDate, + 'balances' => $balances, + 'averageInvoice' => $averageInvoice, + 'invoicesSent' => $metrics ? $metrics->invoices_sent : 0, + 'activeClients' => $metrics ? $metrics->active_clients : 0, + 'pastDue' => $pastDue, + 'upcoming' => $upcoming, + 'payments' => $payments, + 'title' => trans('texts.dashboard'), + 'hasQuotes' => $hasQuotes, + ]; + + return $this->response($data); + + } +} diff --git a/app/Http/routes.php b/app/Http/routes.php index f43317ed10f3..dec31aa26cb8 100644 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -101,6 +101,7 @@ if (Utils::isReseller()) { Route::group(['middleware' => 'auth:user'], function() { Route::get('dashboard', 'DashboardController@index'); + Route::get('dashboard2', 'DashboardApiController@index'); Route::get('view_archive/{entity_type}/{visible}', 'AccountController@setTrashVisible'); Route::get('hide_message', 'HomeController@hideMessage'); Route::get('force_inline_pdf', 'UserController@forcePDFJS'); From 40ce28c433c37d623d871e70f348e91af6b76790 Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Mon, 21 Mar 2016 13:42:00 +0200 Subject: [PATCH 21/46] Made dropdown shadows consistent --- public/css/built.css | 8 ++++++++ public/css/style.css | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/public/css/built.css b/public/css/built.css index c932978d3157..0ed044f4a208 100644 --- a/public/css/built.css +++ b/public/css/built.css @@ -2529,6 +2529,14 @@ font-weight: bold; filter: none; } +.navbar, +ul.dropdown-menu, +.twitter-typeahead .tt-menu { + -moz-box-shadow: 5px 5px 20px -10px rgba(80, 80, 80, .82); + -webkit-box-shadow: 5px 5px 20px -10px rgba(80, 80, 80, .82); + box-shadow: 5px 5px 20px -10px rgba(80, 80, 80, .82); +} + .navbar .active > a { background-color: #09334f !important; background-image: none; diff --git a/public/css/style.css b/public/css/style.css index 7480cbe0f2d1..92318417d6ab 100644 --- a/public/css/style.css +++ b/public/css/style.css @@ -402,6 +402,14 @@ font-weight: bold; filter: none; } +.navbar, +ul.dropdown-menu, +.twitter-typeahead .tt-menu { + -moz-box-shadow: 5px 5px 20px -10px rgba(80, 80, 80, .82); + -webkit-box-shadow: 5px 5px 20px -10px rgba(80, 80, 80, .82); + box-shadow: 5px 5px 20px -10px rgba(80, 80, 80, .82); +} + .navbar .active > a { background-color: #09334f !important; background-image: none; From 56ad438dd34e23323ae83b8686d1e144d16ab80a Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Mon, 21 Mar 2016 16:06:50 +0200 Subject: [PATCH 22/46] Add payment details to invoice report --- app/Http/Controllers/ReportController.php | 32 ++++++++++++++--------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/app/Http/Controllers/ReportController.php b/app/Http/Controllers/ReportController.php index 1c4c033b9ed3..f1feb65b4bd9 100644 --- a/app/Http/Controllers/ReportController.php +++ b/app/Http/Controllers/ReportController.php @@ -354,8 +354,8 @@ class ReportController extends BaseController private function generateInvoiceReport($startDate, $endDate, $isExport) { - $columns = ['client', 'invoice_number', 'invoice_date', 'amount', 'paid', 'balance']; - + $columns = ['client', 'invoice_number', 'invoice_date', 'amount', 'payment_date', 'paid', 'method']; + $account = Auth::user()->account; $displayData = []; $reportTotals = []; @@ -379,19 +379,25 @@ class ReportController extends BaseController }]); foreach ($clients->get() as $client) { - $currencyId = $client->currency_id ?: Auth::user()->account->getCurrencyId(); + foreach ($client->invoices as $invoice) { + + $payments = count($invoice->payments) ? $invoice->payments : [false]; + foreach ($payments as $payment) { + $displayData[] = [ + $isExport ? $client->getDisplayName() : $client->present()->link, + $isExport ? $invoice->invoice_number : $invoice->present()->link, + $invoice->present()->invoice_date, + $account->formatMoney($invoice->amount, $client), + $payment ? $payment->present()->payment_date : '', + $payment ? $account->formatMoney($payment->amount, $client) : '', + $payment ? $payment->present()->method : '', + ]; + if ($payment) { + $reportTotals = $this->addToTotals($reportTotals, $client->currency_id, 'paid', $payment->amount); + } + } - foreach ($client->invoices as $invoice) { - $displayData[] = [ - $isExport ? $client->getDisplayName() : $client->present()->link, - $isExport ? $invoice->invoice_number : $invoice->present()->link, - $invoice->present()->invoice_date, - $account->formatMoney($invoice->amount, $client), - $account->formatMoney($invoice->getAmountPaid(), $client), - $account->formatMoney($invoice->balance, $client), - ]; $reportTotals = $this->addToTotals($reportTotals, $client->currency_id, 'amount', $invoice->amount); - $reportTotals = $this->addToTotals($reportTotals, $client->currency_id, 'paid', $invoice->getAmountPaid()); $reportTotals = $this->addToTotals($reportTotals, $client->currency_id, 'balance', $invoice->balance); } } From c9e0119bc2a0843aaece20ddbd2fa2cd51ad9ec8 Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Mon, 21 Mar 2016 22:00:59 +0200 Subject: [PATCH 23/46] Added permissions settings help --- app/Http/Controllers/UserController.php | 2 -- resources/lang/en/texts.php | 7 ++++++- resources/views/users/edit.blade.php | 22 ++++++++++++++++++---- 3 files changed, 24 insertions(+), 7 deletions(-) diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index 0e5a8dd70dd6..2e3f675aa53e 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -77,7 +77,6 @@ class UserController extends BaseController 'user' => $user, 'method' => 'PUT', 'url' => 'users/'.$publicId, - 'title' => trans('texts.edit_user'), ]; return View::make('users.edit', $data); @@ -120,7 +119,6 @@ class UserController extends BaseController 'user' => null, 'method' => 'POST', 'url' => 'users', - 'title' => trans('texts.add_user'), ]; return View::make('users.edit', $data); diff --git a/resources/lang/en/texts.php b/resources/lang/en/texts.php index 6d0f963d2893..02fe26bece12 100644 --- a/resources/lang/en/texts.php +++ b/resources/lang/en/texts.php @@ -1068,7 +1068,7 @@ $LANG = array( // User Permissions 'owner' => 'Owner', 'administrator' => 'Administrator', - 'administrator_help' => 'Allow user to manage users, change settings, and view and modify all data', + 'administrator_help' => 'Allow user to manage users, change settings and modify all records', 'user_create_all' => 'Create clients, invoices, etc.', 'user_view_all' => 'View all clients, invoices, etc.', 'user_edit_all' => 'Edit all clients, invoices, etc.', @@ -1078,6 +1078,11 @@ $LANG = array( 'restore_vendor' => 'Restore Vendor', 'restored_vendor' => 'Successfully restored vendor', 'restored_expense' => 'Successfully restored expense', + 'permissions' => 'Permissions', + 'create_all_help' => 'Allow user to create and modify records', + 'view_all_help' => 'Allow user to view records they didn\'t create', + 'edit_all_help' => 'Allow user to modify records they didn\'t create', + ); diff --git a/resources/views/users/edit.blade.php b/resources/views/users/edit.blade.php index 542d40b737a8..5cdbeac2d8e0 100644 --- a/resources/views/users/edit.blade.php +++ b/resources/views/users/edit.blade.php @@ -16,13 +16,24 @@
-

{!! $title !!}

+

{!! trans('texts.user_details') !!}

{!! Former::text('first_name') !!} {!! Former::text('last_name') !!} {!! Former::text('email') !!} + +
+
+ +
+
+

{!! trans('texts.permissions') !!}

+
+
+ + {!! Former::checkbox('is_admin') ->label(' ') ->text(trans('texts.administrator')) @@ -31,17 +42,20 @@ ->value('create_all') ->label(' ') ->id('permissions_create_all') - ->text(trans('texts.user_create_all')) !!} + ->text(trans('texts.user_create_all')) + ->help(trans('texts.create_all_help')) !!} {!! Former::checkbox('permissions[view_all]') ->value('view_all') ->label(' ') ->id('permissions_view_all') - ->text(trans('texts.user_view_all')) !!} + ->text(trans('texts.user_view_all')) + ->help(trans('texts.view_all_help')) !!} {!! Former::checkbox('permissions[edit_all]') ->value('edit_all') ->label(' ') ->id('permissions_edit_all') - ->text(trans('texts.user_edit_all')) !!} + ->text(trans('texts.user_edit_all')) + ->help(trans('texts.edit_all_help')) !!}
From c66e933de54187cbfd7d070787da6fb72de7037b Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Mon, 21 Mar 2016 22:34:30 +0200 Subject: [PATCH 24/46] Minor improvements to client portal styling --- public/css/built.css | 6 +++--- public/css/built.public.css | 25 +++++++++++++++++-------- public/css/public.style.css | 25 +++++++++++++++++-------- public/css/style.css | 6 +++--- resources/views/public/header.blade.php | 2 +- resources/views/public_list.blade.php | 2 +- 6 files changed, 42 insertions(+), 24 deletions(-) diff --git a/public/css/built.css b/public/css/built.css index 0ed044f4a208..ee26ad4b7e93 100644 --- a/public/css/built.css +++ b/public/css/built.css @@ -2532,9 +2532,9 @@ font-weight: bold; .navbar, ul.dropdown-menu, .twitter-typeahead .tt-menu { - -moz-box-shadow: 5px 5px 20px -10px rgba(80, 80, 80, .82); - -webkit-box-shadow: 5px 5px 20px -10px rgba(80, 80, 80, .82); - box-shadow: 5px 5px 20px -10px rgba(80, 80, 80, .82); + -moz-box-shadow: 0 0 4px rgba(0,0,0,.14),0 4px 8px rgba(0,0,0,.28); + -webkit-box-shadow: 0 0 4px rgba(0,0,0,.14),0 4px 8px rgba(0,0,0,.28); + box-shadow: 0 0 4px rgba(0,0,0,.14),0 4px 8px rgba(0,0,0,.28); } .navbar .active > a { diff --git a/public/css/built.public.css b/public/css/built.public.css index 1ba4afb31115..2845cbabd3ab 100644 --- a/public/css/built.public.css +++ b/public/css/built.public.css @@ -790,14 +790,23 @@ html { overflow-y: scroll; } -@media screen and (min-width: 700px) { - .navbar-header { - padding-top: 16px; - padding-bottom: 16px; - } - .navbar li a { - padding: 31px 20px 31px 20px; - } + +.navbar-header { + padding-top: 4px; + padding-bottom: 4px; +} +.navbar li a { + padding-top: 18px; + font-weight: 500; + font-size: 15px; + padding-left: 20px; + padding-right: 20px; +} + +.navbar { + -moz-box-shadow: 0 0 4px rgba(0,0,0,.14),0 4px 8px rgba(0,0,0,.28); + -webkit-box-shadow: 0 0 4px rgba(0,0,0,.14),0 4px 8px rgba(0,0,0,.28); + box-shadow: 0 0 4px rgba(0,0,0,.14),0 4px 8px rgba(0,0,0,.28); } #footer { diff --git a/public/css/public.style.css b/public/css/public.style.css index da5a469decb7..b12c175294a0 100644 --- a/public/css/public.style.css +++ b/public/css/public.style.css @@ -7,14 +7,23 @@ html { overflow-y: scroll; } -@media screen and (min-width: 700px) { - .navbar-header { - padding-top: 16px; - padding-bottom: 16px; - } - .navbar li a { - padding: 31px 20px 31px 20px; - } + +.navbar-header { + padding-top: 4px; + padding-bottom: 4px; +} +.navbar li a { + padding-top: 18px; + font-weight: 500; + font-size: 15px; + padding-left: 20px; + padding-right: 20px; +} + +.navbar { + -moz-box-shadow: 0 0 4px rgba(0,0,0,.14),0 4px 8px rgba(0,0,0,.28); + -webkit-box-shadow: 0 0 4px rgba(0,0,0,.14),0 4px 8px rgba(0,0,0,.28); + box-shadow: 0 0 4px rgba(0,0,0,.14),0 4px 8px rgba(0,0,0,.28); } #footer { diff --git a/public/css/style.css b/public/css/style.css index 92318417d6ab..204edf2e88f5 100644 --- a/public/css/style.css +++ b/public/css/style.css @@ -405,9 +405,9 @@ font-weight: bold; .navbar, ul.dropdown-menu, .twitter-typeahead .tt-menu { - -moz-box-shadow: 5px 5px 20px -10px rgba(80, 80, 80, .82); - -webkit-box-shadow: 5px 5px 20px -10px rgba(80, 80, 80, .82); - box-shadow: 5px 5px 20px -10px rgba(80, 80, 80, .82); + -moz-box-shadow: 0 0 4px rgba(0,0,0,.14),0 4px 8px rgba(0,0,0,.28); + -webkit-box-shadow: 0 0 4px rgba(0,0,0,.14),0 4px 8px rgba(0,0,0,.28); + box-shadow: 0 0 4px rgba(0,0,0,.14),0 4px 8px rgba(0,0,0,.28); } .navbar .active > a { diff --git a/resources/views/public/header.blade.php b/resources/views/public/header.blade.php index ebc8874b1dd2..929bda00e419 100644 --- a/resources/views/public/header.blade.php +++ b/resources/views/public/header.blade.php @@ -70,7 +70,7 @@ @if (!isset($hideLogo) || !$hideLogo) {{-- Per our license, please do not remove or modify this link. --}} - + @endif --> -

{{ $title }}

+

{{ $title }}

{!! Datatable::table() ->addColumn($columns) From 56b863a89a1f45e7385e088e1c890d67e62c33f1 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Tue, 22 Mar 2016 19:50:09 +1100 Subject: [PATCH 25/46] Working on Dashboard API --- app/Http/Controllers/DashboardApiController.php | 1 + app/Http/routes.php | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/DashboardApiController.php b/app/Http/Controllers/DashboardApiController.php index 5439efc2871e..2da50d6dfbd8 100644 --- a/app/Http/Controllers/DashboardApiController.php +++ b/app/Http/Controllers/DashboardApiController.php @@ -159,6 +159,7 @@ class DashboardApiController extends BaseAPIController } $data = [ + 'id' => 1, 'paidToDate' => $paidToDate, 'balances' => $balances, 'averageInvoice' => $averageInvoice, diff --git a/app/Http/routes.php b/app/Http/routes.php index dec31aa26cb8..e01457909569 100644 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -101,7 +101,6 @@ if (Utils::isReseller()) { Route::group(['middleware' => 'auth:user'], function() { Route::get('dashboard', 'DashboardController@index'); - Route::get('dashboard2', 'DashboardApiController@index'); Route::get('view_archive/{entity_type}/{visible}', 'AccountController@setTrashVisible'); Route::get('hide_message', 'HomeController@hideMessage'); Route::get('force_inline_pdf', 'UserController@forcePDFJS'); @@ -258,6 +257,7 @@ Route::group(['middleware' => 'api', 'prefix' => 'api/v1'], function() Route::resource('expenses','ExpenseApiController'); Route::post('add_token', 'AccountApiController@addDeviceToken'); Route::post('update_notifications', 'AccountApiController@updatePushNotifications'); + Route::get('dashboard', 'DashboardApiController@index'); // Vendor Route::resource('vendors', 'VendorApiController'); From 06d796a318feef16e01a3624a98bfadadc4ad5ee Mon Sep 17 00:00:00 2001 From: David Bomba Date: Tue, 22 Mar 2016 20:43:08 +1100 Subject: [PATCH 26/46] Dashboard API --- app/Http/Controllers/DashboardApiController.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/DashboardApiController.php b/app/Http/Controllers/DashboardApiController.php index 2da50d6dfbd8..bf4636e2b4a5 100644 --- a/app/Http/Controllers/DashboardApiController.php +++ b/app/Http/Controllers/DashboardApiController.php @@ -160,9 +160,9 @@ class DashboardApiController extends BaseAPIController $data = [ 'id' => 1, - 'paidToDate' => $paidToDate, - 'balances' => $balances, - 'averageInvoice' => $averageInvoice, + 'paidToDate' => $paidToDate['value'], + 'balances' => $balances['value'], + 'averageInvoice' => $averageInvoice['invoice_avg'], 'invoicesSent' => $metrics ? $metrics->invoices_sent : 0, 'activeClients' => $metrics ? $metrics->active_clients : 0, 'pastDue' => $pastDue, From 7bc703e5dd364e1001a32e1105c90d106dd25e1c Mon Sep 17 00:00:00 2001 From: David Bomba Date: Tue, 22 Mar 2016 20:50:11 +1100 Subject: [PATCH 27/46] Dashboard API --- app/Http/Controllers/DashboardApiController.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/DashboardApiController.php b/app/Http/Controllers/DashboardApiController.php index bf4636e2b4a5..b3fea79499e1 100644 --- a/app/Http/Controllers/DashboardApiController.php +++ b/app/Http/Controllers/DashboardApiController.php @@ -160,9 +160,9 @@ class DashboardApiController extends BaseAPIController $data = [ 'id' => 1, - 'paidToDate' => $paidToDate['value'], - 'balances' => $balances['value'], - 'averageInvoice' => $averageInvoice['invoice_avg'], + 'paidToDate' => $paidToDate[0]['value'], + 'balances' => $balances[0]['value'], + 'averageInvoice' => $averageInvoice[0]['invoice_avg'], 'invoicesSent' => $metrics ? $metrics->invoices_sent : 0, 'activeClients' => $metrics ? $metrics->active_clients : 0, 'pastDue' => $pastDue, From 431c9a899f2fe474d1a6fa4fec55807450d6c79d Mon Sep 17 00:00:00 2001 From: David Bomba Date: Tue, 22 Mar 2016 20:54:36 +1100 Subject: [PATCH 28/46] Dashboard API --- app/Http/Controllers/DashboardApiController.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/DashboardApiController.php b/app/Http/Controllers/DashboardApiController.php index b3fea79499e1..6d32163fc2f8 100644 --- a/app/Http/Controllers/DashboardApiController.php +++ b/app/Http/Controllers/DashboardApiController.php @@ -160,9 +160,9 @@ class DashboardApiController extends BaseAPIController $data = [ 'id' => 1, - 'paidToDate' => $paidToDate[0]['value'], - 'balances' => $balances[0]['value'], - 'averageInvoice' => $averageInvoice[0]['invoice_avg'], + 'paidToDate' => $paidToDate[0]->value, + 'balances' => $balances[0]->value, + 'averageInvoice' => $averageInvoice[0]->invoice_avg, 'invoicesSent' => $metrics ? $metrics->invoices_sent : 0, 'activeClients' => $metrics ? $metrics->active_clients : 0, 'pastDue' => $pastDue, From b8560187f5c62cce5113b0c88b654fa3c3a205e3 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Tue, 22 Mar 2016 21:04:23 +1100 Subject: [PATCH 29/46] Dashboard API --- app/Http/Controllers/DashboardApiController.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/Http/Controllers/DashboardApiController.php b/app/Http/Controllers/DashboardApiController.php index 6d32163fc2f8..8f0b23db6a50 100644 --- a/app/Http/Controllers/DashboardApiController.php +++ b/app/Http/Controllers/DashboardApiController.php @@ -161,7 +161,9 @@ class DashboardApiController extends BaseAPIController $data = [ 'id' => 1, 'paidToDate' => $paidToDate[0]->value, + 'paidToDateCurrency' => $paidToDate[0]->currency_id, 'balances' => $balances[0]->value, + 'balancesCurrency' => $balances[0]->currency_id, 'averageInvoice' => $averageInvoice[0]->invoice_avg, 'invoicesSent' => $metrics ? $metrics->invoices_sent : 0, 'activeClients' => $metrics ? $metrics->active_clients : 0, From 85633d346425f29e4d1b5ec35c35d572f6920d64 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Tue, 22 Mar 2016 21:06:57 +1100 Subject: [PATCH 30/46] Dashboard API --- app/Http/Controllers/DashboardApiController.php | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/DashboardApiController.php b/app/Http/Controllers/DashboardApiController.php index 8f0b23db6a50..3a40ad78dc2d 100644 --- a/app/Http/Controllers/DashboardApiController.php +++ b/app/Http/Controllers/DashboardApiController.php @@ -158,6 +158,7 @@ class DashboardApiController extends BaseAPIController } } + /* $data = [ 'id' => 1, 'paidToDate' => $paidToDate[0]->value, @@ -167,13 +168,23 @@ class DashboardApiController extends BaseAPIController 'averageInvoice' => $averageInvoice[0]->invoice_avg, 'invoicesSent' => $metrics ? $metrics->invoices_sent : 0, 'activeClients' => $metrics ? $metrics->active_clients : 0, + ]; +*/ + $data = [ + 'account' => Auth::user()->account, + 'paidToDate' => $paidToDate, + 'balances' => $balances, + 'averageInvoice' => $averageInvoice, + 'invoicesSent' => $metrics ? $metrics->invoices_sent : 0, + 'activeClients' => $metrics ? $metrics->active_clients : 0, + 'activities' => $activities, 'pastDue' => $pastDue, 'upcoming' => $upcoming, 'payments' => $payments, 'title' => trans('texts.dashboard'), 'hasQuotes' => $hasQuotes, ]; - + return $this->response($data); } From dab023d898093c5622905548b818f9b594c5426c Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Tue, 22 Mar 2016 12:08:48 +0200 Subject: [PATCH 31/46] Minor styling changes --- public/css/built.css | 8 +- public/css/built.public.css | 8 +- public/css/public.style.css | 8 +- public/css/style.css | 8 +- .../views/accounts/client_portal.blade.php | 80 ++++++++++--------- .../views/accounts/localization.blade.php | 37 +++++---- .../views/accounts/system_settings.blade.php | 27 ++++--- 7 files changed, 95 insertions(+), 81 deletions(-) diff --git a/public/css/built.css b/public/css/built.css index ee26ad4b7e93..e98e86aefe90 100644 --- a/public/css/built.css +++ b/public/css/built.css @@ -2530,11 +2530,13 @@ font-weight: bold; } .navbar, +.panel-default, ul.dropdown-menu, +canvas, .twitter-typeahead .tt-menu { - -moz-box-shadow: 0 0 4px rgba(0,0,0,.14),0 4px 8px rgba(0,0,0,.28); - -webkit-box-shadow: 0 0 4px rgba(0,0,0,.14),0 4px 8px rgba(0,0,0,.28); - box-shadow: 0 0 4px rgba(0,0,0,.14),0 4px 8px rgba(0,0,0,.28); + x-moz-box-shadow: 0 0 1px 1px rgba(0,0,0,.05); + x-webkit-box-shadow: 0 0 1px 1px rgba(0,0,0,.05); + box-shadow: 0 0 1px 1px rgba(0,0,0,.05); } .navbar .active > a { diff --git a/public/css/built.public.css b/public/css/built.public.css index 2845cbabd3ab..cd2d7469627e 100644 --- a/public/css/built.public.css +++ b/public/css/built.public.css @@ -799,14 +799,16 @@ html { padding-top: 18px; font-weight: 500; font-size: 15px; + font-weight: bold; + color: #ecf0f1; padding-left: 20px; padding-right: 20px; } .navbar { - -moz-box-shadow: 0 0 4px rgba(0,0,0,.14),0 4px 8px rgba(0,0,0,.28); - -webkit-box-shadow: 0 0 4px rgba(0,0,0,.14),0 4px 8px rgba(0,0,0,.28); - box-shadow: 0 0 4px rgba(0,0,0,.14),0 4px 8px rgba(0,0,0,.28); + x-moz-box-shadow: 0 0 1px 1px rgba(0,0,0,.05); + x-webkit-box-shadow: 0 0 1px 1px rgba(0,0,0,.05); + box-shadow: 0 0 1px 1px rgba(0,0,0,.05); } #footer { diff --git a/public/css/public.style.css b/public/css/public.style.css index b12c175294a0..bdac74f7799b 100644 --- a/public/css/public.style.css +++ b/public/css/public.style.css @@ -16,14 +16,16 @@ html { padding-top: 18px; font-weight: 500; font-size: 15px; + font-weight: bold; + color: #ecf0f1; padding-left: 20px; padding-right: 20px; } .navbar { - -moz-box-shadow: 0 0 4px rgba(0,0,0,.14),0 4px 8px rgba(0,0,0,.28); - -webkit-box-shadow: 0 0 4px rgba(0,0,0,.14),0 4px 8px rgba(0,0,0,.28); - box-shadow: 0 0 4px rgba(0,0,0,.14),0 4px 8px rgba(0,0,0,.28); + x-moz-box-shadow: 0 0 1px 1px rgba(0,0,0,.05); + x-webkit-box-shadow: 0 0 1px 1px rgba(0,0,0,.05); + box-shadow: 0 0 1px 1px rgba(0,0,0,.05); } #footer { diff --git a/public/css/style.css b/public/css/style.css index 204edf2e88f5..7ddea57785a9 100644 --- a/public/css/style.css +++ b/public/css/style.css @@ -403,11 +403,13 @@ font-weight: bold; } .navbar, +.panel-default, ul.dropdown-menu, +canvas, .twitter-typeahead .tt-menu { - -moz-box-shadow: 0 0 4px rgba(0,0,0,.14),0 4px 8px rgba(0,0,0,.28); - -webkit-box-shadow: 0 0 4px rgba(0,0,0,.14),0 4px 8px rgba(0,0,0,.28); - box-shadow: 0 0 4px rgba(0,0,0,.14),0 4px 8px rgba(0,0,0,.28); + x-moz-box-shadow: 0 0 1px 1px rgba(0,0,0,.05); + x-webkit-box-shadow: 0 0 1px 1px rgba(0,0,0,.05); + box-shadow: 0 0 1px 1px rgba(0,0,0,.05); } .navbar .active > a { diff --git a/resources/views/accounts/client_portal.blade.php b/resources/views/accounts/client_portal.blade.php index 745574ad7254..8737c015d06e 100644 --- a/resources/views/accounts/client_portal.blade.php +++ b/resources/views/accounts/client_portal.blade.php @@ -28,45 +28,47 @@ @include('accounts.nav', ['selected' => ACCOUNT_CLIENT_PORTAL])
-
-
-

{!! trans('texts.client_portal') !!}

-
-
-
- {!! Former::checkbox('enable_client_portal') - ->text(trans('texts.enable')) - ->help(trans('texts.enable_client_portal_help')) !!} -
-
- {!! Former::checkbox('enable_portal_password') - ->text(trans('texts.enable_portal_password')) - ->help(trans('texts.enable_portal_password_help')) - ->label(' ') !!} -
-
- {!! Former::checkbox('send_portal_password') - ->text(trans('texts.send_portal_password')) - ->help(trans('texts.send_portal_password_help')) - ->label(' ') !!} -
-
-
-
-
-

{!! trans('texts.custom_css') !!}

-
-
-
- {!! Former::textarea('client_view_css') - ->label(trans('texts.custom_css')) - ->rows(10) - ->raw() - ->autofocus() - ->maxlength(60000) - ->style("min-width:100%;max-width:100%;font-family:'Roboto Mono', 'Lucida Console', Monaco, monospace;font-size:14px;'") !!} -
-
+
+
+
+

{!! trans('texts.client_portal') !!}

+
+
+
+ {!! Former::checkbox('enable_client_portal') + ->text(trans('texts.enable')) + ->help(trans('texts.enable_client_portal_help')) !!} +
+
+ {!! Former::checkbox('enable_portal_password') + ->text(trans('texts.enable_portal_password')) + ->help(trans('texts.enable_portal_password_help')) + ->label(' ') !!} +
+
+ {!! Former::checkbox('send_portal_password') + ->text(trans('texts.send_portal_password')) + ->help(trans('texts.send_portal_password_help')) + ->label(' ') !!} +
+
+
+
+
+

{!! trans('texts.custom_css') !!}

+
+
+
+ {!! Former::textarea('client_view_css') + ->label(trans('texts.custom_css')) + ->rows(10) + ->raw() + ->autofocus() + ->maxlength(60000) + ->style("min-width:100%;max-width:100%;font-family:'Roboto Mono', 'Lucida Console', Monaco, monospace;font-size:14px;'") !!} +
+
+
diff --git a/resources/views/accounts/localization.blade.php b/resources/views/accounts/localization.blade.php index f2c28e3684a8..b921c8710567 100644 --- a/resources/views/accounts/localization.blade.php +++ b/resources/views/accounts/localization.blade.php @@ -11,26 +11,29 @@ @include('accounts.nav', ['selected' => ACCOUNT_LOCALIZATION])
+ +
-
-
-

{!! trans('texts.localization') !!}

-
-
+
+
+

{!! trans('texts.localization') !!}

+
+
- {!! Former::select('currency_id')->addOption('','') - ->fromQuery($currencies, 'name', 'id') !!} - {!! Former::select('language_id')->addOption('','') - ->fromQuery($languages, 'name', 'id') !!} - {!! Former::select('timezone_id')->addOption('','') - ->fromQuery($timezones, 'location', 'id') !!} - {!! Former::select('date_format_id')->addOption('','') - ->fromQuery($dateFormats, 'label', 'id') !!} - {!! Former::select('datetime_format_id')->addOption('','') - ->fromQuery($datetimeFormats, 'label', 'id') !!} - {!! Former::checkbox('military_time')->text(trans('texts.enable')) !!} - {{-- Former::checkbox('show_currency_code')->text(trans('texts.enable')) --}} + {!! Former::select('currency_id')->addOption('','') + ->fromQuery($currencies, 'name', 'id') !!} + {!! Former::select('language_id')->addOption('','') + ->fromQuery($languages, 'name', 'id') !!} + {!! Former::select('timezone_id')->addOption('','') + ->fromQuery($timezones, 'location', 'id') !!} + {!! Former::select('date_format_id')->addOption('','') + ->fromQuery($dateFormats, 'label', 'id') !!} + {!! Former::select('datetime_format_id')->addOption('','') + ->fromQuery($datetimeFormats, 'label', 'id') !!} + {!! Former::checkbox('military_time')->text(trans('texts.enable')) !!} + {{-- Former::checkbox('show_currency_code')->text(trans('texts.enable')) --}} +
diff --git a/resources/views/accounts/system_settings.blade.php b/resources/views/accounts/system_settings.blade.php index 31be6a9d0962..ce889364f943 100644 --- a/resources/views/accounts/system_settings.blade.php +++ b/resources/views/accounts/system_settings.blade.php @@ -6,22 +6,23 @@ @include('accounts.nav', ['selected' => ACCOUNT_SYSTEM_SETTINGS])
- - {!! Former::open('/update_setup') - ->addClass('warn-on-exit') - ->autocomplete('off') - ->rules([ - 'app[url]' => 'required', - //'database[default]' => 'required', - 'database[type][host]' => 'required', - 'database[type][database]' => 'required', - 'database[type][username]' => 'required', - 'database[type][password]' => 'required', - ]) !!} +
+ {!! Former::open('/update_setup') + ->addClass('warn-on-exit') + ->autocomplete('off') + ->rules([ + 'app[url]' => 'required', + //'database[default]' => 'required', + 'database[type][host]' => 'required', + 'database[type][database]' => 'required', + 'database[type][username]' => 'required', + 'database[type][password]' => 'required', + ]) !!} - @include('partials.system_settings') + @include('partials.system_settings') +
From 6e7c19b38edba31f9507274f377dceaa3542d533 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Tue, 22 Mar 2016 21:08:58 +1100 Subject: [PATCH 32/46] Dashboard API --- app/Http/Controllers/DashboardApiController.php | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/app/Http/Controllers/DashboardApiController.php b/app/Http/Controllers/DashboardApiController.php index 3a40ad78dc2d..5f766a126ca1 100644 --- a/app/Http/Controllers/DashboardApiController.php +++ b/app/Http/Controllers/DashboardApiController.php @@ -171,20 +171,14 @@ class DashboardApiController extends BaseAPIController ]; */ $data = [ - 'account' => Auth::user()->account, + 'id' => 1, 'paidToDate' => $paidToDate, 'balances' => $balances, 'averageInvoice' => $averageInvoice, 'invoicesSent' => $metrics ? $metrics->invoices_sent : 0, 'activeClients' => $metrics ? $metrics->active_clients : 0, - 'activities' => $activities, - 'pastDue' => $pastDue, - 'upcoming' => $upcoming, - 'payments' => $payments, - 'title' => trans('texts.dashboard'), - 'hasQuotes' => $hasQuotes, ]; - + return $this->response($data); } From 0ec1fcbd238816f3ffbe743e426d90df3afb1f74 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Tue, 22 Mar 2016 21:13:24 +1100 Subject: [PATCH 33/46] Dashboard API --- .../Controllers/DashboardApiController.php | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/app/Http/Controllers/DashboardApiController.php b/app/Http/Controllers/DashboardApiController.php index 5f766a126ca1..349610598242 100644 --- a/app/Http/Controllers/DashboardApiController.php +++ b/app/Http/Controllers/DashboardApiController.php @@ -158,7 +158,7 @@ class DashboardApiController extends BaseAPIController } } - /* + $data = [ 'id' => 1, 'paidToDate' => $paidToDate[0]->value, @@ -166,19 +166,21 @@ class DashboardApiController extends BaseAPIController 'balances' => $balances[0]->value, 'balancesCurrency' => $balances[0]->currency_id, 'averageInvoice' => $averageInvoice[0]->invoice_avg, + 'averageInvoiceCurrency' => $averageInvoice[0]->currency_id, 'invoicesSent' => $metrics ? $metrics->invoices_sent : 0, 'activeClients' => $metrics ? $metrics->active_clients : 0, ]; -*/ - $data = [ - 'id' => 1, - 'paidToDate' => $paidToDate, - 'balances' => $balances, - 'averageInvoice' => $averageInvoice, - 'invoicesSent' => $metrics ? $metrics->invoices_sent : 0, - 'activeClients' => $metrics ? $metrics->active_clients : 0, - ]; - + + /* + $data = [ + 'id' => 1, + 'paidToDate' => $paidToDate, + 'balances' => $balances, + 'averageInvoice' => $averageInvoice, + 'invoicesSent' => $metrics ? $metrics->invoices_sent : 0, + 'activeClients' => $metrics ? $metrics->active_clients : 0, + ]; + */ return $this->response($data); } From d83a02f80fc2e968cd17b13d33f68b2c2f1bbdc1 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Tue, 22 Mar 2016 21:17:52 +1100 Subject: [PATCH 34/46] Dashboard API --- .../Controllers/DashboardApiController.php | 44 +++++++++---------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/app/Http/Controllers/DashboardApiController.php b/app/Http/Controllers/DashboardApiController.php index 349610598242..de004a97e3cd 100644 --- a/app/Http/Controllers/DashboardApiController.php +++ b/app/Http/Controllers/DashboardApiController.php @@ -158,29 +158,29 @@ class DashboardApiController extends BaseAPIController } } - - $data = [ - 'id' => 1, - 'paidToDate' => $paidToDate[0]->value, - 'paidToDateCurrency' => $paidToDate[0]->currency_id, - 'balances' => $balances[0]->value, - 'balancesCurrency' => $balances[0]->currency_id, - 'averageInvoice' => $averageInvoice[0]->invoice_avg, - 'averageInvoiceCurrency' => $averageInvoice[0]->currency_id, - 'invoicesSent' => $metrics ? $metrics->invoices_sent : 0, - 'activeClients' => $metrics ? $metrics->active_clients : 0, - ]; - /* - $data = [ - 'id' => 1, - 'paidToDate' => $paidToDate, - 'balances' => $balances, - 'averageInvoice' => $averageInvoice, - 'invoicesSent' => $metrics ? $metrics->invoices_sent : 0, - 'activeClients' => $metrics ? $metrics->active_clients : 0, - ]; - */ + $data = [ + 'id' => 1, + 'paidToDate' => $paidToDate[0]->value, + 'paidToDateCurrency' => $paidToDate[0]->currency_id, + 'balances' => $balances[0]->value, + 'balancesCurrency' => $balances[0]->currency_id, + 'averageInvoice' => $averageInvoice[0]->invoice_avg, + 'averageInvoiceCurrency' => $averageInvoice[0]->currency_id, + 'invoicesSent' => $metrics ? $metrics->invoices_sent : 0, + 'activeClients' => $metrics ? $metrics->active_clients : 0, + ]; + + */ + $data = [ + 'id' => 1, + 'paidToDate' => $paidToDate, + 'balances' => $balances, + 'averageInvoice' => $averageInvoice, + 'invoicesSent' => $metrics ? $metrics->invoices_sent : 0, + 'activeClients' => $metrics ? $metrics->active_clients : 0, + ]; + return $this->response($data); } From 86cda04806b4150d72f31e9f7193df2ea83f5ab1 Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Tue, 22 Mar 2016 12:18:20 +0200 Subject: [PATCH 35/46] Minor styling fix --- public/css/built.css | 4 ++-- public/css/style.css | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/public/css/built.css b/public/css/built.css index e98e86aefe90..c0c7b5c64903 100644 --- a/public/css/built.css +++ b/public/css/built.css @@ -2532,8 +2532,8 @@ font-weight: bold; .navbar, .panel-default, ul.dropdown-menu, -canvas, -.twitter-typeahead .tt-menu { +.twitter-typeahead .tt-menu +canvas { x-moz-box-shadow: 0 0 1px 1px rgba(0,0,0,.05); x-webkit-box-shadow: 0 0 1px 1px rgba(0,0,0,.05); box-shadow: 0 0 1px 1px rgba(0,0,0,.05); diff --git a/public/css/style.css b/public/css/style.css index 7ddea57785a9..b44332f3f521 100644 --- a/public/css/style.css +++ b/public/css/style.css @@ -405,8 +405,8 @@ font-weight: bold; .navbar, .panel-default, ul.dropdown-menu, -canvas, -.twitter-typeahead .tt-menu { +.twitter-typeahead .tt-menu +canvas { x-moz-box-shadow: 0 0 1px 1px rgba(0,0,0,.05); x-webkit-box-shadow: 0 0 1px 1px rgba(0,0,0,.05); box-shadow: 0 0 1px 1px rgba(0,0,0,.05); From 8e5d15dfbe8c9dad599a4b06503d9f914e92d89b Mon Sep 17 00:00:00 2001 From: David Bomba Date: Tue, 22 Mar 2016 21:21:05 +1100 Subject: [PATCH 36/46] Dashboard API --- .../Controllers/DashboardApiController.php | 64 ++++++++----------- 1 file changed, 28 insertions(+), 36 deletions(-) diff --git a/app/Http/Controllers/DashboardApiController.php b/app/Http/Controllers/DashboardApiController.php index de004a97e3cd..06393e3ddc3c 100644 --- a/app/Http/Controllers/DashboardApiController.php +++ b/app/Http/Controllers/DashboardApiController.php @@ -11,7 +11,7 @@ class DashboardApiController extends BaseAPIController { $view_all = !Auth::user()->hasPermission('view_all'); $user_id = Auth::user()->id; - + // total_income, billed_clients, invoice_sent and active_clients $select = DB::raw('COUNT(DISTINCT CASE WHEN invoices.id IS NOT NULL THEN clients.id ELSE null END) billed_clients, SUM(CASE WHEN invoices.invoice_status_id >= '.INVOICE_STATUS_SENT.' THEN 1 ELSE 0 END) invoices_sent, @@ -25,17 +25,17 @@ class DashboardApiController extends BaseAPIController ->where('invoices.is_deleted', '=', false) ->where('invoices.is_recurring', '=', false) ->where('invoices.is_quote', '=', false); - + if(!$view_all){ $metrics = $metrics->where(function($query) use($user_id){ $query->where('invoices.user_id', '=', $user_id); $query->orwhere(function($query) use($user_id){ - $query->where('invoices.user_id', '=', null); + $query->where('invoices.user_id', '=', null); $query->where('clients.user_id', '=', $user_id); }); }); } - + $metrics = $metrics->groupBy('accounts.id') ->first(); @@ -45,11 +45,11 @@ class DashboardApiController extends BaseAPIController ->leftJoin('clients', 'accounts.id', '=', 'clients.account_id') ->where('accounts.id', '=', Auth::user()->account_id) ->where('clients.is_deleted', '=', false); - + if(!$view_all){ $paidToDate = $paidToDate->where('clients.user_id', '=', $user_id); } - + $paidToDate = $paidToDate->groupBy('accounts.id') ->groupBy(DB::raw('CASE WHEN clients.currency_id IS NULL THEN CASE WHEN accounts.currency_id IS NULL THEN 1 ELSE accounts.currency_id END ELSE clients.currency_id END')) ->get(); @@ -64,11 +64,11 @@ class DashboardApiController extends BaseAPIController ->where('invoices.is_deleted', '=', false) ->where('invoices.is_quote', '=', false) ->where('invoices.is_recurring', '=', false); - + if(!$view_all){ $averageInvoice = $averageInvoice->where('invoices.user_id', '=', $user_id); } - + $averageInvoice = $averageInvoice->groupBy('accounts.id') ->groupBy(DB::raw('CASE WHEN clients.currency_id IS NULL THEN CASE WHEN accounts.currency_id IS NULL THEN 1 ELSE accounts.currency_id END ELSE clients.currency_id END')) ->get(); @@ -96,11 +96,11 @@ class DashboardApiController extends BaseAPIController ->where('invoices.deleted_at', '=', null) ->where('contacts.is_primary', '=', true) ->where('invoices.due_date', '<', date('Y-m-d')); - + if(!$view_all){ $pastDue = $pastDue->where('invoices.user_id', '=', $user_id); } - + $pastDue = $pastDue->select(['invoices.due_date', 'invoices.balance', 'invoices.public_id', 'invoices.invoice_number', 'clients.name as client_name', 'contacts.email', 'contacts.first_name', 'contacts.last_name', 'clients.currency_id', 'clients.public_id as client_public_id', 'clients.user_id as client_user_id', 'is_quote']) ->orderBy('invoices.due_date', 'asc') ->take(50) @@ -120,11 +120,11 @@ class DashboardApiController extends BaseAPIController ->where('contacts.is_primary', '=', true) ->where('invoices.due_date', '>=', date('Y-m-d')) ->orderBy('invoices.due_date', 'asc'); - + if(!$view_all){ $upcoming = $upcoming->where('invoices.user_id', '=', $user_id); } - + $upcoming = $upcoming->take(50) ->select(['invoices.due_date', 'invoices.balance', 'invoices.public_id', 'invoices.invoice_number', 'clients.name as client_name', 'contacts.email', 'contacts.first_name', 'contacts.last_name', 'clients.currency_id', 'clients.public_id as client_public_id', 'clients.user_id as client_user_id', 'is_quote']) ->get(); @@ -139,11 +139,11 @@ class DashboardApiController extends BaseAPIController ->where('clients.is_deleted', '=', false) ->where('contacts.deleted_at', '=', null) ->where('contacts.is_primary', '=', true); - + if(!$view_all){ $payments = $payments->where('payments.user_id', '=', $user_id); } - + $payments = $payments->select(['payments.payment_date', 'payments.amount', 'invoices.public_id', 'invoices.invoice_number', 'clients.name as client_name', 'contacts.email', 'contacts.first_name', 'contacts.last_name', 'clients.currency_id', 'clients.public_id as client_public_id', 'clients.user_id as client_user_id']) ->orderBy('payments.payment_date', 'desc') ->take(50) @@ -158,30 +158,22 @@ class DashboardApiController extends BaseAPIController } } - /* - $data = [ - 'id' => 1, - 'paidToDate' => $paidToDate[0]->value, - 'paidToDateCurrency' => $paidToDate[0]->currency_id, - 'balances' => $balances[0]->value, - 'balancesCurrency' => $balances[0]->currency_id, - 'averageInvoice' => $averageInvoice[0]->invoice_avg, - 'averageInvoiceCurrency' => $averageInvoice[0]->currency_id, - 'invoicesSent' => $metrics ? $metrics->invoices_sent : 0, - 'activeClients' => $metrics ? $metrics->active_clients : 0, - ]; - */ - $data = [ - 'id' => 1, - 'paidToDate' => $paidToDate, - 'balances' => $balances, - 'averageInvoice' => $averageInvoice, - 'invoicesSent' => $metrics ? $metrics->invoices_sent : 0, - 'activeClients' => $metrics ? $metrics->active_clients : 0, - ]; + $data = [ + 'id' => 1, + 'paidToDate' => $paidToDate[0]->value, + 'paidToDateCurrency' => $paidToDate[0]->currency_id, + 'balances' => $balances[0]->value, + 'balancesCurrency' => $balances[0]->currency_id, + 'averageInvoice' => $averageInvoice[0]->invoice_avg, + 'averageInvoiceCurrency' => $averageInvoice[0]->currency_id, + 'invoicesSent' => $metrics ? $metrics->invoices_sent : 0, + 'activeClients' => $metrics ? $metrics->active_clients : 0, + ]; - return $this->response($data); + + + return $this->response($data); } } From 2a7c84714d6e4bd8110746545f27cffe3c83921b Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Tue, 22 Mar 2016 14:25:30 +0200 Subject: [PATCH 37/46] Minor style fixes --- public/css/built.css | 2 +- public/css/built.public.css | 1 - public/css/public.style.css | 1 - public/css/style.css | 2 +- 4 files changed, 2 insertions(+), 4 deletions(-) diff --git a/public/css/built.css b/public/css/built.css index c0c7b5c64903..8e2782ebbffc 100644 --- a/public/css/built.css +++ b/public/css/built.css @@ -2532,7 +2532,7 @@ font-weight: bold; .navbar, .panel-default, ul.dropdown-menu, -.twitter-typeahead .tt-menu +.twitter-typeahead .tt-menu, canvas { x-moz-box-shadow: 0 0 1px 1px rgba(0,0,0,.05); x-webkit-box-shadow: 0 0 1px 1px rgba(0,0,0,.05); diff --git a/public/css/built.public.css b/public/css/built.public.css index cd2d7469627e..3e91dc0ed193 100644 --- a/public/css/built.public.css +++ b/public/css/built.public.css @@ -800,7 +800,6 @@ html { font-weight: 500; font-size: 15px; font-weight: bold; - color: #ecf0f1; padding-left: 20px; padding-right: 20px; } diff --git a/public/css/public.style.css b/public/css/public.style.css index bdac74f7799b..95b158cb9b62 100644 --- a/public/css/public.style.css +++ b/public/css/public.style.css @@ -17,7 +17,6 @@ html { font-weight: 500; font-size: 15px; font-weight: bold; - color: #ecf0f1; padding-left: 20px; padding-right: 20px; } diff --git a/public/css/style.css b/public/css/style.css index b44332f3f521..2cf0cdceca24 100644 --- a/public/css/style.css +++ b/public/css/style.css @@ -405,7 +405,7 @@ font-weight: bold; .navbar, .panel-default, ul.dropdown-menu, -.twitter-typeahead .tt-menu +.twitter-typeahead .tt-menu, canvas { x-moz-box-shadow: 0 0 1px 1px rgba(0,0,0,.05); x-webkit-box-shadow: 0 0 1px 1px rgba(0,0,0,.05); From 958cf4e8b71e2843a79792b4a74418d767aee3e3 Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Tue, 22 Mar 2016 14:38:22 +0200 Subject: [PATCH 38/46] Added support for Google Maps API key --- .env.example | 4 +++- resources/views/clients/show.blade.php | 2 +- resources/views/vendors/show.blade.php | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.env.example b/.env.example index 66d2d5251b27..c0d6668fb52a 100644 --- a/.env.example +++ b/.env.example @@ -41,4 +41,6 @@ API_SECRET=password #GOOGLE_CLIENT_ID= #GOOGLE_CLIENT_SECRET= -#GOOGLE_OAUTH_REDIRECT=http://ninja.dev/auth/google \ No newline at end of file +#GOOGLE_OAUTH_REDIRECT=http://ninja.dev/auth/google + +#GOOGLE_MAPS_API_KEY= \ No newline at end of file diff --git a/resources/views/clients/show.blade.php b/resources/views/clients/show.blade.php index 3166f9b800da..4af8e7a58f20 100644 --- a/resources/views/clients/show.blade.php +++ b/resources/views/clients/show.blade.php @@ -14,7 +14,7 @@ } - + @endif @stop diff --git a/resources/views/vendors/show.blade.php b/resources/views/vendors/show.blade.php index fc6ed7e52cb5..ada4c3bcffbb 100644 --- a/resources/views/vendors/show.blade.php +++ b/resources/views/vendors/show.blade.php @@ -14,7 +14,7 @@ } - + @endif @stop From ddbc254d4b2c35d084e46761d1012c6a62718ff0 Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Tue, 22 Mar 2016 15:17:46 +0200 Subject: [PATCH 39/46] Add link to payments from invoice page --- app/Http/Controllers/InvoiceController.php | 10 +++++++++- app/Ninja/Presenters/PaymentPresenter.php | 11 +++++++++++ resources/lang/en/texts.php | 2 +- 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/InvoiceController.php b/app/Http/Controllers/InvoiceController.php index dc9cc501db74..5a14ea624449 100644 --- a/app/Http/Controllers/InvoiceController.php +++ b/app/Http/Controllers/InvoiceController.php @@ -89,7 +89,7 @@ class InvoiceController extends BaseController { $account = Auth::user()->account; $invoice = Invoice::scope($publicId) - ->with('invitations', 'account.country', 'client.contacts', 'client.country', 'invoice_items') + ->with('invitations', 'account.country', 'client.contacts', 'client.country', 'invoice_items', 'payments') ->withTrashed() ->firstOrFail(); @@ -155,6 +155,14 @@ class InvoiceController extends BaseController if (!$invoice->is_recurring && $invoice->balance > 0) { $actions[] = ['url' => 'javascript:onPaymentClick()', 'label' => trans('texts.enter_payment')]; } + + foreach ($invoice->payments as $payment) { + $label = trans("texts.view_payment"); + if (count($invoice->payments) > 1) { + $label .= ' - ' . $account->formatMoney($payment->amount, $invoice->client); + } + $actions[] = ['url' => $payment->present()->url, 'label' => $label]; + } } if (count($actions) > 3) { diff --git a/app/Ninja/Presenters/PaymentPresenter.php b/app/Ninja/Presenters/PaymentPresenter.php index a0a58663e5a7..a1c3692991fe 100644 --- a/app/Ninja/Presenters/PaymentPresenter.php +++ b/app/Ninja/Presenters/PaymentPresenter.php @@ -1,5 +1,6 @@ entity->public_id . '/edit'); + } + + public function link() + { + return link_to('/payments/' . $this->entity->public_id . '/edit', $this->entity->getDisplayName()); + } + } \ No newline at end of file diff --git a/resources/lang/en/texts.php b/resources/lang/en/texts.php index 02fe26bece12..c59c22b37045 100644 --- a/resources/lang/en/texts.php +++ b/resources/lang/en/texts.php @@ -1082,7 +1082,7 @@ $LANG = array( 'create_all_help' => 'Allow user to create and modify records', 'view_all_help' => 'Allow user to view records they didn\'t create', 'edit_all_help' => 'Allow user to modify records they didn\'t create', - + 'view_payment' => 'View Payment', ); From beede39e85275b03a8a8ee66d955aee2f708829b Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Tue, 22 Mar 2016 16:09:48 +0200 Subject: [PATCH 40/46] Updated to the latest version of Laravel --- composer.json | 2 +- composer.lock | 92 +++++++++---------- readme.md | 2 +- resources/views/accounts/api_tokens.blade.php | 7 +- 4 files changed, 54 insertions(+), 49 deletions(-) diff --git a/composer.json b/composer.json index bc315ba6c285..45e6e1872640 100644 --- a/composer.json +++ b/composer.json @@ -15,7 +15,7 @@ "omnipay/2checkout": "dev-master#e9c079c2dde0d7ba461903b3b7bd5caf6dee1248", "omnipay/gocardless": "dev-master", "omnipay/stripe": "2.3.0", - "laravel/framework": "5.2.22", + "laravel/framework": "5.2.*", "laravelcollective/html": "5.2.*", "laravelcollective/bus": "5.2.*", "symfony/css-selector": "~3.0", diff --git a/composer.lock b/composer.lock index bd2369f87954..6ce01e65ba67 100644 --- a/composer.lock +++ b/composer.lock @@ -4,8 +4,8 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "a33dce96f4ded3fb269a6d9dcbf24b27", - "content-hash": "f73a83c64422ef3560da4adb988850ae", + "hash": "e5e8524886bd38794a15e406acc3745a", + "content-hash": "6b3f343959ba3f330c425325574dfe28", "packages": [ { "name": "agmscode/omnipay-agms", @@ -123,12 +123,12 @@ "source": { "type": "git", "url": "https://github.com/formers/former.git", - "reference": "e196c4336db77be97131f6a3b3c3b69b3a22b683" + "reference": "d97f907741323b390f43954a90a227921ecc6b96" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/formers/former/zipball/e196c4336db77be97131f6a3b3c3b69b3a22b683", - "reference": "e196c4336db77be97131f6a3b3c3b69b3a22b683", + "url": "https://api.github.com/repos/formers/former/zipball/d97f907741323b390f43954a90a227921ecc6b96", + "reference": "d97f907741323b390f43954a90a227921ecc6b96", "shasum": "" }, "require": { @@ -174,7 +174,7 @@ "foundation", "laravel" ], - "time": "2016-03-02 17:21:21" + "time": "2016-03-16 01:43:45" }, { "name": "anahkiasen/html-object", @@ -880,12 +880,12 @@ "source": { "type": "git", "url": "https://github.com/delatbabel/omnipay-fatzebra.git", - "reference": "7b3cb869abe8327d4cf6ccc6591a89a95c02bfbc" + "reference": "d0a56a8704357d91457672741a48a4cb6c7ecd53" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/delatbabel/omnipay-fatzebra/zipball/7b3cb869abe8327d4cf6ccc6591a89a95c02bfbc", - "reference": "7b3cb869abe8327d4cf6ccc6591a89a95c02bfbc", + "url": "https://api.github.com/repos/delatbabel/omnipay-fatzebra/zipball/d0a56a8704357d91457672741a48a4cb6c7ecd53", + "reference": "d0a56a8704357d91457672741a48a4cb6c7ecd53", "shasum": "" }, "require": { @@ -929,7 +929,7 @@ "payment", "paystream" ], - "time": "2015-02-15 11:27:23" + "time": "2016-03-21 09:21:14" }, { "name": "dercoder/omnipay-ecopayz", @@ -1039,12 +1039,12 @@ "source": { "type": "git", "url": "https://github.com/descubraomundo/omnipay-pagarme.git", - "reference": "528953568929b57189de16fa7431eaab75d61840" + "reference": "8571396139eb1fb1a7011450714a5e8d8d604d8c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/descubraomundo/omnipay-pagarme/zipball/528953568929b57189de16fa7431eaab75d61840", - "reference": "528953568929b57189de16fa7431eaab75d61840", + "url": "https://api.github.com/repos/descubraomundo/omnipay-pagarme/zipball/8571396139eb1fb1a7011450714a5e8d8d604d8c", + "reference": "8571396139eb1fb1a7011450714a5e8d8d604d8c", "shasum": "" }, "require": { @@ -1081,7 +1081,7 @@ "pay", "payment" ], - "time": "2015-10-27 19:17:20" + "time": "2016-03-18 19:37:37" }, { "name": "dioscouri/omnipay-cybersource", @@ -1938,16 +1938,16 @@ }, { "name": "guzzlehttp/guzzle", - "version": "6.1.1", + "version": "6.2.0", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "c6851d6e48f63b69357cbfa55bca116448140e0c" + "reference": "d094e337976dff9d8e2424e8485872194e768662" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/c6851d6e48f63b69357cbfa55bca116448140e0c", - "reference": "c6851d6e48f63b69357cbfa55bca116448140e0c", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/d094e337976dff9d8e2424e8485872194e768662", + "reference": "d094e337976dff9d8e2424e8485872194e768662", "shasum": "" }, "require": { @@ -1963,7 +1963,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "6.1-dev" + "dev-master": "6.2-dev" } }, "autoload": { @@ -1996,7 +1996,7 @@ "rest", "web service" ], - "time": "2015-11-23 00:47:50" + "time": "2016-03-21 20:02:09" }, { "name": "guzzlehttp/promises", @@ -2603,12 +2603,12 @@ "source": { "type": "git", "url": "https://github.com/labs7in0/omnipay-wechat.git", - "reference": "4e279ff4535dfa0636a3d6af5c92b8e9dcc4311a" + "reference": "40c9f86df6573ad98ae1dd0d29712ccbc789a74e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/labs7in0/omnipay-wechat/zipball/4e279ff4535dfa0636a3d6af5c92b8e9dcc4311a", - "reference": "4e279ff4535dfa0636a3d6af5c92b8e9dcc4311a", + "url": "https://api.github.com/repos/labs7in0/omnipay-wechat/zipball/40c9f86df6573ad98ae1dd0d29712ccbc789a74e", + "reference": "40c9f86df6573ad98ae1dd0d29712ccbc789a74e", "shasum": "" }, "require": { @@ -2644,7 +2644,7 @@ "purchase", "wechat" ], - "time": "2015-11-16 11:04:21" + "time": "2016-03-18 09:59:11" }, { "name": "laracasts/presenter", @@ -2694,16 +2694,16 @@ }, { "name": "laravel/framework", - "version": "v5.2.22", + "version": "v5.2.24", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "aec1b7cb9ec0bac0107361a3730cac9b6f945ef4" + "reference": "396297a5fd3c70c2fc1af68f09ee574a2380175c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/aec1b7cb9ec0bac0107361a3730cac9b6f945ef4", - "reference": "aec1b7cb9ec0bac0107361a3730cac9b6f945ef4", + "url": "https://api.github.com/repos/laravel/framework/zipball/396297a5fd3c70c2fc1af68f09ee574a2380175c", + "reference": "396297a5fd3c70c2fc1af68f09ee574a2380175c", "shasum": "" }, "require": { @@ -2716,7 +2716,7 @@ "monolog/monolog": "~1.11", "mtdowling/cron-expression": "~1.0", "nesbot/carbon": "~1.20", - "paragonie/random_compat": "~1.1", + "paragonie/random_compat": "~1.4", "php": ">=5.5.9", "psy/psysh": "0.7.*", "swiftmailer/swiftmailer": "~5.1", @@ -2818,7 +2818,7 @@ "framework", "laravel" ], - "time": "2016-02-27 22:09:19" + "time": "2016-03-22 13:45:19" }, { "name": "laravel/socialite", @@ -3815,7 +3815,7 @@ }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/omnipay-2checkout/zipball/31394ce58d5999b6f49b321cb3547747837c1297", + "url": "https://api.github.com/repos/thephpleague/omnipay-2checkout/zipball/77b316bd08c6b7a1e93721f15d1bfbd21a62ba6b", "reference": "e9c079c2dde0d7ba461903b3b7bd5caf6dee1248", "shasum": "" }, @@ -4328,16 +4328,16 @@ }, { "name": "omnipay/eway", - "version": "v2.2.0", + "version": "v2.2.1", "source": { "type": "git", "url": "https://github.com/thephpleague/omnipay-eway.git", - "reference": "0dcf28596f0382fbfc3ee229e98e60798675ed16" + "reference": "1c953630f7097bfdeed200b17a847015a4df5607" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/omnipay-eway/zipball/0dcf28596f0382fbfc3ee229e98e60798675ed16", - "reference": "0dcf28596f0382fbfc3ee229e98e60798675ed16", + "url": "https://api.github.com/repos/thephpleague/omnipay-eway/zipball/1c953630f7097bfdeed200b17a847015a4df5607", + "reference": "1c953630f7097bfdeed200b17a847015a4df5607", "shasum": "" }, "require": { @@ -4381,7 +4381,7 @@ "pay", "payment" ], - "time": "2015-03-30 00:28:33" + "time": "2016-03-22 01:11:02" }, { "name": "omnipay/firstdata", @@ -5536,16 +5536,16 @@ }, { "name": "paragonie/random_compat", - "version": "v1.2.2", + "version": "v1.4.1", "source": { "type": "git", "url": "https://github.com/paragonie/random_compat.git", - "reference": "b3313b618f4edd76523572531d5d7e22fe747430" + "reference": "c7e26a21ba357863de030f0b9e701c7d04593774" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paragonie/random_compat/zipball/b3313b618f4edd76523572531d5d7e22fe747430", - "reference": "b3313b618f4edd76523572531d5d7e22fe747430", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/c7e26a21ba357863de030f0b9e701c7d04593774", + "reference": "c7e26a21ba357863de030f0b9e701c7d04593774", "shasum": "" }, "require": { @@ -5580,7 +5580,7 @@ "pseudorandom", "random" ], - "time": "2016-03-11 19:54:08" + "time": "2016-03-18 20:34:03" }, { "name": "patricktalmadge/bootstrapper", @@ -8475,16 +8475,16 @@ }, { "name": "phpspec/phpspec", - "version": "2.4.1", + "version": "2.5.0", "source": { "type": "git", "url": "https://github.com/phpspec/phpspec.git", - "reference": "5528ce1e93a1efa090c9404aba3395c329b4e6ed" + "reference": "385ecb015e97c13818074f1517928b24d4a26067" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/phpspec/zipball/5528ce1e93a1efa090c9404aba3395c329b4e6ed", - "reference": "5528ce1e93a1efa090c9404aba3395c329b4e6ed", + "url": "https://api.github.com/repos/phpspec/phpspec/zipball/385ecb015e97c13818074f1517928b24d4a26067", + "reference": "385ecb015e97c13818074f1517928b24d4a26067", "shasum": "" }, "require": { @@ -8549,7 +8549,7 @@ "testing", "tests" ], - "time": "2016-01-01 10:17:54" + "time": "2016-03-20 20:34:32" }, { "name": "phpspec/prophecy", diff --git a/readme.md b/readme.md index fe4cb90bdc3b..b6a5b63a3df4 100644 --- a/readme.md +++ b/readme.md @@ -52,7 +52,7 @@ Note: we've recently updated this branch to Laravel 5.2. If you're upgrading her * [Debian and Nginx](https://www.rosehosting.com/blog/install-invoice-ninja-on-a-debian-7-vps/) * [User Guide](https://www.invoiceninja.com/app-user-guide/) * [Developer Guide](https://www.invoiceninja.com/knowledgebase/developer-guide/) -* [API Documentation](https://www.invoiceninja.com/knowledgebase/api-documentation/) +* [API Documentation](https://www.invoiceninja.com/api-documentation/) * [Support Forum](https://www.invoiceninja.com/forums/forum/support/) * [Feature Roadmap](https://trello.com/b/63BbiVVe/) diff --git a/resources/views/accounts/api_tokens.blade.php b/resources/views/accounts/api_tokens.blade.php index 4612b1cbfedd..0b338c80268a 100644 --- a/resources/views/accounts/api_tokens.blade.php +++ b/resources/views/accounts/api_tokens.blade.php @@ -5,7 +5,7 @@ @include('accounts.nav', ['selected' => ACCOUNT_API_TOKENS, 'advanced' => true])
- {!! Button::normal(trans('texts.documentation'))->asLinkTo(NINJA_WEB_URL.'/knowledgebase/api-documentation/')->withAttributes(['target' => '_blank'])->appendIcon(Icon::create('info-sign')) !!} + {!! Button::normal(trans('texts.documentation'))->asLinkTo(NINJA_WEB_URL.'/api-documentation/')->withAttributes(['target' => '_blank'])->appendIcon(Icon::create('info-sign')) !!} @if (Utils::isNinja()) {!! Button::normal(trans('texts.zapier'))->asLinkTo(ZAPIER_URL)->withAttributes(['target' => '_blank']) !!} @endif @@ -51,4 +51,9 @@ + @if (Utils::isNinja() && !Utils::isReseller()) +

 

+ + @endif + @stop From 5c1e9900d3b5f015cc5ba3429d0a3a987afaeb11 Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Tue, 22 Mar 2016 16:37:14 +0200 Subject: [PATCH 41/46] Fix for #779 --- app/Libraries/Utils.php | 6 +++--- resources/lang/en/texts.php | 13 +++++++++++++ 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/app/Libraries/Utils.php b/app/Libraries/Utils.php index cfcc97c00114..12ab7dadcc5a 100644 --- a/app/Libraries/Utils.php +++ b/app/Libraries/Utils.php @@ -620,8 +620,8 @@ class Utils private static function getMonth($offset) { - $months = [ "January", "February", "March", "April", "May", "June", - "July", "August", "September", "October", "November", "December", ]; + $months = [ "january", "february", "march", "april", "may", "june", + "july", "august", "september", "october", "november", "december", ]; $month = intval(date('n')) - 1; @@ -632,7 +632,7 @@ class Utils $month += 12; } - return $months[$month]; + return trans('texts.' . $months[$month]); } private static function getQuarter($offset) diff --git a/resources/lang/en/texts.php b/resources/lang/en/texts.php index c59c22b37045..1df2bc2ca4d3 100644 --- a/resources/lang/en/texts.php +++ b/resources/lang/en/texts.php @@ -1083,6 +1083,19 @@ $LANG = array( 'view_all_help' => 'Allow user to view records they didn\'t create', 'edit_all_help' => 'Allow user to modify records they didn\'t create', 'view_payment' => 'View Payment', + + 'january' => 'January', + 'february' => 'February', + 'march' => 'March', + 'april' => 'April', + 'may' => 'May', + 'june' => 'June', + 'july' => 'July', + 'august' => 'August', + 'september' => 'September', + 'october' => 'October', + 'november' => 'November', + 'december' => 'December', ); From b0a4a9b31cb135ca169a2a88ae2c87502b8ca354 Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Tue, 22 Mar 2016 17:14:40 +0200 Subject: [PATCH 42/46] Cleaning up log files --- app/Http/Controllers/PaymentController.php | 2 +- app/Http/routes.php | 2 +- app/Libraries/Utils.php | 8 ++++++-- app/Ninja/Mailers/Mailer.php | 2 +- bootstrap/app.php | 5 +++++ 5 files changed, 14 insertions(+), 5 deletions(-) diff --git a/app/Http/Controllers/PaymentController.php b/app/Http/Controllers/PaymentController.php index 1ba681ba57dc..ebede5711bd5 100644 --- a/app/Http/Controllers/PaymentController.php +++ b/app/Http/Controllers/PaymentController.php @@ -642,6 +642,6 @@ class PaymentController extends BaseController $message .= $error ?: trans('texts.payment_error'); Session::flash('error', $message); - Utils::logError("Payment Error [{$type}]: " . ($exception ? Utils::getErrorString($exception) : $message)); + Utils::logError("Payment Error [{$type}]: " . ($exception ? Utils::getErrorString($exception) : $message), 'PHP', true); } } diff --git a/app/Http/routes.php b/app/Http/routes.php index e01457909569..eeafb70f8788 100644 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -708,4 +708,4 @@ if (Utils::isNinjaDev()) //ini_set('memory_limit','1024M'); //Auth::loginUsingId(1); } -*/ +*/ \ No newline at end of file diff --git a/app/Libraries/Utils.php b/app/Libraries/Utils.php index 12ab7dadcc5a..439247f337c0 100644 --- a/app/Libraries/Utils.php +++ b/app/Libraries/Utils.php @@ -247,7 +247,7 @@ class Utils return "***{$class}*** [{$code}] : {$exception->getFile()} [Line {$exception->getLine()}] => {$exception->getMessage()}"; } - public static function logError($error, $context = 'PHP') + public static function logError($error, $context = 'PHP', $info = false) { if ($error instanceof Exception) { $error = self::getErrorString($error); @@ -271,7 +271,11 @@ class Utils 'count' => Session::get('error_count', 0), ]; - Log::error($error."\n", $data); + if ($info) { + Log::info($error."\n", $data); + } else { + Log::error($error."\n", $data); + } /* Mail::queue('emails.error', ['message'=>$error.' '.json_encode($data)], function($message) diff --git a/app/Ninja/Mailers/Mailer.php b/app/Ninja/Mailers/Mailer.php index c30c9a10d74c..7afcc2548c93 100644 --- a/app/Ninja/Mailers/Mailer.php +++ b/app/Ninja/Mailers/Mailer.php @@ -81,7 +81,7 @@ class Mailer $emailError = $exception->getMessage(); } - Utils::logError("Email Error: $emailError"); + //Utils::logError("Email Error: $emailError"); if (isset($data['invitation'])) { $invitation = $data['invitation']; diff --git a/bootstrap/app.php b/bootstrap/app.php index 354e5dd90538..71f392315f59 100755 --- a/bootstrap/app.php +++ b/bootstrap/app.php @@ -58,4 +58,9 @@ if (strstr($_SERVER['HTTP_USER_AGENT'], 'PhantomJS') && Utils::isNinjaDev()) { } */ +// Write info messages to a separate file +$app->configureMonologUsing(function($monolog) { + $monolog->pushHandler(new Monolog\Handler\StreamHandler(storage_path() . '/logs/laravel-info.log', Monolog\Logger::INFO, false)); +}); + return $app; From 6a55cf56a021de6e91ef00a014fd07b653a77def Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Tue, 22 Mar 2016 19:35:57 +0200 Subject: [PATCH 43/46] Updated placeholder for iframe url --- resources/views/accounts/email_settings.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/accounts/email_settings.blade.php b/resources/views/accounts/email_settings.blade.php index e6b7e291a04f..4d157ffda326 100644 --- a/resources/views/accounts/email_settings.blade.php +++ b/resources/views/accounts/email_settings.blade.php @@ -50,7 +50,7 @@ ->help(trans('texts.subdomain_help')) !!} {!! Former::text('iframe_url') - ->placeholder('http://www.example.com/invoice') + ->placeholder('https://www.example.com/invoice') ->appendIcon('question-sign') ->addGroupClass('iframe_url') ->label(' ') From abf2fcc09ce755f86327cd98b45bba065c498b09 Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Tue, 22 Mar 2016 19:38:51 +0200 Subject: [PATCH 44/46] Bumped version number to 2.5.1 --- app/Http/routes.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/routes.php b/app/Http/routes.php index eeafb70f8788..4a773bc6766a 100644 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -535,7 +535,7 @@ if (!defined('CONTACT_EMAIL')) { define('NINJA_GATEWAY_CONFIG', 'NINJA_GATEWAY_CONFIG'); define('NINJA_WEB_URL', 'https://www.invoiceninja.com'); define('NINJA_APP_URL', 'https://app.invoiceninja.com'); - define('NINJA_VERSION', '2.5.0.4'); + define('NINJA_VERSION', '2.5.1'); define('NINJA_DATE', '2000-01-01'); define('SOCIAL_LINK_FACEBOOK', 'https://www.facebook.com/invoiceninja'); From 933660578806af102a3f576d78353a1a4e1654b8 Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Tue, 22 Mar 2016 19:50:55 +0200 Subject: [PATCH 45/46] Updated language files --- resources/lang/da/texts.php | 69 ++++++++++++++++++++++++++++++++++ resources/lang/de/texts.php | 69 ++++++++++++++++++++++++++++++++++ resources/lang/es/texts.php | 69 ++++++++++++++++++++++++++++++++++ resources/lang/es_ES/texts.php | 69 ++++++++++++++++++++++++++++++++++ resources/lang/fr/texts.php | 69 ++++++++++++++++++++++++++++++++++ resources/lang/fr_CA/texts.php | 69 ++++++++++++++++++++++++++++++++++ resources/lang/it/texts.php | 69 ++++++++++++++++++++++++++++++++++ resources/lang/ja/texts.php | 45 ++++++++++++++++++++++ resources/lang/lt/texts.php | 69 ++++++++++++++++++++++++++++++++++ resources/lang/nb_NO/texts.php | 69 ++++++++++++++++++++++++++++++++++ resources/lang/nl/texts.php | 69 ++++++++++++++++++++++++++++++++++ resources/lang/pt_BR/texts.php | 69 ++++++++++++++++++++++++++++++++++ resources/lang/sv/texts.php | 69 ++++++++++++++++++++++++++++++++++ 13 files changed, 873 insertions(+) diff --git a/resources/lang/da/texts.php b/resources/lang/da/texts.php index e3fe7a081917..ffc74871cde0 100644 --- a/resources/lang/da/texts.php +++ b/resources/lang/da/texts.php @@ -1131,4 +1131,73 @@ return array( 'overdue' => 'Overdue', 'white_label_text' => 'Purchase a ONE YEAR white label license for $'.WHITE_LABEL_PRICE.' to remove the Invoice Ninja branding from the client portal and help support our project.', + 'navigation' => 'Navigation', + 'list_invoices' => 'List Invoices', + 'list_clients' => 'List Clients', + 'list_quotes' => 'List Quotes', + 'list_tasks' => 'List Tasks', + 'list_expenses' => 'List Expenses', + 'list_recurring_invoices' => 'List Recurring Invoices', + 'list_payments' => 'List Payments', + 'list_credits' => 'List Credits', + 'tax_name' => 'Tax Name', + 'report_settings' => 'Report Settings', + 'search_hotkey' => 'shortcut is /', + + 'new_user' => 'New User', + 'new_product' => 'New Product', + 'new_tax_rate' => 'New Tax Rate', + 'invoiced_amount' => 'Invoiced Amount', + 'invoice_item_fields' => 'Invoice Item Fields', + 'custom_invoice_item_fields_help' => 'Add a field when creating an invoice item and display the label and value on the PDF.', + 'recurring_invoice_number' => 'Recurring Invoice Number', + 'recurring_invoice_number_prefix_help' => 'Speciy a prefix to be added to the invoice number for recurring invoices. The default value is \'R\'.', + 'enable_client_portal' => 'Dashboard', + 'enable_client_portal_help' => 'Show/hide the dashboard page in the client portal.', + + // Client Passwords + 'enable_portal_password'=>'Password protect invoices', + 'enable_portal_password_help'=>'Allows you to set a password for each contact. If a password is set, the contact will be required to enter a password before viewing invoices.', + 'send_portal_password'=>'Generate password automatically', + 'send_portal_password_help'=>'If no password is set, one will be generated and sent with the first invoice.', + + 'expired' => 'Expired', + 'invalid_card_number' => 'The credit card number is not valid.', + 'invalid_expiry' => 'The expiration date is not valid.', + 'invalid_cvv' => 'The CVV is not valid.', + 'cost' => 'Cost', + 'create_invoice_for_sample' => 'Note: create your first invoice to see a preview here.', + + // User Permissions + 'owner' => 'Owner', + 'administrator' => 'Administrator', + 'administrator_help' => 'Allow user to manage users, change settings and modify all records', + 'user_create_all' => 'Create clients, invoices, etc.', + 'user_view_all' => 'View all clients, invoices, etc.', + 'user_edit_all' => 'Edit all clients, invoices, etc.', + 'gateway_help_20' => ':link to sign up for Sage Pay.', + 'gateway_help_21' => ':link to sign up for Sage Pay.', + 'partial_due' => 'Partial Due', + 'restore_vendor' => 'Restore Vendor', + 'restored_vendor' => 'Successfully restored vendor', + 'restored_expense' => 'Successfully restored expense', + 'permissions' => 'Permissions', + 'create_all_help' => 'Allow user to create and modify records', + 'view_all_help' => 'Allow user to view records they didn\'t create', + 'edit_all_help' => 'Allow user to modify records they didn\'t create', + 'view_payment' => 'View Payment', + + 'january' => 'January', + 'february' => 'February', + 'march' => 'March', + 'april' => 'April', + 'may' => 'May', + 'june' => 'June', + 'july' => 'July', + 'august' => 'August', + 'september' => 'September', + 'october' => 'October', + 'november' => 'November', + 'december' => 'December', + ); \ No newline at end of file diff --git a/resources/lang/de/texts.php b/resources/lang/de/texts.php index a3ea1ac658f9..08ffaf7b8a0b 100644 --- a/resources/lang/de/texts.php +++ b/resources/lang/de/texts.php @@ -1132,4 +1132,73 @@ return array( 'overdue' => 'Overdue', 'white_label_text' => 'Purchase a ONE YEAR white label license for $'.WHITE_LABEL_PRICE.' to remove the Invoice Ninja branding from the client portal and help support our project.', + 'navigation' => 'Navigation', + 'list_invoices' => 'List Invoices', + 'list_clients' => 'List Clients', + 'list_quotes' => 'List Quotes', + 'list_tasks' => 'List Tasks', + 'list_expenses' => 'List Expenses', + 'list_recurring_invoices' => 'List Recurring Invoices', + 'list_payments' => 'List Payments', + 'list_credits' => 'List Credits', + 'tax_name' => 'Tax Name', + 'report_settings' => 'Report Settings', + 'search_hotkey' => 'shortcut is /', + + 'new_user' => 'New User', + 'new_product' => 'New Product', + 'new_tax_rate' => 'New Tax Rate', + 'invoiced_amount' => 'Invoiced Amount', + 'invoice_item_fields' => 'Invoice Item Fields', + 'custom_invoice_item_fields_help' => 'Add a field when creating an invoice item and display the label and value on the PDF.', + 'recurring_invoice_number' => 'Recurring Invoice Number', + 'recurring_invoice_number_prefix_help' => 'Speciy a prefix to be added to the invoice number for recurring invoices. The default value is \'R\'.', + 'enable_client_portal' => 'Dashboard', + 'enable_client_portal_help' => 'Show/hide the dashboard page in the client portal.', + + // Client Passwords + 'enable_portal_password'=>'Password protect invoices', + 'enable_portal_password_help'=>'Allows you to set a password for each contact. If a password is set, the contact will be required to enter a password before viewing invoices.', + 'send_portal_password'=>'Generate password automatically', + 'send_portal_password_help'=>'If no password is set, one will be generated and sent with the first invoice.', + + 'expired' => 'Expired', + 'invalid_card_number' => 'The credit card number is not valid.', + 'invalid_expiry' => 'The expiration date is not valid.', + 'invalid_cvv' => 'The CVV is not valid.', + 'cost' => 'Cost', + 'create_invoice_for_sample' => 'Note: create your first invoice to see a preview here.', + + // User Permissions + 'owner' => 'Owner', + 'administrator' => 'Administrator', + 'administrator_help' => 'Allow user to manage users, change settings and modify all records', + 'user_create_all' => 'Create clients, invoices, etc.', + 'user_view_all' => 'View all clients, invoices, etc.', + 'user_edit_all' => 'Edit all clients, invoices, etc.', + 'gateway_help_20' => ':link to sign up for Sage Pay.', + 'gateway_help_21' => ':link to sign up for Sage Pay.', + 'partial_due' => 'Partial Due', + 'restore_vendor' => 'Restore Vendor', + 'restored_vendor' => 'Successfully restored vendor', + 'restored_expense' => 'Successfully restored expense', + 'permissions' => 'Permissions', + 'create_all_help' => 'Allow user to create and modify records', + 'view_all_help' => 'Allow user to view records they didn\'t create', + 'edit_all_help' => 'Allow user to modify records they didn\'t create', + 'view_payment' => 'View Payment', + + 'january' => 'January', + 'february' => 'February', + 'march' => 'March', + 'april' => 'April', + 'may' => 'May', + 'june' => 'June', + 'july' => 'July', + 'august' => 'August', + 'september' => 'September', + 'october' => 'October', + 'november' => 'November', + 'december' => 'December', + ); diff --git a/resources/lang/es/texts.php b/resources/lang/es/texts.php index 56fb42534f5c..75bd1a75dae6 100644 --- a/resources/lang/es/texts.php +++ b/resources/lang/es/texts.php @@ -1108,4 +1108,73 @@ return array( 'overdue' => 'Overdue', 'white_label_text' => 'Purchase a ONE YEAR white label license for $'.WHITE_LABEL_PRICE.' to remove the Invoice Ninja branding from the client portal and help support our project.', + 'navigation' => 'Navigation', + 'list_invoices' => 'List Invoices', + 'list_clients' => 'List Clients', + 'list_quotes' => 'List Quotes', + 'list_tasks' => 'List Tasks', + 'list_expenses' => 'List Expenses', + 'list_recurring_invoices' => 'List Recurring Invoices', + 'list_payments' => 'List Payments', + 'list_credits' => 'List Credits', + 'tax_name' => 'Tax Name', + 'report_settings' => 'Report Settings', + 'search_hotkey' => 'shortcut is /', + + 'new_user' => 'New User', + 'new_product' => 'New Product', + 'new_tax_rate' => 'New Tax Rate', + 'invoiced_amount' => 'Invoiced Amount', + 'invoice_item_fields' => 'Invoice Item Fields', + 'custom_invoice_item_fields_help' => 'Add a field when creating an invoice item and display the label and value on the PDF.', + 'recurring_invoice_number' => 'Recurring Invoice Number', + 'recurring_invoice_number_prefix_help' => 'Speciy a prefix to be added to the invoice number for recurring invoices. The default value is \'R\'.', + 'enable_client_portal' => 'Dashboard', + 'enable_client_portal_help' => 'Show/hide the dashboard page in the client portal.', + + // Client Passwords + 'enable_portal_password'=>'Password protect invoices', + 'enable_portal_password_help'=>'Allows you to set a password for each contact. If a password is set, the contact will be required to enter a password before viewing invoices.', + 'send_portal_password'=>'Generate password automatically', + 'send_portal_password_help'=>'If no password is set, one will be generated and sent with the first invoice.', + + 'expired' => 'Expired', + 'invalid_card_number' => 'The credit card number is not valid.', + 'invalid_expiry' => 'The expiration date is not valid.', + 'invalid_cvv' => 'The CVV is not valid.', + 'cost' => 'Cost', + 'create_invoice_for_sample' => 'Note: create your first invoice to see a preview here.', + + // User Permissions + 'owner' => 'Owner', + 'administrator' => 'Administrator', + 'administrator_help' => 'Allow user to manage users, change settings and modify all records', + 'user_create_all' => 'Create clients, invoices, etc.', + 'user_view_all' => 'View all clients, invoices, etc.', + 'user_edit_all' => 'Edit all clients, invoices, etc.', + 'gateway_help_20' => ':link to sign up for Sage Pay.', + 'gateway_help_21' => ':link to sign up for Sage Pay.', + 'partial_due' => 'Partial Due', + 'restore_vendor' => 'Restore Vendor', + 'restored_vendor' => 'Successfully restored vendor', + 'restored_expense' => 'Successfully restored expense', + 'permissions' => 'Permissions', + 'create_all_help' => 'Allow user to create and modify records', + 'view_all_help' => 'Allow user to view records they didn\'t create', + 'edit_all_help' => 'Allow user to modify records they didn\'t create', + 'view_payment' => 'View Payment', + + 'january' => 'January', + 'february' => 'February', + 'march' => 'March', + 'april' => 'April', + 'may' => 'May', + 'june' => 'June', + 'july' => 'July', + 'august' => 'August', + 'september' => 'September', + 'october' => 'October', + 'november' => 'November', + 'december' => 'December', + ); diff --git a/resources/lang/es_ES/texts.php b/resources/lang/es_ES/texts.php index 4e29075d559a..25054072dac5 100644 --- a/resources/lang/es_ES/texts.php +++ b/resources/lang/es_ES/texts.php @@ -1128,4 +1128,73 @@ return array( 'overdue' => 'Overdue', 'white_label_text' => 'Purchase a ONE YEAR white label license for $'.WHITE_LABEL_PRICE.' to remove the Invoice Ninja branding from the client portal and help support our project.', + 'navigation' => 'Navigation', + 'list_invoices' => 'List Invoices', + 'list_clients' => 'List Clients', + 'list_quotes' => 'List Quotes', + 'list_tasks' => 'List Tasks', + 'list_expenses' => 'List Expenses', + 'list_recurring_invoices' => 'List Recurring Invoices', + 'list_payments' => 'List Payments', + 'list_credits' => 'List Credits', + 'tax_name' => 'Tax Name', + 'report_settings' => 'Report Settings', + 'search_hotkey' => 'shortcut is /', + + 'new_user' => 'New User', + 'new_product' => 'New Product', + 'new_tax_rate' => 'New Tax Rate', + 'invoiced_amount' => 'Invoiced Amount', + 'invoice_item_fields' => 'Invoice Item Fields', + 'custom_invoice_item_fields_help' => 'Add a field when creating an invoice item and display the label and value on the PDF.', + 'recurring_invoice_number' => 'Recurring Invoice Number', + 'recurring_invoice_number_prefix_help' => 'Speciy a prefix to be added to the invoice number for recurring invoices. The default value is \'R\'.', + 'enable_client_portal' => 'Dashboard', + 'enable_client_portal_help' => 'Show/hide the dashboard page in the client portal.', + + // Client Passwords + 'enable_portal_password'=>'Password protect invoices', + 'enable_portal_password_help'=>'Allows you to set a password for each contact. If a password is set, the contact will be required to enter a password before viewing invoices.', + 'send_portal_password'=>'Generate password automatically', + 'send_portal_password_help'=>'If no password is set, one will be generated and sent with the first invoice.', + + 'expired' => 'Expired', + 'invalid_card_number' => 'The credit card number is not valid.', + 'invalid_expiry' => 'The expiration date is not valid.', + 'invalid_cvv' => 'The CVV is not valid.', + 'cost' => 'Cost', + 'create_invoice_for_sample' => 'Note: create your first invoice to see a preview here.', + + // User Permissions + 'owner' => 'Owner', + 'administrator' => 'Administrator', + 'administrator_help' => 'Allow user to manage users, change settings and modify all records', + 'user_create_all' => 'Create clients, invoices, etc.', + 'user_view_all' => 'View all clients, invoices, etc.', + 'user_edit_all' => 'Edit all clients, invoices, etc.', + 'gateway_help_20' => ':link to sign up for Sage Pay.', + 'gateway_help_21' => ':link to sign up for Sage Pay.', + 'partial_due' => 'Partial Due', + 'restore_vendor' => 'Restore Vendor', + 'restored_vendor' => 'Successfully restored vendor', + 'restored_expense' => 'Successfully restored expense', + 'permissions' => 'Permissions', + 'create_all_help' => 'Allow user to create and modify records', + 'view_all_help' => 'Allow user to view records they didn\'t create', + 'edit_all_help' => 'Allow user to modify records they didn\'t create', + 'view_payment' => 'View Payment', + + 'january' => 'January', + 'february' => 'February', + 'march' => 'March', + 'april' => 'April', + 'may' => 'May', + 'june' => 'June', + 'july' => 'July', + 'august' => 'August', + 'september' => 'September', + 'october' => 'October', + 'november' => 'November', + 'december' => 'December', + ); diff --git a/resources/lang/fr/texts.php b/resources/lang/fr/texts.php index 2bc358e6a822..6cd75a9f0efa 100644 --- a/resources/lang/fr/texts.php +++ b/resources/lang/fr/texts.php @@ -1123,4 +1123,73 @@ return array( 'overdue' => 'Overdue', 'white_label_text' => 'Purchase a ONE YEAR white label license for $'.WHITE_LABEL_PRICE.' to remove the Invoice Ninja branding from the client portal and help support our project.', + 'navigation' => 'Navigation', + 'list_invoices' => 'List Invoices', + 'list_clients' => 'List Clients', + 'list_quotes' => 'List Quotes', + 'list_tasks' => 'List Tasks', + 'list_expenses' => 'List Expenses', + 'list_recurring_invoices' => 'List Recurring Invoices', + 'list_payments' => 'List Payments', + 'list_credits' => 'List Credits', + 'tax_name' => 'Tax Name', + 'report_settings' => 'Report Settings', + 'search_hotkey' => 'shortcut is /', + + 'new_user' => 'New User', + 'new_product' => 'New Product', + 'new_tax_rate' => 'New Tax Rate', + 'invoiced_amount' => 'Invoiced Amount', + 'invoice_item_fields' => 'Invoice Item Fields', + 'custom_invoice_item_fields_help' => 'Add a field when creating an invoice item and display the label and value on the PDF.', + 'recurring_invoice_number' => 'Recurring Invoice Number', + 'recurring_invoice_number_prefix_help' => 'Speciy a prefix to be added to the invoice number for recurring invoices. The default value is \'R\'.', + 'enable_client_portal' => 'Dashboard', + 'enable_client_portal_help' => 'Show/hide the dashboard page in the client portal.', + + // Client Passwords + 'enable_portal_password'=>'Password protect invoices', + 'enable_portal_password_help'=>'Allows you to set a password for each contact. If a password is set, the contact will be required to enter a password before viewing invoices.', + 'send_portal_password'=>'Generate password automatically', + 'send_portal_password_help'=>'If no password is set, one will be generated and sent with the first invoice.', + + 'expired' => 'Expired', + 'invalid_card_number' => 'The credit card number is not valid.', + 'invalid_expiry' => 'The expiration date is not valid.', + 'invalid_cvv' => 'The CVV is not valid.', + 'cost' => 'Cost', + 'create_invoice_for_sample' => 'Note: create your first invoice to see a preview here.', + + // User Permissions + 'owner' => 'Owner', + 'administrator' => 'Administrator', + 'administrator_help' => 'Allow user to manage users, change settings and modify all records', + 'user_create_all' => 'Create clients, invoices, etc.', + 'user_view_all' => 'View all clients, invoices, etc.', + 'user_edit_all' => 'Edit all clients, invoices, etc.', + 'gateway_help_20' => ':link to sign up for Sage Pay.', + 'gateway_help_21' => ':link to sign up for Sage Pay.', + 'partial_due' => 'Partial Due', + 'restore_vendor' => 'Restore Vendor', + 'restored_vendor' => 'Successfully restored vendor', + 'restored_expense' => 'Successfully restored expense', + 'permissions' => 'Permissions', + 'create_all_help' => 'Allow user to create and modify records', + 'view_all_help' => 'Allow user to view records they didn\'t create', + 'edit_all_help' => 'Allow user to modify records they didn\'t create', + 'view_payment' => 'View Payment', + + 'january' => 'January', + 'february' => 'February', + 'march' => 'March', + 'april' => 'April', + 'may' => 'May', + 'june' => 'June', + 'july' => 'July', + 'august' => 'August', + 'september' => 'September', + 'october' => 'October', + 'november' => 'November', + 'december' => 'December', + ); diff --git a/resources/lang/fr_CA/texts.php b/resources/lang/fr_CA/texts.php index 946fac0696ed..c62227e45050 100644 --- a/resources/lang/fr_CA/texts.php +++ b/resources/lang/fr_CA/texts.php @@ -1121,4 +1121,73 @@ return array( 'overdue' => 'En souffrance', 'white_label_text' => 'Achetez une licence sans pub d\'un an à $'.WHITE_LABEL_PRICE.' pour retirer le logo de Invoice Ninja du portail client et supporter notre projet.', + 'navigation' => 'Navigation', + 'list_invoices' => 'List Invoices', + 'list_clients' => 'List Clients', + 'list_quotes' => 'List Quotes', + 'list_tasks' => 'List Tasks', + 'list_expenses' => 'List Expenses', + 'list_recurring_invoices' => 'List Recurring Invoices', + 'list_payments' => 'List Payments', + 'list_credits' => 'List Credits', + 'tax_name' => 'Tax Name', + 'report_settings' => 'Report Settings', + 'search_hotkey' => 'shortcut is /', + + 'new_user' => 'New User', + 'new_product' => 'New Product', + 'new_tax_rate' => 'New Tax Rate', + 'invoiced_amount' => 'Invoiced Amount', + 'invoice_item_fields' => 'Invoice Item Fields', + 'custom_invoice_item_fields_help' => 'Add a field when creating an invoice item and display the label and value on the PDF.', + 'recurring_invoice_number' => 'Recurring Invoice Number', + 'recurring_invoice_number_prefix_help' => 'Speciy a prefix to be added to the invoice number for recurring invoices. The default value is \'R\'.', + 'enable_client_portal' => 'Dashboard', + 'enable_client_portal_help' => 'Show/hide the dashboard page in the client portal.', + + // Client Passwords + 'enable_portal_password'=>'Password protect invoices', + 'enable_portal_password_help'=>'Allows you to set a password for each contact. If a password is set, the contact will be required to enter a password before viewing invoices.', + 'send_portal_password'=>'Generate password automatically', + 'send_portal_password_help'=>'If no password is set, one will be generated and sent with the first invoice.', + + 'expired' => 'Expired', + 'invalid_card_number' => 'The credit card number is not valid.', + 'invalid_expiry' => 'The expiration date is not valid.', + 'invalid_cvv' => 'The CVV is not valid.', + 'cost' => 'Cost', + 'create_invoice_for_sample' => 'Note: create your first invoice to see a preview here.', + + // User Permissions + 'owner' => 'Owner', + 'administrator' => 'Administrator', + 'administrator_help' => 'Allow user to manage users, change settings and modify all records', + 'user_create_all' => 'Create clients, invoices, etc.', + 'user_view_all' => 'View all clients, invoices, etc.', + 'user_edit_all' => 'Edit all clients, invoices, etc.', + 'gateway_help_20' => ':link to sign up for Sage Pay.', + 'gateway_help_21' => ':link to sign up for Sage Pay.', + 'partial_due' => 'Partial Due', + 'restore_vendor' => 'Restore Vendor', + 'restored_vendor' => 'Successfully restored vendor', + 'restored_expense' => 'Successfully restored expense', + 'permissions' => 'Permissions', + 'create_all_help' => 'Allow user to create and modify records', + 'view_all_help' => 'Allow user to view records they didn\'t create', + 'edit_all_help' => 'Allow user to modify records they didn\'t create', + 'view_payment' => 'View Payment', + + 'january' => 'January', + 'february' => 'February', + 'march' => 'March', + 'april' => 'April', + 'may' => 'May', + 'june' => 'June', + 'july' => 'July', + 'august' => 'August', + 'september' => 'September', + 'october' => 'October', + 'november' => 'November', + 'december' => 'December', + ); \ No newline at end of file diff --git a/resources/lang/it/texts.php b/resources/lang/it/texts.php index acc4cdeebab3..0b2a843ccd2c 100644 --- a/resources/lang/it/texts.php +++ b/resources/lang/it/texts.php @@ -1126,4 +1126,73 @@ return array( 'overdue' => 'Overdue', 'white_label_text' => 'Purchase a ONE YEAR white label license for $'.WHITE_LABEL_PRICE.' to remove the Invoice Ninja branding from the client portal and help support our project.', + 'navigation' => 'Navigation', + 'list_invoices' => 'List Invoices', + 'list_clients' => 'List Clients', + 'list_quotes' => 'List Quotes', + 'list_tasks' => 'List Tasks', + 'list_expenses' => 'List Expenses', + 'list_recurring_invoices' => 'List Recurring Invoices', + 'list_payments' => 'List Payments', + 'list_credits' => 'List Credits', + 'tax_name' => 'Tax Name', + 'report_settings' => 'Report Settings', + 'search_hotkey' => 'shortcut is /', + + 'new_user' => 'New User', + 'new_product' => 'New Product', + 'new_tax_rate' => 'New Tax Rate', + 'invoiced_amount' => 'Invoiced Amount', + 'invoice_item_fields' => 'Invoice Item Fields', + 'custom_invoice_item_fields_help' => 'Add a field when creating an invoice item and display the label and value on the PDF.', + 'recurring_invoice_number' => 'Recurring Invoice Number', + 'recurring_invoice_number_prefix_help' => 'Speciy a prefix to be added to the invoice number for recurring invoices. The default value is \'R\'.', + 'enable_client_portal' => 'Dashboard', + 'enable_client_portal_help' => 'Show/hide the dashboard page in the client portal.', + + // Client Passwords + 'enable_portal_password'=>'Password protect invoices', + 'enable_portal_password_help'=>'Allows you to set a password for each contact. If a password is set, the contact will be required to enter a password before viewing invoices.', + 'send_portal_password'=>'Generate password automatically', + 'send_portal_password_help'=>'If no password is set, one will be generated and sent with the first invoice.', + + 'expired' => 'Expired', + 'invalid_card_number' => 'The credit card number is not valid.', + 'invalid_expiry' => 'The expiration date is not valid.', + 'invalid_cvv' => 'The CVV is not valid.', + 'cost' => 'Cost', + 'create_invoice_for_sample' => 'Note: create your first invoice to see a preview here.', + + // User Permissions + 'owner' => 'Owner', + 'administrator' => 'Administrator', + 'administrator_help' => 'Allow user to manage users, change settings and modify all records', + 'user_create_all' => 'Create clients, invoices, etc.', + 'user_view_all' => 'View all clients, invoices, etc.', + 'user_edit_all' => 'Edit all clients, invoices, etc.', + 'gateway_help_20' => ':link to sign up for Sage Pay.', + 'gateway_help_21' => ':link to sign up for Sage Pay.', + 'partial_due' => 'Partial Due', + 'restore_vendor' => 'Restore Vendor', + 'restored_vendor' => 'Successfully restored vendor', + 'restored_expense' => 'Successfully restored expense', + 'permissions' => 'Permissions', + 'create_all_help' => 'Allow user to create and modify records', + 'view_all_help' => 'Allow user to view records they didn\'t create', + 'edit_all_help' => 'Allow user to modify records they didn\'t create', + 'view_payment' => 'View Payment', + + 'january' => 'January', + 'february' => 'February', + 'march' => 'March', + 'april' => 'April', + 'may' => 'May', + 'june' => 'June', + 'july' => 'July', + 'august' => 'August', + 'september' => 'September', + 'october' => 'October', + 'november' => 'November', + 'december' => 'December', + ); \ No newline at end of file diff --git a/resources/lang/ja/texts.php b/resources/lang/ja/texts.php index a6b046e42f46..7e673ac11d33 100644 --- a/resources/lang/ja/texts.php +++ b/resources/lang/ja/texts.php @@ -1051,6 +1051,51 @@ $LANG = array( 'recurring_invoice_number_prefix_help' => 'Speciy a prefix to be added to the invoice number for recurring invoices. The default value is \'R\'.', 'enable_client_portal' => 'ダッシュボード', 'enable_client_portal_help' => 'Show/hide the dashboard page in the client portal.', + + // Client Passwords + 'enable_portal_password'=>'Password protect invoices', + 'enable_portal_password_help'=>'Allows you to set a password for each contact. If a password is set, the contact will be required to enter a password before viewing invoices.', + 'send_portal_password'=>'Generate password automatically', + 'send_portal_password_help'=>'If no password is set, one will be generated and sent with the first invoice.', + + 'expired' => 'Expired', + 'invalid_card_number' => 'The credit card number is not valid.', + 'invalid_expiry' => 'The expiration date is not valid.', + 'invalid_cvv' => 'The CVV is not valid.', + 'cost' => 'Cost', + 'create_invoice_for_sample' => 'Note: create your first invoice to see a preview here.', + + // User Permissions + 'owner' => 'Owner', + 'administrator' => 'Administrator', + 'administrator_help' => 'Allow user to manage users, change settings and modify all records', + 'user_create_all' => 'Create clients, invoices, etc.', + 'user_view_all' => 'View all clients, invoices, etc.', + 'user_edit_all' => 'Edit all clients, invoices, etc.', + 'gateway_help_20' => ':link to sign up for Sage Pay.', + 'gateway_help_21' => ':link to sign up for Sage Pay.', + 'partial_due' => 'Partial Due', + 'restore_vendor' => 'Restore Vendor', + 'restored_vendor' => 'Successfully restored vendor', + 'restored_expense' => 'Successfully restored expense', + 'permissions' => 'Permissions', + 'create_all_help' => 'Allow user to create and modify records', + 'view_all_help' => 'Allow user to view records they didn\'t create', + 'edit_all_help' => 'Allow user to modify records they didn\'t create', + 'view_payment' => 'View Payment', + + 'january' => 'January', + 'february' => 'February', + 'march' => 'March', + 'april' => 'April', + 'may' => 'May', + 'june' => 'June', + 'july' => 'July', + 'august' => 'August', + 'september' => 'September', + 'october' => 'October', + 'november' => 'November', + 'december' => 'December', ); diff --git a/resources/lang/lt/texts.php b/resources/lang/lt/texts.php index 584f7776b435..252a7f03bd9c 100644 --- a/resources/lang/lt/texts.php +++ b/resources/lang/lt/texts.php @@ -1133,4 +1133,73 @@ return array( 'overdue' => 'Overdue', 'white_label_text' => 'Purchase a ONE YEAR white label license for $'.WHITE_LABEL_PRICE.' to remove the Invoice Ninja branding from the client portal and help support our project.', + 'navigation' => 'Navigation', + 'list_invoices' => 'List Invoices', + 'list_clients' => 'List Clients', + 'list_quotes' => 'List Quotes', + 'list_tasks' => 'List Tasks', + 'list_expenses' => 'List Expenses', + 'list_recurring_invoices' => 'List Recurring Invoices', + 'list_payments' => 'List Payments', + 'list_credits' => 'List Credits', + 'tax_name' => 'Tax Name', + 'report_settings' => 'Report Settings', + 'search_hotkey' => 'shortcut is /', + + 'new_user' => 'New User', + 'new_product' => 'New Product', + 'new_tax_rate' => 'New Tax Rate', + 'invoiced_amount' => 'Invoiced Amount', + 'invoice_item_fields' => 'Invoice Item Fields', + 'custom_invoice_item_fields_help' => 'Add a field when creating an invoice item and display the label and value on the PDF.', + 'recurring_invoice_number' => 'Recurring Invoice Number', + 'recurring_invoice_number_prefix_help' => 'Speciy a prefix to be added to the invoice number for recurring invoices. The default value is \'R\'.', + 'enable_client_portal' => 'Dashboard', + 'enable_client_portal_help' => 'Show/hide the dashboard page in the client portal.', + + // Client Passwords + 'enable_portal_password'=>'Password protect invoices', + 'enable_portal_password_help'=>'Allows you to set a password for each contact. If a password is set, the contact will be required to enter a password before viewing invoices.', + 'send_portal_password'=>'Generate password automatically', + 'send_portal_password_help'=>'If no password is set, one will be generated and sent with the first invoice.', + + 'expired' => 'Expired', + 'invalid_card_number' => 'The credit card number is not valid.', + 'invalid_expiry' => 'The expiration date is not valid.', + 'invalid_cvv' => 'The CVV is not valid.', + 'cost' => 'Cost', + 'create_invoice_for_sample' => 'Note: create your first invoice to see a preview here.', + + // User Permissions + 'owner' => 'Owner', + 'administrator' => 'Administrator', + 'administrator_help' => 'Allow user to manage users, change settings and modify all records', + 'user_create_all' => 'Create clients, invoices, etc.', + 'user_view_all' => 'View all clients, invoices, etc.', + 'user_edit_all' => 'Edit all clients, invoices, etc.', + 'gateway_help_20' => ':link to sign up for Sage Pay.', + 'gateway_help_21' => ':link to sign up for Sage Pay.', + 'partial_due' => 'Partial Due', + 'restore_vendor' => 'Restore Vendor', + 'restored_vendor' => 'Successfully restored vendor', + 'restored_expense' => 'Successfully restored expense', + 'permissions' => 'Permissions', + 'create_all_help' => 'Allow user to create and modify records', + 'view_all_help' => 'Allow user to view records they didn\'t create', + 'edit_all_help' => 'Allow user to modify records they didn\'t create', + 'view_payment' => 'View Payment', + + 'january' => 'January', + 'february' => 'February', + 'march' => 'March', + 'april' => 'April', + 'may' => 'May', + 'june' => 'June', + 'july' => 'July', + 'august' => 'August', + 'september' => 'September', + 'october' => 'October', + 'november' => 'November', + 'december' => 'December', + ); \ No newline at end of file diff --git a/resources/lang/nb_NO/texts.php b/resources/lang/nb_NO/texts.php index afc916a5def3..df06d7a32547 100644 --- a/resources/lang/nb_NO/texts.php +++ b/resources/lang/nb_NO/texts.php @@ -1131,4 +1131,73 @@ return array( 'overdue' => 'Overdue', 'white_label_text' => 'Purchase a ONE YEAR white label license for $'.WHITE_LABEL_PRICE.' to remove the Invoice Ninja branding from the client portal and help support our project.', + 'navigation' => 'Navigation', + 'list_invoices' => 'List Invoices', + 'list_clients' => 'List Clients', + 'list_quotes' => 'List Quotes', + 'list_tasks' => 'List Tasks', + 'list_expenses' => 'List Expenses', + 'list_recurring_invoices' => 'List Recurring Invoices', + 'list_payments' => 'List Payments', + 'list_credits' => 'List Credits', + 'tax_name' => 'Tax Name', + 'report_settings' => 'Report Settings', + 'search_hotkey' => 'shortcut is /', + + 'new_user' => 'New User', + 'new_product' => 'New Product', + 'new_tax_rate' => 'New Tax Rate', + 'invoiced_amount' => 'Invoiced Amount', + 'invoice_item_fields' => 'Invoice Item Fields', + 'custom_invoice_item_fields_help' => 'Add a field when creating an invoice item and display the label and value on the PDF.', + 'recurring_invoice_number' => 'Recurring Invoice Number', + 'recurring_invoice_number_prefix_help' => 'Speciy a prefix to be added to the invoice number for recurring invoices. The default value is \'R\'.', + 'enable_client_portal' => 'Dashboard', + 'enable_client_portal_help' => 'Show/hide the dashboard page in the client portal.', + + // Client Passwords + 'enable_portal_password'=>'Password protect invoices', + 'enable_portal_password_help'=>'Allows you to set a password for each contact. If a password is set, the contact will be required to enter a password before viewing invoices.', + 'send_portal_password'=>'Generate password automatically', + 'send_portal_password_help'=>'If no password is set, one will be generated and sent with the first invoice.', + + 'expired' => 'Expired', + 'invalid_card_number' => 'The credit card number is not valid.', + 'invalid_expiry' => 'The expiration date is not valid.', + 'invalid_cvv' => 'The CVV is not valid.', + 'cost' => 'Cost', + 'create_invoice_for_sample' => 'Note: create your first invoice to see a preview here.', + + // User Permissions + 'owner' => 'Owner', + 'administrator' => 'Administrator', + 'administrator_help' => 'Allow user to manage users, change settings and modify all records', + 'user_create_all' => 'Create clients, invoices, etc.', + 'user_view_all' => 'View all clients, invoices, etc.', + 'user_edit_all' => 'Edit all clients, invoices, etc.', + 'gateway_help_20' => ':link to sign up for Sage Pay.', + 'gateway_help_21' => ':link to sign up for Sage Pay.', + 'partial_due' => 'Partial Due', + 'restore_vendor' => 'Restore Vendor', + 'restored_vendor' => 'Successfully restored vendor', + 'restored_expense' => 'Successfully restored expense', + 'permissions' => 'Permissions', + 'create_all_help' => 'Allow user to create and modify records', + 'view_all_help' => 'Allow user to view records they didn\'t create', + 'edit_all_help' => 'Allow user to modify records they didn\'t create', + 'view_payment' => 'View Payment', + + 'january' => 'January', + 'february' => 'February', + 'march' => 'March', + 'april' => 'April', + 'may' => 'May', + 'june' => 'June', + 'july' => 'July', + 'august' => 'August', + 'september' => 'September', + 'october' => 'October', + 'november' => 'November', + 'december' => 'December', + ); \ No newline at end of file diff --git a/resources/lang/nl/texts.php b/resources/lang/nl/texts.php index db06a981f4f1..83fef88816e1 100644 --- a/resources/lang/nl/texts.php +++ b/resources/lang/nl/texts.php @@ -1126,4 +1126,73 @@ return array( 'overdue' => 'Overdue', 'white_label_text' => 'Purchase a ONE YEAR white label license for $'.WHITE_LABEL_PRICE.' to remove the Invoice Ninja branding from the client portal and help support our project.', + 'navigation' => 'Navigation', + 'list_invoices' => 'List Invoices', + 'list_clients' => 'List Clients', + 'list_quotes' => 'List Quotes', + 'list_tasks' => 'List Tasks', + 'list_expenses' => 'List Expenses', + 'list_recurring_invoices' => 'List Recurring Invoices', + 'list_payments' => 'List Payments', + 'list_credits' => 'List Credits', + 'tax_name' => 'Tax Name', + 'report_settings' => 'Report Settings', + 'search_hotkey' => 'shortcut is /', + + 'new_user' => 'New User', + 'new_product' => 'New Product', + 'new_tax_rate' => 'New Tax Rate', + 'invoiced_amount' => 'Invoiced Amount', + 'invoice_item_fields' => 'Invoice Item Fields', + 'custom_invoice_item_fields_help' => 'Add a field when creating an invoice item and display the label and value on the PDF.', + 'recurring_invoice_number' => 'Recurring Invoice Number', + 'recurring_invoice_number_prefix_help' => 'Speciy a prefix to be added to the invoice number for recurring invoices. The default value is \'R\'.', + 'enable_client_portal' => 'Dashboard', + 'enable_client_portal_help' => 'Show/hide the dashboard page in the client portal.', + + // Client Passwords + 'enable_portal_password'=>'Password protect invoices', + 'enable_portal_password_help'=>'Allows you to set a password for each contact. If a password is set, the contact will be required to enter a password before viewing invoices.', + 'send_portal_password'=>'Generate password automatically', + 'send_portal_password_help'=>'If no password is set, one will be generated and sent with the first invoice.', + + 'expired' => 'Expired', + 'invalid_card_number' => 'The credit card number is not valid.', + 'invalid_expiry' => 'The expiration date is not valid.', + 'invalid_cvv' => 'The CVV is not valid.', + 'cost' => 'Cost', + 'create_invoice_for_sample' => 'Note: create your first invoice to see a preview here.', + + // User Permissions + 'owner' => 'Owner', + 'administrator' => 'Administrator', + 'administrator_help' => 'Allow user to manage users, change settings and modify all records', + 'user_create_all' => 'Create clients, invoices, etc.', + 'user_view_all' => 'View all clients, invoices, etc.', + 'user_edit_all' => 'Edit all clients, invoices, etc.', + 'gateway_help_20' => ':link to sign up for Sage Pay.', + 'gateway_help_21' => ':link to sign up for Sage Pay.', + 'partial_due' => 'Partial Due', + 'restore_vendor' => 'Restore Vendor', + 'restored_vendor' => 'Successfully restored vendor', + 'restored_expense' => 'Successfully restored expense', + 'permissions' => 'Permissions', + 'create_all_help' => 'Allow user to create and modify records', + 'view_all_help' => 'Allow user to view records they didn\'t create', + 'edit_all_help' => 'Allow user to modify records they didn\'t create', + 'view_payment' => 'View Payment', + + 'january' => 'January', + 'february' => 'February', + 'march' => 'March', + 'april' => 'April', + 'may' => 'May', + 'june' => 'June', + 'july' => 'July', + 'august' => 'August', + 'september' => 'September', + 'october' => 'October', + 'november' => 'November', + 'december' => 'December', + ); \ No newline at end of file diff --git a/resources/lang/pt_BR/texts.php b/resources/lang/pt_BR/texts.php index 731be8bbbdc6..30fcfbf05c27 100644 --- a/resources/lang/pt_BR/texts.php +++ b/resources/lang/pt_BR/texts.php @@ -1123,4 +1123,73 @@ return array( 'overdue' => 'Overdue', 'white_label_text' => 'Purchase a ONE YEAR white label license for $'.WHITE_LABEL_PRICE.' to remove the Invoice Ninja branding from the client portal and help support our project.', + 'navigation' => 'Navigation', + 'list_invoices' => 'List Invoices', + 'list_clients' => 'List Clients', + 'list_quotes' => 'List Quotes', + 'list_tasks' => 'List Tasks', + 'list_expenses' => 'List Expenses', + 'list_recurring_invoices' => 'List Recurring Invoices', + 'list_payments' => 'List Payments', + 'list_credits' => 'List Credits', + 'tax_name' => 'Tax Name', + 'report_settings' => 'Report Settings', + 'search_hotkey' => 'shortcut is /', + + 'new_user' => 'New User', + 'new_product' => 'New Product', + 'new_tax_rate' => 'New Tax Rate', + 'invoiced_amount' => 'Invoiced Amount', + 'invoice_item_fields' => 'Invoice Item Fields', + 'custom_invoice_item_fields_help' => 'Add a field when creating an invoice item and display the label and value on the PDF.', + 'recurring_invoice_number' => 'Recurring Invoice Number', + 'recurring_invoice_number_prefix_help' => 'Speciy a prefix to be added to the invoice number for recurring invoices. The default value is \'R\'.', + 'enable_client_portal' => 'Dashboard', + 'enable_client_portal_help' => 'Show/hide the dashboard page in the client portal.', + + // Client Passwords + 'enable_portal_password'=>'Password protect invoices', + 'enable_portal_password_help'=>'Allows you to set a password for each contact. If a password is set, the contact will be required to enter a password before viewing invoices.', + 'send_portal_password'=>'Generate password automatically', + 'send_portal_password_help'=>'If no password is set, one will be generated and sent with the first invoice.', + + 'expired' => 'Expired', + 'invalid_card_number' => 'The credit card number is not valid.', + 'invalid_expiry' => 'The expiration date is not valid.', + 'invalid_cvv' => 'The CVV is not valid.', + 'cost' => 'Cost', + 'create_invoice_for_sample' => 'Note: create your first invoice to see a preview here.', + + // User Permissions + 'owner' => 'Owner', + 'administrator' => 'Administrator', + 'administrator_help' => 'Allow user to manage users, change settings and modify all records', + 'user_create_all' => 'Create clients, invoices, etc.', + 'user_view_all' => 'View all clients, invoices, etc.', + 'user_edit_all' => 'Edit all clients, invoices, etc.', + 'gateway_help_20' => ':link to sign up for Sage Pay.', + 'gateway_help_21' => ':link to sign up for Sage Pay.', + 'partial_due' => 'Partial Due', + 'restore_vendor' => 'Restore Vendor', + 'restored_vendor' => 'Successfully restored vendor', + 'restored_expense' => 'Successfully restored expense', + 'permissions' => 'Permissions', + 'create_all_help' => 'Allow user to create and modify records', + 'view_all_help' => 'Allow user to view records they didn\'t create', + 'edit_all_help' => 'Allow user to modify records they didn\'t create', + 'view_payment' => 'View Payment', + + 'january' => 'January', + 'february' => 'February', + 'march' => 'March', + 'april' => 'April', + 'may' => 'May', + 'june' => 'June', + 'july' => 'July', + 'august' => 'August', + 'september' => 'September', + 'october' => 'October', + 'november' => 'November', + 'december' => 'December', + ); diff --git a/resources/lang/sv/texts.php b/resources/lang/sv/texts.php index 5d526092c4a8..050076bd6e3e 100644 --- a/resources/lang/sv/texts.php +++ b/resources/lang/sv/texts.php @@ -1128,4 +1128,73 @@ return array( 'overdue' => 'Overdue', 'white_label_text' => 'Purchase a ONE YEAR white label license for $'.WHITE_LABEL_PRICE.' to remove the Invoice Ninja branding from the client portal and help support our project.', + 'navigation' => 'Navigation', + 'list_invoices' => 'List Invoices', + 'list_clients' => 'List Clients', + 'list_quotes' => 'List Quotes', + 'list_tasks' => 'List Tasks', + 'list_expenses' => 'List Expenses', + 'list_recurring_invoices' => 'List Recurring Invoices', + 'list_payments' => 'List Payments', + 'list_credits' => 'List Credits', + 'tax_name' => 'Tax Name', + 'report_settings' => 'Report Settings', + 'search_hotkey' => 'shortcut is /', + + 'new_user' => 'New User', + 'new_product' => 'New Product', + 'new_tax_rate' => 'New Tax Rate', + 'invoiced_amount' => 'Invoiced Amount', + 'invoice_item_fields' => 'Invoice Item Fields', + 'custom_invoice_item_fields_help' => 'Add a field when creating an invoice item and display the label and value on the PDF.', + 'recurring_invoice_number' => 'Recurring Invoice Number', + 'recurring_invoice_number_prefix_help' => 'Speciy a prefix to be added to the invoice number for recurring invoices. The default value is \'R\'.', + 'enable_client_portal' => 'Dashboard', + 'enable_client_portal_help' => 'Show/hide the dashboard page in the client portal.', + + // Client Passwords + 'enable_portal_password'=>'Password protect invoices', + 'enable_portal_password_help'=>'Allows you to set a password for each contact. If a password is set, the contact will be required to enter a password before viewing invoices.', + 'send_portal_password'=>'Generate password automatically', + 'send_portal_password_help'=>'If no password is set, one will be generated and sent with the first invoice.', + + 'expired' => 'Expired', + 'invalid_card_number' => 'The credit card number is not valid.', + 'invalid_expiry' => 'The expiration date is not valid.', + 'invalid_cvv' => 'The CVV is not valid.', + 'cost' => 'Cost', + 'create_invoice_for_sample' => 'Note: create your first invoice to see a preview here.', + + // User Permissions + 'owner' => 'Owner', + 'administrator' => 'Administrator', + 'administrator_help' => 'Allow user to manage users, change settings and modify all records', + 'user_create_all' => 'Create clients, invoices, etc.', + 'user_view_all' => 'View all clients, invoices, etc.', + 'user_edit_all' => 'Edit all clients, invoices, etc.', + 'gateway_help_20' => ':link to sign up for Sage Pay.', + 'gateway_help_21' => ':link to sign up for Sage Pay.', + 'partial_due' => 'Partial Due', + 'restore_vendor' => 'Restore Vendor', + 'restored_vendor' => 'Successfully restored vendor', + 'restored_expense' => 'Successfully restored expense', + 'permissions' => 'Permissions', + 'create_all_help' => 'Allow user to create and modify records', + 'view_all_help' => 'Allow user to view records they didn\'t create', + 'edit_all_help' => 'Allow user to modify records they didn\'t create', + 'view_payment' => 'View Payment', + + 'january' => 'January', + 'february' => 'February', + 'march' => 'March', + 'april' => 'April', + 'may' => 'May', + 'june' => 'June', + 'july' => 'July', + 'august' => 'August', + 'september' => 'September', + 'october' => 'October', + 'november' => 'November', + 'december' => 'December', + ); From 7576fb94b3317458d1061ffc1748e7ea4473eacc Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Tue, 22 Mar 2016 19:52:50 +0200 Subject: [PATCH 46/46] Bumped version number to 2.5.1.1 --- app/Http/routes.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/routes.php b/app/Http/routes.php index 4a773bc6766a..1f5289d44326 100644 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -535,7 +535,7 @@ if (!defined('CONTACT_EMAIL')) { define('NINJA_GATEWAY_CONFIG', 'NINJA_GATEWAY_CONFIG'); define('NINJA_WEB_URL', 'https://www.invoiceninja.com'); define('NINJA_APP_URL', 'https://app.invoiceninja.com'); - define('NINJA_VERSION', '2.5.1'); + define('NINJA_VERSION', '2.5.1.1'); define('NINJA_DATE', '2000-01-01'); define('SOCIAL_LINK_FACEBOOK', 'https://www.facebook.com/invoiceninja');