/**
  * @param $bitAlias
  * @param class_module_pages_page $objPage
  * @param $strMode
  *
  * @return class_admin_formgenerator
  */
 private function getPageForm($bitAlias, class_module_pages_page $objPage, $strMode)
 {
     //Load all the Templates available
     $arrTemplates = class_resourceloader::getInstance()->getTemplatesInFolder("/module_pages");
     $arrTemplatesDD = array();
     if (count($arrTemplates) > 0) {
         foreach ($arrTemplates as $strTemplate) {
             $arrTemplatesDD[$strTemplate] = $strTemplate;
         }
     }
     //remove template of master-page when editing a regular page
     $objMasterPage = class_module_pages_page::getPageByName("master");
     if ($objMasterPage != null && ($objPage->getSystemid() == "" || $objMasterPage->getSystemid() != $objPage->getSystemid())) {
         unset($arrTemplatesDD[$objMasterPage->getStrTemplate()]);
     }
     $strPagesBrowser = class_link::getLinkAdminDialog("pages", "pagesFolderBrowser", "&form_element=page_folder_name&pages=1&elements=false&folder=1&pagealiases=1", $this->getLang("commons_open_browser"), $this->getLang("commons_open_browser"), "icon_externalBrowser", $this->getLang("commons_open_browser"));
     $objForm = new class_admin_formgenerator("page", $objPage);
     if ($bitAlias) {
         $objForm->addField(new class_formentry_hidden("page", "name"))->setStrValue(generateSystemid())->setStrLabel($this->getLang("name"));
     } else {
         $objForm->addDynamicField("strName")->setStrLabel($this->getLang("name"));
     }
     $objForm->addDynamicField("browsername")->setStrLabel($this->getLang("browsername"));
     if (!$bitAlias) {
         $objForm->addDynamicField("strSeostring")->setStrLabel($this->getLang("seostring"));
         $objForm->addDynamicField("strDescription")->setStrLabel($this->getLang("commons_description"));
         $objForm->addDynamicField("strKeywords")->setStrLabel($this->getLang("keywords"));
     }
     $strParentId = $objPage->getPrevId();
     if (!validateSystemid($strParentId) && $strMode == "new") {
         $strParentId = $this->getSystemid();
     }
     $strFolderId = $this->getParam("page_folder_name_id");
     $strFolderName = $this->getParam("page_folder_name");
     if (!validateSystemid($strFolderId) && validateSystemid($strParentId)) {
         $objParent = class_objectfactory::getInstance()->getObject($strParentId);
         $strFolderId = $objParent->getSystemid();
         if ($objParent->getSystemid() != $this->getObjModule()->getSystemid()) {
             $strFolderName = $objParent->getStrDisplayName();
         }
     }
     $objForm->addField(new class_formentry_text("page", "folder_name"))->setStrValue($strFolderName)->setBitReadonly(true)->setStrOpener($strPagesBrowser)->setStrLabel($this->getLang("page_folder_name"));
     $objForm->addField(new class_formentry_hidden("page", "folder_name_id"))->setStrValue($strFolderId);
     if (!$bitAlias) {
         /** @var $objField class_formentry_base */
         $objField = $objForm->addDynamicField("strTemplate")->setArrKeyValues($arrTemplatesDD)->setStrLabel($this->getLang("template"));
         if ($strMode == "edit" && $objPage->getStrTemplate() == "") {
             $objField->setStrHint($this->getLang("templateNotSelectedBefore"));
         }
         $bitReadonly = false;
         if (class_module_system_setting::getConfigValue("_pages_templatechange_") == "false") {
             if ($this->getAction() == "newPage" || $this->getParam("mode") == "new") {
                 $bitReadonly = false;
             } else {
                 if ($objPage->getNumberOfElementsOnPage() != 0) {
                     $bitReadonly = true;
                 }
             }
         }
         $objField->setBitReadonly($bitReadonly);
         if ($strMode == "new" && $this->getParam("page_template") == "") {
             $objField->setStrValue(class_module_system_setting::getConfigValue("_pages_defaulttemplate_"));
         }
     } else {
         $objForm->addDynamicField("strAlias")->setStrHint($this->getLang("page_alias_hint"))->setBitMandatory(true)->setStrLabel($this->getLang("page_alias"));
         $objForm->addDynamicField("strTarget")->setStrLabel($this->getLang("page_target"));
     }
     $objForm->addField(new class_formentry_hidden("", "mode"))->setStrValue($strMode);
     return $objForm;
 }