Exemplo n.º 1
0
 private static function _init()
 {
     if (count(self::$types) == 0) {
         self::$types = array();
         //Element fields
         self::$types["NAME"] = new CListFieldType("NAME", GetMessage("LISTS_LIST_FIELD_NAME"), CListFieldType::IS_FIELD, CListFieldType::NOT_READONLY);
         self::$types["SORT"] = new CListFieldType("SORT", GetMessage("LISTS_LIST_FIELD_SORT"), CListFieldType::IS_FIELD, CListFieldType::NOT_READONLY);
         self::$types["ACTIVE_FROM"] = new CListFieldType("ACTIVE_FROM", GetMessage("LISTS_LIST_FIELD_ACTIVE_FROM"), CListFieldType::IS_FIELD, CListFieldType::NOT_READONLY);
         self::$types["ACTIVE_TO"] = new CListFieldType("ACTIVE_TO", GetMessage("LISTS_LIST_FIELD_ACTIVE_TO"), CListFieldType::IS_FIELD, CListFieldType::NOT_READONLY);
         self::$types["PREVIEW_PICTURE"] = new CListFieldType("PREVIEW_PICTURE", GetMessage("LISTS_LIST_FIELD_PREVIEW_PICTURE"), CListFieldType::IS_FIELD, CListFieldType::NOT_READONLY);
         self::$types["PREVIEW_TEXT"] = new CListFieldType("PREVIEW_TEXT", GetMessage("LISTS_LIST_FIELD_PREVIEW_TEXT"), CListFieldType::IS_FIELD, CListFieldType::NOT_READONLY);
         self::$types["DETAIL_PICTURE"] = new CListFieldType("DETAIL_PICTURE", GetMessage("LISTS_LIST_FIELD_DETAIL_PICTURE"), CListFieldType::IS_FIELD, CListFieldType::NOT_READONLY);
         self::$types["DETAIL_TEXT"] = new CListFieldType("DETAIL_TEXT", GetMessage("LISTS_LIST_FIELD_DETAIL_TEXT"), CListFieldType::IS_FIELD, CListFieldType::NOT_READONLY);
         self::$types["DATE_CREATE"] = new CListFieldType("DATE_CREATE", GetMessage("LISTS_LIST_FIELD_DATE_CREATE"), CListFieldType::IS_FIELD, CListFieldType::IS_READONLY);
         self::$types["CREATED_BY"] = new CListFieldType("CREATED_BY", GetMessage("LISTS_LIST_FIELD_CREATED_BY"), CListFieldType::IS_FIELD, CListFieldType::IS_READONLY);
         self::$types["TIMESTAMP_X"] = new CListFieldType("TIMESTAMP_X", GetMessage("LISTS_LIST_FIELD_TIMESTAMP_X"), CListFieldType::IS_FIELD, CListFieldType::IS_READONLY);
         self::$types["MODIFIED_BY"] = new CListFieldType("MODIFIED_BY", GetMessage("LISTS_LIST_FIELD_MODIFIED_BY"), CListFieldType::IS_FIELD, CListFieldType::IS_READONLY);
         //Property types
         self::$types["S"] = new CListFieldType("S", GetMessage("LISTS_LIST_FIELD_S"), CListFieldType::NOT_FIELD, CListFieldType::NOT_READONLY);
         self::$types["N"] = new CListFieldType("N", GetMessage("LISTS_LIST_FIELD_N"), CListFieldType::NOT_FIELD, CListFieldType::NOT_READONLY);
         self::$types["L"] = new CListFieldType("L", GetMessage("LISTS_LIST_FIELD_L"), CListFieldType::NOT_FIELD, CListFieldType::NOT_READONLY);
         self::$types["F"] = new CListFieldType("F", GetMessage("LISTS_LIST_FIELD_F"), CListFieldType::NOT_FIELD, CListFieldType::NOT_READONLY);
         self::$types["G"] = new CListFieldType("G", GetMessage("LISTS_LIST_FIELD_G"), CListFieldType::NOT_FIELD, CListFieldType::NOT_READONLY);
         self::$types["E"] = new CListFieldType("E", GetMessage("LISTS_LIST_FIELD_E"), CListFieldType::NOT_FIELD, CListFieldType::NOT_READONLY);
         //User types
         foreach (CIBlockProperty::GetUserType() as $ar) {
             if (array_key_exists("GetPublicEditHTML", $ar)) {
                 self::$types[$ar["PROPERTY_TYPE"] . ":" . $ar["USER_TYPE"]] = new CListFieldType($ar["PROPERTY_TYPE"] . ":" . $ar["USER_TYPE"], $ar["DESCRIPTION"], CListFieldType::NOT_FIELD, CListFieldType::NOT_READONLY);
             }
         }
     }
 }
Exemplo n.º 2
0
	public function GetAvailableTypes($ID = "")
	{
		$arTypeNames = CListFieldTypeList::GetTypesNames();
		foreach($this->fields->GetFields() as $FIELD_ID)
			if($FIELD_ID != $ID)
				unset($arTypeNames[$FIELD_ID]);
		return $arTypeNames;
	}
Exemplo n.º 3
0
 public function Update($arFields)
 {
     if (isset($arFields["TYPE"])) {
         $newType = $arFields["TYPE"];
     } else {
         $newType = $this->GetTypeID();
     }
     if (is_array($this->_property) && !CListFieldTypeList::IsField($newType)) {
         foreach ($this->GetArray() as $id => $val) {
             if (array_key_exists($id, $arFields) && $id != "IBLOCK_ID") {
                 $this->_property[$id] = $arFields[$id];
             }
         }
         if (strpos($newType, ":") !== false) {
             list($this->_property["PROPERTY_TYPE"], $this->_property["USER_TYPE"]) = explode(":", $newType);
         } else {
             $this->_property["PROPERTY_TYPE"] = $newType;
             $this->_property["USER_TYPE"] = "";
         }
         $this->_property["CHECK_PERMISSIONS"] = "N";
         $this->_property["ACTIVE"] = "Y";
         $obProperty = new CIBlockProperty();
         if ($obProperty->Update($this->_property["ID"], $this->_property)) {
             if ($this->_property["PROPERTY_TYPE"] == "L" && is_array($arFields["LIST"])) {
                 CList::UpdatePropertyList($this->_property["ID"], $arFields["LIST"]);
             }
             return new CListPropertyField($this->_property["IBLOCK_ID"], "PROPERTY_" . $this->_property["ID"], $arFields["NAME"], $arFields["SORT"]);
         }
     }
     return null;
 }
Exemplo n.º 4
0
}
if (preg_match("/^(G|G:|E|E:)/", $data["TYPE"])) {
    $arResult["LINK_IBLOCKS"] = CLists::GetIBlocks($arParams["~IBLOCK_TYPE_ID"], !$arParams["CAN_EDIT"], $arParams["~SOCNET_GROUP_ID"]);
    if (substr($data["TYPE"], 0, 1) == "G") {
        unset($arResult["LINK_IBLOCKS"][$arResult["IBLOCK_ID"]]);
    }
}
$arResult["FORM_DATA"] = array();
foreach ($data as $key => $value) {
    $arResult["FORM_DATA"]["~" . $key] = $value;
    if (is_array($value)) {
        foreach ($value as $key1 => $value1) {
            $value[$key1] = htmlspecialcharsbx($value1);
        }
        $arResult["FORM_DATA"][$key] = $value;
    } else {
        $arResult["FORM_DATA"][$key] = htmlspecialcharsbx($value);
    }
}
$arResult["CAN_BE_MULTIPLE"] = !$obList->is_field($data["TYPE"]);
$arResult["CAN_BE_OPTIONAL"] = $data["TYPE"] != "NAME";
$arResult["IS_READ_ONLY"] = $arResult["FIELD_ID"] ? $obList->is_readonly($arResult["FIELD_ID"]) : CListFieldTypeList::GetByID($data["TYPE"])->IsReadonly();
$this->IncludeComponentTemplate();
if ($arResult["FIELD_ID"]) {
    $APPLICATION->SetTitle(GetMessage("CC_BLFE_TITLE_EDIT", array("#NAME#" => htmlspecialcharsex($arResult["FIELD"]["NAME"]))));
} else {
    $APPLICATION->SetTitle(GetMessage("CC_BLFE_TITLE_NEW"));
}
$APPLICATION->AddChainItem($arResult["IBLOCK"]["NAME"], $arResult["~LIST_URL"]);
$APPLICATION->AddChainItem(GetMessage("CC_BLFE_CHAIN_LIST_EDIT"), $arResult["~LIST_EDIT_URL"]);
$APPLICATION->AddChainItem(GetMessage("CC_BLFE_CHAIN_FIELDS"), $arResult["~LIST_FIELDS_URL"]);
Exemplo n.º 5
0
	protected function _read_form_settings($form_id)
	{
		if(!$form_id)
			return;

		global $DB;

		//read list meta from module table
		$rsFields = $DB->Query("
			SELECT * FROM b_lists_field
			WHERE IBLOCK_ID = ".$this->iblock_id."
			ORDER BY SORT ASC
		", false, "File: ".__FILE__."<br>Line: ".__LINE__);
		$dbFields = array();
		while($arField = $rsFields->Fetch())
			$dbFields[$arField["FIELD_ID"]] = $arField;

		$fields = array();
		$customTabs = CUserOptions::GetOption("form", $form_id);

		//read list meta from interface settings
		if($customTabs && $customTabs["tabs"])
		{
			$sort = 10;
			$arTabs = explode("--;--", $customTabs["tabs"]);
			foreach($arTabs as $customFields)
			{
				if($customFields)
				{
					$arCustomFields = explode("--,--", $customFields);
					array_shift($arCustomFields);
					foreach($arCustomFields as $customField)
					{
						list($FIELD_ID, $customName) = explode("--#--", $customField);
						if($FIELD_ID != "SECTIONS")
						{
							$customName = ltrim($customName, "* -\xa0");

							if(CListFieldTypeList::IsField($FIELD_ID))
								$fields[$FIELD_ID] = new CListElementField($this->iblock_id, $FIELD_ID, $customName, $sort);
							else
								$fields[$FIELD_ID] = new CListPropertyField($this->iblock_id, $FIELD_ID, $customName, $sort);

							//check if property was deleted from admin interface
							if(!is_array($fields[$FIELD_ID]->GetArray()))
							{
								unset($fields[$FIELD_ID]);
							}
							else
							{
								$sort += 10;
								unset($dbFields[$FIELD_ID]);
							}
						}
					}
				}
			}
			//There were some fields "deleted" from interface
			foreach($dbFields as $FIELD_ID => $arField)
			{
				$DB->Query("
					DELETE FROM b_lists_field
					WHERE IBLOCK_ID = ".$this->iblock_id."
					AND FIELD_ID = '".$DB->ForSQL($FIELD_ID)."'
				", false, "File: ".__FILE__."<br>Line: ".__LINE__);
			}
		}
		else//or from module metadata
		{
			foreach($dbFields as $FIELD_ID => $arField)
			{
				if(CListFieldTypeList::IsField($FIELD_ID))
					$fields[$FIELD_ID] = new CListElementField($this->iblock_id, $FIELD_ID, $arField["NAME"], $arField["SORT"]);
				else
					$fields[$FIELD_ID] = new CListPropertyField($this->iblock_id, $FIELD_ID, $arField["NAME"], $arField["SORT"]);
				//check if property was deleted from admin interface
				if(!is_array($fields[$FIELD_ID]->GetArray()))
				{
					unset($fields[$FIELD_ID]);
					$DB->Query("
						DELETE FROM b_lists_field
						WHERE IBLOCK_ID = ".$this->iblock_id."
						AND FIELD_ID = '".$DB->ForSQL($FIELD_ID)."'
					", false, "File: ".__FILE__."<br>Line: ".__LINE__);
				}
			}
		}

		return $fields;
	}