Asignar permisos a un bloque

Asignar permisos a un bloque

de Juan Alberto Bares de la Fuente -
Número de respuestas: 15

Hola amigos, he creado un bloque para cursos, este bloque solo lo puden ver el usuario admin y los profesores, pero sin embargo lo ven todos los usuarios, hasta los alumnos del curso.

¿Cómo puedo asignar permisos a este bloque para que solo les aparezca al admin y a los profesores del curso??

Un saludo y gracias por adelantado!!! guiño

Promedio de valoraciones: -
En respuesta a Juan Alberto Bares de la Fuente

Re: Asignar permisos a un bloque

de Antonio Piedras -
Hola Juan Alberto,
para hacer eso te tienes que basar en el control de las capabilities del rol, en este caso el del professor y el del admin.

Por ejemplo:
en el código del bloque, haces esta comprovación antes de llenar el contenido del bloque:
if (!has_capability('moodle/course:update', $context) && !has_capability('moodle/course:viewhiddenactivities', $context)) { // Just return
return $this->content;
}

esto provoca que si no se tiene la capacidad de modificar los parámetros del curso (solo profesores o administradores pueden hacerlo) o ver las actividades ocultas (eso es para que el bloque también lo pueden usar los profesores no-editores) entonces el contenido del bloque estará vacio, que como sabes en los bloques se guarda en la variable
$this->content;

si esa variable está vacia, entonces moodle no mostrará el bloque. Y eso pasará cuando acceda un alumno.
Por lo tanto, en este caso, solo los profesores, los profesores no-editores y los admin, visualizarán el bloque.

Saludos.



En respuesta a Antonio Piedras

Re: Asignar permisos a un bloque

de Juan Alberto Bares de la Fuente -

Gracias Antonio Piedras, me funciona correctamente. Otra cosita de este tema que me interesaría, Si entro como administrador a un curso,(la 1ª vez) tengo que añadir a mano el mi bloque (el que he creado yo),

 ¿Sabrías alguna forma de que apareciéra por defecto en todos los cursos sin tener que añadirlo a mano?

Ahora tengo otra duda, y es que cuando un alumno se quiere matricular en un curso, se sale el siguiente error:

Al intentar asignarle un rol, ha ocurrido un error grave no especificado

Más información sobre este error

¿Pudes decirme por que me sale este error?

En respuesta a Juan Alberto Bares de la Fuente

Re: Asignar permisos a un bloque

de Antonio Piedras -
Para que un bloque salga en todos los cursos, has de ir a:
Administración del sitio --> Módulos --> Bloques --> Bloques 'sticky'

y ahí podrás ver lo que tienes que hacer.

Saludos.
En respuesta a Antonio Piedras

Re: Asignar permisos a un bloque

de emeterio sanchez -
Hola Antonio,gracias por tu dedicación. Estoy intentando hace como Juan Alberto y he copiado las instrucciones que dices en el editor html del bloque. Pero esto es lo que se ve, la imagen más el código. ¿Hago algo mal? ¿debo ponerlo en otro sitio? Gracias.
Adjunto error-1.jpg
En respuesta a emeterio sanchez

Re: Asignar permisos a un bloque

de Pedro Jiménez -
buenas Emeterio, el problema es que no debes meterlo en el editor html. Debes meterlo en el fichero .php donde donde declaras tu módulo, justo dentro de la función get_content();

Un saludo
En respuesta a Pedro Jiménez

Re: Asignar permisos a un bloque

de emeterio sanchez -
ok, gracias por la rápida respuesta. Ahora me doy cuenta que eso de código html no tiene nada. Pero la duda está en que no encuentro en que fichero he de añadirlo. Utilizo el tema power of science de themza y he creado un bloque de texto, hay algún otro también html con otra información, donde he insertado un link con su respectivo icono. Me podrías decir algo más sobre dónde colocar ese código? quiero que el link lo vean los profesores y no los alumnos y creo que me irá de perlas.
Gracias de nuevo.
En respuesta a emeterio sanchez

Re: Asignar permisos a un bloque

de emeterio sanchez -
Pues ahora creo que la he liado bien liada, estaba retocando el fichero block_html.php y no sé qué he hecho que ahora no funciona nada de nada: la página ni arranca.
Una ayuda por favor.
En respuesta a emeterio sanchez

Re: Asignar permisos a un bloque

de emeterio sanchez -
Por lo que veo falla la página de inicio porque si cojo del historial alguna página anterior puedo ir navegando hasta que busca el inicio y se queda en blanco.
En respuesta a emeterio sanchez

Re: Asignar permisos a un bloque

de emeterio sanchez -
Bueno, tranquilidad, había borrado un } y se fastiaba todo. Ya està solucionado pero ahora estoy como antes, donde porne exactamente el código dichoso?

En respuesta a emeterio sanchez

Re: Asignar permisos a un bloque

de Pedro Jiménez -
Buenas, por lo que veo, tu bloque se llama html. Debes tener entonces el fichero block_html.php

debería ser algo así:

<?php
class block_html extends block_base {
function init() {
$this->title = get_string('blockname','block_html');
$this->version = 2009051501;
}

function has_config() {
return false;
}

function get_content() {
global $USER,$COURSE,$CFG;
if ($this->content !== NULL) {
return $this->content;
}

$this->content = new stdClass;
$this->content->text = '';
$this->content->footer = '';

if (empty( $this->instance )) {
return $this->content;
}
/******************/
if ( $COURSE->id == $this->instance->pageid ) {
$course = $COURSE;
} else {
$course = get_record( 'course', 'id', $this->instance->pageid );
}
$context = get_context_instance( CONTEXT_COURSE, $course->id );
$capability = has_capability( 'moodle/course:viewhiddenactivitiesmoodle', $context );


if ( $capability ) {
$this->content->text .= '<div class="message"><a title="'.get_string('showhtml', 'block_html').'" href="'.$CFG->wwwroot.'/blocks/html/index.php">' .'</a></div>';
};

/******************/
return $this->content;
}

}

?>

En respuesta a Pedro Jiménez

Re: Asignar permisos a un bloque

de emeterio sanchez -
Hola Pedro, gracias por tu respuesta que lamentablemente dejé aparcada porque el comienzo del curso me apretaba. Ahora que todo vuelve a la normalidad y ya está en marcha me gustaría volver con el tema del bloque. te adjunto mi fichero block_html.php para que me digas dónde debo colocar el código que me comentábais. Lo veo muy diferente a lo que me apuntas tu. Y mi duda es: yo solamente quiero esconder un unico bloque a los alumnos y no a los profesores y administrador, ¿con este código se me esconderán todos los bloques html que he creado?
¿sabes como se distinguen los bloques html uno de otro en los archivos del servidor? vaya que dónde se guardan.
Claro porque después igual quiero esconder otro bloque html a los profesores y no a los alumnos. no se si me explico.
Muchas gracias y siento las molestias pero aún soy un novatillo.
Emeterio
En respuesta a Juan Alberto Bares de la Fuente

Re: Asignar permisos a un bloque

de Nadia González Gutiérrez -
Hola!! He estado leyendo el tema y necesito ayuda porque yo necesito crear un bloque sólo para el administrador, es decir, que sólo pueda verlo el administrador ni los profesores ni los alumnos. Alguien puede hecharme una mano????
Muchas gracias sonrisa
En respuesta a Nadia González Gutiérrez

Re: Asignar permisos a un bloque

de Fernando Navarro Páez -
Para lo que quieres hacer no es necesario programar, en principio.

Insertas el bloque.
En el bloque debería existir un icono con la leyenda "Asignar Roles".
Desde ahí, puedes "Anular permisos" para todos los roles que no quieres que vean el bloque.

Espero que esto te sirva

Salu2
En respuesta a Fernando Navarro Páez

Re: Asignar permisos a un bloque

de Xavier Paz -
En caso de que la solución de Fernando no te valga y necesites desarrollar el bloque, el mejor punto por el que comenzar es leer esto: http://docs.moodle.org/es/Desarrollo_de_bloques