2da parte
Código PHP:
Ver original//validamos los campos que queremos.
function form_validate($form, &$form_state) {
if ($form_state['values']['Curso'] == 0) {
form_set_error('Curso', t('Debe seleccionar un curso'));
}
}
//Esta función llama el campo cursos a través de ajax.
function buscar_materias_de_cursos_callback ($form, &$form_state) {
//Eliminamos las opciones que tiene actualmente el tableselect
unset($form['cursos_a_clonar_fieldset']['materiascontenedor']['materias_select']['#options']);
//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'];
}
//le indicamos que busque los nuevos valores a través de la función obtener_materias_opciones pasándole la variable $valor_del_curso_inicial
$form['cursos_a_clonar_fieldset']['materiascontenedor']['materias_select']['#options']= obtener_materias_opciones($valor_del_curso_inicial);
return $form['cursos_a_clonar_fieldset']['materiascontenedor'];
}
function obtener_materias_opciones($nid_materias) {
//Buscamos en la api el codigo insertado
$sql = db_query("select n.nid, n.title, n.type, f.bundle, f.entity_id, f.field_materia_curso_asignado_nid from node n inner join field_data_field_materia_curso_asignado f on n.nid = f.entity_id where f.field_materia_curso_asignado_nid= '".$nid_materias."' order by n.title asc ");
$result = db_query($sql);
foreach ($result as $dbrow) {
$rows[$dbrow->nid] = array( 'nid' => $dbrow->nid,
'title' => $dbrow->title,
);
}
return $rows;
}
//funcion para obtener los cursos.
function obtener_cursos_opciones(){
$result = db_query("SELECT nid, title FROM node where type='cursos' order by title asc");
foreach ($result as $result) {
$curso[$result->nid] = $result->title;
}
return $curso;
};
function obtener_cursos_opciones_tableselect() {
//Buscamos en la api el codigo insertado
$sql = db_query("select n.nid, n.title from node n where n.type= 'cursos' order by title asc ");
$result = db_query($sql);
foreach ($result as $dbrow) {
$rows[$dbrow->nid] = array(
'nid' => $dbrow->nid,
'title' => $dbrow->title,
);
}
return $rows;
}