%PDF- %PDF-
| Direktori : /home/bitrix/www/bitrix/modules/report/lib/visualconstructor/controller/ |
| Current File : /home/bitrix/www/bitrix/modules/report/lib/visualconstructor/controller/board.php |
<?php
namespace Bitrix\Report\VisualConstructor\Controller;
use Bitrix\Main\ArgumentException;
use Bitrix\Report\VisualConstructor\Internal\Engine\Response\Component;
use Bitrix\Report\VisualConstructor\Entity\Dashboard;
use Bitrix\Report\VisualConstructor\Helper\Dashboard as DashboardHelper;
use Bitrix\Report\VisualConstructor\Helper\Row;
use Bitrix\Report\VisualConstructor\Helper\Util;
use Bitrix\Report\VisualConstructor\Internal\Error\Error;
/**
* Class Board
* @package Bitrix\Report\VisualConstructor\Controller
*/
class Board extends Base
{
/**
* Set user default board to his own or to default of system.
*
* @param string $boardKey Key for finding dashboard.
* @return bool
*/
public function toggleToDefaultAction($boardKey)
{
global $USER;
$userId = $USER->getId();
$dashboardForUser = Dashboard::loadByBoardKeyAndUserId($boardKey, $userId);
if ($dashboardForUser)
{
$dashboardForUser->delete();
}
return true;
}
/**
* @param string $boardKey Board Key.
* @return array
*/
public function toggleModeAction($boardKey)
{
$oldMode = DashboardHelper::getBoardModeIsDemo($boardKey);
DashboardHelper::setBoardModeIsDemo($boardKey, !$oldMode);
return array('demoMode' => !$oldMode);
}
/**
* Return rendered add form component.
*
* @param array $categories Categories ids.
* @param string $boardId Board Id for pass to add form component.
* @return Component
*/
public function showAddFormAction($categories, $boardId)
{
$componentName = 'bitrix:report.visualconstructor.board.controls';
$templateName = 'addform';
$params = array(
'BOARD_ID' => $boardId,
'REPORTS_CATEGORIES' => array(),// @TODO
);
return new Component($componentName, $templateName, $params);
}
/**
* Handler for submit dashboard add form.
*
* @param array $formParams Parameters send from form.
* @return array|bool
*/
public function submitAddFormAction($formParams = array())
{
if ($formParams['boardId'])
{
if ($formParams['patternWidgetId'])
{
$widgetGId = $this->createWidgetFromExisting($formParams);
}
else
{
$this->addError(new Error('Should select view type or select from widget pattern'));
return false;
}
return array('widgetId' => $widgetGId);
}
else
{
$this->addError(new Error('Board id might be not blank'));
return false;
}
}
/**
* @param array $formParams Parameters send from form.
* @return mixed
*/
private function createWidgetFromExisting($formParams)
{
$dashboardForUser = DashboardHelper::getDashboardByKeyForCurrentUser($formParams['boardId']);
if (!$dashboardForUser)
{
$this->addError(new Error('Can\'t create widget because current user has not board to edit'));
return false;
}
$widget = \Bitrix\Report\VisualConstructor\Entity\Widget::getWidgetByGId($formParams['patternWidgetId']);
$copy = $widget->getCopyForCurrentUser();
$cellId = 'cell_' . randString(4);
try
{
$row = Row::getRowDefaultEntity(array(
'cellIds' => array($cellId)
));
}
catch (ArgumentException $e)
{
$this->errorCollection[] = new Error($e->getMessage());
return false;
}
$row->setBoardId($formParams['boardId']);
$copy->setWeight($cellId);
$copy->setGId(Util::generateUserUniqueId());
$copy->setIsPattern(false);
$copy->setBoardId($formParams['boardId']);
$row->addWidgets($copy);
$row->setWeight(0);
$dashboardForUser->addRows($row);
$dashboardForUser->save();
return $copy->getGId();
}
}