Can edit category notes

This commit is contained in:
James Cole
2020-11-05 06:25:56 +01:00
parent ee82547eed
commit 6b20b7ecdb
3 changed files with 52 additions and 12 deletions

View File

@@ -41,11 +41,8 @@ use Illuminate\View\View;
class EditController extends Controller class EditController extends Controller
{ {
/** @var CategoryRepositoryInterface The category repository */ private CategoryRepositoryInterface $repository;
private $repository; private AttachmentHelperInterface $attachments;
/** @var AttachmentHelperInterface Helper for attachments. */
private $attachments;
/** /**
* CategoryController constructor. * CategoryController constructor.
@@ -58,9 +55,9 @@ class EditController extends Controller
$this->middleware( $this->middleware(
function ($request, $next) { function ($request, $next) {
app('view')->share('title', (string) trans('firefly.categories')); app('view')->share('title', (string)trans('firefly.categories'));
app('view')->share('mainTitleIcon', 'fa-bookmark'); app('view')->share('mainTitleIcon', 'fa-bookmark');
$this->repository = app(CategoryRepositoryInterface::class); $this->repository = app(CategoryRepositoryInterface::class);
$this->attachments = app(AttachmentHelperInterface::class); $this->attachments = app(AttachmentHelperInterface::class);
return $next($request); return $next($request);
@@ -79,7 +76,7 @@ class EditController extends Controller
*/ */
public function edit(Request $request, Category $category) public function edit(Request $request, Category $category)
{ {
$subTitle = (string) trans('firefly.edit_category', ['name' => $category->name]); $subTitle = (string)trans('firefly.edit_category', ['name' => $category->name]);
// put previous url in session if not redirect from store (not "return_to_edit"). // put previous url in session if not redirect from store (not "return_to_edit").
if (true !== session('categories.edit.fromUpdate')) { if (true !== session('categories.edit.fromUpdate')) {
@@ -87,7 +84,11 @@ class EditController extends Controller
} }
$request->session()->forget('categories.edit.fromUpdate'); $request->session()->forget('categories.edit.fromUpdate');
return view('categories.edit', compact('category', 'subTitle')); $preFilled = [
'notes' => $request->old('notes') ?? $this->repository->getNoteText($category),
];
return view('categories.edit', compact('category', 'subTitle', 'preFilled'));
} }
/** /**
@@ -103,7 +104,7 @@ class EditController extends Controller
$data = $request->getCategoryData(); $data = $request->getCategoryData();
$this->repository->update($category, $data); $this->repository->update($category, $data);
$request->session()->flash('success', (string) trans('firefly.updated_category', ['name' => $category->name])); $request->session()->flash('success', (string)trans('firefly.updated_category', ['name' => $category->name]));
app('preferences')->mark(); app('preferences')->mark();
// store new attachment(s): // store new attachment(s):
@@ -112,7 +113,7 @@ class EditController extends Controller
$this->attachments->saveAttachmentsForModel($category, $files); $this->attachments->saveAttachmentsForModel($category, $files);
} }
if (null !== $files && auth()->user()->hasRole('demo')) { if (null !== $files && auth()->user()->hasRole('demo')) {
session()->flash('info',(string)trans('firefly.no_att_demo_user')); session()->flash('info', (string)trans('firefly.no_att_demo_user'));
} }
if (count($this->attachments->getMessages()->get('attachments')) > 0) { if (count($this->attachments->getMessages()->get('attachments')) > 0) {
@@ -122,7 +123,7 @@ class EditController extends Controller
$redirect = redirect($this->getPreviousUri('categories.edit.uri')); $redirect = redirect($this->getPreviousUri('categories.edit.uri'));
if (1 === (int) $request->get('return_to_edit')) { if (1 === (int)$request->get('return_to_edit')) {
// @codeCoverageIgnoreStart // @codeCoverageIgnoreStart
$request->session()->put('categories.edit.fromUpdate', true); $request->session()->put('categories.edit.fromUpdate', true);

View File

@@ -24,6 +24,7 @@ declare(strict_types=1);
namespace FireflyIII\Services\Internal\Update; namespace FireflyIII\Services\Internal\Update;
use FireflyIII\Models\Category; use FireflyIII\Models\Category;
use FireflyIII\Models\Note;
use FireflyIII\Models\RecurrenceTransactionMeta; use FireflyIII\Models\RecurrenceTransactionMeta;
use FireflyIII\Models\RuleAction; use FireflyIII\Models\RuleAction;
use FireflyIII\Models\RuleTrigger; use FireflyIII\Models\RuleTrigger;
@@ -68,6 +69,7 @@ class CategoryUpdateService
$this->updateRuleTriggers($oldName, $data['name']); $this->updateRuleTriggers($oldName, $data['name']);
$this->updateRuleActions($oldName, $data['name']); $this->updateRuleActions($oldName, $data['name']);
$this->updateRecurrences($oldName, $data['name']); $this->updateRecurrences($oldName, $data['name']);
$this->updateNotes($category, $data);
return $category; return $category;
} }
@@ -137,4 +139,40 @@ class CategoryUpdateService
->update(['rt_meta.value' => $newName]); ->update(['rt_meta.value' => $newName]);
} }
/**
* @param Category $category
* @param array $data
*
* @throws \Exception
*/
private function updateNotes(Category $category, array $data): void
{
$note = array_key_exists('notes', $data) ? $data['notes'] : null;
if (null === $note) {
return;
}
if ('' === $note) {
$dbNote = $category->notes()->first();
if (null !== $dbNote) {
try {
$dbNote->delete();
} catch (Exception $e) {
Log::debug($e->getMessage());
}
}
return;
}
$dbNote = $category->notes()->first();
if (null === $dbNote) {
$dbNote = new Note;
$dbNote->noteable()->associate($category);
}
$dbNote->text = trim($note);
$dbNote->save();
return;
}
} }

View File

@@ -25,6 +25,7 @@
<h3 class="box-title">{{ 'optionalFields'|_ }}</h3> <h3 class="box-title">{{ 'optionalFields'|_ }}</h3>
</div> </div>
<div class="box-body"> <div class="box-body">
{{ ExpandedForm.textarea('notes', preFilled.notes, {helpText: trans('firefly.field_supports_markdown')} ) }}
{{ ExpandedForm.file('attachments[]', {'multiple': 'multiple','helpText': trans('firefly.upload_max_file_size', {'size': uploadSize|filesize}) }) }} {{ ExpandedForm.file('attachments[]', {'multiple': 'multiple','helpText': trans('firefly.upload_max_file_size', {'size': uploadSize|filesize}) }) }}
</div> </div>
</div> </div>