/** * @return array */ public function getEditFields($arrayKey = null) { if (empty($arrayKey)) { $arrayKey = $this->name; } $fields = []; $columns = $this->modelAbstractor->getColumns('edit'); /** @var Model $result */ $result = $this->eloquentRelation->getResults(); $readOnly = [Model::CREATED_AT, Model::UPDATED_AT, $this->eloquentRelation->getPlainForeignKey(), $this->eloquentRelation->getPlainMorphType(), $this->eloquentRelation->getParent()->getKeyName()]; $this->readConfig('edit'); if (!empty($columns)) { //Add field for model deletion $config = ['name' => '__delete', 'presentation' => 'Delete', 'form_type' => 'checkbox', 'no_validate' => true, 'validation' => null, 'functions' => null]; /** @var Field $field */ $field = $this->fieldFactory->setConfig($config)->get(); $fields[$arrayKey]['__delete'] = $field; foreach ($columns as $columnName => $column) { if (in_array($columnName, $readOnly, true)) { continue; } $formType = null; $config = ['name' => $columnName, 'presentation' => $this->name . ' ' . ucfirst(transcrud($columnName)), 'form_type' => $formType, 'no_validate' => true, 'validation' => null, 'functions' => null]; $config = $this->setConfig($config, $columnName); /** @var Field $field */ $field = $this->fieldFactory->setColumn($column)->setConfig($config)->get(); if (!empty($result->id)) { $field->setValue($result->getAttribute($columnName)); } $fields[$arrayKey][$columnName] = $field; } } $fields = $this->addSecondaryRelationFields($fields); return $fields; }
public function presentation() { if ($this->presentation) { return transcrud($this->presentation); } $nameWithSpaces = str_replace('_', ' ', $this->name); $namePieces = explode(' ', $nameWithSpaces); $namePieces = array_filter(array_map('trim', $namePieces)); return transcrud(ucfirst(implode(' ', $namePieces))); }
/** * @return array */ private function getSidebarItems() { $modelsGroups = config('anavel-crud.modelsGroups'); $models = config('anavel-crud.models'); $menuItems = []; if (!is_null($modelsGroups)) { foreach ($modelsGroups as $group => $items) { $menuItems[$group]['isActive'] = false; $menuItems[$group]['name'] = transcrud($group); $menuItems[$group]['items'] = []; foreach ($items as $itemName) { try { $item = $this->getModelItem($itemName); $menuItems[$group]['items'][] = $item; if (!$menuItems[$group]['isActive'] && $item['isActive']) { $menuItems[$group]['isActive'] = true; } if (isset($models[$itemName])) { unset($models[$itemName]); } } catch (\Exception $e) { continue; } } // Remove empty groups (resulting, most probably, of different permissions) if (count($menuItems[$group]['items']) < 1) { unset($menuItems[$group]); } } } foreach ($models as $modelName => $model) { try { $item = $this->getModelItem($modelName); } catch (\Exception $e) { continue; } $menuItems[$modelName]['isActive'] = $item['isActive']; $menuItems[$modelName]['name'] = $item['name']; $menuItems[$modelName]['items'][] = $item; } //Sort alphabetically de menu items usort($menuItems, function ($itemA, $itemB) { return strcmp($itemA['name'], $itemB['name']); }); return $menuItems; }
/** * @return array */ public function getEditFields($arrayKey = null) { /** @var \ANavallaSuiza\Laravel\Database\Contracts\Dbal\AbstractionLayer $dbal */ $dbal = $this->modelManager->getAbstractionLayer(get_class($this->eloquentRelation->getRelated())); $columns = $dbal->getTableColumns(); $results = $this->eloquentRelation->getResults(); $results = $results->keyBy('locale'); $this->readConfig('edit'); if (empty($arrayKey)) { $arrayKey = $this->name; } $translationFields = []; if (!empty($columns)) { foreach ($this->langs as $key => $lang) { $tempFields = []; foreach ($columns as $columnName => $column) { if ($columnName === $this->eloquentRelation->getPlainForeignKey()) { continue; } if ($columnName === $this->eloquentRelation->getParent()->getKeyName()) { continue; } $formType = null; if ($columnName === 'locale') { $formType = 'hidden'; } $config = ['name' => $columnName, 'presentation' => ucfirst(transcrud($columnName)) . ' [' . $lang . ']', 'form_type' => $formType, 'no_validate' => true, 'validation' => null, 'functions' => null]; $config = $this->setConfig($config, $columnName); /** @var Field $field */ $field = $this->fieldFactory->setColumn($column)->setConfig($config)->get(); if ($columnName === 'locale') { $field->setValue($lang); } if ($results->has($lang)) { $item = $results->get($lang); $field->setValue($item->getAttribute($columnName)); } $tempFields[] = $field; } $translationFields[$arrayKey][$lang] = $tempFields; } } return $translationFields; }
public function presentation() { return transcrud($this->presentation) ?: ucfirst(str_replace('_', ' ', transcrud($this->name))); }
public function getEditFieldsBase() { $fields = []; $columns = $this->modelAbstractor->getColumns('edit'); $this->readConfig('edit'); if (!empty($columns)) { $readOnly = [Model::CREATED_AT, Model::UPDATED_AT]; foreach ($columns as $columnName => $column) { if (in_array($columnName, $readOnly, true)) { continue; } $formType = null; if ($columnName === $this->eloquentRelation->getParent()->getKeyName()) { $formType = 'hidden'; } $config = ['name' => $columnName, 'presentation' => $this->name . ' ' . ucfirst(transcrud($columnName)), 'form_type' => $formType, 'no_validate' => true, 'validation' => null, 'functions' => null]; $config = $this->setConfig($config, $columnName); /** @var Field $field */ $field = $this->fieldFactory->setColumn($column)->setConfig($config)->get(); $fields[$columnName] = $field; if (!empty($config['form_type']) && $config['form_type'] === 'file') { $field = $this->fieldFactory->setColumn($column)->setConfig(['name' => $columnName . '__delete', 'presentation' => null, 'form_type' => 'checkbox', 'no_validate' => true, 'validation' => null, 'functions' => null])->get(); $fields[$columnName . '__delete'] = $field; } } } return $fields; }
public function getName() { return transcrud($this->name); }
public function getPresentation() { return transcrud($this->config['presentation']) ?: ucfirst(str_replace('_', ' ', transcrud($this->config['name']))); }