/** * get HTML admin subfields parameters (used to enter object parameters values in admin) * * @return string : the html admin * @access public */ function getHTMLSubFieldsParameters($language, $prefixName) { if (!is_a($language, 'CMS_language')) { $this->raiseError("Language must be a CMS_language object : " . print_r($language, true)); return false; } $values = $this->_parameterValues; $html = ''; $parameters = $this->getSubFieldParameters(); foreach ($parameters as $parameterID => $parameter) { $paramValue = $values[$parameterID]; switch ($parameter['type']) { case 'boolean': $yes = $paramValue ? ' selected="selected"' : ''; $input = '<select name="' . $prefixName . $parameter['internalName'] . '" class="admin_input_text"> <option value="0">' . $language->getMessage(self::MESSAGE_FIELD_NO) . '</option> <option value="1"' . $yes . '>' . $language->getMessage(self::MESSAGE_FIELD_YES) . '</option> </select>'; break; case 'integer': case 'date': case 'string': $input = '<input type="text" size="30" name="' . $prefixName . $parameter['internalName'] . '" class="admin_input_text" value="' . io::htmlspecialchars($paramValue) . '" />'; break; case 'text': $input = '<textarea cols="70" rows="4" name="' . $prefixName . $parameter['internalName'] . '" class="admin_input_text">' . io::htmlspecialchars($paramValue) . '</textarea>'; break; case 'fields': //get all fields for current object $fields = CMS_poly_object_catalog::getFieldsDefinition($this->_field->getValue('objectID')); $selectValues = array(); foreach ($fields as $field) { $label = new CMS_object_i18nm($field->getValue("labelID")); $selectValues[$field->getID()] = $label->getValue($language->getCode()); } $selectedValues = explode(';', $paramValue); $listboxesParameters = array('field_name' => $prefixName . $parameter['internalName'], 'items_possible' => $selectValues, 'items_selected' => $selectedValues, 'select_width' => '300px', 'select_height' => '200px', 'form_name' => 'frm'); $input = CMS_dialog_listboxes::getListBoxes($listboxesParameters); break; default: if ($parameter['type'] && method_exists($this, "getHTMLSubFieldsParameters" . $parameter['type'])) { $method = "getHTMLSubFieldsParameters" . $parameter['type']; $input = $this->{$method}($language, $prefixName, $parameter); } else { $this->raiseError("Can't get parameter HTML for type : " . $parameter['type']); return false; } break; } if ($input) { $paramLabel = sensitiveIO::isPositiveInteger($parameter['externalName']) ? $language->getMessage($parameter['externalName'], false, $this->_messagesModule) : 'Undefined'; $paramDescription = isset($parameter['description']) && sensitiveIO::isPositiveInteger($parameter['description']) ? '<br /><small>' . $language->getMessage($parameter['description'], false, $this->_messagesModule) . '</small>' : ''; $required = $parameter['required'] ? '<span class="admin_text_alert">*</span>' : ''; $html .= ' <tr> <td class="admin" align="right" valign="top">' . $required . $paramLabel . '</td> <td class="admin" valign="top">' . $input . $paramDescription . '</td> </tr>'; } } $html = $html ? '<table border="0" cellpadding="3" cellspacing="0" style="border-left:1px solid #4d4d4d;">' . $html . '</table>' : ''; return $html; }
/** * get object description * * @param mixed $language the language code (string) or the CMS_language (object) to use for description * @return string, the description * @access public */ function getDescription($language) { //get object definition $objectDef = $this->getObjectDefinition(); $description = new CMS_object_i18nm($objectDef->getValue("descriptionID")); if (is_a($language, "CMS_language")) { $subdesc = $description->getValue($language->getCode()); return $language->getMessage($this->_objectDescription, array($subdesc), MOD_POLYMOD_CODENAME); } else { $subdesc = $description->getValue($language); $tmplanguage = new CMS_language($language); return $tmplanguage->getMessage($this->_objectDescription, array($subdesc), MOD_POLYMOD_CODENAME); } }
/** * get admin field description if any * * @param mixed $language the language code (string) or the CMS_language (object) to use for label * @return string, the label or false if none defined * @access public */ function getFieldDescription($language) { if (!sensitiveIO::isPositiveInteger($this->getValue("descriptionID"))) { return false; } //get label of current field $description = new CMS_object_i18nm($this->getValue("descriptionID")); if (is_a($language, "CMS_language")) { return $description->getValue($language->getCode()); } else { return $description->getValue($language); } }
break; case 'order': if (sizeof($paramValue)) { $orderNameList = array('objectID' => MESSAGE_PAGE_FIELD_ORDER_OBJECTID, 'random' => MESSAGE_PAGE_FIELD_ORDER_RANDOM, 'publication date after' => MESSAGE_PAGE_FIELD_ORDER_PUBLICATION_START, 'publication date before' => MESSAGE_PAGE_FIELD_ORDER_PUBLICATION_END); $searchOrderContent = array(); foreach ($paramValue as $orderName => $orderValue) { $fieldLabel = ''; if (in_array($orderName, CMS_object_search::getStaticOrderConditionTypes())) { $fieldLabel = $cms_language->getMessage($orderNameList[$orderName], false, MOD_POLYMOD_CODENAME); } else { $orderName = trim($orderName, '()'); if (io::isPositiveInteger($orderName)) { $field = new CMS_poly_object_field($orderName); if ($field && !$field->hasError()) { $label = new CMS_object_i18nm($field->getValue('labelID')); $fieldLabel = $label->getValue($cms_language->getCode()); } } } if ($fieldLabel) { // Order direction $mandatory = $paramValue == true ? '<span class="atm-red">*</span> ' : ''; $value = isset($data["value"]['search'][$searchName][$paramType][$orderName]) ? $data["value"]['search'][$searchName][$paramType][$orderName] : ''; $searchOrderContent[] = array('xtype' => 'atmCombo', 'fieldLabel' => $mandatory . $fieldLabel, 'name' => 'value[search][' . $searchName . '][' . $paramType . '][' . $orderName . ']', 'hiddenName' => 'value[search][' . $searchName . '][' . $paramType . '][' . $orderName . ']', 'forceSelection' => true, 'mode' => 'local', 'valueField' => 'id', 'displayField' => 'name', 'triggerAction' => 'all', 'allowBlank' => !$mandatory, 'selectOnFocus' => true, 'editable' => false, 'value' => $value, 'store' => array('xtype' => 'arraystore', 'fields' => array('id', 'name'), 'data' => array(array('', '-'), array('asc', $cms_language->getMessage(MESSAGE_PAGE_FIELD_ORDER_ASC, false, MOD_POLYMOD_CODENAME)), array('desc', $cms_language->getMessage(MESSAGE_PAGE_FIELD_ORDER_DESC, false, MOD_POLYMOD_CODENAME))))); } else { $cms_message .= $cms_language->getMessage(MESSAGE_PAGE_SEARCH_ORDERTYPE_ERROR, array($searchName, $row->getLabel(), $orderName), MOD_POLYMOD_CODENAME) . "\n"; } } $searchParamContent[] = array('title' => $cms_language->getMessage(MESSAGE_PAGE_FIELD_ORDER, false, MOD_POLYMOD_CODENAME), 'xtype' => 'fieldset', 'autoHeight' => true, 'defaults' => array('anchor' => '97%'), 'items' => $searchOrderContent); } break;
/** * get an object value * * @param string $name : the name of the value to get * @param string $parameters (optional) : parameters for the value to get * @return mixed : the object values structure * @access public */ function getValue($name, $parameters = '') { global $cms_language; // @TODOV4 : Manage language into database ! $languages = array(); $languages['fr'] = array('January' => 'Janvier', 'February' => 'Février', 'March' => 'Mars', 'April' => 'Avril', 'May' => 'Mai', 'June' => 'Juin', 'July' => 'Juillet', 'August' => 'Août', 'September' => 'Septembre', 'October' => 'Octobre', 'November' => 'Novembre', 'December' => 'Décembre', 'Monday' => 'Lundi', 'Tuesday' => 'Mardi', 'Wednesday' => 'Mercredi', 'Thursday' => 'Jeudi', 'Friday' => 'Vendredi', 'Saturday' => 'Samedi', 'Sunday' => 'Dimanche', 'Jan' => 'Jan', 'Feb' => 'Fév', 'Mar' => 'Mar', 'Apr' => 'Avr', 'May' => 'Mai', 'Jun' => 'Jui', 'Jul' => 'Jui', 'Aug' => 'Aoû', 'Sep' => 'Sep', 'Oct' => 'Oct', 'Nov' => 'Nov', 'Dec' => 'Déc', 'Mon' => 'Lun', 'Tue' => 'Mar', 'Wed' => 'Mer', 'Thu' => 'Jeu', 'Fri' => 'Ven', 'Sat' => 'Sam', 'Sun' => 'Dim'); switch ($name) { case 'id': return (string) $this->_ID; break; case 'label': if ($parameters == 'js') { return sensitiveIO::sanitizeJSString($this->getLabel()); } else { return $this->getLabel(); } break; case 'objectname': return $this->getFieldLabel($cms_language); break; case 'objectdescription': return $this->getFieldDesc($cms_language); break; case 'objecttype': return $this->_objectID; break; case 'resource': if ($this->_objectResourceStatus == 1) { return parent::getID(); } return; break; case 'formatedDateStart': if ($this->_objectResourceStatus == 1) { $date = parent::getPublicationDateStart(); if (io::strtolower($parameters) == 'rss') { $date = date('r', $date->getTimeStamp()); } else { $date = date($parameters, $date->getTimeStamp()); if (is_object($cms_language) && isset($languages[$cms_language->getCode()])) { $date = str_replace(array_keys($languages[$cms_language->getCode()]), $languages[$cms_language->getCode()], $date); } } return io::htmlspecialchars($date); } break; case 'formatedDateEnd': if ($this->_objectResourceStatus == 1) { $date = parent::getPublicationDateEnd(); if (is_a($date, 'CMS_date')) { if (io::strtolower($parameters) == 'rss') { $date = date('r', $date->getTimeStamp()); } else { $date = date($parameters, $date->getTimeStamp()); if (is_object($cms_language) && isset($languages[$cms_language->getCode()])) { $date = str_replace(array_keys($languages[$cms_language->getCode()]), $languages[$cms_language->getCode()], $date); } } return io::htmlspecialchars($date); } } break; case 'dateStartNotNull': if ($this->_objectResourceStatus == 1) { $date = parent::getPublicationDateStart(); return !$date->isNull(); } break; case 'dateStartTimestamp': if ($this->_objectResourceStatus == 1) { $date = parent::getPublicationDateStart(); return $date->getTimestamp(); } break; case 'dateEndNotNull': if ($this->_objectResourceStatus == 1) { $date = parent::getPublicationDateEnd(); return !$date->isNull(); } break; case 'dateEndTimestamp': if ($this->_objectResourceStatus == 1) { $date = parent::getPublicationDateEnd(); return $date->getTimestamp(); } break; //field related values, may not exists ... //field related values, may not exists ... case 'fieldID': if (!is_a($this->_field, 'CMS_poly_object_field')) { $this->raiseError("Can't get 'fieldID' value for an object which is not a field of another object ..."); return ''; } return $this->_field->getID(); break; case 'description': if (!is_a($this->_field, 'CMS_poly_object_field')) { $this->raiseError("Can't get 'description' value for an object which is not a field of another object ..."); return ''; } return io::htmlspecialchars($this->_field->getFieldDescription($cms_language)); break; case 'required': if (!is_a($this->_field, 'CMS_poly_object_field')) { $this->raiseError("Can't get 'required' value for an object which is not a field of another object ..."); return false; } return $this->_field->getValue("required") ? true : false; break; case 'fieldname': if (!is_a($this->_field, 'CMS_poly_object_field')) { $this->raiseError("Can't get 'fieldname' value for an object which is not a field of another object ..."); return ''; } //get label of current field $fieldLabel = new CMS_object_i18nm($this->_field->getValue("labelID")); return $fieldLabel->getValue($cms_language->getCode()); break; default: $this->raiseError("Unknown value to get : " . $name); return false; break; } }
</table> <ul id="fields" class="sortable"> '; $count = 0; foreach ($fields as $field) { $count++; $td_class = $count % 2 == 0 ? "admin_lightgreybg" : "admin_darkgreybg"; $type = $field->getValue("type"); $label = new CMS_object_i18nm($field->getValue("labelID")); $typeObject = $field->getTypeObject(true); if (is_object($typeObject)) { $content .= ' <li id="f' . $field->getID() . '" alt="ID : ' . $field->getID() . '" title="ID : ' . $field->getID() . '"> <table border="0" cellpadding="2" cellspacing="2"> <tr> <td width="150" class="' . $td_class . '">' . $label->getValue($cms_language->getCode()); if (POLYMOD_DEBUG) { $content .= ' <span class="admin_text_alert"><small>(FieldID : ' . $field->getID() . ')</small></span>'; } $content .= ' </td> <td width="150" class="' . $td_class . '">' . $typeObject->getObjectLabel($cms_language) . '</td> <td width="200" class="' . $td_class . '">' . $typeObject->getDescription($cms_language) . '</td>'; //if ASE module exists, add field indexation options if (class_exists('CMS_module_ase') && CMS_module_ase::isActive()) { $content .= ' <td width="70" class="' . $td_class . '"> <table border="0" cellpadding="2" cellspacing="0"> <tr> <form action="' . $_SERVER["SCRIPT_NAME"] . '" method="post"> <input type="hidden" name="cms_action" value="index" />
/** * Return a list of objects infos to be displayed in module index according to user privileges * * @return string : HTML scripts infos * @access public */ function getObjectsInfos($user) { $objectsInfos = array(); $cms_language = $user->getLanguage(); $catFieldsNames = array(); //objects $objects = $this->getObjects(); if (APPLICATION_ENFORCES_ACCESS_CONTROL === false || APPLICATION_ENFORCES_ACCESS_CONTROL === true && $user->hasModuleClearance($this->getCodename(), CLEARANCE_MODULE_EDIT)) { foreach ($objects as $anObjectType) { //if object is editable or if user has full privileges if ($anObjectType->getValue("admineditable") == 0 || $anObjectType->getValue("admineditable") == 2 && $user->hasAdminClearance(CLEARANCE_ADMINISTRATION_EDITVALIDATEALL)) { //load fields objects for object $objectFields = CMS_poly_object_catalog::getFieldsDefinition($anObjectType->getID()); if (sizeof($objectFields)) { $objectsInfos[] = array('label' => $anObjectType->getLabel($cms_language), 'adminLabel' => $anObjectType->getLabel($cms_language), 'description' => $anObjectType->getDescription($cms_language), 'objectId' => $anObjectType->getID(), 'url' => PATH_ADMIN_MODULES_WR . '/' . MOD_POLYMOD_CODENAME . '/items.php', 'module' => $this->getCodename(), 'class' => 'atm-elements'); //get categories fields for object if (count($catFieldsNames) < 3) { $thisFieldsCategories = CMS_poly_object_catalog::objectHasCategories($anObjectType->getID()); if ($thisFieldsCategories) { $fields = CMS_poly_object_catalog::getFieldsDefinition($anObjectType->getID()); foreach ($thisFieldsCategories as $catField) { if (isset($fields[$catField]) && is_object($fields[$catField])) { $label = new CMS_object_i18nm($fields[$catField]->getValue("labelID")); $catFieldsNames[] = $label->getValue($cms_language->getCode()) . ' (' . $anObjectType->getLabel($cms_language) . ')'; } } } } else { if (!in_array('...', $catFieldsNames)) { $catFieldsNames[] = '...'; } } } } } } //Categories //if user has some categories to manage $userManageCategories = $user->getRootModuleCategoriesManagable($this->getCodename()); if ($catFieldsNames && (is_array($userManageCategories) && $userManageCategories || $user->hasAdminClearance(CLEARANCE_ADMINISTRATION_EDITVALIDATEALL))) { $objectsInfos[] = array('label' => $cms_language->getMessage(self::MESSAGE_PAGE_CATEGORIES), 'adminLabel' => $cms_language->getMessage(self::MESSAGE_PAGE_ADMIN_CATEGORIES), 'description' => $cms_language->getMessage(self::MESSAGE_PAGE_CATEGORIES_USED, false, MOD_POLYMOD_CODENAME) . io::htmlspecialchars(implode(', ', $catFieldsNames)), 'objectId' => 'categories', 'url' => PATH_ADMIN_WR . '/modules-categories.php', 'module' => $this->getCodename(), 'class' => 'atm-categories'); } return $objectsInfos; }
/** * get object description * * @param mixed $language the language code (string) or the CMS_language (object) to use for description * @return string, the description * @access public */ function getDescription($language) { $description = new CMS_object_i18nm($this->getValue("descriptionID")); if (is_a($language, "CMS_language")) { return $description->getValue($language->getCode()); } else { return $description->getValue($language); } }