Compare commits

..

8 Commits

Author SHA1 Message Date
github-actions
39841de680 Auto commit for release 'develop' on 2024-03-31 2024-03-31 17:12:02 +02:00
James Cole
5ec54de29e Fix shitty test 2024-03-31 16:51:53 +02:00
James Cole
397e37f344 Fix another division by zero 2024-03-31 16:46:38 +02:00
James Cole
b6f84c2b99 Expand v2 layout, add user administration pages. 2024-03-31 16:46:20 +02:00
James Cole
843f86fc66 Merge branch 'main' into develop 2024-03-31 11:29:35 +02:00
James Cole
0e8e364074 Can now release multiple development builds per day 2024-03-31 10:01:21 +02:00
James Cole
bbccbef578 Fix loop 2024-03-31 09:55:17 +02:00
James Cole
ee11a8e3a0 Add check for duplicate tags 2024-03-31 09:48:20 +02:00
50 changed files with 1254 additions and 24 deletions

View File

@@ -147,16 +147,33 @@ jobs:
composer dump-autoload
releaseName=$version
zipName=FireflyIII-$version.zip
originalName=$version
tarName=FireflyIII-$version.tar.gz
if [[ "develop" == "$version" ]]; then
[[ -z $(git status --untracked-files=normal --porcelain) ]] && echo "this branch is clean, no need to push..." && exit 0;
releaseName=$version-$(date +'%Y%m%d')
originalName=$releaseName
zipName=FireflyIII-develop.zip
tarName=FireflyIII-develop.tar.gz
fi
# in both cases, if the release or tag already exists, add ".1" until it no longer exists.
tagFound=true
tagCount=1
while [ "$tagFound" = true ]
do
if [ $(git tag -l "$releaseName") ]; then
echo "Tag $releaseName exists already."
releaseName="$originalName"."$tagCount"
echo "Tag for release is now $releaseName"
else
echo "Tag $releaseName does not exist, can continue"
tagFound=false
fi
done
echo "Will use tag and release name $releaseName."
git add -A
if test -f "output.txt"; then
git reset output.txt

View File

@@ -0,0 +1,73 @@
<?php
/*
* IndexController.php
* Copyright (c) 2024 james@firefly-iii.org.
*
* This file is part of Firefly III (https://github.com/firefly-iii).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see https://www.gnu.org/licenses/.
*/
declare(strict_types=1);
namespace FireflyIII\Api\V2\Controllers\UserGroup;
use FireflyIII\Api\V2\Controllers\Controller;
use FireflyIII\Api\V2\Request\Model\Account\IndexRequest;
use FireflyIII\Repositories\UserGroup\UserGroupRepositoryInterface;
use FireflyIII\Transformers\V2\UserGroupTransformer;
use Illuminate\Http\JsonResponse;
use Illuminate\Pagination\LengthAwarePaginator;
class IndexController extends Controller
{
public const string RESOURCE_KEY = 'user_groups';
private UserGroupRepositoryInterface $repository;
/**
* AccountController constructor.
*/
public function __construct()
{
parent::__construct();
$this->middleware(
function ($request, $next) {
$this->repository = app(UserGroupRepositoryInterface::class);
return $next($request);
}
);
}
/**
* TODO see autocomplete/accountcontroller for list.
*/
public function index(IndexRequest $request): JsonResponse
{
$administrations = $this->repository->get();
$pageSize = $this->parameters->get('limit');
$count = $administrations->count();
$administrations = $administrations->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize);
$paginator = new LengthAwarePaginator($administrations, $count, $pageSize, $this->parameters->get('page'));
$transformer = new UserGroupTransformer();
$transformer->setParameters($this->parameters); // give params to transformer
return response()
->json($this->jsonApiList(self::RESOURCE_KEY, $paginator, $transformer))
->header('Content-Type', self::CONTENT_TYPE)
;
}
}

View File

@@ -41,7 +41,6 @@ enum UserRoleEnum: string
// manage other financial objects:
case MANAGE_BUDGETS = 'mng_budgets';
case MANAGE_PIGGY_BANKS = 'mng_piggies';
case MANAGE_REPETITIONS = 'mng_reps';
case MANAGE_SUBSCRIPTIONS = 'mng_subscriptions';
case MANAGE_RULES = 'mng_rules';
case MANAGE_RECURRING = 'mng_recurring';
@@ -51,7 +50,7 @@ enum UserRoleEnum: string
// view and generate reports
case VIEW_REPORTS = 'view_reports';
// view memberships. needs FULL to manage them.
// view memberships AND roles. needs FULL to manage them.
case VIEW_MEMBERSHIPS = 'view_memberships';
// everything the creator can, except remove/change original creator and delete group

View File

@@ -235,12 +235,12 @@ class BudgetLimitController extends Controller
new Collection([$budgetLimit->budget]),
$budgetLimit->transactionCurrency
);
$daysLeft = $this->activeDaysLeft($limit->start_date, $limit->end_date);
$array['spent'] = $spentArr[$budgetLimit->transactionCurrency->id]['sum'] ?? '0';
$array['left_formatted'] = app('amount')->formatAnything($limit->transactionCurrency, bcadd($array['spent'], $array['amount']));
$array['amount_formatted'] = app('amount')->formatAnything($limit->transactionCurrency, $limit['amount']);
$array['days_left'] = (string)$this->activeDaysLeft($limit->start_date, $limit->end_date);
// left per day:
$array['left_per_day'] = bcdiv(bcadd($array['spent'], $array['amount']), $array['days_left']);
$array['days_left'] = (string)$daysLeft;
$array['left_per_day'] = 0 === $daysLeft ? bcadd($array['spent'], $array['amount']) : bcdiv(bcadd($array['spent'], $array['amount']), $array['days_left']);
// left per day formatted.
$array['amount'] = app('steam')->bcround($limit['amount'], $limit->transactionCurrency->decimal_places);

View File

@@ -0,0 +1,45 @@
<?php
/*
* CreateController.php
* Copyright (c) 2024 james@firefly-iii.org.
*
* This file is part of Firefly III (https://github.com/firefly-iii).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see https://www.gnu.org/licenses/.
*/
declare(strict_types=1);
namespace FireflyIII\Http\Controllers\UserGroup;
use FireflyIII\Http\Controllers\Controller;
use Illuminate\Contracts\View\Factory;
use Illuminate\Contracts\View\View;
use Illuminate\Foundation\Application;
class CreateController extends Controller
{
/**
* @return Application|Factory|\Illuminate\Contracts\Foundation\Application|View
*/
public function create()
{
$title = (string)trans('firefly.administrations_page_title');
$subTitle = (string)trans('firefly.administrations_page_sub_title');
$mainTitleIcon = 'fa-book';
app('log')->debug(sprintf('Now at %s', __METHOD__));
return view('administrations.create')->with(compact('title', 'subTitle', 'mainTitleIcon'));
}
}

View File

@@ -0,0 +1,47 @@
<?php
/*
* IndexController.php
* Copyright (c) 2024 james@firefly-iii.org.
*
* This file is part of Firefly III (https://github.com/firefly-iii).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see https://www.gnu.org/licenses/.
*/
declare(strict_types=1);
namespace FireflyIII\Http\Controllers\UserGroup;
use FireflyIII\Http\Controllers\Controller;
use Illuminate\Contracts\View\Factory;
use Illuminate\Http\Request;
use Illuminate\View\View;
class IndexController extends Controller
{
/**
* Show all administrations.
*
* @return Factory|View
*/
public function index(Request $request)
{
$title = (string)trans('firefly.administrations_page_title');
$subTitle = (string)trans('firefly.administrations_page_sub_title');
$mainTitleIcon = 'fa-book';
app('log')->debug(sprintf('Now at %s', __METHOD__));
return view('administrations.index')->with(compact('title', 'subTitle', 'mainTitleIcon'));
}
}

View File

@@ -98,6 +98,7 @@ class UserGroupRepository implements UserGroupRepositoryInterface
public function get(): Collection
{
$collection = new Collection();
$set = [];
$memberships = $this->user->groupMemberships()->get();
/** @var GroupMembership $membership */
@@ -105,9 +106,14 @@ class UserGroupRepository implements UserGroupRepositoryInterface
/** @var null|UserGroup $group */
$group = $membership->userGroup()->first();
if (null !== $group) {
$collection->push($group);
$groupId = (int)$group->id;
if (in_array($groupId, $set, true)) {
continue;
}
$set[$groupId] = $group;
}
}
$collection->push(...$set);
return $collection;
}

View File

@@ -248,9 +248,9 @@ class Navigation
'1M' => 'addMonth',
'month' => 'addMonth',
'monthly' => 'addMonth',
'3M' => 'addMonths',
'quarter' => 'addMonths',
'quarterly' => 'addMonths',
'3M' => 'addQuarter',
'quarter' => 'addQuarter',
'quarterly' => 'addQuarter',
'6M' => 'addMonths',
'half-year' => 'addMonths',
'half_year' => 'addMonths',
@@ -258,7 +258,7 @@ class Navigation
'yearly' => 'addYear',
'1Y' => 'addYear',
];
$modifierMap = ['quarter' => 3, '3M' => 3, 'quarterly' => 3, 'half-year' => 6, 'half_year' => 6, '6M' => 6];
$modifierMap = ['half-year' => 6, 'half_year' => 6, '6M' => 6];
$subDay = ['week', 'weekly', '1W', 'month', 'monthly', '1M', '3M', 'quarter', 'quarterly', '6M', 'half-year', 'half_year', '1Y', 'year', 'yearly'];
if ('custom' === $repeatFreq) {

View File

@@ -36,10 +36,14 @@ use Illuminate\Support\Collection;
class UserGroupTransformer extends AbstractTransformer
{
private array $memberships;
private array $membershipsVisible;
private array $inUse;
public function __construct()
{
$this->memberships = [];
$this->memberships = [];
$this->membershipsVisible = [];
$this->inUse = [];
}
public function collectMetaData(Collection $objects): Collection
@@ -51,8 +55,10 @@ class UserGroupTransformer extends AbstractTransformer
/** @var UserGroup $userGroup */
foreach ($objects as $userGroup) {
$userGroupId = $userGroup->id;
$access = $user->hasRoleInGroupOrOwner($userGroup, UserRoleEnum::VIEW_MEMBERSHIPS) || $user->hasRole('owner');
$userGroupId = $userGroup->id;
$this->inUse[$userGroupId] = $user->user_group_id === $userGroupId;
$access = $user->hasRoleInGroupOrOwner($userGroup, UserRoleEnum::VIEW_MEMBERSHIPS) || $user->hasRole('owner');
$this->membershipsVisible[$userGroupId] = $access;
if ($access) {
$groupMemberships = $userGroup->groupMemberships()->get();
@@ -62,6 +68,7 @@ class UserGroupTransformer extends AbstractTransformer
'user_id' => (string)$groupMembership->user_id,
'user_email' => $groupMembership->user->email,
'role' => $groupMembership->userRole->title,
'you' => $groupMembership->user_id === $user->id,
];
}
}
@@ -77,11 +84,13 @@ class UserGroupTransformer extends AbstractTransformer
public function transform(UserGroup $userGroup): array
{
return [
'id' => $userGroup->id,
'created_at' => $userGroup->created_at->toAtomString(),
'updated_at' => $userGroup->updated_at->toAtomString(),
'title' => $userGroup->title,
'members' => $this->memberships[$userGroup->id] ?? [],
'id' => $userGroup->id,
'created_at' => $userGroup->created_at->toAtomString(),
'updated_at' => $userGroup->updated_at->toAtomString(),
'in_use' => $this->inUse[$userGroup->id] ?? false,
'title' => $userGroup->title,
'can_see_members' => $this->membershipsVisible[$userGroup->id] ?? false,
'members' => $this->memberships[$userGroup->id] ?? [],
];
// if the user has a specific role in this group, then collect the memberships.
}

View File

@@ -0,0 +1,45 @@
/*
* list.js
* Copyright (c) 2022 james@firefly-iii.org
*
* This file is part of Firefly III (https://github.com/firefly-iii).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import {api} from "../../../../boot/axios";
import format from "date-fns/format";
export default class Get {
// /**
// *
// * @param identifier
// * @param params
// * @returns {Promise<AxiosResponse<any>>}
// */
// show(identifier, params) {
// return api.get('/api/v2/accounts/' + identifier, {params: params});
// }
/**
*
* @param params
* @returns {Promise<AxiosResponse<any>>}
*/
index(params) {
return api.get('/api/v2/user-groups', {params: params});
}
}

View File

@@ -0,0 +1,136 @@
/*
* show.js
* Copyright (c) 2024 james@firefly-iii.org.
*
* This file is part of Firefly III (https://github.com/firefly-iii).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see https://www.gnu.org/licenses/.
*/
import '../../boot/bootstrap.js';
import dates from "../shared/dates.js";
import i18next from "i18next";
import {format} from "date-fns";
import '@ag-grid-community/styles/ag-grid.css';
import '@ag-grid-community/styles/ag-theme-alpine.css';
import '../../css/grid-ff3-theme.css';
import Get from "../../api/v2/model/user-group/get.js";
let index = function () {
return {
// notifications
notifications: {
error: {
show: false, text: '', url: '',
}, success: {
show: false, text: '', url: '',
}, wait: {
show: false, text: '',
}
},
editors: {},
userGroups: [],
format(date) {
return format(date, i18next.t('config.date_time_fns'));
},
init() {
this.notifications.wait.show = true;
this.notifications.wait.text = i18next.t('firefly.wait_loading_data')
this.loadAdministrations();
},
loadAdministrations() {
this.notifications.wait.show = true;
this.notifications.wait.text = i18next.t('firefly.wait_loading_data')
this.accounts = [];
(new Get()).index({page: this.page}).then(response => {
for (let i = 0; i < response.data.data.length; i++) {
if (response.data.data.hasOwnProperty(i)) {
let current = response.data.data[i];
let group = {
id: parseInt(current.id),
title: current.attributes.title,
in_use: current.attributes.in_use,
owner: '',
you: '',
memberCountExceptYou: 0,
isOwner: false,
membersVisible: current.attributes.can_see_members,
members: [],
};
console.log('Processing group #' + group.id + ' (' + group.title + ')' );
let memberships = {};
for (let j = 0; j < current.attributes.members.length; j++) {
let member = current.attributes.members[j];
console.log('Found member ' + member.user_email, member.you, member.role);
if ('owner' === member.role) {
group.owner = i18next.t('firefly.administration_owner', {email: member.user_email});
}
if (true === member.you && 'owner' === member.role) {
console.log('You are owner of group ' + group.title );
group.isOwner = true;
}
if (true === member.you) {
group.you = i18next.t('firefly.administration_you', {role: i18next.t('firefly.administration_role_' + member.role)});
continue;
}
if (false === member.you) {
group.memberCountExceptYou++;
const userEmail = member.user_email;
if (!memberships.hasOwnProperty(userEmail)) {
memberships[userEmail] = {
email: userEmail,
roles: []
};
}
memberships[userEmail].roles.push(i18next.t('firefly.administration_role_' + member.role));
}
}
group.members = Object.values(memberships);
this.userGroups.push(group);
}
}
this.notifications.wait.show = false;
// add click trigger thing.
});
},
}
}
let comps = {index, dates};
function loadPage() {
Object.keys(comps).forEach(comp => {
console.log(`Loading page component "${comp}"`);
let data = comps[comp]();
Alpine.data(comp, () => data);
});
Alpine.start();
}
// wait for load until bootstrapped event is received.
document.addEventListener('firefly-iii-bootstrapped', () => {
console.log('Loaded through event listener.');
loadPage();
});
// or is bootstrapped before event is triggered.
if (window.bootstrapped) {
console.log('Loaded through window variable.');
loadPage();
}

View File

@@ -1419,6 +1419,28 @@ return [
// Financial administrations
'administration_index' => 'Financial administration',
'administrations_index_menu' => 'Financial administration(s)',
'administrations_breadcrumb' => 'Financial administrations',
'administrations_page_title' => 'Financial administrations',
'administrations_page_sub_title' => 'Overview',
'create_administration' => 'Create new administration',
'administration_owner' => 'Administration owner: {{email}}',
'administration_you' => 'Your role: {{role}}',
'other_users_in_admin' => 'Other users in this administration',
// roles
'administration_role_owner' => 'Owner',
'administration_role_ro' => 'Read-only',
'administration_role_mng_trx' => 'Manage transactions',
'administration_role_mng_meta' => 'Manage classification and meta-data',
'administration_role_mng_budgets' => 'Manage budgets',
'administration_role_mng_piggies' => 'Manage piggy banks',
'administration_role_mng_subscriptions' => 'Manage subscriptions',
'administration_role_mng_rules' => 'Manage rules',
'administration_role_mng_recurring' => 'Manage recurring transactions ',
'administration_role_mng_webhooks' => 'Manage webhooks',
'administration_role_mng_currencies' => 'Manage currencies',
'administration_role_view_reports' => 'View reports',
'administration_role_full' => 'Full access',
// profile:
'purge_data_title' => 'Purge data from Firefly III',

View File

@@ -1419,6 +1419,28 @@ return [
// Financial administrations
'administration_index' => 'Administració financera',
'administrations_index_menu' => 'Administració financera',
'administrations_breadcrumb' => 'Financial administrations',
'administrations_page_title' => 'Financial administrations',
'administrations_page_sub_title' => 'Overview',
'create_administration' => 'Create new administration',
'administration_owner' => 'Administration owner: {{email}}',
'administration_you' => 'Your role: {{role}}',
'other_users_in_admin' => 'Other users in this administration',
// roles
'administration_role_owner' => 'Owner',
'administration_role_ro' => 'Read-only',
'administration_role_mng_trx' => 'Manage transactions',
'administration_role_mng_meta' => 'Manage classification and meta-data',
'administration_role_mng_budgets' => 'Manage budgets',
'administration_role_mng_piggies' => 'Manage piggy banks',
'administration_role_mng_subscriptions' => 'Manage subscriptions',
'administration_role_mng_rules' => 'Manage rules',
'administration_role_mng_recurring' => 'Manage recurring transactions ',
'administration_role_mng_webhooks' => 'Manage webhooks',
'administration_role_mng_currencies' => 'Manage currencies',
'administration_role_view_reports' => 'View reports',
'administration_role_full' => 'Full access',
// profile:
'purge_data_title' => 'Purgar dades de Firefly III',

View File

@@ -1419,6 +1419,28 @@ return [
// Financial administrations
'administration_index' => 'Financial administration',
'administrations_index_menu' => 'Financial administration(s)',
'administrations_breadcrumb' => 'Financial administrations',
'administrations_page_title' => 'Financial administrations',
'administrations_page_sub_title' => 'Overview',
'create_administration' => 'Create new administration',
'administration_owner' => 'Administration owner: {{email}}',
'administration_you' => 'Your role: {{role}}',
'other_users_in_admin' => 'Other users in this administration',
// roles
'administration_role_owner' => 'Owner',
'administration_role_ro' => 'Read-only',
'administration_role_mng_trx' => 'Manage transactions',
'administration_role_mng_meta' => 'Manage classification and meta-data',
'administration_role_mng_budgets' => 'Manage budgets',
'administration_role_mng_piggies' => 'Manage piggy banks',
'administration_role_mng_subscriptions' => 'Manage subscriptions',
'administration_role_mng_rules' => 'Manage rules',
'administration_role_mng_recurring' => 'Manage recurring transactions ',
'administration_role_mng_webhooks' => 'Manage webhooks',
'administration_role_mng_currencies' => 'Manage currencies',
'administration_role_view_reports' => 'View reports',
'administration_role_full' => 'Full access',
// profile:
'purge_data_title' => 'Purge data from Firefly III',

View File

@@ -1419,6 +1419,28 @@ return [
// Financial administrations
'administration_index' => 'Financial administration',
'administrations_index_menu' => 'Financial administration(s)',
'administrations_breadcrumb' => 'Financial administrations',
'administrations_page_title' => 'Financial administrations',
'administrations_page_sub_title' => 'Overview',
'create_administration' => 'Create new administration',
'administration_owner' => 'Administration owner: {{email}}',
'administration_you' => 'Your role: {{role}}',
'other_users_in_admin' => 'Other users in this administration',
// roles
'administration_role_owner' => 'Owner',
'administration_role_ro' => 'Read-only',
'administration_role_mng_trx' => 'Manage transactions',
'administration_role_mng_meta' => 'Manage classification and meta-data',
'administration_role_mng_budgets' => 'Manage budgets',
'administration_role_mng_piggies' => 'Manage piggy banks',
'administration_role_mng_subscriptions' => 'Manage subscriptions',
'administration_role_mng_rules' => 'Manage rules',
'administration_role_mng_recurring' => 'Manage recurring transactions ',
'administration_role_mng_webhooks' => 'Manage webhooks',
'administration_role_mng_currencies' => 'Manage currencies',
'administration_role_view_reports' => 'View reports',
'administration_role_full' => 'Full access',
// profile:
'purge_data_title' => 'Purge data from Firefly III',

View File

@@ -1419,6 +1419,28 @@ return [
// Financial administrations
'administration_index' => 'Finanzverwaltung',
'administrations_index_menu' => 'Finanzverwaltung(en)',
'administrations_breadcrumb' => 'Finanzverwaltungen',
'administrations_page_title' => 'Finanzverwaltungen',
'administrations_page_sub_title' => 'Übersicht',
'create_administration' => 'Create new administration',
'administration_owner' => 'Administration owner: {{email}}',
'administration_you' => 'Your role: {{role}}',
'other_users_in_admin' => 'Other users in this administration',
// roles
'administration_role_owner' => 'Owner',
'administration_role_ro' => 'Read-only',
'administration_role_mng_trx' => 'Manage transactions',
'administration_role_mng_meta' => 'Manage classification and meta-data',
'administration_role_mng_budgets' => 'Manage budgets',
'administration_role_mng_piggies' => 'Manage piggy banks',
'administration_role_mng_subscriptions' => 'Manage subscriptions',
'administration_role_mng_rules' => 'Manage rules',
'administration_role_mng_recurring' => 'Manage recurring transactions ',
'administration_role_mng_webhooks' => 'Manage webhooks',
'administration_role_mng_currencies' => 'Manage currencies',
'administration_role_view_reports' => 'View reports',
'administration_role_full' => 'Full access',
// profile:
'purge_data_title' => 'Daten aus Firefly III vernichten',

View File

@@ -1419,6 +1419,28 @@ return [
// Financial administrations
'administration_index' => 'Οικονομική διαχείριση',
'administrations_index_menu' => 'Financial administration(s)',
'administrations_breadcrumb' => 'Financial administrations',
'administrations_page_title' => 'Financial administrations',
'administrations_page_sub_title' => 'Overview',
'create_administration' => 'Create new administration',
'administration_owner' => 'Administration owner: {{email}}',
'administration_you' => 'Your role: {{role}}',
'other_users_in_admin' => 'Other users in this administration',
// roles
'administration_role_owner' => 'Owner',
'administration_role_ro' => 'Read-only',
'administration_role_mng_trx' => 'Manage transactions',
'administration_role_mng_meta' => 'Manage classification and meta-data',
'administration_role_mng_budgets' => 'Manage budgets',
'administration_role_mng_piggies' => 'Manage piggy banks',
'administration_role_mng_subscriptions' => 'Manage subscriptions',
'administration_role_mng_rules' => 'Manage rules',
'administration_role_mng_recurring' => 'Manage recurring transactions ',
'administration_role_mng_webhooks' => 'Manage webhooks',
'administration_role_mng_currencies' => 'Manage currencies',
'administration_role_view_reports' => 'View reports',
'administration_role_full' => 'Full access',
// profile:
'purge_data_title' => 'Εκκαθάριση δεδομένων από το Firefly III',

View File

@@ -1419,6 +1419,28 @@ return [
// Financial administrations
'administration_index' => 'Financial administration',
'administrations_index_menu' => 'Financial administration(s)',
'administrations_breadcrumb' => 'Financial administrations',
'administrations_page_title' => 'Financial administrations',
'administrations_page_sub_title' => 'Overview',
'create_administration' => 'Create new administration',
'administration_owner' => 'Administration owner: {{email}}',
'administration_you' => 'Your role: {{role}}',
'other_users_in_admin' => 'Other users in this administration',
// roles
'administration_role_owner' => 'Owner',
'administration_role_ro' => 'Read-only',
'administration_role_mng_trx' => 'Manage transactions',
'administration_role_mng_meta' => 'Manage classification and meta-data',
'administration_role_mng_budgets' => 'Manage budgets',
'administration_role_mng_piggies' => 'Manage piggy banks',
'administration_role_mng_subscriptions' => 'Manage subscriptions',
'administration_role_mng_rules' => 'Manage rules',
'administration_role_mng_recurring' => 'Manage recurring transactions ',
'administration_role_mng_webhooks' => 'Manage webhooks',
'administration_role_mng_currencies' => 'Manage currencies',
'administration_role_view_reports' => 'View reports',
'administration_role_full' => 'Full access',
// profile:
'purge_data_title' => 'Purge data from Firefly III',

View File

@@ -1383,6 +1383,28 @@ return [
// Financial administrations
'administration_index' => 'Financial administration',
'administrations_index_menu' => 'Financial administration(s)',
'administrations_breadcrumb' => 'Financial administrations',
'administrations_page_title' => 'Financial administrations',
'administrations_page_sub_title' => 'Overview',
'create_administration' => 'Create new administration',
'administration_owner' => 'Administration owner: {{email}}',
'administration_you' => 'Your role: {{role}}',
'other_users_in_admin' => 'Other users in this administration',
// roles
'administration_role_owner' => 'Owner',
'administration_role_ro' => 'Read-only',
'administration_role_mng_trx' => 'Manage transactions',
'administration_role_mng_meta' => 'Manage classification and meta-data',
'administration_role_mng_budgets' => 'Manage budgets',
'administration_role_mng_piggies' => 'Manage piggy banks',
'administration_role_mng_subscriptions' => 'Manage subscriptions',
'administration_role_mng_rules' => 'Manage rules',
'administration_role_mng_recurring' => 'Manage recurring transactions ',
'administration_role_mng_webhooks' => 'Manage webhooks',
'administration_role_mng_currencies' => 'Manage currencies',
'administration_role_view_reports' => 'View reports',
'administration_role_full' => 'Full access',
// profile:
'purge_data_title' => 'Purge data from Firefly III',

View File

@@ -1419,6 +1419,28 @@ return [
// Financial administrations
'administration_index' => 'Administración financiera',
'administrations_index_menu' => 'Administración(es) financiera(s)',
'administrations_breadcrumb' => 'Financial administrations',
'administrations_page_title' => 'Financial administrations',
'administrations_page_sub_title' => 'Overview',
'create_administration' => 'Create new administration',
'administration_owner' => 'Administration owner: {{email}}',
'administration_you' => 'Your role: {{role}}',
'other_users_in_admin' => 'Other users in this administration',
// roles
'administration_role_owner' => 'Owner',
'administration_role_ro' => 'Read-only',
'administration_role_mng_trx' => 'Manage transactions',
'administration_role_mng_meta' => 'Manage classification and meta-data',
'administration_role_mng_budgets' => 'Manage budgets',
'administration_role_mng_piggies' => 'Manage piggy banks',
'administration_role_mng_subscriptions' => 'Manage subscriptions',
'administration_role_mng_rules' => 'Manage rules',
'administration_role_mng_recurring' => 'Manage recurring transactions ',
'administration_role_mng_webhooks' => 'Manage webhooks',
'administration_role_mng_currencies' => 'Manage currencies',
'administration_role_view_reports' => 'View reports',
'administration_role_full' => 'Full access',
// profile:
'purge_data_title' => 'Purgar datos de Firefly III',

View File

@@ -1419,6 +1419,28 @@ return [
// Financial administrations
'administration_index' => 'Financial administration',
'administrations_index_menu' => 'Financial administration(s)',
'administrations_breadcrumb' => 'Financial administrations',
'administrations_page_title' => 'Financial administrations',
'administrations_page_sub_title' => 'Overview',
'create_administration' => 'Create new administration',
'administration_owner' => 'Administration owner: {{email}}',
'administration_you' => 'Your role: {{role}}',
'other_users_in_admin' => 'Other users in this administration',
// roles
'administration_role_owner' => 'Owner',
'administration_role_ro' => 'Read-only',
'administration_role_mng_trx' => 'Manage transactions',
'administration_role_mng_meta' => 'Manage classification and meta-data',
'administration_role_mng_budgets' => 'Manage budgets',
'administration_role_mng_piggies' => 'Manage piggy banks',
'administration_role_mng_subscriptions' => 'Manage subscriptions',
'administration_role_mng_rules' => 'Manage rules',
'administration_role_mng_recurring' => 'Manage recurring transactions ',
'administration_role_mng_webhooks' => 'Manage webhooks',
'administration_role_mng_currencies' => 'Manage currencies',
'administration_role_view_reports' => 'View reports',
'administration_role_full' => 'Full access',
// profile:
'purge_data_title' => 'Purge data from Firefly III',

View File

@@ -1419,6 +1419,28 @@ return [
// Financial administrations
'administration_index' => 'Administration financière',
'administrations_index_menu' => 'Administration(s) financière(s)',
'administrations_breadcrumb' => 'Financial administrations',
'administrations_page_title' => 'Financial administrations',
'administrations_page_sub_title' => 'Overview',
'create_administration' => 'Create new administration',
'administration_owner' => 'Administration owner: {{email}}',
'administration_you' => 'Your role: {{role}}',
'other_users_in_admin' => 'Other users in this administration',
// roles
'administration_role_owner' => 'Owner',
'administration_role_ro' => 'Read-only',
'administration_role_mng_trx' => 'Manage transactions',
'administration_role_mng_meta' => 'Manage classification and meta-data',
'administration_role_mng_budgets' => 'Manage budgets',
'administration_role_mng_piggies' => 'Manage piggy banks',
'administration_role_mng_subscriptions' => 'Manage subscriptions',
'administration_role_mng_rules' => 'Manage rules',
'administration_role_mng_recurring' => 'Manage recurring transactions ',
'administration_role_mng_webhooks' => 'Manage webhooks',
'administration_role_mng_currencies' => 'Manage currencies',
'administration_role_view_reports' => 'View reports',
'administration_role_full' => 'Full access',
// profile:
'purge_data_title' => 'Purger des données de Firefly III',

View File

@@ -1419,6 +1419,28 @@ return [
// Financial administrations
'administration_index' => 'Financial administration',
'administrations_index_menu' => 'Financial administration(s)',
'administrations_breadcrumb' => 'Financial administrations',
'administrations_page_title' => 'Financial administrations',
'administrations_page_sub_title' => 'Overview',
'create_administration' => 'Create new administration',
'administration_owner' => 'Administration owner: {{email}}',
'administration_you' => 'Your role: {{role}}',
'other_users_in_admin' => 'Other users in this administration',
// roles
'administration_role_owner' => 'Owner',
'administration_role_ro' => 'Read-only',
'administration_role_mng_trx' => 'Manage transactions',
'administration_role_mng_meta' => 'Manage classification and meta-data',
'administration_role_mng_budgets' => 'Manage budgets',
'administration_role_mng_piggies' => 'Manage piggy banks',
'administration_role_mng_subscriptions' => 'Manage subscriptions',
'administration_role_mng_rules' => 'Manage rules',
'administration_role_mng_recurring' => 'Manage recurring transactions ',
'administration_role_mng_webhooks' => 'Manage webhooks',
'administration_role_mng_currencies' => 'Manage currencies',
'administration_role_view_reports' => 'View reports',
'administration_role_full' => 'Full access',
// profile:
'purge_data_title' => 'Purge data from Firefly III',

View File

@@ -1419,6 +1419,28 @@ return [
// Financial administrations
'administration_index' => 'Financial administration',
'administrations_index_menu' => 'Financial administration(s)',
'administrations_breadcrumb' => 'Financial administrations',
'administrations_page_title' => 'Financial administrations',
'administrations_page_sub_title' => 'Overview',
'create_administration' => 'Create new administration',
'administration_owner' => 'Administration owner: {{email}}',
'administration_you' => 'Your role: {{role}}',
'other_users_in_admin' => 'Other users in this administration',
// roles
'administration_role_owner' => 'Owner',
'administration_role_ro' => 'Read-only',
'administration_role_mng_trx' => 'Manage transactions',
'administration_role_mng_meta' => 'Manage classification and meta-data',
'administration_role_mng_budgets' => 'Manage budgets',
'administration_role_mng_piggies' => 'Manage piggy banks',
'administration_role_mng_subscriptions' => 'Manage subscriptions',
'administration_role_mng_rules' => 'Manage rules',
'administration_role_mng_recurring' => 'Manage recurring transactions ',
'administration_role_mng_webhooks' => 'Manage webhooks',
'administration_role_mng_currencies' => 'Manage currencies',
'administration_role_view_reports' => 'View reports',
'administration_role_full' => 'Full access',
// profile:
'purge_data_title' => 'Purge data from Firefly III',

View File

@@ -1419,6 +1419,28 @@ return [
// Financial administrations
'administration_index' => 'Amministrazione finanziaria',
'administrations_index_menu' => 'Amministratori finanziari',
'administrations_breadcrumb' => 'Financial administrations',
'administrations_page_title' => 'Financial administrations',
'administrations_page_sub_title' => 'Overview',
'create_administration' => 'Create new administration',
'administration_owner' => 'Administration owner: {{email}}',
'administration_you' => 'Your role: {{role}}',
'other_users_in_admin' => 'Other users in this administration',
// roles
'administration_role_owner' => 'Owner',
'administration_role_ro' => 'Read-only',
'administration_role_mng_trx' => 'Manage transactions',
'administration_role_mng_meta' => 'Manage classification and meta-data',
'administration_role_mng_budgets' => 'Manage budgets',
'administration_role_mng_piggies' => 'Manage piggy banks',
'administration_role_mng_subscriptions' => 'Manage subscriptions',
'administration_role_mng_rules' => 'Manage rules',
'administration_role_mng_recurring' => 'Manage recurring transactions ',
'administration_role_mng_webhooks' => 'Manage webhooks',
'administration_role_mng_currencies' => 'Manage currencies',
'administration_role_view_reports' => 'View reports',
'administration_role_full' => 'Full access',
// profile:
'purge_data_title' => 'Elimina i dati da Firefly III',

View File

@@ -1419,6 +1419,28 @@ return [
// Financial administrations
'administration_index' => '財務管理',
'administrations_index_menu' => '財務管理',
'administrations_breadcrumb' => 'Financial administrations',
'administrations_page_title' => 'Financial administrations',
'administrations_page_sub_title' => 'Overview',
'create_administration' => 'Create new administration',
'administration_owner' => 'Administration owner: {{email}}',
'administration_you' => 'Your role: {{role}}',
'other_users_in_admin' => 'Other users in this administration',
// roles
'administration_role_owner' => 'Owner',
'administration_role_ro' => 'Read-only',
'administration_role_mng_trx' => 'Manage transactions',
'administration_role_mng_meta' => 'Manage classification and meta-data',
'administration_role_mng_budgets' => 'Manage budgets',
'administration_role_mng_piggies' => 'Manage piggy banks',
'administration_role_mng_subscriptions' => 'Manage subscriptions',
'administration_role_mng_rules' => 'Manage rules',
'administration_role_mng_recurring' => 'Manage recurring transactions ',
'administration_role_mng_webhooks' => 'Manage webhooks',
'administration_role_mng_currencies' => 'Manage currencies',
'administration_role_view_reports' => 'View reports',
'administration_role_full' => 'Full access',
// profile:
'purge_data_title' => 'Firefly III からデータを消去',

View File

@@ -1419,6 +1419,28 @@ return [
// Financial administrations
'administration_index' => '재정 관리',
'administrations_index_menu' => '재정 관리자(들)',
'administrations_breadcrumb' => 'Financial administrations',
'administrations_page_title' => 'Financial administrations',
'administrations_page_sub_title' => 'Overview',
'create_administration' => 'Create new administration',
'administration_owner' => 'Administration owner: {{email}}',
'administration_you' => 'Your role: {{role}}',
'other_users_in_admin' => 'Other users in this administration',
// roles
'administration_role_owner' => 'Owner',
'administration_role_ro' => 'Read-only',
'administration_role_mng_trx' => 'Manage transactions',
'administration_role_mng_meta' => 'Manage classification and meta-data',
'administration_role_mng_budgets' => 'Manage budgets',
'administration_role_mng_piggies' => 'Manage piggy banks',
'administration_role_mng_subscriptions' => 'Manage subscriptions',
'administration_role_mng_rules' => 'Manage rules',
'administration_role_mng_recurring' => 'Manage recurring transactions ',
'administration_role_mng_webhooks' => 'Manage webhooks',
'administration_role_mng_currencies' => 'Manage currencies',
'administration_role_view_reports' => 'View reports',
'administration_role_full' => 'Full access',
// profile:
'purge_data_title' => 'Firefly III에서 데이터 제거',

View File

@@ -1419,6 +1419,28 @@ return [
// Financial administrations
'administration_index' => 'Økonomisk administrasjon',
'administrations_index_menu' => 'Økonomisk administrasjon',
'administrations_breadcrumb' => 'Financial administrations',
'administrations_page_title' => 'Financial administrations',
'administrations_page_sub_title' => 'Overview',
'create_administration' => 'Create new administration',
'administration_owner' => 'Administration owner: {{email}}',
'administration_you' => 'Your role: {{role}}',
'other_users_in_admin' => 'Other users in this administration',
// roles
'administration_role_owner' => 'Owner',
'administration_role_ro' => 'Read-only',
'administration_role_mng_trx' => 'Manage transactions',
'administration_role_mng_meta' => 'Manage classification and meta-data',
'administration_role_mng_budgets' => 'Manage budgets',
'administration_role_mng_piggies' => 'Manage piggy banks',
'administration_role_mng_subscriptions' => 'Manage subscriptions',
'administration_role_mng_rules' => 'Manage rules',
'administration_role_mng_recurring' => 'Manage recurring transactions ',
'administration_role_mng_webhooks' => 'Manage webhooks',
'administration_role_mng_currencies' => 'Manage currencies',
'administration_role_view_reports' => 'View reports',
'administration_role_full' => 'Full access',
// profile:
'purge_data_title' => 'Fjern data fra Firefly III',

View File

@@ -1419,6 +1419,28 @@ return [
// Financial administrations
'administration_index' => 'Financiële administratie',
'administrations_index_menu' => 'Financiële administratie(s)',
'administrations_breadcrumb' => 'Financial administrations',
'administrations_page_title' => 'Financial administrations',
'administrations_page_sub_title' => 'Overview',
'create_administration' => 'Create new administration',
'administration_owner' => 'Administration owner: {{email}}',
'administration_you' => 'Your role: {{role}}',
'other_users_in_admin' => 'Other users in this administration',
// roles
'administration_role_owner' => 'Owner',
'administration_role_ro' => 'Read-only',
'administration_role_mng_trx' => 'Manage transactions',
'administration_role_mng_meta' => 'Manage classification and meta-data',
'administration_role_mng_budgets' => 'Manage budgets',
'administration_role_mng_piggies' => 'Manage piggy banks',
'administration_role_mng_subscriptions' => 'Manage subscriptions',
'administration_role_mng_rules' => 'Manage rules',
'administration_role_mng_recurring' => 'Manage recurring transactions ',
'administration_role_mng_webhooks' => 'Manage webhooks',
'administration_role_mng_currencies' => 'Manage currencies',
'administration_role_view_reports' => 'View reports',
'administration_role_full' => 'Full access',
// profile:
'purge_data_title' => 'Gegevens wissen uit Firefly III',

View File

@@ -1419,6 +1419,28 @@ return [
// Financial administrations
'administration_index' => 'Økonomisk administrasjon',
'administrations_index_menu' => 'Financial administration(s)',
'administrations_breadcrumb' => 'Financial administrations',
'administrations_page_title' => 'Financial administrations',
'administrations_page_sub_title' => 'Overview',
'create_administration' => 'Create new administration',
'administration_owner' => 'Administration owner: {{email}}',
'administration_you' => 'Your role: {{role}}',
'other_users_in_admin' => 'Other users in this administration',
// roles
'administration_role_owner' => 'Owner',
'administration_role_ro' => 'Read-only',
'administration_role_mng_trx' => 'Manage transactions',
'administration_role_mng_meta' => 'Manage classification and meta-data',
'administration_role_mng_budgets' => 'Manage budgets',
'administration_role_mng_piggies' => 'Manage piggy banks',
'administration_role_mng_subscriptions' => 'Manage subscriptions',
'administration_role_mng_rules' => 'Manage rules',
'administration_role_mng_recurring' => 'Manage recurring transactions ',
'administration_role_mng_webhooks' => 'Manage webhooks',
'administration_role_mng_currencies' => 'Manage currencies',
'administration_role_view_reports' => 'View reports',
'administration_role_full' => 'Full access',
// profile:
'purge_data_title' => 'Rens data frå Firefly III',

View File

@@ -1419,6 +1419,28 @@ return [
// Financial administrations
'administration_index' => 'Zarządzanie finansami',
'administrations_index_menu' => 'Zarządzanie finansami',
'administrations_breadcrumb' => 'Financial administrations',
'administrations_page_title' => 'Financial administrations',
'administrations_page_sub_title' => 'Overview',
'create_administration' => 'Create new administration',
'administration_owner' => 'Administration owner: {{email}}',
'administration_you' => 'Your role: {{role}}',
'other_users_in_admin' => 'Other users in this administration',
// roles
'administration_role_owner' => 'Owner',
'administration_role_ro' => 'Read-only',
'administration_role_mng_trx' => 'Manage transactions',
'administration_role_mng_meta' => 'Manage classification and meta-data',
'administration_role_mng_budgets' => 'Manage budgets',
'administration_role_mng_piggies' => 'Manage piggy banks',
'administration_role_mng_subscriptions' => 'Manage subscriptions',
'administration_role_mng_rules' => 'Manage rules',
'administration_role_mng_recurring' => 'Manage recurring transactions ',
'administration_role_mng_webhooks' => 'Manage webhooks',
'administration_role_mng_currencies' => 'Manage currencies',
'administration_role_view_reports' => 'View reports',
'administration_role_full' => 'Full access',
// profile:
'purge_data_title' => 'Wyczyść dane z Firefly III',

View File

@@ -1419,6 +1419,28 @@ return [
// Financial administrations
'administration_index' => 'Administração financeira',
'administrations_index_menu' => 'Administração(ões) financeira(s)',
'administrations_breadcrumb' => 'Financial administrations',
'administrations_page_title' => 'Financial administrations',
'administrations_page_sub_title' => 'Overview',
'create_administration' => 'Create new administration',
'administration_owner' => 'Administration owner: {{email}}',
'administration_you' => 'Your role: {{role}}',
'other_users_in_admin' => 'Other users in this administration',
// roles
'administration_role_owner' => 'Owner',
'administration_role_ro' => 'Read-only',
'administration_role_mng_trx' => 'Manage transactions',
'administration_role_mng_meta' => 'Manage classification and meta-data',
'administration_role_mng_budgets' => 'Manage budgets',
'administration_role_mng_piggies' => 'Manage piggy banks',
'administration_role_mng_subscriptions' => 'Manage subscriptions',
'administration_role_mng_rules' => 'Manage rules',
'administration_role_mng_recurring' => 'Manage recurring transactions ',
'administration_role_mng_webhooks' => 'Manage webhooks',
'administration_role_mng_currencies' => 'Manage currencies',
'administration_role_view_reports' => 'View reports',
'administration_role_full' => 'Full access',
// profile:
'purge_data_title' => 'Expurgar dados do Firefly III',

View File

@@ -1419,6 +1419,28 @@ return [
// Financial administrations
'administration_index' => 'Administração financeira',
'administrations_index_menu' => 'Administração financeira',
'administrations_breadcrumb' => 'Financial administrations',
'administrations_page_title' => 'Financial administrations',
'administrations_page_sub_title' => 'Overview',
'create_administration' => 'Create new administration',
'administration_owner' => 'Administration owner: {{email}}',
'administration_you' => 'Your role: {{role}}',
'other_users_in_admin' => 'Other users in this administration',
// roles
'administration_role_owner' => 'Owner',
'administration_role_ro' => 'Read-only',
'administration_role_mng_trx' => 'Manage transactions',
'administration_role_mng_meta' => 'Manage classification and meta-data',
'administration_role_mng_budgets' => 'Manage budgets',
'administration_role_mng_piggies' => 'Manage piggy banks',
'administration_role_mng_subscriptions' => 'Manage subscriptions',
'administration_role_mng_rules' => 'Manage rules',
'administration_role_mng_recurring' => 'Manage recurring transactions ',
'administration_role_mng_webhooks' => 'Manage webhooks',
'administration_role_mng_currencies' => 'Manage currencies',
'administration_role_view_reports' => 'View reports',
'administration_role_full' => 'Full access',
// profile:
'purge_data_title' => 'Purgue dados do Firefly III',

View File

@@ -1419,6 +1419,28 @@ return [
// Financial administrations
'administration_index' => 'Administrația financiară',
'administrations_index_menu' => 'Administrația financiară',
'administrations_breadcrumb' => 'Financial administrations',
'administrations_page_title' => 'Financial administrations',
'administrations_page_sub_title' => 'Overview',
'create_administration' => 'Create new administration',
'administration_owner' => 'Administration owner: {{email}}',
'administration_you' => 'Your role: {{role}}',
'other_users_in_admin' => 'Other users in this administration',
// roles
'administration_role_owner' => 'Owner',
'administration_role_ro' => 'Read-only',
'administration_role_mng_trx' => 'Manage transactions',
'administration_role_mng_meta' => 'Manage classification and meta-data',
'administration_role_mng_budgets' => 'Manage budgets',
'administration_role_mng_piggies' => 'Manage piggy banks',
'administration_role_mng_subscriptions' => 'Manage subscriptions',
'administration_role_mng_rules' => 'Manage rules',
'administration_role_mng_recurring' => 'Manage recurring transactions ',
'administration_role_mng_webhooks' => 'Manage webhooks',
'administration_role_mng_currencies' => 'Manage currencies',
'administration_role_view_reports' => 'View reports',
'administration_role_full' => 'Full access',
// profile:
'purge_data_title' => 'Curăță datele din Firefly III',

View File

@@ -1419,6 +1419,28 @@ return [
// Financial administrations
'administration_index' => 'Управление финансами',
'administrations_index_menu' => 'Управление финансами',
'administrations_breadcrumb' => 'Financial administrations',
'administrations_page_title' => 'Financial administrations',
'administrations_page_sub_title' => 'Overview',
'create_administration' => 'Create new administration',
'administration_owner' => 'Administration owner: {{email}}',
'administration_you' => 'Your role: {{role}}',
'other_users_in_admin' => 'Other users in this administration',
// roles
'administration_role_owner' => 'Owner',
'administration_role_ro' => 'Read-only',
'administration_role_mng_trx' => 'Manage transactions',
'administration_role_mng_meta' => 'Manage classification and meta-data',
'administration_role_mng_budgets' => 'Manage budgets',
'administration_role_mng_piggies' => 'Manage piggy banks',
'administration_role_mng_subscriptions' => 'Manage subscriptions',
'administration_role_mng_rules' => 'Manage rules',
'administration_role_mng_recurring' => 'Manage recurring transactions ',
'administration_role_mng_webhooks' => 'Manage webhooks',
'administration_role_mng_currencies' => 'Manage currencies',
'administration_role_view_reports' => 'View reports',
'administration_role_full' => 'Full access',
// profile:
'purge_data_title' => 'Уничтожить данные из Firefly III',

View File

@@ -1419,6 +1419,28 @@ return [
// Financial administrations
'administration_index' => 'Financial administration',
'administrations_index_menu' => 'Financial administration(s)',
'administrations_breadcrumb' => 'Financial administrations',
'administrations_page_title' => 'Financial administrations',
'administrations_page_sub_title' => 'Overview',
'create_administration' => 'Create new administration',
'administration_owner' => 'Administration owner: {{email}}',
'administration_you' => 'Your role: {{role}}',
'other_users_in_admin' => 'Other users in this administration',
// roles
'administration_role_owner' => 'Owner',
'administration_role_ro' => 'Read-only',
'administration_role_mng_trx' => 'Manage transactions',
'administration_role_mng_meta' => 'Manage classification and meta-data',
'administration_role_mng_budgets' => 'Manage budgets',
'administration_role_mng_piggies' => 'Manage piggy banks',
'administration_role_mng_subscriptions' => 'Manage subscriptions',
'administration_role_mng_rules' => 'Manage rules',
'administration_role_mng_recurring' => 'Manage recurring transactions ',
'administration_role_mng_webhooks' => 'Manage webhooks',
'administration_role_mng_currencies' => 'Manage currencies',
'administration_role_view_reports' => 'View reports',
'administration_role_full' => 'Full access',
// profile:
'purge_data_title' => 'Purge data from Firefly III',

View File

@@ -1419,6 +1419,28 @@ return [
// Financial administrations
'administration_index' => 'Finančna administracija',
'administrations_index_menu' => 'Finančna administracija',
'administrations_breadcrumb' => 'Financial administrations',
'administrations_page_title' => 'Financial administrations',
'administrations_page_sub_title' => 'Overview',
'create_administration' => 'Create new administration',
'administration_owner' => 'Administration owner: {{email}}',
'administration_you' => 'Your role: {{role}}',
'other_users_in_admin' => 'Other users in this administration',
// roles
'administration_role_owner' => 'Owner',
'administration_role_ro' => 'Read-only',
'administration_role_mng_trx' => 'Manage transactions',
'administration_role_mng_meta' => 'Manage classification and meta-data',
'administration_role_mng_budgets' => 'Manage budgets',
'administration_role_mng_piggies' => 'Manage piggy banks',
'administration_role_mng_subscriptions' => 'Manage subscriptions',
'administration_role_mng_rules' => 'Manage rules',
'administration_role_mng_recurring' => 'Manage recurring transactions ',
'administration_role_mng_webhooks' => 'Manage webhooks',
'administration_role_mng_currencies' => 'Manage currencies',
'administration_role_view_reports' => 'View reports',
'administration_role_full' => 'Full access',
// profile:
'purge_data_title' => 'Čiščenje podatkov iz Firefly III',

View File

@@ -1419,6 +1419,28 @@ return [
// Financial administrations
'administration_index' => 'Financial administration',
'administrations_index_menu' => 'Financial administration(s)',
'administrations_breadcrumb' => 'Financial administrations',
'administrations_page_title' => 'Financial administrations',
'administrations_page_sub_title' => 'Overview',
'create_administration' => 'Create new administration',
'administration_owner' => 'Administration owner: {{email}}',
'administration_you' => 'Your role: {{role}}',
'other_users_in_admin' => 'Other users in this administration',
// roles
'administration_role_owner' => 'Owner',
'administration_role_ro' => 'Read-only',
'administration_role_mng_trx' => 'Manage transactions',
'administration_role_mng_meta' => 'Manage classification and meta-data',
'administration_role_mng_budgets' => 'Manage budgets',
'administration_role_mng_piggies' => 'Manage piggy banks',
'administration_role_mng_subscriptions' => 'Manage subscriptions',
'administration_role_mng_rules' => 'Manage rules',
'administration_role_mng_recurring' => 'Manage recurring transactions ',
'administration_role_mng_webhooks' => 'Manage webhooks',
'administration_role_mng_currencies' => 'Manage currencies',
'administration_role_view_reports' => 'View reports',
'administration_role_full' => 'Full access',
// profile:
'purge_data_title' => 'Purge data from Firefly III',

View File

@@ -1419,6 +1419,28 @@ return [
// Financial administrations
'administration_index' => 'Financial administration',
'administrations_index_menu' => 'Financial administration(s)',
'administrations_breadcrumb' => 'Financial administrations',
'administrations_page_title' => 'Financial administrations',
'administrations_page_sub_title' => 'Overview',
'create_administration' => 'Create new administration',
'administration_owner' => 'Administration owner: {{email}}',
'administration_you' => 'Your role: {{role}}',
'other_users_in_admin' => 'Other users in this administration',
// roles
'administration_role_owner' => 'Owner',
'administration_role_ro' => 'Read-only',
'administration_role_mng_trx' => 'Manage transactions',
'administration_role_mng_meta' => 'Manage classification and meta-data',
'administration_role_mng_budgets' => 'Manage budgets',
'administration_role_mng_piggies' => 'Manage piggy banks',
'administration_role_mng_subscriptions' => 'Manage subscriptions',
'administration_role_mng_rules' => 'Manage rules',
'administration_role_mng_recurring' => 'Manage recurring transactions ',
'administration_role_mng_webhooks' => 'Manage webhooks',
'administration_role_mng_currencies' => 'Manage currencies',
'administration_role_view_reports' => 'View reports',
'administration_role_full' => 'Full access',
// profile:
'purge_data_title' => 'Purge data from Firefly III',

View File

@@ -1420,6 +1420,28 @@ return [
// Financial administrations
'administration_index' => 'Financial administration',
'administrations_index_menu' => 'Financial administration(s)',
'administrations_breadcrumb' => 'Financial administrations',
'administrations_page_title' => 'Financial administrations',
'administrations_page_sub_title' => 'Overview',
'create_administration' => 'Create new administration',
'administration_owner' => 'Administration owner: {{email}}',
'administration_you' => 'Your role: {{role}}',
'other_users_in_admin' => 'Other users in this administration',
// roles
'administration_role_owner' => 'Owner',
'administration_role_ro' => 'Read-only',
'administration_role_mng_trx' => 'Manage transactions',
'administration_role_mng_meta' => 'Manage classification and meta-data',
'administration_role_mng_budgets' => 'Manage budgets',
'administration_role_mng_piggies' => 'Manage piggy banks',
'administration_role_mng_subscriptions' => 'Manage subscriptions',
'administration_role_mng_rules' => 'Manage rules',
'administration_role_mng_recurring' => 'Manage recurring transactions ',
'administration_role_mng_webhooks' => 'Manage webhooks',
'administration_role_mng_currencies' => 'Manage currencies',
'administration_role_view_reports' => 'View reports',
'administration_role_full' => 'Full access',
// profile:
'purge_data_title' => 'Purge data from Firefly III',

View File

@@ -1419,6 +1419,28 @@ return [
// Financial administrations
'administration_index' => 'Фінансове управління',
'administrations_index_menu' => 'Управління фінансами',
'administrations_breadcrumb' => 'Financial administrations',
'administrations_page_title' => 'Financial administrations',
'administrations_page_sub_title' => 'Overview',
'create_administration' => 'Create new administration',
'administration_owner' => 'Administration owner: {{email}}',
'administration_you' => 'Your role: {{role}}',
'other_users_in_admin' => 'Other users in this administration',
// roles
'administration_role_owner' => 'Owner',
'administration_role_ro' => 'Read-only',
'administration_role_mng_trx' => 'Manage transactions',
'administration_role_mng_meta' => 'Manage classification and meta-data',
'administration_role_mng_budgets' => 'Manage budgets',
'administration_role_mng_piggies' => 'Manage piggy banks',
'administration_role_mng_subscriptions' => 'Manage subscriptions',
'administration_role_mng_rules' => 'Manage rules',
'administration_role_mng_recurring' => 'Manage recurring transactions ',
'administration_role_mng_webhooks' => 'Manage webhooks',
'administration_role_mng_currencies' => 'Manage currencies',
'administration_role_view_reports' => 'View reports',
'administration_role_full' => 'Full access',
// profile:
'purge_data_title' => 'Очистити дані з Firefly III',

View File

@@ -1419,6 +1419,28 @@ return [
// Financial administrations
'administration_index' => 'Financial administration',
'administrations_index_menu' => 'Financial administration(s)',
'administrations_breadcrumb' => 'Financial administrations',
'administrations_page_title' => 'Financial administrations',
'administrations_page_sub_title' => 'Overview',
'create_administration' => 'Create new administration',
'administration_owner' => 'Administration owner: {{email}}',
'administration_you' => 'Your role: {{role}}',
'other_users_in_admin' => 'Other users in this administration',
// roles
'administration_role_owner' => 'Owner',
'administration_role_ro' => 'Read-only',
'administration_role_mng_trx' => 'Manage transactions',
'administration_role_mng_meta' => 'Manage classification and meta-data',
'administration_role_mng_budgets' => 'Manage budgets',
'administration_role_mng_piggies' => 'Manage piggy banks',
'administration_role_mng_subscriptions' => 'Manage subscriptions',
'administration_role_mng_rules' => 'Manage rules',
'administration_role_mng_recurring' => 'Manage recurring transactions ',
'administration_role_mng_webhooks' => 'Manage webhooks',
'administration_role_mng_currencies' => 'Manage currencies',
'administration_role_view_reports' => 'View reports',
'administration_role_full' => 'Full access',
// profile:
'purge_data_title' => 'Purge data from Firefly III',

View File

@@ -1420,6 +1420,28 @@ return [
// Financial administrations
'administration_index' => '财务管理',
'administrations_index_menu' => '财务管理',
'administrations_breadcrumb' => 'Financial administrations',
'administrations_page_title' => 'Financial administrations',
'administrations_page_sub_title' => 'Overview',
'create_administration' => 'Create new administration',
'administration_owner' => 'Administration owner: {{email}}',
'administration_you' => 'Your role: {{role}}',
'other_users_in_admin' => 'Other users in this administration',
// roles
'administration_role_owner' => 'Owner',
'administration_role_ro' => 'Read-only',
'administration_role_mng_trx' => 'Manage transactions',
'administration_role_mng_meta' => 'Manage classification and meta-data',
'administration_role_mng_budgets' => 'Manage budgets',
'administration_role_mng_piggies' => 'Manage piggy banks',
'administration_role_mng_subscriptions' => 'Manage subscriptions',
'administration_role_mng_rules' => 'Manage rules',
'administration_role_mng_recurring' => 'Manage recurring transactions ',
'administration_role_mng_webhooks' => 'Manage webhooks',
'administration_role_mng_currencies' => 'Manage currencies',
'administration_role_view_reports' => 'View reports',
'administration_role_full' => 'Full access',
// profile:
'purge_data_title' => '从 Frefly III 清除数据',

View File

@@ -1419,6 +1419,28 @@ return [
// Financial administrations
'administration_index' => 'Financial administration',
'administrations_index_menu' => 'Financial administration(s)',
'administrations_breadcrumb' => 'Financial administrations',
'administrations_page_title' => 'Financial administrations',
'administrations_page_sub_title' => 'Overview',
'create_administration' => 'Create new administration',
'administration_owner' => 'Administration owner: {{email}}',
'administration_you' => 'Your role: {{role}}',
'other_users_in_admin' => 'Other users in this administration',
// roles
'administration_role_owner' => 'Owner',
'administration_role_ro' => 'Read-only',
'administration_role_mng_trx' => 'Manage transactions',
'administration_role_mng_meta' => 'Manage classification and meta-data',
'administration_role_mng_budgets' => 'Manage budgets',
'administration_role_mng_piggies' => 'Manage piggy banks',
'administration_role_mng_subscriptions' => 'Manage subscriptions',
'administration_role_mng_rules' => 'Manage rules',
'administration_role_mng_recurring' => 'Manage recurring transactions ',
'administration_role_mng_webhooks' => 'Manage webhooks',
'administration_role_mng_currencies' => 'Manage currencies',
'administration_role_view_reports' => 'View reports',
'administration_role_full' => 'Full access',
// profile:
'purge_data_title' => 'Purge data from Firefly III',

View File

@@ -0,0 +1,97 @@
@extends('layout.v2')
@section('scripts')
@vite(['resources/assets/v2/pages/administrations/index.js'])
@endsection
@section('content')
<div class="app-content">
<div class="container-fluid" x-data="index">
<x-messages></x-messages>
<div class="row mb-3">
<div class="col">
<p>
<a href="{{route('administrations.create')}}"
class="btn btn-primary">{{ __('firefly.create_administration') }}</a>
</p>
</div>
</div>
<div class="row mb-3">
<template x-for="(group, index) in userGroups" :key="index">
<div class="col-xl-4 col-lg-4 col-sm-6 col-xs-12">
<div class="card">
<div class="card-header">
<h3 class="card-title">Administration "<span x-text="group.title"></span>"</h3>
</div>
<div class="card-body">
<ul>
<template x-if="'' !== group.owner">
<li x-text="group.owner"></li>
</template>
<template x-if="'' !== group.you">
<li x-text="group.you"></li>
</template>
</ul>
<template x-if="group.memberCountExceptYou > 0">
<div>
<h5>{{ __('firefly.other_users_in_admin') }}</h5>
<ul>
<template x-for="(member, jndex) in group.members" :key="jndex">
<li>
<span x-text="member.email"></span>
<ul>
<template x-for="(role, kndex) in member.roles" :key="kndex">
<li x-text="role"></li>
</template>
</ul>
</li>
</template>
</ul>
</div>
</template>
TODO Last changes: date<br>
TODO features in use (icons)
</div>
<div class="card-footer">
<div class="btn-group">
<template x-if="false === group.in_use">
<a href="#" class="btn btn-primary">
<em class="fa-solid fa-coins"></em> Use
</a>
</template>
<template x-if="true === group.isOwner">
<a href="#" class="btn btn-primary">
<em class="fa-solid fa-pencil"></em> Edit
</a>
</template>
<template x-if="true === group.isOwner">
<a href="#" class="btn btn-primary">
<em class="fa-solid fa-users"></em> Access rights
</a>
</template>
<template x-if="true === group.isOwner">
<a href="#" class="btn btn-danger text-white">
<em class="fa-solid fa-trash"></em> Delete
</a>
</template>
<template x-if="true !== group.isOwner">
<a href="#" class="btn btn-warning">
<em class="fa-solid fa-person-walking-dashed-line-arrow-right"></em> Leave
</a>
</template>
</div>
</div>
</div>
</div>
</template>
</div>
<div class="row mb-3">
<div class="col">
<p>
<a href="{{route('administrations.create')}}"
class="btn btn-primary">{{ __('firefly.create_administration') }}</a>
</p>
</div>
</div>
</div>
</div>
@endsection

View File

@@ -37,9 +37,9 @@
{{ __('firefly.preferences') }}
</a>
<div class="dropdown-divider"></div>
<a href="#" class="dropdown-item">
<a href="{{ route('administrations.index') }}" class="dropdown-item">
<em class="fa-solid fa-money-bill-transfer me-2"></em>
TODO {{ __('firefly.administrations_index_menu') }}
{{ __('firefly.administrations_index_menu') }}
</a>
</div>
</li>

View File

@@ -1280,3 +1280,11 @@ Breadcrumbs::for(
$breadcrumbs->push(trans('firefly.edit_webhook', ['title' => limitStringLength($webhook->title)]), route('webhooks.edit', [$webhook->id]));
}
);
Breadcrumbs::for(
'administrations.index',
static function (Generator $breadcrumbs): void {
$breadcrumbs->parent('index');
$breadcrumbs->push(trans('firefly.administrations_breadcrumb'), route('administrations.index'));
}
);

View File

@@ -1347,3 +1347,22 @@ Route::group(
Route::post('configuration', ['uses' => 'ConfigurationController@postIndex', 'as' => 'configuration.index.post']);
}
);
// User Group / Administrations Controller.
Route::group(
['middleware' => 'user-full-auth', 'namespace' => 'FireflyIII\Http\Controllers', 'prefix' => 'administrations', 'as' => 'administrations.'],
static function (): void {
Route::get('', ['uses' => 'UserGroup\IndexController@index', 'as' => 'index']);
Route::get('create', ['uses' => 'UserGroup\CreateController@create', 'as' => 'create']);
// Route::post('rescan/{bill}', ['uses' => 'Bill\ShowController@rescan', 'as' => 'rescan']);
// Route::get('edit/{bill}', ['uses' => 'Bill\EditController@edit', 'as' => 'edit']);
// Route::get('delete/{bill}', ['uses' => 'Bill\DeleteController@delete', 'as' => 'delete']);
// Route::get('show/{bill}', ['uses' => 'Bill\ShowController@show', 'as' => 'show']);
//
// Route::post('store', ['uses' => 'Bill\CreateController@store', 'as' => 'store']);
// Route::post('update/{bill}', ['uses' => 'Bill\EditController@update', 'as' => 'update']);
// Route::post('destroy/{bill}', ['uses' => 'Bill\DeleteController@destroy', 'as' => 'destroy']);
//
// Route::post('set-order/{bill}', ['uses' => 'Bill\IndexController@setOrder', 'as' => 'set-order']);
}
);

View File

@@ -58,9 +58,9 @@ final class NavigationEndOfPeriodTest extends TestCase
'month' => ['frequency' => 'month', 'from' => Carbon::now(), 'expected' => Carbon::now()->addMonth()->subDay()->endOfDay()],
'1M' => ['frequency' => '1M', 'from' => Carbon::now(), 'expected' => Carbon::now()->addMonth()->subDay()->endOfDay()],
'monthly' => ['frequency' => 'monthly', 'from' => Carbon::now(), 'expected' => Carbon::now()->addMonth()->subDay()->endOfDay()],
'3M' => ['frequency' => '3M', 'from' => Carbon::now(), 'expected' => Carbon::now()->addQuarterNoOverflow()->subDay()->endOfDay()],
'quarter' => ['frequency' => 'quarter', 'from' => Carbon::now(), 'expected' => Carbon::now()->addQuarterNoOverflow()->subDay()->endOfDay()],
'quarterly' => ['frequency' => 'quarterly', 'from' => Carbon::now(), 'expected' => Carbon::now()->addQuarterNoOverflow()->subDay()->endOfDay()],
'3M' => ['frequency' => '3M', 'from' => Carbon::now(), 'expected' => Carbon::now()->addQuarterNoOverflow()->endOfDay()],
'quarter' => ['frequency' => 'quarter', 'from' => Carbon::now(), 'expected' => Carbon::now()->addQuarterNoOverflow()->endOfDay()],
'quarterly' => ['frequency' => 'quarterly', 'from' => Carbon::now(), 'expected' => Carbon::now()->addQuarterNoOverflow()->endOfDay()],
'year' => ['frequency' => 'year', 'from' => Carbon::now(), 'expected' => Carbon::now()->addYearNoOverflow()->subDay()->endOfDay()],
'yearly' => ['frequency' => 'yearly', 'from' => Carbon::now(), 'expected' => Carbon::now()->addYearNoOverflow()->subDay()->endOfDay()],
'1Y' => ['frequency' => '1Y', 'from' => Carbon::now(), 'expected' => Carbon::now()->addYearNoOverflow()->subDay()->endOfDay()],

View File

@@ -51,6 +51,9 @@ export default defineConfig({
// accounts
'resources/assets/v2/pages/accounts/index.js',
// administrations
'resources/assets/v2/pages/administrations/index.js',
// transactions
'resources/assets/v2/pages/transactions/create.js',
'resources/assets/v2/pages/transactions/edit.js',