function get_instance_by_field_id($field_id) { global $db; $field_format = $db->get_var("SELECT Format\n FROM Field\n WHERE Field_ID=" . (int) $field_id . "\n AND TypeOfData_ID=9"); if (!$field_format) { trigger_error("get_instance_by_field_id - wrong field ID?", E_USER_ERROR); } return field_relation_factory::get_instance($field_format); }
<?php /* $Id: select_subclass_list.php 6950 2012-05-12 09:04:54Z alkich $ */ $NETCAT_FOLDER = join(strstr(__FILE__, "/") ? "/" : "\\", array_slice(preg_split("/[\\/\\\\]+/", __FILE__), 0, -4)) . (strstr(__FILE__, "/") ? "/" : "\\"); include_once $NETCAT_FOLDER . "vars.inc.php"; require $ADMIN_FOLDER . "function.inc.php"; require $ADMIN_FOLDER . "related/format.inc.php"; require_once $INCLUDE_FOLDER . "s_common.inc.php"; $sub = (int) $sub; $field_id = (int) $field_id; $cs_field_name = htmlspecialchars($cs_field_name, ENT_QUOTES); if (!$sub || !$field_id && !$cs_field_name) { trigger_error("Not enough data", E_USER_ERROR); } if ($field_id) { $field_data = field_relation_factory::get_instance_by_field_id($field_id); } else { $cs_type = 'rel_cc'; require $ADMIN_FOLDER . "array_to_form.inc.php"; $classname = 'nc_a2f_field_' . $cs_type; if (!class_exists($classname)) { trigger_error("Wrong params", E_USER_ERROR); } $fl = new $classname(); $field_data = $fl->get_relation_object(); } $qry = $field_data->get_list_query($sub); $cc_list = listQuery($qry, "<a href='#' onclick='top.selectItem(\$data[ItemID])' title='\".NETCAT_MODERATION_SELECT_RELATED.\"'>\n <span class='id'>\$data[ItemID].</span> \$data[ItemCaption]\n <div class='icons icon_related icon_subclass_select'></div></a>"); ?> <html> <head>
<?php /* $Id: select_message_list.php 5946 2012-01-17 10:44:36Z denis $ */ $NETCAT_FOLDER = join(strstr(__FILE__, "/") ? "/" : "\\", array_slice(preg_split("/[\\/\\\\]+/", __FILE__), 0, -4)) . (strstr(__FILE__, "/") ? "/" : "\\"); include_once $NETCAT_FOLDER . "vars.inc.php"; require $ADMIN_FOLDER . "function.inc.php"; require $ADMIN_FOLDER . "related/format.inc.php"; require_once $INCLUDE_FOLDER . "s_common.inc.php"; $sub = (int) $sub; $cc = (int) $cc; $field_id = (int) $field_id; if (!$sub || !$field_id) { trigger_error("Not enough data", E_USER_ERROR); } $field_format = field_relation_factory::get_instance_by_field_id($field_id); ?> <html> <head> <title>Object list</title> <link type='text/css' rel='Stylesheet' href='<?php echo $ADMIN_TEMPLATE; ?> css/admin.css'> <link type='text/css' rel='Stylesheet' href='<?php echo $ADMIN_TEMPLATE; ?> css/main.css'> </head> <body style='margin:0; overflow: hidden'> <?php
/** * Элементы для редактирования поля типа "связь с другим объектом" * Функция не должна использоваться внутри s_list_class. * Работает только в admin_mode. * * @param string имя поля * @param string кнопка/ссылка на изменение связанного объекта * например '<a href="#" onclick="%s">выбрать</a>' * где на место %s будет подставлен Javascript-код. * Обрабатывается через sprintf, поэтому не должно быть неэкранированного "%". * Разработчику следует учитывать, что внутри вставляемого JS-кода * используются одинарные кавычки. * @param string удаление (... $action_remove) * @return string */ function nc_related_field($field_name, $change_template = "", $remove_template = "") { require_once $GLOBALS['ADMIN_FOLDER'] . "related/format.inc.php"; $result = ""; global $fld, $fldID, $fldValue, $fldName, $fldFmt, $fldNotNull, $fldType, $message, $db, $admin_mode, $inside_admin, $ADMIN_PATH; if (!$admin_mode) { return ""; } if (is_array($fld) && !in_array($field_name, $fld)) { trigger_error("<b>nc_related_field</b>: incorrect field name ({$field_name})", E_USER_WARNING); return; } if (!is_array($fld)) { return; } $tmp_array = array_flip($fld); $field_index = $tmp_array[$field_name]; $field_id = $fldID[$field_index]; if ($fldType[$field_index] != 9) { trigger_error("<b>nc_related_field</b>: field '{$field_name}' is not a link", E_USER_WARNING); return; } // заголовок поля $description = $fldName[$field_index] ? $fldName[$field_index] : $fld[$field_index]; $result .= $description; if ($fldNotNull[$field_index]) { $result .= " (*)"; } $result .= ": <br />\n"; $result .= "<ul class='nc-toolbar nc--left'>"; $result .= "<li><div id='nc_rel_{$field_id}_caption'>"; $related_id = (int) $fldValue[$field_index]; $field_data = field_relation_factory::get_instance($fldFmt[$field_index]); // вывод значения if ($related_id) { $related_caption = listQuery($field_data->get_object_query($related_id), $field_data->get_full_admin_template()); $result .= $related_caption ? $related_caption : sprintf(NETCAT_MODERATION_RELATED_INEXISTENT, $related_id); } else { $result .= NETCAT_MODERATION_NO_RELATED; } $result .= "</div></li>"; $result .= "<li class='nc-divider'></li>"; // кнопки действий: заменить и удалить связь if (!$change_template) { $change_template = "<li><a href=\"#\" onclick=\"%s\"><i class='nc-icon nc--edit'></i> " . NETCAT_MODERATION_CHANGE_RELATED . "</a></li>"; } $change_link = "window.open('" . $ADMIN_PATH . "related/select_" . $field_data->get_relation_type() . ".php?field_id={$fldID[$field_index]}', " . "'nc_popup_{$fld[$field_index]}', " . "'width={$field_data->popup_width},height={$field_data->popup_height},menubar=no,resizable=no,scrollbars=yes,toolbar=no,resizable=yes'); " . "return false;"; $result .= sprintf($change_template, $change_link); if (!$fldNotNull[$field_index]) { if (!$remove_template) { $remove_template = "<li><a href='#' onclick=\"%s\"><i class='nc-icon nc--remove'></i> " . NETCAT_MODERATION_REMOVE_RELATED . "</a></li>"; } $remove_link = "document.getElementById('nc_rel_{$field_id}_value').value='';" . "document.getElementById('nc_rel_{$field_id}_caption').innerHTML = '" . NETCAT_MODERATION_NO_RELATED . "';" . "return false;"; $result .= sprintf($remove_template, $remove_link); } // hidden $result .= "<input type='hidden' name='f_{$fld[$field_index]}' id='nc_rel_{$field_id}_value' value='{$related_id}' />\n"; // готово $result .= "</ul>"; //.nc-toolbar $result .= "<br />\n"; return $result; }