Ejemplo n.º 1
0
 /**
  * @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;
 }
Ejemplo n.º 2
0
 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)));
 }
Ejemplo n.º 3
0
 /**
  * @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;
 }
Ejemplo n.º 4
0
 /**
  * @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;
 }
Ejemplo n.º 5
0
 public function presentation()
 {
     return transcrud($this->presentation) ?: ucfirst(str_replace('_', ' ', transcrud($this->name)));
 }
Ejemplo n.º 6
0
 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;
 }
Ejemplo n.º 7
0
 public function getName()
 {
     return transcrud($this->name);
 }
Ejemplo n.º 8
0
 public function getPresentation()
 {
     return transcrud($this->config['presentation']) ?: ucfirst(str_replace('_', ' ', transcrud($this->config['name'])));
 }