Ejemplo n.º 1
0
 /**
  * Gets a control from the targetobject (@todo, which object will be passed here?)
  *
  * @param	string  $controlName   name of the control element
  * @param	string  $key           key of the form variables in the targetobject
  */
 private function getControl($controlName, $key)
 {
     switch ($controlName) {
         case 'color':
             $control = $this->targetObject->getControl($key);
             $controlObj = new icms_form_elements_Colorpicker($this->targetObject->vars[$key]['form_caption'], $key, $this->targetObject->getVar($key));
             return $controlObj;
             break;
         case 'label':
             return new icms_form_elements_Label($this->targetObject->vars[$key]['form_caption'], $this->targetObject->getVar($key));
             break;
         case 'textarea':
             $form_rows = isset($this->targetObject->controls[$key]['rows']) ? $this->targetObject->controls[$key]['rows'] : 5;
             $form_cols = isset($this->targetObject->controls[$key]['cols']) ? $this->targetObject->controls[$key]['cols'] : 60;
             $editor = new icms_form_elements_Textarea($this->targetObject->vars[$key]['form_caption'], $key, $this->targetObject->getVar($key, 'e'), $form_rows, $form_cols);
             if ($this->targetObject->vars[$key]['form_dsc']) {
                 $editor->setDescription($this->targetObject->vars[$key]['form_dsc']);
             }
             return $editor;
             break;
         case 'dhtmltextarea':
             $editor = new icms_form_elements_Dhtmltextarea($this->targetObject->vars[$key]['form_caption'], $key, $this->targetObject->getVar($key, 'e'), 15, 50);
             if ($this->targetObject->vars[$key]['form_dsc']) {
                 $editor->setDescription($this->targetObject->vars[$key]['form_dsc']);
             }
             return $editor;
             break;
         case 'theme':
             return $this->getThemeSelect($key, $this->targetObject->vars[$key]);
             break;
         case 'theme_multi':
             return $this->getThemeSelect($key, $this->targetObject->vars[$key], TRUE);
             break;
         case 'timezone':
             return new icms_form_elements_select_Timezone($this->targetObject->vars[$key]['form_caption'], $key, $this->targetObject->getVar($key));
             break;
         case 'group':
             return new icms_form_elements_select_Group($this->targetObject->vars[$key]['form_caption'], $key, FALSE, $this->targetObject->getVar($key, 'e'), 1, FALSE);
             break;
         case 'group_multi':
             return new icms_form_elements_select_Group($this->targetObject->vars[$key]['form_caption'], $key, FALSE, $this->targetObject->getVar($key, 'e'), 5, TRUE);
             break;
         case 'user_multi':
             return new icms_form_elements_select_User($this->targetObject->vars[$key]['form_caption'], $key, FALSE, $this->targetObject->getVar($key, 'e'), 5, TRUE);
             break;
         case 'password':
             return new icms_form_elements_Password($this->targetObject->vars[$key]['form_caption'], $key, 50, 255, $this->targetObject->getVar($key, 'e'));
             break;
         case 'country':
             return new icms_form_elements_select_Country($this->targetObject->vars[$key]['form_caption'], $key, $this->targetObject->getVar($key, 'e'));
             break;
         case 'sourceeditor':
             // leave as last element so that default is executed for sourceeditor as well
             icms_core_Debug::setDeprecated('icms_ipf_form_elements_Source', sprintf(_CORE_REMOVE_IN_VERSION, '1.4'));
             $controlName = "source";
         default:
             $classname = "icms_ipf_form_elements_" . ucfirst($controlName);
             if (!class_exists($classname)) {
                 /** @todo remove in 1.4 or even for 1.3 final */
                 $classname = "IcmsForm" . ucfirst($controlName) . "Element";
                 if (!class_exists($classname)) {
                     if (file_exists(ICMS_ROOT_PATH . "/class/icmsform/elements/" . strtolower($classname) . ".php")) {
                         include_once ICMS_ROOT_PATH . "/class/icmsform/elements/" . strtolower($classname) . ".php";
                     } else {
                         // perhaps this is a control created by the module
                         $moduleName = $this->targetObject->handler->_moduleName;
                         if ($moduleName != 'system') {
                             $moduleFormElementsPath = $this->targetObject->handler->_modulePath . "/class/form/elements/";
                         } else {
                             $moduleFormElementsPath = $this->targetObject->handler->_modulePath . "/admin/{$name}/class/form/elements/";
                         }
                         $classname = ucfirst($moduleName) . ucfirst($controlName) . "Element";
                         $classFileName = strtolower($classname) . ".php";
                         if (file_exists($moduleFormElementsPath . $classFileName)) {
                             include_once $moduleFormElementsPath . $classFileName;
                         } else {
                             trigger_error($classname . " not found", E_USER_WARNING);
                             return new icms_form_elements_Label();
                         }
                     }
                 }
             }
             return new $classname($this->targetObject, $key);
             break;
     }
 }