Devise\Pages\PagesRepository::availableLanguagesForPage PHP Method

availableLanguagesForPage() public method

List of all the languages available for a page
public availableLanguagesForPage ( integer $id, $params = [] ) : array
$id integer
return array
    public function availableLanguagesForPage($id, $params = [])
    {
        $page = $this->Page->with('localizedPages', 'language', 'translatedFromPage.localizedPages')->find($id);
        $languages = [$page->language_id => ['human_name' => $page->language->human_name, 'url' => $this->URL->route($page->route_name, $params), 'code' => $page->language->code, 'id' => $page->language_id]];
        foreach ($page->localizedPages as $p) {
            $languages[$p->language_id] = ['human_name' => $p->language->human_name, 'url' => $this->URL->route($p->route_name, $params), 'code' => $p->language->code, 'id' => $p->language_id];
        }
        if (isset($page->translatedFromPage)) {
            $p = $page->translatedFromPage;
            $languages[$p->language_id] = ['human_name' => $p->language->human_name, 'url' => $this->URL->route($p->route_name, $params), 'code' => $p->language->code, 'id' => $p->language_id];
            foreach ($p->localizedPages as $lp) {
                $languages[$lp->language_id] = ['human_name' => $lp->language->human_name, 'url' => $this->URL->route($lp->route_name, $params), 'code' => $lp->language->code, 'id' => $lp->language_id];
            }
        }
        return $languages;
    }

Usage Example

Ejemplo n.º 1
0
 /**
  * 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'));
 }