/**
  * Returns the fitting form generator for the model. The result is cached so that the a model returns always the
  * same instance
  *
  * @param interface_model $objInstance
  * @return class_admin_formgenerator
  * @throws class_exception
  */
 public static function createByModel(interface_model $objInstance)
 {
     // check whether the form was already generated
     $objForm = self::getFormForModel($objInstance);
     if ($objForm !== null) {
         return $objForm;
     }
     // check whether a specific form generator class was specified per annotation
     $objReflection = new class_reflection($objInstance);
     $arrValues = $objReflection->getAnnotationValuesFromClass(self::STR_FORMGENERATOR_ANNOTATION);
     if (!empty($arrValues)) {
         $strClass = current($arrValues);
         if (class_exists($strClass)) {
             $objForm = new $strClass($objInstance->getArrModule("module"), $objInstance);
         } else {
             throw new class_exception("Provided form generator class does not exist", class_exception::$level_ERROR);
         }
     } else {
         $objForm = new class_admin_formgenerator($objInstance->getArrModule("module"), $objInstance);
     }
     // check whether we have an correct instance
     if ($objForm instanceof class_admin_formgenerator) {
         $objForm->generateFieldsFromObject();
         return self::$arrForms[self::getKeyByModel($objInstance)] = $objForm;
     } else {
         throw new class_exception("Provided form generator must be an instance of class_admin_formgenerator", class_exception::$level_ERROR);
     }
 }
 /**
  * @return class_admin_formgenerator|null
  */
 public function getAdminForm()
 {
     if ($this->objAdminForm == null) {
         $objAnnotations = new class_reflection($this);
         $arrTargetTables = $objAnnotations->getAnnotationValuesFromClass(class_orm_base::STR_ANNOTATION_TARGETTABLE);
         if (count($arrTargetTables) == 0) {
             return null;
         }
         $this->objAdminForm = new class_admin_formgenerator("", $this);
         $this->objAdminForm->generateFieldsFromObject();
     }
     return $this->objAdminForm;
 }
 /**
  * Checks if the references of the source object is correctly set after validation
  */
 public function testObjectValidator()
 {
     $objModule = class_module_system_module::getModuleByName("news");
     if ($objModule == null) {
         return;
     }
     $objNews = new class_module_news_news();
     $objForm = new class_admin_formgenerator("news", $objNews);
     $objForm->generateFieldsFromObject();
     $objSourceObjectBefore = $objForm->getObjSourceobject();
     $arrFieldsBefore = $objForm->getArrFields();
     $objForm->validateForm();
     $objSourceObjectAfter = $objForm->getObjSourceobject();
     $arrFieldsAfter = $objForm->getArrFields();
     //Now check if the reference to the source object before validation is the same as after
     foreach ($objForm->getArrFields() as $intIndex => $objField) {
         if ($arrFieldsAfter != null) {
             $this->assertTrue($arrFieldsBefore[$intIndex]->getObjSourceObject() === $arrFieldsAfter[$intIndex]->getObjSourceObject());
             if ($arrFieldsBefore[$intIndex]->getObjSourceObject() != null) {
                 $this->assertTrue($arrFieldsBefore[$intIndex]->getObjSourceObject() === $objSourceObjectBefore);
                 $this->assertTrue($arrFieldsBefore[$intIndex]->getObjSourceObject() === $objSourceObjectAfter);
             }
             if ($arrFieldsAfter[$intIndex]->getObjSourceObject() != null) {
                 $this->assertTrue($arrFieldsAfter[$intIndex]->getObjSourceObject() === $objSourceObjectBefore);
                 $this->assertTrue($arrFieldsAfter[$intIndex]->getObjSourceObject() === $objSourceObjectAfter);
             }
         }
     }
     $this->assertTrue($objSourceObjectAfter === $objSourceObjectBefore);
 }
 /**
  * @inheritDoc
  */
 public function generateFieldsFromObject()
 {
     parent::generateFieldsFromObject();
     $this->getField("path")->setStrOpener(class_link::getLinkAdminDialog("mediamanager", "folderListFolderview", "&form_element=" . $this->getField("path")->getStrEntryName(), $this->getLang("commons_open_browser"), $this->getLang("commons_open_browser"), "icon_externalBrowser", $this->getLang("commons_open_browser")))->setStrHint($this->getLang("mediamanager_path_h"));
     $this->getField("uploadfilter")->setStrHint($this->getLang("mediamanager_upload_filter_h"));
     $this->getField("viewfilter")->setStrHint($this->getLang("mediamanager_view_filter_h"));
 }
 /**
  * @inheritDoc
  */
 public function generateFieldsFromObject()
 {
     parent::generateFieldsFromObject();
     $objNews = $this->getObjSourceobject();
     if ($objNews->getSystemid() != class_module_system_module::getModuleByName("news")->getSystemid()) {
         //search the languages maintained
         $objLanguageManager = class_module_languages_languageset::getLanguagesetForSystemid($objNews->getSystemid());
         if ($objLanguageManager != null) {
             $arrMaintained = $objLanguageManager->getArrLanguageSet();
             $arrDD = array();
             foreach ($arrMaintained as $strLanguageId => $strSystemid) {
                 $objLanguage = new class_module_languages_language($strLanguageId);
                 $arrDD[$strSystemid] = $this->getLang("lang_" . $objLanguage->getStrName(), "languages");
             }
             class_module_languages_admin::enableLanguageSwitch();
             class_module_languages_admin::setArrLanguageSwitchEntries($arrDD);
             class_module_languages_admin::setStrOnChangeHandler("window.location='" . class_link::getLinkAdminHref("news", "editNews") . (class_module_system_setting::getConfigValue("_system_mod_rewrite_") == "true" ? "?" : "&") . "systemid='+this.value+'&pe=" . class_carrier::getInstance()->getParam("pe") . "';");
             class_module_languages_admin::setStrActiveKey($objNews->getSystemid());
         }
     }
     $arrCats = class_module_news_category::getObjectList();
     if (count($arrCats) > 0) {
         $arrKeyValues = array();
         /** @var class_module_news_category $objOneCat */
         foreach ($arrCats as $objOneCat) {
             $arrKeyValues[$objOneCat->getSystemid()] = $objOneCat->getStrDisplayName();
         }
         $this->getField("cats")->setStrLabel($this->getLang("commons_categories"))->setArrKeyValues($arrKeyValues);
     }
     if (class_module_system_setting::getConfigValue("_news_news_datetime_") == "true") {
         $this->addField(new class_formentry_datetime($this->getStrFormname(), "objDateStart", $objNews), "datestart")->setBitMandatory(true)->setStrLabel($this->getLang("form_news_datestart"));
         $this->addField(new class_formentry_datetime($this->getStrFormname(), "objDateEnd", $objNews), "dateend")->setStrLabel($this->getLang("form_news_dateend"));
         $this->addField(new class_formentry_datetime($this->getStrFormname(), "objDateSpecial", $objNews), "datespecial")->setStrLabel($this->getLang("form_news_datespecial"));
     }
 }
 /**
  * @inheritDoc
  */
 public function generateFieldsFromObject()
 {
     parent::generateFieldsFromObject();
     if (validateSystemid($this->getField("userid")->getStrValue())) {
         $this->getField("userid")->setBitMandatory(true);
         $this->getField("forename")->setBitMandatory(false);
         $this->getField("lastname")->setBitMandatory(false);
         $this->getField("email")->setBitMandatory(false);
     }
 }
 /**
  * @inheritDoc
  */
 public function generateFieldsFromObject()
 {
     parent::generateFieldsFromObject();
     /** @var class_module_news_category[] $arrNewsCats */
     $arrNewsCats = class_module_news_category::getObjectList();
     $arrCatsDD = array();
     foreach ($arrNewsCats as $objOneCat) {
         $arrCatsDD[$objOneCat->getSystemid()] = $objOneCat->getStrTitle();
     }
     $arrCatsDD["0"] = $this->getLang("commons_all_categories");
     $this->getField("cat")->setArrKeyValues($arrCatsDD);
 }
 /**
  * @inheritdoc
  */
 public function generateFieldsFromObject()
 {
     parent::generateFieldsFromObject();
     //inject the categories formentries
     $arrCats = class_module_faqs_category::getObjectList();
     if (count($arrCats) > 0) {
         $arrKeyValues = array();
         /** @var class_module_faqs_category $objOneCat */
         foreach ($arrCats as $objOneCat) {
             $arrKeyValues[$objOneCat->getSystemid()] = $objOneCat->getStrDisplayName();
         }
         $this->getField("cats")->setStrLabel($this->getLang("commons_categories"))->setArrKeyValues($arrKeyValues);
     }
 }
 public function testFormManager()
 {
     $objFormManager = new class_admin_formgenerator("test", new AdminFormB());
     $objFormManager->generateFieldsFromObject();
     $this->assertNotNull($objFormManager->getField("fielda1"));
     $this->assertNotNull($objFormManager->getField("fielda2"));
     $this->assertNotNull($objFormManager->getField("fieldb1"));
     $this->assertNotNull($objFormManager->getField("fieldb2"));
     $arrFields = $objFormManager->getArrFields();
     $arrKey = array_keys($arrFields);
     $this->assertEquals($arrKey[0], "fielda1");
     $this->assertEquals($arrKey[1], "fielda2");
     $this->assertEquals($arrKey[2], "fieldb1");
     $this->assertEquals($arrKey[3], "fieldb2");
     $objFormManager->setFieldToPosition("fielda2", 1);
     $objFormManager->setFieldToPosition("fieldb2", 4);
     $arrFields = $objFormManager->getArrFields();
     $arrKey = array_keys($arrFields);
     $this->assertEquals($arrKey[0], "fielda2");
     $this->assertEquals($arrKey[1], "fielda1");
     $this->assertEquals($arrKey[2], "fieldb1");
     $this->assertEquals($arrKey[3], "fieldb2");
 }
 /**
  * @inheritDoc
  */
 public function generateFieldsFromObject()
 {
     parent::generateFieldsFromObject();
     if (validateSystemid($this->getField("messagerefid")->getStrValue()) && $this->getField("body")->getStrValue() == "") {
         $objRefMessage = class_objectfactory::getInstance()->getObject($this->getField("messagerefid")->getStrValue());
         if ($objRefMessage instanceof class_module_messaging_message) {
             $arrBody = preg_split('/$\\R?^/m', $objRefMessage->getStrBody());
             array_walk($arrBody, function (&$strValue) {
                 $strValue = "> " . $strValue;
             });
             $this->getField("body")->setStrValue("\r\n\r\n\r\n" . implode("\r\n", $arrBody));
         }
     }
 }
 /**
  * Hook to update the admin-form when editing / creating a single user
  * @param class_admin_formgenerator $objForm
  *
  * @return mixed
  */
 public function updateAdminForm(class_admin_formgenerator $objForm)
 {
     $objForm->getField("user_username")->setBitReadonly(true);
 }
 private function getPointAdminForm(class_module_navigation_point $objPoint)
 {
     $objForm = new class_admin_formgenerator("point", $objPoint);
     $objForm->generateFieldsFromObject();
     return $objForm;
 }
 /**
  * @return class_admin_formgenerator
  */
 private function getPackAdminForm()
 {
     $objFormgenerator = new class_admin_formgenerator("pack", new class_module_system_common());
     $objFormgenerator->addField(new class_formentry_text("pack", "name"))->setStrLabel($this->getLang("pack_name"))->setBitMandatory(true)->setStrValue($this->getParam("pack_name"));
     $objFormgenerator->addField(new class_formentry_headline())->setStrValue($this->getLang("pack_copy_include"));
     $arrModules = class_resourceloader::getInstance()->getArrModules();
     foreach ($arrModules as $strOneModule) {
         //validate if there's a template-folder existing
         if (is_dir(class_resourceloader::getInstance()->getCorePathForModule($strOneModule, true) . "/" . $strOneModule . "/templates")) {
             $objFormgenerator->addField(new class_formentry_checkbox("pack", "modules[" . $strOneModule . "]"))->setStrLabel($strOneModule)->setStrValue($strOneModule == "module_pages");
         }
     }
     return $objFormgenerator;
 }
 /**
  * Generates a simple form to edit and create elements' basic data.
  *
  * @param class_module_pages_element $objElement
  *
  * @return class_admin_formgenerator
  */
 private function getElementForm(class_module_pages_element $objElement)
 {
     //Fetch Admin classes
     $arrClasses = class_resourceloader::getInstance()->getFolderContent("/admin/elements", array(".php"));
     $arrClassesAdmin = array();
     foreach ($arrClasses as $strClass) {
         $arrClassesAdmin[$strClass] = $strClass;
     }
     //Fetch Portal-Classes
     $arrClassesPortal = array();
     $arrClasses = class_resourceloader::getInstance()->getFolderContent("/portal/elements", array(".php"));
     foreach ($arrClasses as $strClass) {
         $arrClassesPortal[$strClass] = $strClass;
     }
     $objForm = new class_admin_formgenerator("element", $objElement);
     //redefine for proper lang-rendering
     $objElement->setArrModuleEntry("modul", "pages");
     $objForm->generateFieldsFromObject();
     $objForm->getField("cachetime")->setStrHint($this->getLang("element_cachetime_hint"));
     $objForm->getField("classadmin")->setArrKeyValues($arrClassesAdmin);
     $objForm->getField("classportal")->setArrKeyValues($arrClassesPortal);
     //check if the config-vals may be overriden
     /** @var $objAdminInstance class_element_admin */
     if ($objElement->getSystemid() != "") {
         $objAdminInstance = $objElement->getAdminElementInstance();
         if ($objAdminInstance->getConfigVal1Name() != "") {
             $objForm->addDynamicField("strConfigval1")->setStrLabel($objAdminInstance->getConfigVal1Name());
         }
         if ($objAdminInstance->getConfigVal2Name() != "") {
             $objForm->addDynamicField("strConfigval2")->setStrLabel($objAdminInstance->getConfigVal2Name());
         }
         if ($objAdminInstance->getConfigVal3Name() != "") {
             $objForm->addDynamicField("strConfigval3")->setStrLabel($objAdminInstance->getConfigVal3Name());
         }
     }
     return $objForm;
 }
    /**
     * @param class_module_search_search $objSearch
     *
     * @return class_admin_formgenerator
     */
    public function getSearchAdminForm($objSearch)
    {
        $objForm = new class_admin_formgenerator("search", $objSearch);
        $objForm->generateFieldsFromObject();
        // Load filterable modules
        $arrFilterModules = $objSearch->getPossibleModulesForFilter();
        $objForm->getField("formfiltermodules")->setArrKeyValues($arrFilterModules);
        $objForm->addField(new class_formentry_checkbox("search", "filter_all"))->setStrLabel($this->getLang("select_all"))->setStrValue($objSearch->getStrInternalFilterModules() == "-1" || $objSearch->getStrInternalFilterModules() == "");
        $objForm->setFieldToPosition("search_filter_all", 3);
        $bitVisible = $objSearch->getStrInternalFilterModules() != "-1" && $objSearch->getStrInternalFilterModules() != "" || $objSearch->getObjChangeEnddate() != null || $objSearch->getObjChangeStartdate() != null;
        $objForm->setStrHiddenGroupTitle($this->getLang("form_additionalheader"));
        $objForm->addFieldToHiddenGroup($objForm->getField("formfiltermodules"));
        $objForm->addFieldToHiddenGroup($objForm->getField("formfilteruser"));
        $objForm->addFieldToHiddenGroup($objForm->getField("search_filter_all"));
        $objForm->addFieldToHiddenGroup($objForm->getField("changestartdate"));
        $objForm->addFieldToHiddenGroup($objForm->getField("changeenddate"));
        $objForm->setBitHiddenElementsVisible($bitVisible);
        //add js-code for enabling and disabling multiselect box for modules
        $strCore = class_resourceloader::getInstance()->getCorePathForModule("module_search");
        $strJS = <<<JS
            KAJONA.admin.loader.loadFile('{$strCore}/module_search/admin/scripts/search.js', function() {
                    KAJONA.admin.search.switchFilterAllModules();
                    \$('#search_filter_all').click(function() {KAJONA.admin.search.switchFilterAllModules()});

                });
JS;
        $strPlain = "<script type='text/javascript'>" . $strJS . "</script>";
        $objForm->addField(new class_formentry_plaintext())->setStrValue($strPlain);
        return $objForm;
    }
 /**
  * @param class_admin_formgenerator $objForm
  *
  * @return bool
  */
 protected function checkAdditionalEditData(class_admin_formgenerator $objForm)
 {
     $arrParams = class_carrier::getAllParams();
     $bitPass = true;
     if (isset($arrParams["user_pass"])) {
         $bitPass = $this->checkPasswords($this->getParam("user_pass"), $this->getParam("user_pass2"));
         if (!$bitPass) {
             $objForm->addValidationError("password", $this->getLang("required_password_equal"));
         }
     }
     $arrUsers = class_module_user_user::getAllUsersByName($this->getParam("user_username"));
     if (count($arrUsers) > 0) {
         $objUser = $arrUsers[0];
         if ($objUser->getSystemid() != $this->getSystemid()) {
             $objForm->addValidationError("user_username", $this->getLang("required_user_existing"));
             $bitPass = false;
         }
     }
     return $bitPass;
 }
 /**
  * @param class_module_workflows_handler $objHandler
  *
  * @return class_admin_formgenerator
  */
 private function getHandlerForm(class_module_workflows_handler $objHandler)
 {
     $objForm = new class_admin_formgenerator("handler", $objHandler);
     $objForm->generateFieldsFromObject();
     $arrNames = $objHandler->getObjInstanceOfHandler()->getConfigValueNames();
     $objForm->getField("configval1")->setStrLabel(isset($arrNames[0]) ? $arrNames[0] : $this->getLang("workflow_handler_val1"));
     $objForm->getField("configval2")->setStrLabel(isset($arrNames[1]) ? $arrNames[1] : $this->getLang("workflow_handler_val2"));
     $objForm->getField("configval3")->setStrLabel(isset($arrNames[2]) ? $arrNames[2] : $this->getLang("workflow_handler_val3"));
     return $objForm;
 }
 /**
  * @see interface_admin_systemtask::getAdminForm()
  * @return string
  */
 public function getAdminForm()
 {
     $strFormName = "permissions";
     $objForm = new class_admin_formgenerator($strFormName, new class_module_system_common());
     $arrGroups = array();
     foreach (class_module_user_group::getObjectList() as $objOneGroup) {
         $arrGroups[$objOneGroup->getSystemid()] = $objOneGroup->getStrDisplayName();
     }
     $objForm->addField(new class_formentry_plaintext())->setStrValue($this->objToolkit->warningBox($this->getLang("systemtask_permissions_hint")));
     $objForm->addField(new class_formentry_dropdown("", "groupid"))->setStrLabel($this->getLang("systemtask_permissions_groupid"))->setBitMandatory(true)->setArrKeyValues($arrGroups);
     $objForm->addField(new class_formentry_text("", "recordid"))->setStrLabel($this->getLang("systemtask_permissions_systemid"))->setBitMandatory(true);
     $objForm->addField(new class_formentry_checkbox("", class_rights::$STR_RIGHT_VIEW))->setStrLabel(class_rights::$STR_RIGHT_VIEW);
     $objForm->addField(new class_formentry_checkbox("", class_rights::$STR_RIGHT_EDIT))->setStrLabel(class_rights::$STR_RIGHT_EDIT);
     $objForm->addField(new class_formentry_checkbox("", class_rights::$STR_RIGHT_DELETE))->setStrLabel(class_rights::$STR_RIGHT_DELETE);
     $objForm->addField(new class_formentry_checkbox("", class_rights::$STR_RIGHT_RIGHT))->setStrLabel(class_rights::$STR_RIGHT_RIGHT);
     $objForm->addField(new class_formentry_checkbox("", class_rights::$STR_RIGHT_RIGHT1))->setStrLabel(class_rights::$STR_RIGHT_RIGHT1);
     $objForm->addField(new class_formentry_checkbox("", class_rights::$STR_RIGHT_RIGHT2))->setStrLabel(class_rights::$STR_RIGHT_RIGHT2);
     $objForm->addField(new class_formentry_checkbox("", class_rights::$STR_RIGHT_RIGHT3))->setStrLabel(class_rights::$STR_RIGHT_RIGHT3);
     $objForm->addField(new class_formentry_checkbox("", class_rights::$STR_RIGHT_RIGHT4))->setStrLabel(class_rights::$STR_RIGHT_RIGHT4);
     $objForm->addField(new class_formentry_checkbox("", class_rights::$STR_RIGHT_RIGHT5))->setStrLabel(class_rights::$STR_RIGHT_RIGHT5);
     $objForm->addField(new class_formentry_checkbox("", class_rights::$STR_RIGHT_CHANGELOG))->setStrLabel(class_rights::$STR_RIGHT_CHANGELOG);
     return $objForm;
 }
 /**
  * @inheritDoc
  */
 public function generateFieldsFromObject()
 {
     parent::generateFieldsFromObject();
     $this->addField(new class_formentry_hidden("", "source"))->setStrValue(class_carrier::getInstance()->getParam("source"));
 }
 /**
  * Creates a form to send mails to specific users.
  *
  * @return class_admin_formgenerator
  */
 private function getMailForm()
 {
     $objFormgenerator = new class_admin_formgenerator("mail", new class_module_system_common());
     $objFormgenerator->addField(new class_formentry_text("mail", "recipient"))->setStrLabel($this->getLang("mail_recipient"))->setBitMandatory(true)->setObjValidator(new class_email_validator());
     $objFormgenerator->addField(new class_formentry_user("mail", "cc"))->setStrLabel($this->getLang("mail_cc"));
     $objFormgenerator->addField(new class_formentry_text("mail", "subject"))->setStrLabel($this->getLang("mail_subject"))->setBitMandatory(true);
     $objFormgenerator->addField(new class_formentry_textarea("mail", "body"))->setStrLabel($this->getLang("mail_body"))->setBitMandatory(true);
     return $objFormgenerator;
 }
 /**
  * Hook to update the admin-form when editing / creating a single group
  * @param class_admin_formgenerator $objForm
  *
  * @return mixed
  */
 public function updateAdminForm(class_admin_formgenerator $objForm)
 {
     $arrDD = array();
     foreach (class_ldap::getAllInstances() as $objOneInstance) {
         $arrDD[$objOneInstance->getIntCfgNr()] = $objOneInstance->getStrCfgName();
     }
     $objForm->getField("cfg")->setArrKeyValues($arrDD);
 }
 /**
  * Creates the admin-form object
  *
  * @param class_module_languages_language $objLanguage
  *
  * @return class_admin_formgenerator
  */
 private function getAdminForm(class_module_languages_language $objLanguage)
 {
     $objLang = new class_module_languages_language();
     $arrLanguages = $objLang->getAllLanguagesAvailable();
     $arrLanguagesDD = array();
     foreach ($arrLanguages as $strLangShort) {
         $arrLanguagesDD[$strLangShort] = $this->getLang("lang_" . $strLangShort);
     }
     $objForm = new class_admin_formgenerator("language", $objLanguage);
     $objForm->addDynamicField("strName")->setArrKeyValues($arrLanguagesDD);
     $objForm->addDynamicField("bitDefault");
     return $objForm;
 }