При этом PHP же не предоставляет никаких возможностей по переопределению функций. Даже все эти новые потуги сделать нечто вроде нэймспейсов не спасают (((
В итоге постоянно приходится городить огород.
Предлагаю заменить функцию _ShowElementPropertyField в /bitrix/modules/iblock/admin_tools.php
на:
Дифф тут примитивный. Строка
меняется на
В итоге имена уже привязанных элементов становятся ссылками на редактирование.
В итоге постоянно приходится городить огород.
Предлагаю заменить функцию _ShowElementPropertyField в /bitrix/modules/iblock/admin_tools.php
на:
Код |
---|
function _ShowElementPropertyField($name, $property_fields, $values, $bVarsFromForm = false) { global $bCopy; $index = 0; if(!is_array($values)) $values = array(); echo '<table cellpadding="0" cellspacing="0" border="0" class="nopadding" width="100%" id="tb'.md5($name).'">'; foreach($values as $key=>$val) { if($bCopy) { $key = "n".$index; $index++; } if(is_array($val) && is_set($val, "VALUE")) $val = $val["VALUE"]; $db_res = CIBlockElement::GetByID($val); $ar_res = $db_res->GetNext(); echo '<tr><td>'. '<input name="'.$name.'['.$key.']" id="'.$name.'['.$key.']" value="'.htmlspecialcharsex($val).'" size="5" type="text">'. '<input type="button" value="..." onClick="jsUtils.OpenWindow(\'/bitrix/admin/iblock_element_search.php?lang='.LANG.'&IBLOCK_ID='.$property_fields["LINK_IBLOCK_ID"].'&n='.$name.'&k='.$key.'\', 600, 500);">'. ' <span id="sp_'.md5($name).'_'.$key.'" >'. '<a href="/bitrix/admin/iblock_element_edit.php?WF=Y&ID='.$ar_res['ID'].'&type='.$ar_res['IBLOCK_TYPE_ID'].'&lang=ru&IBLOCK_ID='.$ar_res['IBLOCK_ID'].'&find_section_section='.$ar_res['IBLOCK_SECTION_ID'].'" target="_blank">'. $ar_res['NAME']. '</a>' .'</span>'. '</td></tr>'; if($property_fields["MULTIPLE"]!="Y") { $bVarsFromForm = true; break; } } if(!$bVarsFromForm) { $MULTIPLE_CNT = IntVal($property_fields["MULTIPLE_CNT"]); $cnt = ($property_fields["MULTIPLE"]=="Y"? ($MULTIPLE_CNT>0 && $MULTIPLE_CNT<=30 ? $MULTIPLE_CNT : 5) : 1); for($i = 0; $i < $cnt; $i++) { $val = ""; $key = "n".$index; $index++; echo '<tr><td>'. '<input name="'.$name.'['.$key.']" id="'.$name.'['.$key.']" value="'.htmlspecialcharsex($val).'" size="5" type="text">'. '<input type="button" value="..." onClick="jsUtils.OpenWindow(\'/bitrix/admin/iblock_element_search.php?lang='.LANG.'&IBLOCK_ID='.$property_fields["LINK_IBLOCK_ID"].'&n='.$name.'&k='.$key.'\', 600, 500);">'. ' <span id="sp_'.md5($name).'_'.$key.'"></span>'. '</td></tr>'; } } if($property_fields["MULTIPLE"]=="Y") { echo '<tr><td>'. '<input type="button" value="'.GetMessage("IBLOCK_AT_PROP_ADD").'..." onClick="jsUtils.OpenWindow(\'/bitrix/admin/iblock_element_search.php?lang='.LANG.'&IBLOCK_ID='.$property_fields["LINK_IBLOCK_ID"].'&n='.$name.'&m=y&k='.$key.'\', 600, 500);">'. '<span id="sp_'.md5($name).'_'.$key.'" ></span>'. '</td></tr>'; } echo '</table>'; echo "<script type=\"text/javascript\">\r\n"; echo "var MV_".md5($name)." = ".$index.";\r\n"; echo "function InS".md5($name)."(id, name){ \r\n"; echo " oTbl=document.getElementById('tb".md5($name)."');\r\n"; echo " oRow=oTbl.insertRow(oTbl.rows.length-1); \r\n"; echo " oCell=oRow.insertCell(-1); \r\n"; echo " oCell.innerHTML=". "'<input name=\"".$name."[n'+MV_".md5($name)."+']\" value=\"'+id+'\" size=\"5\" type=\"text\">'+\r\n". "'<input type=\"button\" value=\"...\" '+\r\n". "'onClick=\"jsUtils.OpenWindow(\'/bitrix/admin/iblock_element_search.php?lang=".LANG."&IBLOCK_ID=".$property_fields["LINK_IBLOCK_ID"]."&n=".$name."&k='+MV_".md5($name)."+'\', '+\r\n". "' 600, 500);\">'+". "' <span id=\"sp_".md5($name)."_'+MV_".md5($name)."+'\" >'+name+'</span>". "';"; echo 'MV_'.md5($name).'++;'; echo '}'; echo "\r\n</script>"; } |
Дифф тут примитивный. Строка
Код |
---|
echo '<tr><td>'. '<input name="'.$name.'['.$key.']" id="'.$name.'['.$key.']" value="'.htmlspecialcharsex($val).'" size="5" type="text">'. '<input type="button" value="..." onClick="jsUtils.OpenWindow(\'/bitrix/admin/iblock_element_search.php?lang='.LANG.'&IBLOCK_ID='.$property_fields["LINK_IBLOCK_ID"].'&n='.$name.'&k='.$key.'\', 600, 500);">'. ' <span id="sp_'.md5($name).'_'.$key.'" >'.$ar_res['NAME'].'</span>'. '</td></tr>'; |
меняется на
Код |
---|
echo '<tr><td>'. '<input name="'.$name.'['.$key.']" id="'.$name.'['.$key.']" value="'.htmlspecialcharsex($val).'" size="5" type="text">'. '<input type="button" value="..." onClick="jsUtils.OpenWindow(\'/bitrix/admin/iblock_element_search.php?lang='.LANG.'&IBLOCK_ID='.$property_fields["LINK_IBLOCK_ID"].'&n='.$name.'&k='.$key.'\', 600, 500);">'. ' <span id="sp_'.md5($name).'_'.$key.'" >'. '<a href="/bitrix/admin/iblock_element_edit.php?WF=Y&ID='.$ar_res['ID'].'&type='.$ar_res['IBLOCK_TYPE_ID'].'&lang=ru&IBLOCK_ID='.$ar_res['IBLOCK_ID'].'&find_section_section='.$ar_res['IBLOCK_SECTION_ID'].'" target="_blank">'. $ar_res['NAME']. '</a>' .'</span>'. '</td></tr>'; |
В итоге имена уже привязанных элементов становятся ссылками на редактирование.