diff --git a/CHANGELOG.md b/CHANGELOG.md index 412b2d343d..0b5e4cf7af 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,25 @@ This project adheres to [Semantic Versioning](http://semver.org/). ## [Unreleased] - No unreleased changes yet. +[3.9.0] +### Added +- @zjean has added code that allows you to force "https://"-URL's. +- @tonicospinelli has added Portuguese (Brazil) translations. +- Firefly III supports the *splitting* of transactions: + - A withdrawal (expense) can be split into multiple sub-transactions (with multiple destinations) + - Likewise for deposits (incomes). You can set multiple sources. + - Likewise for transfers. + +### Changed +- Update a lot of libraries. +- Big improvement to test data generation. +- Cleaned up many repositories. + +### Removed +- Front page boxes will no longer respond to credit card bills. + +### Fixed +- Many bugs ## [3.8.4] - 2016-04-24 ### Added diff --git a/_development/.coveralls.yml b/_development/.coveralls.yml deleted file mode 100644 index eb8e63b57e..0000000000 --- a/_development/.coveralls.yml +++ /dev/null @@ -1 +0,0 @@ -src_dir: . diff --git a/_development/.csslintrc b/_development/.csslintrc deleted file mode 100644 index aacba956e5..0000000000 --- a/_development/.csslintrc +++ /dev/null @@ -1,2 +0,0 @@ ---exclude-exts=.min.css ---ignore=adjoining-classes,box-model,ids,order-alphabetical,unqualified-attributes diff --git a/_development/.eslintignore b/_development/.eslintignore deleted file mode 100644 index 96212a3593..0000000000 --- a/_development/.eslintignore +++ /dev/null @@ -1 +0,0 @@ -**/*{.,-}min.js diff --git a/_development/.eslintrc b/_development/.eslintrc deleted file mode 100644 index 9faa37508e..0000000000 --- a/_development/.eslintrc +++ /dev/null @@ -1,213 +0,0 @@ -ecmaFeatures: - modules: true - jsx: true - -env: - amd: true - browser: true - es6: true - jquery: true - node: true - -# http://eslint.org/docs/rules/ -rules: - # Possible Errors - comma-dangle: [2, never] - no-cond-assign: 2 - no-console: 0 - no-constant-condition: 2 - no-control-regex: 2 - no-debugger: 2 - no-dupe-args: 2 - no-dupe-keys: 2 - no-duplicate-case: 2 - no-empty: 2 - no-empty-character-class: 2 - no-ex-assign: 2 - no-extra-boolean-cast: 2 - no-extra-parens: 0 - no-extra-semi: 2 - no-func-assign: 2 - no-inner-declarations: [2, functions] - no-invalid-regexp: 2 - no-irregular-whitespace: 2 - no-negated-in-lhs: 2 - no-obj-calls: 2 - no-regex-spaces: 2 - no-sparse-arrays: 2 - no-unexpected-multiline: 2 - no-unreachable: 2 - use-isnan: 2 - valid-jsdoc: 0 - valid-typeof: 2 - - # Best Practices - accessor-pairs: 2 - block-scoped-var: 0 - complexity: [2, 6] - consistent-return: 0 - curly: 0 - default-case: 0 - dot-location: 0 - dot-notation: 0 - eqeqeq: 2 - guard-for-in: 2 - no-alert: 2 - no-caller: 2 - no-case-declarations: 2 - no-div-regex: 2 - no-else-return: 0 - no-empty-label: 2 - no-empty-pattern: 2 - no-eq-null: 2 - no-eval: 2 - no-extend-native: 2 - no-extra-bind: 2 - no-fallthrough: 2 - no-floating-decimal: 0 - no-implicit-coercion: 0 - no-implied-eval: 2 - no-invalid-this: 0 - no-iterator: 2 - no-labels: 0 - no-lone-blocks: 2 - no-loop-func: 2 - no-magic-number: 0 - no-multi-spaces: 0 - no-multi-str: 0 - no-native-reassign: 2 - no-new-func: 2 - no-new-wrappers: 2 - no-new: 2 - no-octal-escape: 2 - no-octal: 2 - no-proto: 2 - no-redeclare: 2 - no-return-assign: 2 - no-script-url: 2 - no-self-compare: 2 - no-sequences: 0 - no-throw-literal: 0 - no-unused-expressions: 2 - no-useless-call: 2 - no-useless-concat: 2 - no-void: 2 - no-warning-comments: 0 - no-with: 2 - radix: 2 - vars-on-top: 0 - wrap-iife: 2 - yoda: 0 - - # Strict - strict: 0 - - # Variables - init-declarations: 0 - no-catch-shadow: 2 - no-delete-var: 2 - no-label-var: 2 - no-shadow-restricted-names: 2 - no-shadow: 0 - no-undef-init: 2 - no-undef: 0 - no-undefined: 0 - no-unused-vars: 0 - no-use-before-define: 0 - - # Node.js and CommonJS - callback-return: 2 - global-require: 2 - handle-callback-err: 2 - no-mixed-requires: 0 - no-new-require: 0 - no-path-concat: 2 - no-process-exit: 2 - no-restricted-modules: 0 - no-sync: 0 - - # Stylistic Issues - array-bracket-spacing: 0 - block-spacing: 0 - brace-style: 0 - camelcase: 0 - comma-spacing: 0 - comma-style: 0 - computed-property-spacing: 0 - consistent-this: 0 - eol-last: 0 - func-names: 0 - func-style: 0 - id-length: 0 - id-match: 0 - indent: 0 - jsx-quotes: 0 - key-spacing: 0 - linebreak-style: 0 - lines-around-comment: 0 - max-depth: 0 - max-len: 0 - max-nested-callbacks: 0 - max-params: 0 - max-statements: [2, 30] - new-cap: 0 - new-parens: 0 - newline-after-var: 0 - no-array-constructor: 0 - no-bitwise: 0 - no-continue: 0 - no-inline-comments: 0 - no-lonely-if: 0 - no-mixed-spaces-and-tabs: 0 - no-multiple-empty-lines: 0 - no-negated-condition: 0 - no-nested-ternary: 0 - no-new-object: 0 - no-plusplus: 0 - no-restricted-syntax: 0 - no-spaced-func: 0 - no-ternary: 0 - no-trailing-spaces: 0 - no-underscore-dangle: 0 - no-unneeded-ternary: 0 - object-curly-spacing: 0 - one-var: 0 - operator-assignment: 0 - operator-linebreak: 0 - padded-blocks: 0 - quote-props: 0 - quotes: 0 - require-jsdoc: 0 - semi-spacing: 0 - semi: 0 - sort-vars: 0 - space-after-keywords: 0 - space-before-blocks: 0 - space-before-function-paren: 0 - space-before-keywords: 0 - space-in-parens: 0 - space-infix-ops: 0 - space-return-throw-case: 0 - space-unary-ops: 0 - spaced-comment: 0 - wrap-regex: 0 - - # ECMAScript 6 - arrow-body-style: 0 - arrow-parens: 0 - arrow-spacing: 0 - constructor-super: 0 - generator-star-spacing: 0 - no-arrow-condition: 0 - no-class-assign: 0 - no-const-assign: 0 - no-dupe-class-members: 0 - no-this-before-super: 0 - no-var: 0 - object-shorthand: 0 - prefer-arrow-callback: 0 - prefer-const: 0 - prefer-reflect: 0 - prefer-spread: 0 - prefer-template: 0 - require-yield: 0 diff --git a/_development/.jshintrc b/_development/.jshintrc deleted file mode 100644 index e6395a276a..0000000000 --- a/_development/.jshintrc +++ /dev/null @@ -1,22 +0,0 @@ -{ - "undef": true, - "unused": false, - "strict": true, - "browser": true, - "jquery": true, - "devel": true, - "globals": [ - "language", - "token", - "currencyCode", - "$", - "token", - "accountID", - "billID", - "currentMonthName", - "previousMonthName", - "nextMonthName", - "everything", - "moment" - ] -} \ No newline at end of file diff --git a/_development/codesniffer/ruleset.xml b/_development/codesniffer/ruleset.xml deleted file mode 100644 index 5a6a92bb44..0000000000 --- a/_development/codesniffer/ruleset.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/_development/codestyle.xml b/_development/codestyle.xml deleted file mode 100644 index 1429217c85..0000000000 --- a/_development/codestyle.xml +++ /dev/null @@ -1,322 +0,0 @@ - - diff --git a/_development/cover.sh b/_development/cover.sh deleted file mode 100755 index 6807f88c0a..0000000000 --- a/_development/cover.sh +++ /dev/null @@ -1,63 +0,0 @@ -#!/bin/bash - -# set testing environment -cp .env.testing .env - -# set cover: -cp phpunit.cover.xml phpunit.xml - -# delete test databases: -if [ -f storage/database/testing.db ] -then - echo "Will not remove test db" - # rm storage/database/testing.db -fi - -if [ -f storage/database/testing-copy.db ] -then - echo "Will not remove test db" - # rm storage/database/testing-copy.db -fi - -# test! -if [ -z "$1" ] -then - echo "Running all tests..." - phpunit -fi - -# test selective.. -dirs=("acceptance/Controllers" "acceptance/Controllers/Auth" "acceptance/Controllers/Chart" "unit") -# -if [ ! -z "$1" ] -then - for i in "${dirs[@]}" - do - firstFile="./tests/$i/$1.php" - secondFile="./tests/$i/$1Test.php" - if [ -f "$firstFile" ] - then - # run it! - echo "Now running $firstFile" - phpunit $firstFile - result=$? - fi - if [ -f "$secondFile" ] - then - # run it! - echo "Now running $secondFile" - phpunit $secondFile - result=$? - fi - - - done -fi - -# restore .env file -cp .env.local .env - -# restore cover -cp phpunit.default.xml phpunit.xml - -exit ${result} \ No newline at end of file diff --git a/_development/favicon.pxm b/_development/favicon.pxm deleted file mode 100644 index 18998b1f1c..0000000000 Binary files a/_development/favicon.pxm and /dev/null differ diff --git a/_development/gulpfile.js b/_development/gulpfile.js deleted file mode 100644 index dc6f1ebb4e..0000000000 --- a/_development/gulpfile.js +++ /dev/null @@ -1,16 +0,0 @@ -var elixir = require('laravel-elixir'); - -/* - |-------------------------------------------------------------------------- - | Elixir Asset Management - |-------------------------------------------------------------------------- - | - | Elixir provides a clean, fluent API for defining some basic Gulp tasks - | for your Laravel application. By default, we are compiling the Sass - | file for our application, as well as publishing vendor resources. - | - */ - -elixir(function(mix) { - mix.sass('app.scss'); -}); diff --git a/_development/phpmd/phpmd.xml b/_development/phpmd/phpmd.xml deleted file mode 100644 index 1e24a5344d..0000000000 --- a/_development/phpmd/phpmd.xml +++ /dev/null @@ -1,55 +0,0 @@ - - - - - Bla bla - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/_development/phpspec.yml b/_development/phpspec.yml deleted file mode 100644 index 1f6a86a520..0000000000 --- a/_development/phpspec.yml +++ /dev/null @@ -1,5 +0,0 @@ -suites: - main: - namespace: FireflyIII - psr4_prefix: FireflyIII - src_path: app diff --git a/_development/phpunit.cover.xml b/_development/phpunit.cover.xml deleted file mode 100644 index 08ba731694..0000000000 --- a/_development/phpunit.cover.xml +++ /dev/null @@ -1,63 +0,0 @@ - - - - - - - ./tests/ - - - - - app/Http - - - vendor/ - app/Console - app/Events - app/Exceptions - app/Generator - app/Handlers - app/Helpers - - app/Jobs - app/Listeners - app/Models - app/Policies - app/Providers - app/Repositories - app/Rules - app/Sql - app/Support - app/Validation - - - - - - - - - - - - - - - diff --git a/_development/phpunit.default.xml b/_development/phpunit.default.xml deleted file mode 100644 index 31ac89bcfe..0000000000 --- a/_development/phpunit.default.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - ./tests/ - - - - - app/ - - - - - - - - - - - - - diff --git a/_development/phpunit.xml b/_development/phpunit.xml deleted file mode 100644 index 31ac89bcfe..0000000000 --- a/_development/phpunit.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - ./tests/ - - - - - app/ - - - - - - - - - - - - - diff --git a/_development/pu.sh b/_development/pu.sh deleted file mode 100755 index e368f8b520..0000000000 --- a/_development/pu.sh +++ /dev/null @@ -1,103 +0,0 @@ -#!/bin/bash - -searchFile="" -deleteDatabases=false - -while getopts ":nhf:" opt; do - case $opt in - n) - # echo "-n was triggered: new database!" >&2 - deleteDatabases=true - ;; - f) - #echo "-f was triggered: file! $OPTARG" >&2 - searchFile=$OPTARG - ;; - h) - echo "n: new database" >&2 - echo "f: which file to run" >&2 - ;; - :) - echo "Option -$OPTARG requires an argument." >&2 - exit 1 - ;; - \?) - echo "Invalid option: -$OPTARG" >&2 - exit 1 - ;; - esac -done - -# set testing environment -cp .env.testing .env - -# set default phpunit. -cp phpunit.default.xml phpunit.xml - -# "create" default attachment: -touch storage/upload/at-1.data -touch storage/upload/at-2.data - -# delete databses: -if [ "$deleteDatabases" = true ] ; then - echo "Will delete and recreate the databases." - - # delete test database: - if [ -f storage/database/testing.db ] - then - echo "Deleted testing.db" - rm storage/database/testing.db - fi - - # delete test database copy: - if [ -f storage/database/testing-copy.db ] - then - echo "Delete testing-copy.db" - rm storage/database/testing-copy.db - fi -fi - -# do not delete database: -if [ "$deleteDatabases" = false ] ; then - echo "Will not delete databases." -fi - -# test! -if [ "$searchFile" == "" ] -then - echo "Running all tests..." - phpunit - result=$? -fi - -# test selective.. -dirs=("acceptance/Controllers" "acceptance/Controllers/Auth" "acceptance/Controllers/Chart" "unit") -# -if [ "$searchFile" != "" ] -then - echo "Will run test for '$searchFile'" - for i in "${dirs[@]}" - do - firstFile="./tests/$i/$searchFile.php" - secondFile="./tests/$i/"$searchFile"Test.php" - if [ -f "$firstFile" ] - then - # run it! - echo "Found file '$firstFile'" - phpunit --verbose $firstFile - result=$? - fi - if [ -f "$secondFile" ] - then - # run it! - echo "Found file '$secondFile'" - phpunit --verbose $secondFile - result=$? - fi - done -fi - -# restore .env file -cp .env.local .env - -exit ${result} \ No newline at end of file diff --git a/_development/readme.txt b/_development/readme.txt deleted file mode 100644 index f80cca7765..0000000000 --- a/_development/readme.txt +++ /dev/null @@ -1 +0,0 @@ -These are some of the files I use for code formatting, PHPMD and PHPCS. diff --git a/app/Http/Controllers/AccountController.php b/app/Http/Controllers/AccountController.php index 3920a95155..5233e5afeb 100644 --- a/app/Http/Controllers/AccountController.php +++ b/app/Http/Controllers/AccountController.php @@ -250,8 +250,8 @@ class AccountController extends Controller if ($cache->has()) { - //$entries = $cache->get(); - //return view('categories.show', compact('category', 'journals', 'entries', 'hideCategory', 'subTitle')); + $entries = $cache->get(); + return view('accounts.show', compact('account', 'what', 'entries', 'subTitleIcon', 'journals', 'subTitle')); } diff --git a/app/Http/Controllers/Chart/AccountController.php b/app/Http/Controllers/Chart/AccountController.php index d06193e5ea..8dc927cb48 100644 --- a/app/Http/Controllers/Chart/AccountController.php +++ b/app/Http/Controllers/Chart/AccountController.php @@ -53,7 +53,7 @@ class AccountController extends Controller $cache->addProperty('expenseAccounts'); $cache->addProperty('accounts'); if ($cache->has()) { - // return Response::json($cache->get()); + return Response::json($cache->get()); } $accounts = $repository->getAccountsByType(['Expense account', 'Beneficiary account']); @@ -105,7 +105,7 @@ class AccountController extends Controller $cache->addProperty('frontpage'); $cache->addProperty('accounts'); if ($cache->has()) { - // return Response::json($cache->get()); + return Response::json($cache->get()); } $frontPage = Preferences::get('frontPageAccounts', $repository->getAccountsByType([AccountType::DEFAULT, AccountType::ASSET])->pluck('id')->toArray()); @@ -151,7 +151,7 @@ class AccountController extends Controller $cache->addProperty('default'); $cache->addProperty($accounts); if ($cache->has()) { - // return Response::json($cache->get()); + return Response::json($cache->get()); } foreach ($accounts as $account) { @@ -196,7 +196,7 @@ class AccountController extends Controller $cache->addProperty('single'); $cache->addProperty($account->id); if ($cache->has()) { - // return Response::json($cache->get()); + return Response::json($cache->get()); } $format = (string)trans('config.month_and_day'); diff --git a/app/Http/Controllers/Chart/CategoryController.php b/app/Http/Controllers/Chart/CategoryController.php index b763da7ac2..c2b9675ca5 100644 --- a/app/Http/Controllers/Chart/CategoryController.php +++ b/app/Http/Controllers/Chart/CategoryController.php @@ -308,7 +308,7 @@ class CategoryController extends Controller $cache->addProperty('specific-period'); if ($cache->has()) { - // return $cache->get(); + return $cache->get(); } $entries = new Collection; Log::debug('Start is ' . $start . ' en end is ' . $end); diff --git a/app/Http/Controllers/Chart/ReportController.php b/app/Http/Controllers/Chart/ReportController.php index c6c24886dc..bbbf50eb58 100644 --- a/app/Http/Controllers/Chart/ReportController.php +++ b/app/Http/Controllers/Chart/ReportController.php @@ -100,7 +100,7 @@ class ReportController extends Controller $cache->addProperty($accounts); $cache->addProperty($end); if ($cache->has()) { - // return Response::json($cache->get()); + return Response::json($cache->get()); } // always per month.