<?php
/**
* Implementacion hook_menu().
*/
//Implementamos el hook menu
function Clonar_Materias_de_Curso_menu(){
$items['Clonar_Materias_de_Curso'] = array( 'title' => 'Clonar las materias de un curso.',
'page callback' => 'drupal_get_form',
'page arguments' => array('Clonar_Materias_de_Curso_form'), 'access arguments' => array('access argument_Clonar las materias de un curso.'), //Mediante este enlace puedo crear un hook_permission para luego restringir en los permisos este acceso. 'type' => MENU_NORMAL_ITEM
);
return $items;
};
/**
* Implements hook_permission().
*/
function Clonar_Materias_de_Curso_permission() {
'access argument_Clonar las materias de un curso.' => array( 'title' => t('Clonar las materias de un curso.'),
'restrict access' => true,
)
);
}
//Esta función permite crear una pagina con el form api.
function Clonar_Materias_de_Curso_form($form, $form_state){
// Fieldset 1.
//************
// Lo primero que creamos es un fieldset (contenedor) donde agregar los campos.
$form['cursos_a_clonar_fieldset'] = array( '#title' => t('Clonar las materias de un curso.'),
'#type' => 'fieldset',
'#description' => t('Favor elegir el curso que contiene las materias.'),
'#collapsible' => FALSE, //Este permite que se pueda colapsar si esta en true
'#collapsed' => FALSE, //Este es para que aparezca colapsado si esta en true.
);
//Creamos un campo llamado curso dentro del contenedor el cual en la opcion #options llamamos una función donde obtiene los cursos.
$form['cursos_a_clonar_fieldset']['Curso'] = array( '#type' => 'select',
// '#title' => 'Elija el curso a clonar',
'#options' => obtener_cursos_opciones(),
'#default_value' => 0 ,
'callback' => 'buscar_materias_de_cursos_callback',//Esta es la función que llamara por ajax
'wrapper' => 'ajax-buscar_materias_de_cursos',//Aquí es donde meterá los datos
'method' => 'replace',
'effect' => 'fade',//Un efectito chulo
),
);
// fin Fieldset 1.
//************
// Fieldset 2.
//************
//crearemos otro fieldset o contenedor donde estarán todas las materias que estén asociadas a un curso.
$form['cursos_a_clonar_fieldset']['materiascontenedor'] = array( '#title' => t('Seleccione las materias que desea clonar'),
'#type' => 'fieldset',
// '#description' => t('Favor elegir el curso que contiene las materias a clonar.'),
'#collapsible' => FALSE, //Este permite que se pueda colapsar si esta en true
'#collapsed' => FALSE, //Este es para que aparezca colapsado si esta en true.
//Encapsulamos el select dentro del div 'dropdown_modelos_replace' para poder reemplazarlo
//usando ajax.
'#prefix' => '<div id="ajax-buscar_materias_de_cursos">',
'#suffix' => '</div>',
);
// En esta sección creamos el tableselect.
'nid' => t('Nid'),
'title' => t('Materias'),
);
//Verificamos si está definida el valor del curso primero,
//si no está definido entonces le agregamos el valor 0 a la variable $valor_del_curso_inicial
//de lo contrario entonces le pasamos el valor de este a la variable $valor_del_curso_inicial
if (!isset($form_state['values']['Curso'])) { $valor_del_curso_inicial=0;
}
else {
$valor_del_curso_inicial=$form_state['values']['Curso'];
}
//creamos el tableselect dentro de los dos contenedores.
$form['cursos_a_clonar_fieldset']['materiascontenedor']['materias_select'] = array( '#type' => 'tableselect',
'#header' => $header,
'#options' => obtener_materias_opciones($valor_del_curso_inicial),
'#multiple' => TRUE, //Si esta en true, entonces se convierte en Chekbox y si esta en false entonces se convierte en radio
'#empty' => t('No existen materias para este curso.'),
'#validated' => TRUE, // si no se pone este validated da error al cambiar los valores.
//Encapsulamos el select dentro del div 'dropdown_modelos_replace' para poder reemplazarlo
//usando ajax.
// '#prefix' => '<div id="ajax-buscar_materias_de_cursos">',
// '#suffix' => '</div>',
);
//************
// fin Fieldset 2
// Fieldset 3
//************
//crearemos otro fieldset o contenedor donde estarán todas las materias que estén asociadas a un curso.
$form['cursos_a_clonar_fieldset']['cursoscontenedor'] = array( '#title' => t('Por favor seleccione los cursos que se le asignaran las materias.'),
'#type' => 'fieldset',
// '#description' => t('Favor elegir el curso que contiene las materias a clonar.'),
'#collapsible' => FALSE, //Este permite que se pueda colapsar si esta en true
'#collapsed' => FALSE, //Este es para que aparezca colapsado si esta en true.
//Encapsulamos el select dentro del div 'dropdown_modelos_replace' para poder reemplazarlo
);
// En esta sección creamos el tableselect.
'nid' => t('Nid'),
'title' => t('Cursos'),
);
//creamos el tableselect dentro de los dos contenedores.
$form['cursos_a_clonar_fieldset']['cursoscontenedor']['curso_select'] = array( '#type' => 'tableselect',
'#header' => $header,
'#options' => obtener_cursos_opciones_tableselect(),
'#multiple' => TRUE, //Si esta en true, entonces se convierte en Chekbox y si esta en false entonces se convierte en radio
'#empty' => t('No existen materias para este curso.'),
'#validated' => TRUE, // si no se pone este validated da error al cambiar los valores.
);
//************
// fin Fieldset 3
//Mediante la siguiente linea se llama a una funcion para validar el formulario.
//$form['#validate'][] = 'form_validate';
//Creamos un botón el cual realizará varias funciones.
$form['cursos_a_clonar_fieldset']['submit'] = array( '#type' => 'submit',
'#value' => t('Ejecutar'),
'#submit' => array('CrearClon'), );
return $form;
}