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 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- true
- true
-
-
-
-
-
-
- true
- true
-
-
-
-
-
-
- true
- true
-
-
-
-
-
- true
-
- BY_NAME
-
-
-
- true
-
- BY_NAME
-
-
-
- true
-
- BY_NAME
-
-
-
-
-
-
-
- true
-
-
-
-
- true
-
-
-
-
- true
-
-
-
-
-
-
-
- GETTERS_AND_SETTERS
- KEEP
-
-
-
-
-
-
-
-
-
-
-
-
-
- BY_NAME
-
-
-
-
-
-
-
-
-
-
-
- BY_NAME
-
-
-
-
-
-
-
-
-
-
-
- BY_NAME
-
-
-
-
-
-
-
-
-
-
- BY_NAME
-
-
-
-
-
-
-
-
-
-
- BY_NAME
-
-
-
-
-
-
-
-
-
-
- BY_NAME
-
-
-
-
-
-
-
-
-
-
-
-
- BY_NAME
-
-
-
-
-
-
-
-
-
-
-
- BY_NAME
-
-
-
-
-
-
-
-
-
-
-
- BY_NAME
-
-
-
-
-
-
-
-
-
-
- BY_NAME
-
-
-
-
-
-
-
-
-
-
- BY_NAME
-
-
-
-
-
-
-
-
-
-
- BY_NAME
-
-
-
-
-
-
-
-
-
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.