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