Example #1
0
 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);
 }
Example #2
0
/**
 * Элементы для редактирования поля типа "связь с другим объектом"
 * Функция не должна использоваться внутри 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;
}