コード例 #1
0
ファイル: poly_object.php プロジェクト: davidmottet/automne
    /**
     * Return the needed form field tag for current object field
     *
     * @param array $values : parameters values array(parameterName => parameterValue) in :
     *     id : the form field id to set
     * @param multidimentionnal array $tags : xml2Array content of atm-function tag
     * @return string : the form field HTML tag
     * @access public
     */
    function getInput($fieldID, $language, $inputParams)
    {
        if (isset($this->_objectValues[$fieldID])) {
            if (is_a($this->_objectValues[$fieldID], 'CMS_poly_object')) {
                if (isset($inputParams['prefix'])) {
                    $prefixName = $inputParams['prefix'];
                    unset($inputParams['prefix']);
                } else {
                    $prefixName = '';
                }
                //serialize all htmlparameters
                $htmlParameters = CMS_object_common::serializeHTMLParameters($inputParams);
                $html = '';
                //get searched objects conditions
                $searchedObjects = is_array($this->_objectFieldsDefinition[$fieldID]->getParameter('searchedObjects')) ? $this->_objectFieldsDefinition[$fieldID]->getParameter('searchedObjects') : array();
                $objectsNames = CMS_poly_object_catalog::getListOfNamesForObject($this->_objectValues[$fieldID]->getObjectID(), false, $searchedObjects);
                if (is_array($objectsNames) && $objectsNames) {
                    //append field id to html field parameters (if not already exists)
                    $htmlParameters .= !isset($inputParams['id']) ? ' id="' . $prefixName . $this->_objectFieldsDefinition[$fieldID]->getID() . '_0"' : '';
                    if (isset($inputParams['hidden']) && ($inputParams['hidden'] == 'true' || $inputParams['hidden'] == 1)) {
                        //create field value
                        $value = isset($inputParams['value']) ? $inputParams['value'] : $this->_polyObjectValues[$fieldID]->getValue();
                        $html .= '<input type="hidden"' . $htmlParameters . ' name="' . $prefixName . $this->_objectFieldsDefinition[$fieldID]->getID() . '_0" value="' . $value . '" />' . "\n";
                    } else {
                        $html .= '<select name="' . $prefixName . $this->_objectFieldsDefinition[$fieldID]->getID() . '_0"' . $htmlParameters . '>
									<option value="0">' . $language->getMessage(self::MESSAGE_POLYMOD_CHOOSE_OBJECT) . '</option>';
                        foreach ($objectsNames as $objectID => $objectName) {
                            $selected = is_object($this->_polyObjectValues[$fieldID]) && $this->_polyObjectValues[$fieldID]->getValue() == $objectID || $inputParams['defaultvalue'] == $objectID && (!is_object($this->_polyObjectValues[$fieldID]) || !$this->_polyObjectValues[$fieldID]->getValue()) ? ' selected="selected"' : '';
                            $html .= '<option value="' . $objectID . '"' . $selected . '>' . io::htmlspecialchars(io::decodeEntities($objectName)) . '</option>' . "\n";
                        }
                        $html .= '</select>';
                    }
                    if (POLYMOD_DEBUG) {
                        $html .= '<span class="admin_text_alert"> (Field : ' . $fieldID . ' - Value : ' . $this->_polyObjectValues[$fieldID]->getValue() . ' - objectID : ' . $this->_objectValues[$fieldID]->getObjectID() . ')</span>';
                    }
                } else {
                    $html .= $language->getMessage(self::MESSAGE_POLYMOD_EMPTY_OBJECTS_SET);
                }
                //append html hidden field which store field name
                if ($html) {
                    $html .= '<input type="hidden" name="polymodFields[' . $this->_objectFieldsDefinition[$fieldID]->getID() . ']" value="' . $this->_objectFieldsDefinition[$fieldID]->getID() . '" />';
                }
                return $html;
            } elseif (is_object($this->_objectValues[$fieldID])) {
                //return html for other type of objects fields
                return $this->_objectValues[$fieldID]->getInput($fieldID, $language, $inputParams);
            }
        }
        return '';
    }