/**
  * Action to show an overview of the sites
  * @param \ride\web\cms\Cms $cms Facade of the CMS
  * @param string $locale Code of the locale
  * @return null
  */
 public function indexAction(Cms $cms, $locale = null)
 {
     if (!$locale) {
         $locale = $this->getContentLocale();
     } else {
         $this->setContentLocale($locale);
     }
     $defaultRevision = $cms->getDefaultRevision();
     $draftRevision = $cms->getDraftRevision();
     $sites = $cms->getSites();
     if ($sites) {
         foreach ($sites as $siteId => $site) {
             $availableLocales = $site->getAvailableLocales();
             if ($availableLocales == Node::LOCALES_ALL || isset($availableLocales[$locale])) {
                 $siteLocale = $locale;
             } else {
                 $siteLocale = reset($availableLocales);
             }
             if ($site->hasRevision($draftRevision)) {
                 $revision = $draftRevision;
             } elseif ($site->hasRevision($defaultRevision)) {
                 $revision = $defaultRevision;
             } else {
                 $revision = $site->getRevision();
             }
             $sites[$siteId] = array('name' => $site->getName($locale), 'url' => $this->getUrl('cms.site.detail.locale', array('site' => $site->getId(), 'revision' => $revision, 'locale' => $siteLocale)), 'data' => $site);
         }
         // When only 1 site is available, redirect to the site instead of
         // showing a dropdown with a single option.
         if (count($sites) == 1) {
             $site = array_shift($sites);
             $this->response->setRedirect($site['url']);
             return;
         }
     }
     $this->setTemplateView('cms/backend/site', array('sites' => $sites, 'locale' => $locale));
 }