/** * Ham add mot position vao container * @param string $diyId id cua diy * @param string $itemId id cua position * @param string $containerId container id cua position * @param int $numberColumn so cot cua position * @return string */ private function addPosition($diyId, $itemId, $containerId, $numberColumn) { // Generate template container $template = Diy::generateTemplatePosition($numberColumn, $diyId, $containerId, $itemId); $model = Diy::find()->where(['_id' => $diyId])->one(); if ($model) { // Check container co position hay chua $container = ArrayHelper::getValue($model->data, $containerId); // Neu chua thi add moi vao container if (empty($container)) { $model->data = ArrayHelper::merge($model->data, [$containerId => [$itemId => ['column' => $numberColumn]]]); } else { // Neu co position trong container thi add them vao mang hien co $model->data = ArrayHelper::merge($model->data, [$containerId => ArrayHelper::merge($model->data[$containerId], [$itemId => ['column' => $numberColumn]])]); } $model->save(); } return $template; }
/** * Ham get ra template cua container * @param string $diyId id cua diy dang build layout * @param string $itemId id cua container duoc sinh ra * @param array $positionItems 1 mang cac position cua container * @return string */ public static function generateTemplateContainer($diyId = null, $itemId = null, $positionItems = []) { $templateContainer = Html::beginTag('div', ['class' => 'let_container', 'id' => $itemId, 'data-diyId' => $diyId, 'data-id' => $itemId]); $templateContainer .= Html::beginTag('div', ['class' => 'panel panel-default']); $templateContainer .= Html::beginTag('div', ['class' => 'panel-heading clearfix']); // Begin button add position and delete container $templateContainer .= Html::beginTag('div', ['class' => 'pull-right']); $templateContainer .= Html::beginTag('div', ['class' => 'btn-group']); $templateContainer .= Html::button('<i class="glyphicon glyphicon-trash"></i>', ['class' => 'btn btn-danger btn-xs', 'onclick' => 'deleteItems(this, "c", ".let_container");']); $templateContainer .= Html::button('<i class="glyphicon glyphicon-plus"></i>', ['class' => 'btn btn-success btn-xs', 'onclick' => 'addPosition(this);']); $templateContainer .= Html::endTag('div'); $templateContainer .= Html::endTag('div'); // End button add position and delete container $templateContainer .= Html::endTag('div'); $templateContainer .= Html::beginTag('div', ['class' => 'panel-body let_positions', 'data-id' => $itemId]); if (!empty($positionItems)) { foreach ($positionItems as $positionId => $position) { $column = ArrayHelper::getValue($position, 'column'); $widgetItems = ArrayHelper::getValue($position, 'widgets'); $templateContainer .= Diy::generateTemplatePosition($column, $diyId, $itemId, $positionId, $widgetItems); } } $templateContainer .= Html::endTag('div'); $templateContainer .= Html::endTag('div'); $templateContainer .= Html::endTag('div'); return $templateContainer; }