/**
* 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);
}