/** * Show the Dashboard. * * @return Response */ public function getIndex() { $id = \Input::get('id') ?: null; $name = \Input::get('column_name') ? explode(',', \Input::get('column_name')) : null; $tableName = \Input::get('table_name') ?: null; $moduleName = \Input::get('name') ?: null; $output = array(); // Instantiate model $modelName = studly_case(str_singular($tableName)); $model = '\\Orangehill\\Photon\\' . $modelName; if (!class_exists($model)) { $model = '\\' . $modelName; } $this->modelInstance = new $model(); if (is_null($id)) { // Get roots $entries = $this->modelInstance->roots()->get(); } else { // Get parent by id $parent = $this->modelInstance->find($id); // Get children $entries = $parent->children()->get(); } foreach ($entries as $entry) { $node = array(); // Check if entry name is from one to many relation // $entry->$name = $this->checkOneToManyRelation($name, $entry); if ($name === null) { $entryName = (string) $entry; } else { $entryNameElements = array(); array_walk($name, function ($value) use(&$entry, &$entryNameElements) { $entryNameElements[] = $entry->{$value}; }); $entryName = join(' ', $entryNameElements); } $node['data'] = array('title' => $entryName, 'attr' => array('href' => '/admin/' . $moduleName . '/' . $entry->id)); $node['attr'] = array('data-module-name' => $moduleName, 'id' => $moduleName . '_' . $entry->id); if (count($entry->children()->get())) { $node['state'] = 'closed'; } $output[] = $node; } return \Response::json($output); }