/** * Ham them moi mot widget vao position * @param string $diyId id cua diy * @param string $itemId id cua widget duoc luu vao mang * @param string $containerId id cua container chua position * @param string $positionId id cua position duoc move vao * @param string $draggable_id id cua widget trong database * @return string */ private function addWidget($diyId, $itemId, $containerId, $positionId, $draggable_id) { // Generate template widget $template = DiyWidget::generateTemplateSetting($containerId, $positionId, $itemId, $draggable_id, []); $model = Diy::find()->where(['_id' => $diyId])->one(); if ($model) { // Check position co widget hay chua $position = ArrayHelper::getValue($model->data[$containerId][$positionId], 'widgets', []); // Neu chua thi add moi vao position if (empty($position)) { $model->data = ArrayHelper::merge($model->data, [$containerId => [$positionId => ArrayHelper::merge($model->data[$containerId][$positionId], ['widgets' => [$itemId => ['id' => $draggable_id]]])]]); } else { // Neu co widget trong position thi add them vao mang hien co $model->data = ArrayHelper::merge($model->data, [$containerId => [$positionId => ArrayHelper::merge($model->data[$containerId][$positionId], ['widgets' => ArrayHelper::merge($model->data[$containerId][$positionId]['widgets'], [$itemId => ['id' => $draggable_id]])])]]); } $model->save(); } return $template; }
/** * Ham get ra template cua position * @param int $numberColumn so cot cua position * @param string $diyId id cua diy * @param string $containerId id cua container * @param string $itemId id cua position * @param array $widgetItems mang cac widget cua position * @return string */ public static function generateTemplatePosition($numberColumn = 12, $diyId = null, $containerId, $itemId = null, $widgetItems = []) { $tempalatePosition = Html::beginTag('div', ['class' => 'let_position col-md-' . $numberColumn . ' col-sm-' . $numberColumn . ' col-xs-12', 'id' => $itemId, 'data-diyId' => $diyId, 'data-id' => $itemId]); // Begin button delete position $tempalatePosition .= Html::beginTag('div', ['class' => 'row positionButton', 'style' => 'margin: 10px 0 10px 0;']); $tempalatePosition .= Html::beginTag('div', ['class' => 'pull-right']); $tempalatePosition .= Html::beginTag('div', ['class' => 'btn-group buttonDelete']); $tempalatePosition .= Html::button('<i class="glyphicon glyphicon-trash"></i>', ['class' => 'btn btn-danger btn-xs', 'onclick' => 'deleteItems(this, "p", ".let_position");']); $tempalatePosition .= Html::endTag('div'); $tempalatePosition .= Html::endTag('div'); $tempalatePosition .= Html::endTag('div'); // End button delete position $tempalatePosition .= Html::beginTag('div', ['class' => 'let_widget_position']); if (!empty($widgetItems)) { foreach ($widgetItems as $widgetId => $widget) { $id = ArrayHelper::getValue($widget, 'id'); $settings = ArrayHelper::getValue($widget, 'settings', []); $tempalatePosition .= DiyWidget::generateTemplateSetting($containerId, $itemId, $widgetId, $id, $settings); } } $tempalatePosition .= Html::endTag('div'); $tempalatePosition .= Html::endTag('div'); return $tempalatePosition; }