是否有一种干净的方法来删除多值CCK字段上的可拖动选项?我认为我可以用CSS来设计它,但这看起来不像是“正确”的方式。Drupal,CCK - 删除非管理员的可拖动重新排序
理想情况下,可拖动选项不适用于除管理员以外的任何用户。
是否有一种干净的方法来删除多值CCK字段上的可拖动选项?我认为我可以用CSS来设计它,但这看起来不像是“正确”的方式。Drupal,CCK - 删除非管理员的可拖动重新排序
理想情况下,可拖动选项不适用于除管理员以外的任何用户。
感谢提示@安德鲁。以下是我最终想到的结果:
function stannes_content_multiple_values($element) {
global $user;
$field_name = $element['#field_name'];
$field = content_fields($field_name);
$output = '';
if ($field['multiple'] >= 1) {
$table_id = $element['#field_name'] .'_values';
$order_class = $element['#field_name'] .'-delta-order';
$required = !empty($element['#required']) ? '<span class="form-required" title="'. t('This field is required.') .'">*</span>' : '';
$header = array(
array('data' => t('!title: !required', array('!title' => $element['#title'], '!required' => $required)), 'colspan' => 2)
);
if ($user->uid == 1) {
$header[] = t('Order');
}
$rows = array();
// Sort items according to '_weight' (needed when the form comes back after
// preview or failed validation)
$items = array();
foreach (element_children($element) as $key) {
if ($key !== $element['#field_name'] .'_add_more') {
$items[] = &$element[$key];
}
}
usort($items, '_content_sort_items_value_helper');
// Add the items as table rows.
foreach ($items as $key => $item) {
$item['_weight']['#attributes']['class'] = $order_class;
$delta_element = drupal_render($item['_weight']);
if ($user->uid == 1) {
$cells = array(
array('data' => '', 'class' => 'content-multiple-drag'),
drupal_render($item),
array('data' => $delta_element, 'class' => 'delta-order'),
);
} else {
$cells = array(
drupal_render($item)
);
}
$rows[] = array(
'data' => $cells,
'class' => 'draggable',
);
}
$output .= theme('table', $header, $rows, array('id' => $table_id, 'class' => 'content-multiple-table'));
$output .= $element['#description'] ? '<div class="description">'. $element['#description'] .'</div>' : '';
$output .= drupal_render($element[$element['#field_name'] .'_add_more']);
if ($user->uid == 1) {
drupal_add_tabledrag($table_id, 'order', 'sibling', $order_class);
}
} else {
foreach (element_children($element) as $key) {
$output .= drupal_render($element[$key]);
}
}
return $output;
}
它看起来像tabledrag东西正在修建的CCK主题功能 - 如theme_content_multiple_values
它添加一个“可拖动”类表中的行,并呼吁 在桌子上drupal_add_tabledrag
。
您应该能够在主题/模块(?)中覆盖此内容,并添加一个相当简单的开关,以在添加拖动之前为具有适当权限的用户进行测试。