/**
  * Launches a panel in the domain desktop.
  *
  * If the panel name is one "main" then
  * no real panel is launched, a domain  desktop layout file is included.
  *
  * Domain desktop layout files are stored in the folder
  * core/classes/innomatic/desktop/layout/domain.
  *
  * @param string $resource Panel name.
  */
 public function executeDomain($resource)
 {
     // Check if this is the default page and if the user is allowed to access the dashboard
     if (substr($resource, -1, 1) == '/') {
         $perm = new \Innomatic\Desktop\Auth\DesktopPanelAuthorizator($this->container->getCurrentDomain()->getDataAccess(), $this->container->getCurrentUser()->getGroup());
         $node_id = $perm->getNodeIdFromFileName('dashboard');
         if ($perm->check($node_id, \Innomatic\Desktop\Auth\DesktopPanelAuthorizator::NODETYPE_PAGE) != \Innomatic\Desktop\Auth\DesktopPanelAuthorizator::NODE_NOTENABLED) {
             $resource = $resource . 'dashboard';
         }
     }
     if (substr($resource, -1, 1) != '/') {
         // Must exit if the user called a page for which he isn't enabled
         //
         if (!isset($perm)) {
             $perm = new \Innomatic\Desktop\Auth\DesktopPanelAuthorizator($this->container->getCurrentDomain()->getDataAccess(), $this->container->getCurrentUser()->getGroup());
         }
         $desktopPanel = basename($resource);
         if ($this->container->getState() == \Innomatic\Core\InnomaticContainer::STATE_DEBUG) {
             $dump = \Innomatic\Debug\InnomaticDump::instance('\\Innomatic\\Debug\\InnomaticDump');
             $dump->desktopApplication = $desktopPanel;
             $dump->sessionId = $this->session->getId();
         }
         switch ($desktopPanel) {
             case 'index':
                 break;
             default:
                 $node_id = $perm->getNodeIdFromFileName($desktopPanel);
                 if ($node_id) {
                     if ($perm->check($node_id, \Innomatic\Desktop\Auth\DesktopPanelAuthorizator::NODETYPE_PAGE) == \Innomatic\Desktop\Auth\DesktopPanelAuthorizator::NODE_NOTENABLED) {
                         $adloc = new \Innomatic\Locale\LocaleCatalog('innomatic::authentication', $this->container->getCurrentUser()->getLanguage());
                         $this->container->abort($adloc->getStr('nopageauth'));
                     }
                 } else {
                     $adloc = new \Innomatic\Locale\LocaleCatalog('innomatic::authentication', $this->container->getCurrentUser()->getLanguage());
                     $this->container->abort($adloc->getStr('nopageauth'));
                 }
         }
         if (is_dir($resource . '-panel')) {
             $panelHome = $resource . '-panel/';
             $panelName = basename($resource);
             $controllerClassName = ucfirst($panelName) . 'PanelController';
             // Checks if view file and definition exist
             if (!(include_once $panelHome . $controllerClassName . '.php')) {
                 throw new \Innomatic\Wui\WuiException(\Innomatic\Wui\WuiException::MISSING_CONTROLLER_FILE);
             }
             if (!class_exists($controllerClassName, true)) {
                 throw new \Innomatic\Wui\WuiException(\Innomatic\Wui\WuiException::MISSING_CONTROLLER_CLASS);
             }
             $controller = new $controllerClassName(\Innomatic\Core\InnomaticContainer::MODE_DOMAIN, $panelName);
             $this->container->setPanelController($controller);
         } else {
             switch ($desktopPanel) {
                 case 'menu':
                     include 'innomatic/desktop/layout/domain/' . $desktopPanel . '.php';
                     break;
                 default:
                     include $resource . '.php';
             }
         }
     } else {
         if (strlen($this->session->get('INNOMATIC_AUTH_USER'))) {
             \Innomatic\Webapp\WebAppContainer::instance('\\Innomatic\\Webapp\\WebAppContainer')->getProcessor()->getResponse()->addHeader('P3P', 'CP="CUR ADM OUR NOR STA NID"');
             include 'innomatic/desktop/layout/domain/index.php';
         }
     }
 }