[PREGUNTA] Sobre Capabilities

[PREGUNTA] Sobre Capabilities

de Victor Martin -
Número de respuestas: 6

Buenas, estoy intentando meter unas pestañas en el view.php y trato de controlar el uso de cada una comprobando las capacidades del usuario. Es decir:

if (has_capability('mod/khronos:registerperiods', $context)) {
$row[] = new tabobject('registerperiods', $CFG->wwwroot.'/mod/khronos/view.php?id='.$khronos->id, get_string('registerperiods', 'khronos'));

}

if (has_capability('mod/khronos:viewgraphics', $context)) {
$row[] = new tabobject('viewgraphics', $CFG->wwwroot.'/mod/khronos/view.php?id='.$khronos->id, get_string('viewgraphics', 'khronos'));
}
y luego hago
$currenttab = '';
$tabs[] = $row;
print_tabs($tabs, $currenttab);
y ahora hago condicionales:
if (has_capability('mod/khronos:registerperiods',$context)){...
if (has_capability('mod/khronos:viewgraphics',$context)){...

Pero moodle me avisa de que viewgraphics no esta en el código. Sin embargo, en el access.php tengo esto:

defined('MOODLE_INTERNAL') || die();

$mod_khronos_capabilities = array(

/// Students can register working periods
'mod/khronos:registerperiods' => array(
'captype' => 'write',
'contextlevel' => CONTEXT_MODULE,
'legacy' => array(
'student' => CAP_ALLOW
)
),

'mod/khronos:viewgraphics' => array(

'captype' => 'write',
'contextlevel' => CONTEXT_MODULE,
'legacy' => array(
'student' => CAP_ALLOW,
'teacher' => CAP_ALLOW,
'editingteacher' => CAP_ALLOW,
'admin' => CAP_ALLOW
)
)
);

No se por donde tirar ya... xx-P Gracias
Promedio de valoraciones: -
En respuesta a Victor Martin

Re: [PREGUNTA] Sobre Capabilities

de Xavier Paz -

Si pusiste el permiso para viewgraphics después de instalar el módulo tienes que volver a reinstalarlo o actualizar el numero de versión en el fichero version.php, para que fuerce la actualización de la configuración del módulo, porque sino, se queda con la configuración inicial en el momento de la instalación. Lo mismo pasa cuando modificas alguno de los valores de las capacidades.

PD: ¿Es para moodle 1.9.x o 2.x?

En respuesta a Xavier Paz

Re: [PREGUNTA] Sobre Capabilities

de Victor Martin -

Buenas de nuevo, ahora me surge otro error, cuando pincho en una de las pestañas me devuelve un error:

Course Module ID was incorrect

No se si es por la llamada a la pagina view con el id del modulo. No se :S. Alguna información de cuando pasa este tipo de error? Gracias, como siempre sonrisa

En respuesta a Victor Martin

Re: [PREGUNTA] Sobre Capabilities

de Xavier Paz -

Uno de los parámetros, concretamente el del id de curso, parece no estar siendo obtenido de forma correcta. Puede que tenga que ver con las líneas donde obtienes el contexto.

En respuesta a Xavier Paz

Re: [PREGUNTA] Sobre Capabilities

de Victor Martin -

Xavier, a ver si me puedes decir que hago mal: la parte del contexto y las tabs que tengo en el view es el siguiente, pero no logro que pase entre las pestañas. Dime que es lo que deberia cambiar. Muchas gracias.

$id = optional_param('id', 0, PARAM_INT); // course_module ID, or
$kid = optional_param('kid', 0, PARAM_INT); // newmodule instance ID

//Getting information of course and the khronos module
if ($id) {
if (! $cm = get_coursemodule_from_id('khronos', $id)) {
error('Course Module ID was incorrect');
}

if (! $course = get_record('course', 'id', $cm->course)) {
error('Course is misconfigured');
}

if (! $khronos = get_record('khronos', 'id', $cm->instance)) {
error('Course module is incorrect');
}

} else if ($kid) {
if (! $khronos = get_record('khronos', 'id', $kid)) {
error('Course module is incorrect');
}
if (! $course = get_record('course', 'id', $khronos->course)) {
error('Course is misconfigured');
}
if (! $cm = get_coursemodule_from_instance('khronos', $khronos->id, $course->id)) {
error('Course Module ID was incorrect');
}

} else {
error('You must specify a course_module ID or an instance ID');
}

$context = get_context_instance(CONTEXT_MODULE, $cm->id);

$tabs = array();
$row = array();

if (has_capability('mod/khronos:registerperiods', $context)) {
$row[] = new tabobject('registerperiods', $CFG->wwwroot.'/mod/khronos/view.php?id='.$cm->id, get_string('registerperiods', 'khronos'));
}

if (has_capability('mod/khronos:viewgraphics', $context)) {
$row[] = new tabobject('viewgraphics', $CFG->wwwroot.'/mod/khronos/view.php?id='.$cm->id, get_string('viewgraphics', 'khronos'));
}
En respuesta a Xavier Paz

Re: [PREGUNTA] Sobre Capabilities

de Victor Martin -

A ver creo que tengo el fallo pero no se solucionarlo. Sin usar pestañas, tenia este codigo siguiente para cargar un fichero de extension de moodleform. Lo que veo es que no es lo mismo la direccion que le pongo a la pestaña que con la que llamaba antes, te lo pego:

 

if (has_capability('mod/khronos:registerperiods',$context)){

//Punching form
require ("$CFG->dirroot/mod/khronos/khronos_graphics_form.php");
$nameform1='form1'; //This variables makes the form's variables to be named differently to other variables, even for another instance of the same form class
$nameform=$nameform1;
$khronosFormInstance = new khronos_graphics_form('view.php', compact('course', 'khronos','nameform'));//, 'post', '', $attributes1);