¿Cómo dejo que los usuarios cancelen la publicación y publiquen su propio contenido?

30

Quiero dejar que los usuarios no publiquen y publiquen su propio contenido. De manera predeterminada, debe otorgar permiso para "administrar nodos" para que los usuarios puedan publicar o publicar contenido. Sin embargo, esa es una forma amplia. Quiero permitir que los usuarios eliminen o publiquen un nodo si y solo si lo crearon. Esto también significa que deberían poder ver nodos no publicados si y solo si lo crearon.

Chaulky
fuente

Respuestas:

20

Un enfoque de UI que he usado en algunos sitios es el módulo de Opciones de Nodo de Anulación , agrega permisos similares a los que proporciona mi otra respuesta, más un montón adicional.

Descifrar
fuente
Este parece ser el enfoque más simple ... y actualmente está funcionando para mí. ¡Gracias!
Chaulky
Esto es lo mejor, ya que puede permitir la publicación y pegajosa sin administrar nodos :)
Alex Weber
Parece un gran módulo para tratar este problema.
zilverdistel
20

Siempre usamos el módulo Publicar contenido para eso. Agrega una cantidad de permisos específicos y una pestaña de publicación / no publicación en los nodos.

Este modulo

  • permite permisos granulares de publicación y no publicación:
    • global (anular / publicar cualquier contenido)
    • por "tipo de nodo" (anular / publicar cualquier contenido [tipo de nodo])
    • por usuario (deshacer / publicar contenido propio [tipo de nodo]
  • agrega una pestaña "Publicar / No publicar" a la página del nodo para deshacer / publicar con un clic
  • expone enlaces de publicación / publicación a sus vistas, lo que facilita agilizar los flujos de trabajo para los revisores, editores y editores.
  • es ligero y siempre lo será.
marcvangend
fuente
9

Recomiendo usar el módulo de revisión que le brinda algunos beneficios sobre los métodos anteriores. Uno, por supuesto, es que es un módulo completamente mantenido y, por lo tanto, habrá muchos ojos en el código y muchas correcciones de errores. Dos, obtendrá más funciones para adaptar esto a su flujo de trabajo general.

Para su caso de uso, otorga a sus usuarios los permisos de "creador" y los permisos de "moderador", para que básicamente puedan moderar su propio contenido, pero como se dice en la descripción del módulo, no se les otorgan poderes divinos como dar ' administrar nodos 'daría.

coderintherye
fuente
Esta es una opción muy interesante, pero hay mucho más de lo que necesito. Pensé que me alegra saberlo, puedo pensar en algunos otros sitios que serían útiles.
Chaulky
6

Hay un módulo que hace esto, pero no puedo recordar el nombre. De hecho, sentí que el enfoque que tomó el módulo era demasiado engorroso, tenía mucho código cuando el código importante real era solo una línea envuelta con cierta lógica de permiso.

Esta es mi versión del código:

function MYMODULE_perm() {
  $perms[] = 'administer status of any content';

  foreach (node_get_types() as $type) {
    if (isset($type->type)) {
      $perms[] = 'administer status of any '. check_plain($type->type) .' content';
      $perms[] = 'administer status of own '. check_plain($type->type) .' content';
    }
  }

  return $perms;
}

function MYMODULE_form_alter(&$form, &$form_state, $form_id) {
  if ($form['#id'] == 'node-form' && $form_id == "{$form['#node']->type}_node_form" && _MYMODULE_access($form['#node']->type)) {
    if ($form['options']['#access'] == FALSE) {
      $form['options']['#access'] = TRUE;
    }
  }
}

function _MYMODULE_access($type) {
  return user_access('administer status of any content')
      || user_access('administer status of any ' . check_plain($type) . ' content')
      || user_access('administer status of own ' . check_plain($type) . ' content');
}

Eso agrega algunos permisos adicionales que le permiten permitir a los usuarios publicar / publicar su propio tipo de contenido o todo, y todos los tipos de contenido, establezcan cómo lo deseen.

Descifrar
fuente
Gracias, eso se ve bastante bien, tiene sentido. ¿Pero qué hay de poder ver su contenido inédito? Si no pueden verlo, ¿cómo lo publicarán?
Chaulky
No debería afectar eso, un usuario de IIRC puede ver su contenido no publicado, ya sea que tenga o no 'administre nodos'.
Descifrar el
3

Solo quiero actualizar la respuesta de Decipher, la bruja me parece el mejor enfoque si no desea agregar otro módulo, para Drupal 7:

/**
 * Implements hook_permission().
 */
function MYMODULE_permission() {  
  $perms = array(
    'administer status of any content' => array(
      'title' => t('Administer status for all content type'),
      'description' => t(''),
      'restrict access' => true
    ),
  );

  foreach (node_type_get_types() as $type) {
    if (isset($type->type)) {
      $perm_types = array(
        'administer status of any '. check_plain($type->type) .' content' => array(
          'title' => t('Administer status of any '. check_plain($type->type) .' content'),
          'description' => t(''),
        ),

        'administer status of own '. check_plain($type->type) .' content' => array(
          'title' => t('Administer status of own '. check_plain($type->type) .' content'),
          'description' => t(''),
        ),
      );
      $perms = array_merge($perms,$perm_types);
    }
  }

  return $perms;
}


function MYMODULE_form_alter(&$form, &$form_state, $form_id) {
  if (preg_match('/_node_form$/', $form_id) && _MYMODULE_access($form['#node']->type)) {
    if ($form['options']['#access'] == FALSE) {
      $form['options']['#access'] = TRUE;
    }
  }
}

function _MYMODULE_access($type) {
  return user_access('administer status of any content')
      || user_access('administer status of any ' . check_plain($type) . ' content')
      || user_access('administer status of own ' . check_plain($type) . ' content');
}
anou
fuente
Hay un error tipográfico. cambie $ perms_type a $ perm_types - además no se verifica el estado any / own ..
rémy
0

Puede lograr esto combinando el poder de los módulos de Bandera y Reglas .

  1. Cree una nueva Publicación de marca y otorgue a los usuarios permiso para marcar solo su propio contenido.
  2. A continuación, agregue una nueva Regla que se active cuando se marque un nodo y que publique el nodo marcado. Del mismo modo, cree una segunda regla que anule la publicación de nodos que no estén marcados en Publicar .
  3. Finalmente, otorgue a los usuarios permiso para ver sus propios nodos no publicados y agregue un enlace Publicar a las páginas del nodo.
Jeroen
fuente
-1

El módulo de acceso al contenido debe cubrir lo que desea.

Este módulo le permite administrar permisos para tipos de contenido por rol y autor. Le permite especificar vistas personalizadas, editar y eliminar permisos para cada tipo de contenido. Opcionalmente, puede habilitar la configuración de acceso al contenido, por lo que puede personalizar el acceso para cada nodo de contenido.

Jeremy French
fuente
1
Una respuesta un poco vaga. Si esto es preferible a la respuesta de Decipher, ¿tal vez podría explicar los beneficios de este enfoque?
Chris Cohen
El módulo de acceso al contenido en realidad no resuelve el problema, agrega la capacidad de configurar Ver, editar y eliminar por rol pero no publicar.
Descifrar el