/**
* Creates a json object that we use for editing a
* devise page
*
* @return string
*/
public function toJSON()
{
// Occurs when there are no data-devise tags on the page
if (!$this->initialized) {
$data = new \StdClass();
$data->database = new \StdClass();
$data->nodes = [];
$data->csrfToken = $this->csrfToken;
return $this->jsonEncode($data);
}
$pageVersionId = $this->pageVersionId;
$pageId = $this->pageId;
$languageId = $this->languageId;
$csrfToken = $this->csrfToken;
$route = Route::getCurrentRoute();
$params = $route ? $route->parameters() : [];
$availableLanguages = $this->PagesRepository->availableLanguagesForPage($pageId, $params);
$pageRoutes = $this->PagesRepository->getRouteList();
$pageVersions = $this->PagesRepository->getPageVersions($pageId, $pageVersionId);
$collections = $this->filterTags('collection');
$fields = $this->filterTags('field');
$models = $this->filterTags('model');
$attributes = $this->filterTags('attribute');
$creators = $this->filterTags('creator');
$nodes = $this->buildNodes($collections, $fields, $models, $attributes, $creators);
$database = $this->database;
return $this->jsonEncode(compact('nodes', 'pageId', 'pageVersionId', 'languageId', 'csrfToken', 'availableLanguages', 'pageRoutes', 'pageVersions', 'database'));
}