91 lines
2.9 KiB
PHP
91 lines
2.9 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Controller / Edit Canvas Item
|
|
*/
|
|
|
|
namespace Leantime\Domain\Goalcanvas\Controllers;
|
|
|
|
use Illuminate\Contracts\Container\BindingResolutionException;
|
|
use Leantime\Core\Auth\Permissions\RequiresPermission;
|
|
use Leantime\Core\Controller\Controller;
|
|
use Leantime\Core\Controller\Frontcontroller;
|
|
use Leantime\Domain\Goalcanvas\Permissions\GoalcanvasPermissions;
|
|
use Leantime\Domain\Goalcanvas\Services\Goalcanvas as GoalcanvaService;
|
|
use Symfony\Component\HttpFoundation\Response;
|
|
|
|
/**
|
|
* Goal board (big rock) create/edit dialog. Standalone, independent of the canvas domain.
|
|
*/
|
|
class BigRock extends Controller
|
|
{
|
|
private GoalcanvaService $goalService;
|
|
|
|
public function init(
|
|
GoalcanvaService $goalService
|
|
): void {
|
|
$this->goalService = $goalService;
|
|
}
|
|
|
|
/**
|
|
* @throws \Exception
|
|
*/
|
|
#[RequiresPermission(GoalcanvasPermissions::VIEW, entityScoped: true)]
|
|
public function get($params): Response
|
|
{
|
|
if (isset($params['id'])) {
|
|
|
|
// getSingleCanvas authorizes VIEW against the board's real project and returns
|
|
// false for a missing/foreign/unauthorized board.
|
|
$bigrock = $this->goalService->getSingleCanvas($params['id']);
|
|
if ($bigrock === false) {
|
|
$bigrock = ['id' => '', 'title' => '', 'projectId' => '', 'author' => ''];
|
|
}
|
|
|
|
} else {
|
|
|
|
$bigrock = ['id' => '', 'title' => '', 'projectId' => '', 'author' => ''];
|
|
}
|
|
|
|
$this->tpl->assign('bigRock', $bigrock);
|
|
|
|
return $this->tpl->displayPartial('goalcanvas.bigRockDialog');
|
|
}
|
|
|
|
/**
|
|
* @throws BindingResolutionException
|
|
*/
|
|
#[RequiresPermission(GoalcanvasPermissions::EDIT, entityScoped: true)]
|
|
public function post($params): Response
|
|
{
|
|
$bigrock = ['id' => '', 'title' => '', 'projectId' => '', 'author' => ''];
|
|
|
|
if (isset($_GET['id'])) {
|
|
$id = (int) $_GET['id'];
|
|
// Update
|
|
$bigrock['id'] = $id;
|
|
$bigrock['title'] = $params['title'];
|
|
$this->goalService->updateGoalboard($bigrock);
|
|
$this->tpl->setNotification('notification.goalboard_updated_successfully', 'success', 'goalcanvas_updated');
|
|
|
|
return Frontcontroller::redirect(BASE_URL.'/goalcanvas/bigRock/'.$id);
|
|
|
|
} else {
|
|
// New
|
|
$bigrock['title'] = $params['title'];
|
|
$bigrock['projectId'] = session('currentProject');
|
|
$bigrock['author'] = session('userdata.id');
|
|
|
|
$id = $this->goalService->createGoalboard($bigrock);
|
|
|
|
if ($id) {
|
|
$this->tpl->setNotification('notification.goalboard_created_successfully', 'success', 'wiki_created');
|
|
|
|
return Frontcontroller::redirect(BASE_URL.'/goalcanvas/bigRock/'.$id.'?closeModal=1');
|
|
}
|
|
|
|
return Frontcontroller::redirect(BASE_URL.'/goalcanvas/bigRock/'.$id.'');
|
|
}
|
|
}
|
|
}
|