【问题标题】:Drupal, CCK -- remove draggable reorder for non-adminsDrupal,CCK——为非管理员删除可拖动的重新排序
【发布时间】:2010-06-23 19:01:25
【问题描述】:

有没有一种干净的方法来删除多值 CCK 字段上的可拖动选项?我想我可以用 CSS 设置样式,但这似乎不是“正确”的方式。

理想情况下,除了管理员之外,任何用户都无法使用可拖动选项。

【问题讨论】:

    标签: drupal cck drupal-theming


    【解决方案1】:

    看起来 tabledrag 东西正在 cck 主题函数中构建 - 例如 theme_content_multiple_values 它正在向表格行添加一个“可拖动”类,并调用 drupal_add_tabledrag 在桌子上。

    您应该能够在您的主题/模块(?)中覆盖它并添加一个相当简单的开关,以便在添加拖动之前测试具有适当权限的用户。

    【讨论】:

      【解决方案2】:

      感谢@Andrew 的提示。这是我最终想出的:

      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;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-09
        • 2016-07-20
        • 1970-01-01
        相关资源
        最近更新 更多