Various code cleanup

This commit is contained in:
James Cole 2017-08-12 07:47:42 +02:00
parent 81fb3df45e
commit 743547096e
No known key found for this signature in database
GPG Key ID: C16961E655E74B5E
39 changed files with 4885 additions and 3714 deletions

View File

@ -34,7 +34,8 @@ class DecryptAttachment extends Command
*
* @var string
*/
protected $signature = 'firefly:decrypt-attachment {id:The ID of the attachment.} {name:The file name of the attachment.}
protected $signature
= 'firefly:decrypt-attachment {id:The ID of the attachment.} {name:The file name of the attachment.}
{directory:Where the file must be stored.}';

View File

@ -18,6 +18,11 @@ use FireflyIII\Support\Import\Prerequisites\PrerequisitesInterface;
class BankController extends Controller
{
public function postPrerequisites()
{
}
/**
* @param string $bank
*/
@ -31,6 +36,7 @@ class BankController extends Controller
if ($object->hasPrerequisites()) {
$view = $object->getView();
$parameters = $object->getViewParameters();
return view($view, $parameters);
}
@ -40,8 +46,4 @@ class BankController extends Controller
}
public function postPrerequisites() {
}
}

View File

@ -56,26 +56,6 @@ class FileController extends Controller
);
}
/**
* This is step 1. Upload a file.
*
* @return View
*/
public function index()
{
$subTitle = trans('firefly.import_index_sub_title');
$subTitleIcon = 'fa-home';
$importFileTypes = [];
$defaultImportType = config('firefly.default_import_format');
foreach (array_keys(config('firefly.import_formats')) as $type) {
$importFileTypes[$type] = trans('firefly.import_file_type_' . $type);
}
return view('import.file.index', compact('subTitle', 'subTitleIcon', 'importFileTypes', 'defaultImportType'));
}
/**
* This is step 3. This repeats until the job is configured.
*
@ -140,6 +120,24 @@ class FileController extends Controller
}
/**
* This is step 1. Upload a file.
*
* @return View
*/
public function index()
{
$subTitle = trans('firefly.import_index_sub_title');
$subTitleIcon = 'fa-home';
$importFileTypes = [];
$defaultImportType = config('firefly.default_import_format');
foreach (array_keys(config('firefly.import_formats')) as $type) {
$importFileTypes[$type] = trans('firefly.import_file_type_' . $type);
}
return view('import.file.index', compact('subTitle', 'subTitleIcon', 'importFileTypes', 'defaultImportType'));
}
/**
* This is step 2. It creates an Import Job. Stores the import.

View File

@ -78,11 +78,11 @@ class TagController extends Controller
}
/**
* @param Request $request
* Create a new tag.
*
* @return View
*/
public function create(Request $request)
public function create()
{
$subTitle = trans('firefly.new_tag');
$subTitleIcon = 'fa-tag';
@ -100,6 +100,8 @@ class TagController extends Controller
}
/**
* Delete a tag
*
* @param Tag $tag
*
* @return View
@ -134,13 +136,13 @@ class TagController extends Controller
}
/**
* @param Tag $tag
* Edit a tag
*
* @param TagRepositoryInterface $repository
* @param Tag $tag
*
* @return View
*/
public function edit(Tag $tag, TagRepositoryInterface $repository)
public function edit(Tag $tag)
{
$subTitle = trans('firefly.edit_tag', ['tag' => $tag->tag]);
$subTitleIcon = 'fa-tag';
@ -158,6 +160,8 @@ class TagController extends Controller
}
/**
* View all tags
*
* @param TagRepositoryInterface $repository
*
* @return View

View File

@ -278,6 +278,7 @@ class ImportStorage
}
Log::debug('getForeignCurrencyId: journal has no foreign currency.');
// return null in other cases.
return null;
}

View File

@ -20,6 +20,7 @@ interface Verifier
{
/**
* Verify the given password against (some) service.
*
* @param string $password
*
* @return bool

View File

@ -27,6 +27,13 @@ interface ConfigurationInterface
*/
public function getData(): array;
/**
* Return possible warning to user.
*
* @return string
*/
public function getWarningMessage(): string;
/**
* @param ImportJob $job
*
@ -43,11 +50,4 @@ interface ConfigurationInterface
*/
public function storeConfiguration(array $data): bool;
/**
* Return possible warning to user.
*
* @return string
*/
public function getWarningMessage(): string;
}

View File

@ -61,6 +61,16 @@ class Initial implements ConfigurationInterface
return $data;
}
/**
* Return possible warning to user.
*
* @return string
*/
public function getWarningMessage(): string
{
return '';
}
/**
* @param ImportJob $job
*
@ -135,14 +145,4 @@ class Initial implements ConfigurationInterface
return $config;
}
/**
* Return possible warning to user.
*
* @return string
*/
public function getWarningMessage(): string
{
return '';
}
}

View File

@ -106,6 +106,16 @@ class Map implements ConfigurationInterface
}
/**
* Return possible warning to user.
*
* @return string
*/
public function getWarningMessage(): string
{
return '';
}
/**
* @param ImportJob $job
*
@ -268,14 +278,4 @@ class Map implements ConfigurationInterface
return $column;
}
/**
* Return possible warning to user.
*
* @return string
*/
public function getWarningMessage(): string
{
return '';
}
}

View File

@ -262,7 +262,7 @@ class Roles implements ConfigurationInterface
$this->warning = '';
}
if ($assigned === 0 || !$hasAmount) {
$this->warning = trans('csv.roles_warning');
$this->warning = strval(trans('csv.roles_warning'));
}
return true;

View File

@ -16,13 +16,6 @@ use FireflyIII\User;
interface PrerequisitesInterface
{
/**
* Set the user for this Prerequisites-routine. Class is expected to implement and save this.
*
* @param User $user
*/
public function setUser(User $user): void;
/**
* Returns view name that allows user to fill in prerequisites.
*
@ -44,4 +37,11 @@ interface PrerequisitesInterface
* @return bool
*/
public function hasPrerequisites(): bool;
/**
* Set the user for this Prerequisites-routine. Class is expected to implement and save this.
*
* @param User $user
*/
public function setUser(User $user): void;
}

View File

@ -17,6 +17,7 @@ return [
[
'4.3' => 'Make sure you run the migrations and clear your cache. If you need more help, please check Github or the Firefly III website.',
'4.6.3' => 'This will be the last version to require PHP7.0. Future versions will require PHP7.1 minimum.',
'4.6.4' => 'This version of Firefly III requires PHP7.1.'
],
'install' =>
[

View File

@ -8,79 +8,121 @@
margin-top: 1px;
top: 100px;
left: 20px;
/* Calendars */ }
/* Calendars */
}
.daterangepicker:before, .daterangepicker:after {
position: absolute;
display: inline-block;
border-bottom-color: rgba(0, 0, 0, 0.2);
content: ''; }
content: '';
}
.daterangepicker:before {
top: -7px;
border-right: 7px solid transparent;
border-left: 7px solid transparent;
border-bottom: 7px solid #ccc; }
border-bottom: 7px solid #ccc;
}
.daterangepicker:after {
top: -6px;
border-right: 6px solid transparent;
border-bottom: 6px solid #fff;
border-left: 6px solid transparent; }
border-left: 6px solid transparent;
}
.daterangepicker.opensleft:before {
right: 9px; }
right: 9px;
}
.daterangepicker.opensleft:after {
right: 10px; }
right: 10px;
}
.daterangepicker.openscenter:before {
left: 0;
right: 0;
width: 0;
margin-left: auto;
margin-right: auto; }
margin-right: auto;
}
.daterangepicker.openscenter:after {
left: 0;
right: 0;
width: 0;
margin-left: auto;
margin-right: auto; }
margin-right: auto;
}
.daterangepicker.opensright:before {
left: 9px; }
left: 9px;
}
.daterangepicker.opensright:after {
left: 10px; }
left: 10px;
}
.daterangepicker.dropup {
margin-top: -5px; }
margin-top: -5px;
}
.daterangepicker.dropup:before {
top: initial;
bottom: -7px;
border-bottom: initial;
border-top: 7px solid #ccc; }
border-top: 7px solid #ccc;
}
.daterangepicker.dropup:after {
top: initial;
bottom: -6px;
border-bottom: initial;
border-top: 6px solid #fff; }
border-top: 6px solid #fff;
}
.daterangepicker.dropdown-menu {
max-width: none;
z-index: 3001; }
z-index: 3001;
}
.daterangepicker.single .ranges, .daterangepicker.single .calendar {
float: none; }
float: none;
}
.daterangepicker.show-calendar .calendar {
display: block; }
display: block;
}
.daterangepicker .calendar {
display: none;
max-width: 270px;
margin: 4px; }
margin: 4px;
}
.daterangepicker .calendar.single .calendar-table {
border: none; }
border: none;
}
.daterangepicker .calendar th, .daterangepicker .calendar td {
white-space: nowrap;
text-align: center;
min-width: 32px; }
min-width: 32px;
}
.daterangepicker .calendar-table {
border: 1px solid #fff;
padding: 4px;
border-radius: 4px;
background-color: #fff; }
background-color: #fff;
}
.daterangepicker table {
width: 100%;
margin: 0; }
margin: 0;
}
.daterangepicker td, .daterangepicker th {
text-align: center;
width: 20px;
@ -88,53 +130,83 @@
border-radius: 4px;
border: 1px solid transparent;
white-space: nowrap;
cursor: pointer; }
cursor: pointer;
}
.daterangepicker td.available:hover, .daterangepicker th.available:hover {
background-color: #eee;
border-color: transparent;
color: inherit; }
color: inherit;
}
.daterangepicker td.week, .daterangepicker th.week {
font-size: 80%;
color: #ccc; }
color: #ccc;
}
.daterangepicker td.off, .daterangepicker td.off.in-range, .daterangepicker td.off.start-date, .daterangepicker td.off.end-date {
background-color: #fff;
border-color: transparent;
color: #999; }
color: #999;
}
.daterangepicker td.in-range {
background-color: #ebf4f8;
border-color: transparent;
color: #000;
border-radius: 0; }
border-radius: 0;
}
.daterangepicker td.start-date {
border-radius: 4px 0 0 4px; }
border-radius: 4px 0 0 4px;
}
.daterangepicker td.end-date {
border-radius: 0 4px 4px 0; }
border-radius: 0 4px 4px 0;
}
.daterangepicker td.start-date.end-date {
border-radius: 4px; }
border-radius: 4px;
}
.daterangepicker td.active, .daterangepicker td.active:hover {
background-color: #357ebd;
border-color: transparent;
color: #fff; }
color: #fff;
}
.daterangepicker th.month {
width: auto; }
width: auto;
}
.daterangepicker td.disabled, .daterangepicker option.disabled {
color: #999;
cursor: not-allowed;
text-decoration: line-through; }
text-decoration: line-through;
}
.daterangepicker select.monthselect, .daterangepicker select.yearselect {
font-size: 12px;
padding: 1px;
height: auto;
margin: 0;
cursor: default; }
cursor: default;
}
.daterangepicker select.monthselect {
margin-right: 2%;
width: 56%; }
width: 56%;
}
.daterangepicker select.yearselect {
width: 40%; }
width: 40%;
}
.daterangepicker select.hourselect, .daterangepicker select.minuteselect, .daterangepicker select.secondselect, .daterangepicker select.ampmselect {
width: 50px;
margin-bottom: 0; }
margin-bottom: 0;
}
.daterangepicker .input-mini {
border: 1px solid #ccc;
border-radius: 4px;
@ -145,42 +217,61 @@
vertical-align: middle;
margin: 0 0 5px 0;
padding: 0 6px 0 28px;
width: 100%; }
width: 100%;
}
.daterangepicker .input-mini.active {
border: 1px solid #08c;
border-radius: 4px; }
border-radius: 4px;
}
.daterangepicker .daterangepicker_input {
position: relative; }
position: relative;
}
.daterangepicker .daterangepicker_input i {
position: absolute;
left: 8px;
top: 8px; }
top: 8px;
}
.daterangepicker.rtl .input-mini {
padding-right: 28px;
padding-left: 6px; }
padding-left: 6px;
}
.daterangepicker.rtl .daterangepicker_input i {
left: auto;
right: 8px; }
right: 8px;
}
.daterangepicker .calendar-time {
text-align: center;
margin: 5px auto;
line-height: 30px;
position: relative;
padding-left: 28px; }
padding-left: 28px;
}
.daterangepicker .calendar-time select.disabled {
color: #ccc;
cursor: not-allowed; }
cursor: not-allowed;
}
.ranges {
font-size: 11px;
float: none;
margin: 4px;
text-align: left; }
text-align: left;
}
.ranges ul {
list-style: none;
margin: 0 auto;
padding: 0;
width: 100%; }
width: 100%;
}
.ranges li {
font-size: 13px;
background-color: #f5f5f5;
@ -189,81 +280,139 @@
color: #08c;
padding: 3px 12px;
margin-bottom: 8px;
cursor: pointer; }
cursor: pointer;
}
.ranges li:hover {
background-color: #08c;
border: 1px solid #08c;
color: #fff; }
color: #fff;
}
.ranges li.active {
background-color: #08c;
border: 1px solid #08c;
color: #fff; }
color: #fff;
}
/* Larger Screen Styling */
@media (min-width: 564px) {
.daterangepicker {
width: auto; }
width: auto;
}
.daterangepicker .ranges ul {
width: 160px; }
width: 160px;
}
.daterangepicker.single .ranges ul {
width: 100%; }
width: 100%;
}
.daterangepicker.single .calendar.left {
clear: none; }
clear: none;
}
.daterangepicker.single.ltr .ranges, .daterangepicker.single.ltr .calendar {
float: left; }
float: left;
}
.daterangepicker.single.rtl .ranges, .daterangepicker.single.rtl .calendar {
float: right; }
float: right;
}
.daterangepicker.ltr {
direction: ltr;
text-align: left; }
text-align: left;
}
.daterangepicker.ltr .calendar.left {
clear: left;
margin-right: 0; }
margin-right: 0;
}
.daterangepicker.ltr .calendar.left .calendar-table {
border-right: none;
border-top-right-radius: 0;
border-bottom-right-radius: 0; }
border-bottom-right-radius: 0;
}
.daterangepicker.ltr .calendar.right {
margin-left: 0; }
margin-left: 0;
}
.daterangepicker.ltr .calendar.right .calendar-table {
border-left: none;
border-top-left-radius: 0;
border-bottom-left-radius: 0; }
border-bottom-left-radius: 0;
}
.daterangepicker.ltr .left .daterangepicker_input {
padding-right: 12px; }
padding-right: 12px;
}
.daterangepicker.ltr .calendar.left .calendar-table {
padding-right: 12px; }
padding-right: 12px;
}
.daterangepicker.ltr .ranges, .daterangepicker.ltr .calendar {
float: left; }
float: left;
}
.daterangepicker.rtl {
direction: rtl;
text-align: right; }
text-align: right;
}
.daterangepicker.rtl .calendar.left {
clear: right;
margin-left: 0; }
margin-left: 0;
}
.daterangepicker.rtl .calendar.left .calendar-table {
border-left: none;
border-top-left-radius: 0;
border-bottom-left-radius: 0; }
border-bottom-left-radius: 0;
}
.daterangepicker.rtl .calendar.right {
margin-right: 0; }
margin-right: 0;
}
.daterangepicker.rtl .calendar.right .calendar-table {
border-right: none;
border-top-right-radius: 0;
border-bottom-right-radius: 0; }
border-bottom-right-radius: 0;
}
.daterangepicker.rtl .left .daterangepicker_input {
padding-left: 12px; }
padding-left: 12px;
}
.daterangepicker.rtl .calendar.left .calendar-table {
padding-left: 12px; }
padding-left: 12px;
}
.daterangepicker.rtl .ranges, .daterangepicker.rtl .calendar {
text-align: right;
float: right; } }
float: right;
}
}
@media (min-width: 730px) {
.daterangepicker .ranges {
width: auto; }
width: auto;
}
.daterangepicker.ltr .ranges {
float: left; }
float: left;
}
.daterangepicker.rtl .ranges {
float: right; }
float: right;
}
.daterangepicker .calendar.left {
clear: none !important; } }
clear: none !important;
}
}

View File

@ -60,8 +60,6 @@ function failedJobImport(jqxhr, textStatus, error) {
function reportOnJobImport(data) {
switch (data.status) {
default:
break;
case "configured":
// job is ready. Do not check again, just show the start-box. Hide the rest.
$('.statusbox').hide();
@ -94,9 +92,10 @@ function reportOnJobImport(data) {
$('.status_finished').show();
// show text:
$('#import-status-more-info').html(data.finishedText);
break;
default:
break;
}
}

View File

@ -69,6 +69,7 @@ function removeMoney(e) {
return false;
}
function stopSorting() {
"use strict";
$('.loadSpin').addClass('fa fa-refresh fa-spin');

View File

@ -40,4 +40,5 @@ function initialize() {
marker.setMap(map);
}
}
google.maps.event.addDomListener(window, 'load', initialize);

View File

@ -99,6 +99,7 @@ function checkAll() {
"use strict";
$('.select_all_single').prop('checked', true);
}
function uncheckAll() {
"use strict";
$('.select_all_single').prop('checked', false);

View File

@ -278,8 +278,12 @@
var ua = navigator.userAgent;
$.each($.browser, function (c) {
$.browser[c] = ((new RegExp(c, 'i').test(ua))) ? true : false;
if ($.browser.mozilla && c === 'mozilla') { $.browser.mozilla = ((new RegExp('firefox', 'i').test(ua))) ? true : false; }
if ($.browser.chrome && c === 'safari') { $.browser.safari = false; }
if ($.browser.mozilla && c === 'mozilla') {
$.browser.mozilla = ((new RegExp('firefox', 'i').test(ua))) ? true : false;
}
if ($.browser.chrome && c === 'safari') {
$.browser.safari = false;
}
});
}

View File

@ -78,7 +78,8 @@
firstDay: moment.localeData().firstDayOfWeek()
};
this.callback = function() { };
this.callback = function () {
};
//some state information
this.isShowing = false;
@ -1100,7 +1101,9 @@
if (this.isShowing) return;
// Create a click proxy that is private to this instance of datepicker, for unbinding
this._outsideClickProxy = $.proxy(function(e) { this.outsideClick(e); }, this);
this._outsideClickProxy = $.proxy(function (e) {
this.outsideClick(e);
}, this);
// Bind global datepicker mousedown for hiding and
$(document)
@ -1113,7 +1116,9 @@
.on('focusin.daterangepicker', this._outsideClickProxy);
// Reposition the picker if the window is resized while it's open
$(window).on('resize.daterangepicker', $.proxy(function(e) { this.move(e); }, this));
$(window).on('resize.daterangepicker', $.proxy(function (e) {
this.move(e);
}, this));
this.oldStartDate = this.startDate.clone();
this.oldEndDate = this.endDate.clone();

File diff suppressed because it is too large Load Diff

View File

@ -5,9 +5,11 @@
.skin-blue-light .main-header .navbar {
background-color: #3c8dbc;
}
.skin-blue-light .main-header .navbar .nav > li > a {
color: #ffffff;
}
.skin-blue-light .main-header .navbar .nav > li > a:hover,
.skin-blue-light .main-header .navbar .nav > li > a:active,
.skin-blue-light .main-header .navbar .nav > li > a:focus,
@ -18,105 +20,133 @@
background: rgba(0, 0, 0, 0.1);
color: #f6f6f6;
}
.skin-blue-light .main-header .navbar .sidebar-toggle {
color: #ffffff;
}
.skin-blue-light .main-header .navbar .sidebar-toggle:hover {
color: #f6f6f6;
background: rgba(0, 0, 0, 0.1);
}
.skin-blue-light .main-header .navbar .sidebar-toggle {
color: #fff;
}
.skin-blue-light .main-header .navbar .sidebar-toggle:hover {
background-color: #367fa9;
}
@media (max-width: 767px) {
.skin-blue-light .main-header .navbar .dropdown-menu li.divider {
background-color: rgba(255, 255, 255, 0.1);
}
.skin-blue-light .main-header .navbar .dropdown-menu li a {
color: #fff;
}
.skin-blue-light .main-header .navbar .dropdown-menu li a:hover {
background: #367fa9;
}
}
.skin-blue-light .main-header .logo {
background-color: #3c8dbc;
color: #ffffff;
border-bottom: 0 solid transparent;
}
.skin-blue-light .main-header .logo:hover {
background-color: #3b8ab8;
}
.skin-blue-light .main-header li.user-header {
background-color: #3c8dbc;
}
.skin-blue-light .content-header {
background: transparent;
}
.skin-blue-light .wrapper,
.skin-blue-light .main-sidebar,
.skin-blue-light .left-side {
background-color: #f9fafc;
}
.skin-blue-light .content-wrapper,
.skin-blue-light .main-footer {
border-left: 1px solid #d2d6de;
}
.skin-blue-light .user-panel > .info,
.skin-blue-light .user-panel > .info > a {
color: #444444;
}
.skin-blue-light .sidebar-menu > li {
-webkit-transition: border-left-color 0.3s ease;
-o-transition: border-left-color 0.3s ease;
transition: border-left-color 0.3s ease;
}
.skin-blue-light .sidebar-menu > li.header {
color: #848484;
background: #f9fafc;
}
.skin-blue-light .sidebar-menu > li > a {
border-left: 3px solid transparent;
font-weight: 600;
}
.skin-blue-light .sidebar-menu > li:hover > a,
.skin-blue-light .sidebar-menu > li.active > a {
color: #000000;
background: #f4f4f5;
}
.skin-blue-light .sidebar-menu > li.active {
border-left-color: #3c8dbc;
}
.skin-blue-light .sidebar-menu > li.active > a {
font-weight: 600;
}
.skin-blue-light .sidebar-menu > li > .treeview-menu {
background: #f4f4f5;
}
.skin-blue-light .sidebar a {
color: #444444;
}
.skin-blue-light .sidebar a:hover {
text-decoration: none;
}
.skin-blue-light .treeview-menu > li > a {
color: #777777;
}
.skin-blue-light .treeview-menu > li.active > a,
.skin-blue-light .treeview-menu > li > a:hover {
color: #000000;
}
.skin-blue-light .treeview-menu > li.active > a {
font-weight: 600;
}
.skin-blue-light .sidebar-form {
border-radius: 3px;
border: 1px solid #d2d6de;
margin: 10px 10px;
}
.skin-blue-light .sidebar-form input[type="text"],
.skin-blue-light .sidebar-form .btn {
box-shadow: none;
@ -124,6 +154,7 @@
border: 1px solid transparent;
height: 35px;
}
.skin-blue-light .sidebar-form input[type="text"] {
color: #666;
border-top-left-radius: 2px;
@ -131,14 +162,17 @@
border-bottom-right-radius: 0;
border-bottom-left-radius: 2px;
}
.skin-blue-light .sidebar-form input[type="text"]:focus,
.skin-blue-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
background-color: #fff;
color: #666;
}
.skin-blue-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
border-left-color: #fff;
}
.skin-blue-light .sidebar-form .btn {
color: #999;
border-top-left-radius: 0;
@ -146,19 +180,23 @@
border-bottom-right-radius: 2px;
border-bottom-left-radius: 0;
}
@media (min-width: 768px) {
.skin-blue-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu {
border-left: 1px solid #d2d6de;
}
}
.skin-blue-light .main-footer {
border-top-color: #d2d6de;
}
.skin-blue.layout-top-nav .main-header > .logo {
background-color: #3c8dbc;
color: #ffffff;
border-bottom: 0 solid transparent;
}
.skin-blue.layout-top-nav .main-header > .logo:hover {
background-color: #3b8ab8;
}

View File

@ -76,8 +76,10 @@
</p>
<h4>But I thought SHA1 was broken?</h4>
<p>
Yes, but not in this context. As you can read on <a href="https://shattered.io/">the website detailing how they broke SHA1</a>, it is now
slightly easier to find a "collision": another string that results in the same SHA1-hash. It now only takes 10,000 years using a single-GPU machine.
Yes, but not in this context. As you can read on <a href="https://shattered.io/">the website detailing how they broke SHA1</a>, it is
now
slightly easier to find a "collision": another string that results in the same SHA1-hash. It now only takes 10,000 years using a
single-GPU machine.
</p>
<p>
This collision would not be equal to your password, nor would it be useful on (a site like) Firefly III. This application

View File

@ -168,7 +168,8 @@
<div class="modal-footer">
<small class="pull-left">
{{ 'need_more_help'|_ }}
</small><br />
</small>
<br/>
<small class="pull-left">
{{ trans('firefly.reenable_intro_text')|raw }}
</small>

View File

@ -50,7 +50,8 @@
<span class="input-group-addon">{{ journal.currency_symbol }}</span>
<input name="amount[{{ journal.id }}]" class="form-control" autocomplete="off"
step="any" type="number" value="{{ journal.amount }}">
<input type="hidden" name="transaction_currency_id[{{ journal.id }}]" value="{{ journal.transaction_currency_id }}">
<input type="hidden" name="transaction_currency_id[{{ journal.id }}]"
value="{{ journal.transaction_currency_id }}">
</div>
{% if journal.foreign_amount %}
{# insert foreign data #}

View File

@ -295,7 +295,6 @@ class SingleControllerTest extends TestCase
$messages->add('attachments', 'Fake error');
// mock attachment helper, trigger an error AND and info thing.
$attachmentRepo = $this->mock(AttachmentHelperInterface::class);
$attachmentRepo->shouldReceive('saveAttachmentsForModel');