Store board collapsed mode user preference in the database

This commit is contained in:
Frederic Guillot 2016-08-22 21:20:48 -04:00
parent 1d16a53c48
commit 51fef80f7d
No known key found for this signature in database
GPG Key ID: 92D77191BA7FBC99
6 changed files with 9 additions and 41 deletions

View File

@ -7,6 +7,7 @@ New features:
Improvements:
* Store board collapsed mode user preference in the database
* Store comment sorting direction in the database
* Avoid tags overlapping on the board
* Show project name in notifications

View File

@ -4,6 +4,7 @@ namespace Kanboard\Controller;
use Kanboard\Core\Controller\AccessForbiddenException;
use Kanboard\Formatter\BoardFormatter;
use Kanboard\Model\UserMetadataModel;
/**
* Class BoardAjaxController
@ -88,7 +89,7 @@ class BoardAjaxController extends BaseController
*/
public function collapse()
{
$this->changeDisplayMode(true);
$this->changeDisplayMode(1);
}
/**
@ -98,19 +99,19 @@ class BoardAjaxController extends BaseController
*/
public function expand()
{
$this->changeDisplayMode(false);
$this->changeDisplayMode(0);
}
/**
* Change display mode
*
* @access private
* @param boolean $mode
* @param int $mode
*/
private function changeDisplayMode($mode)
{
$project_id = $this->request->getIntegerParam('project_id');
$this->userSession->setBoardDisplayMode($project_id, $mode);
$this->userMetadataCacheDecorator->set(UserMetadataModel::KEY_BOARD_COLLAPSED.$project_id, $mode);
if ($this->request->isAjax()) {
$this->response->html($this->renderBoard($project_id));

View File

@ -179,28 +179,4 @@ class UserSession extends Base
{
$this->sessionStorage->filters[$project_id] = $filters;
}
/**
* Is board collapsed or expanded
*
* @access public
* @param integer $project_id
* @return boolean
*/
public function isBoardCollapsed($project_id)
{
return ! empty($this->sessionStorage->boardCollapsed[$project_id]) ? $this->sessionStorage->boardCollapsed[$project_id] : false;
}
/**
* Set board display mode
*
* @access public
* @param integer $project_id
* @param boolean $is_collapsed
*/
public function setBoardDisplayMode($project_id, $is_collapsed)
{
$this->sessionStorage->boardCollapsed[$project_id] = $is_collapsed;
}
}

View File

@ -3,6 +3,7 @@
namespace Kanboard\Helper;
use Kanboard\Core\Base;
use Kanboard\Model\UserMetadataModel;
/**
* Board Helper
@ -21,6 +22,6 @@ class BoardHelper extends Base
*/
public function isCollapsed($project_id)
{
return $this->userSession->isBoardCollapsed($project_id);
return $this->userMetadataCacheDecorator->get(UserMetadataModel::KEY_BOARD_COLLAPSED.$project_id, 0) == 1;
}
}

View File

@ -11,6 +11,7 @@ namespace Kanboard\Model;
class UserMetadataModel extends MetadataModel
{
const KEY_COMMENT_SORTING_DIRECTION = 'comment.sorting.direction';
const KEY_BOARD_COLLAPSED = 'board.collapsed.';
/**
* Get the table

View File

@ -83,18 +83,6 @@ class UserSessionTest extends Base
$this->assertFalse($us->isAdmin());
}
public function testBoardCollapseMode()
{
$us = new UserSession($this->container);
$this->assertFalse($us->isBoardCollapsed(2));
$us->setBoardDisplayMode(3, false);
$this->assertFalse($us->isBoardCollapsed(3));
$us->setBoardDisplayMode(3, true);
$this->assertTrue($us->isBoardCollapsed(3));
}
public function testFilters()
{
$us = new UserSession($this->container);