t('Nombre del Proyecto'),
'field_proyecto_codigo' => 'field_proyecto_codigo',
'field_proyecto_fecha_i' => 'field_proyecto_fecha_i',
'field_proyecto_fecha_f' => 'field_proyecto_fecha_f',
'field_proyecto_status' => 'field_proyecto_status',
'field_proyecto_situacion_p' => 'field_proyecto_situacion_p',
'field_proyecto_plurianual' => 'field_proyecto_plurianual',
'field_proyecto_monto_anual' => 'field_proyecto_monto_anual',
'field_proyecto_total' => 'field_proyecto_total',
'field_proyecto_poan' => 'field_proyecto_poan',
);
$title_combos['db']['identificacion']['title'] = t('Datos Básicos de Identificación del Proyecto');
$title_combos['db']['identificacion']['type'] = 'node';
//Gerente del Proyecto
$arreglo['db']['gerentep'] = array();
$arreglo['db']['gerentep'] = array(
'field_proyecto_ente' => 'field_proyecto_ente',
'field_proyecto_autoridad' => 'field_proyecto_autoridad',
'field_proyecto_lider' => 'field_proyecto_lider',
'field_proyecto_unidad_a' => 'field_proyecto_unidad_a',
'field_proyecto_cargo' => 'field_proyecto_cargo',
'field_proyecto_telefono' => 'field_proyecto_telefono',
'field_proyecto_correo' => 'field_proyecto_correo',
);
$title_combos['db']['gerentep']['title'] = t('Gerente del Proyecto');
$title_combos['db']['gerentep']['type'] = 'node';
//Área Estrategica
$pndes = variable_get('proyectos_operativos_muestra_pndes', TRUE);
$mcti = variable_get('proyectos_operativos_muestra_mcti', TRUE);
if ($pndes || $mcti) {
$arreglo['db']['areae'] = array();
if ($pndes) {
$arreglo['db']['areae']['field_proyecto_pndes'] = 'field_proyecto_pndes';
}
if ($mcti) {
$arreglo['db']['areae']['field_proyecto_mcti'] = 'field_proyecto_mcti';
}
$title_combos['db']['areae']['title'] = t('Área Estratégica');
$title_combos['db']['areae']['type'] = 'node';
}
//DATOS GENERALES
$title_combos['dg']['title'] = t('Datos Generales');
$title_combos['dg']['type'] = 'node';
//Clasificación Sectorial
$arreglo['dg']['sector'] = array();
$arreglo['dg']['sector'] = array(
'field_proyecto_sector' => 'field_proyecto_sector',
);
$title_combos['dg']['sector']['title'] = t('Clasificación Sectorial');
$title_combos['dg']['sector']['type'] = 'node';
//Talento Humano
if (variable_get('proyectos_operativos_muestra_talento', TRUE)) {
$arreglo['dg']['talentoh'] = array();
$arreglo['dg']['talentoh'] = array(
'field_proyecto_institucionth' => 'field_proyecto_institucionth',
'field_proyecto_nombres_a' => 'field_proyecto_nombres_a',
'field_proyecto_cargo_th' => 'field_proyecto_cargo_th',
'field_proyecto_rol_th' => 'field_proyecto_rol_th',
'field_proyecto_esfuerzo' => 'field_proyecto_esfuerzo',
'field_proyecto_formacion' => 'field_proyecto_formacion',
);
$title_combos['dg']['talentoh']['title'] = t('Talento Humano');
$title_combos['dg']['talentoh']['type'] = 'node';
}
//Capacidades
$arreglo['dg']['capacidades'] = array();
if (variable_get('proyectos_operativos_muestra_capacidades', TRUE)) {
$arreglo['dg']['capacidades'] = array(
'field_proyecto_institucion_alc' => 'field_proyecto_institucion_alc',
'field_proyecto_infraestructura' => 'field_proyecto_infraestructura',
'field_proyecto_equipos' => 'field_proyecto_equipos',
'field_proyecto_insumos' => 'field_proyecto_insumos',
'field_proyectos_servicios' => 'field_proyectos_servicios',
);
}
$title_combos['dg']['capacidades']['title'] = t('Capacidades');
$title_combos['dg']['capacidades']['type'] = 'node';
//Instituciones
$arreglo['dg']['relacion'] = array();
$arreglo['dg']['relacion'] = array(
'field_proyecto_relacion' => 'field_proyecto_relacion',
);
$title_combos['dg']['relacion']['title'] = t('Instituciones');
$title_combos['dg']['relacion']['type'] = 'node';
//Empleos Generados
if (variable_get('proyectos_operativos_muestra_beneficiario', TRUE)) {
$arreglo['dg']['empleosg'] = array(
'field_proyecto_emdirecto' => 'field_proyecto_emdirecto',
'field_proyecto_efdirecto' => 'field_proyecto_efdirecto',
);
if (variable_get('proyectos_operativos_muestra_beneficiarios_indirectos', TRUE)) {
$arreglo['dg']['empleosg']['field_proyecto_emindirecto'] = 'field_proyecto_emindirecto';
$arreglo['dg']['empleosg']['field_proyecto_efindirecto'] = 'field_proyecto_efindirecto';
}
$arreglo['dg']['empleosg'] = array();
$title_combos['dg']['empleosg']['title'] = t('Empleos Generados');
$title_combos['dg']['empleosg']['type'] = 'node';
}
//Objetivos del Proyecto
$arreglo['dg']['objetivosp'] = array();
$arreglo['dg']['objetivosp'] = array(
'field_proyecto_og' => 'field_proyecto_og',
'field_proyecto_oe' => 'field_proyecto_oe',
);
$title_combos['dg']['objetivosp']['title'] = t('Objetivos');
$title_combos['dg']['objetivosp']['type'] = 'node';
//INDICADORES DEL PROYECTO
//Enunciado del Problema
$title_combos['ip']['title'] = t('Indicadores del Proyecto');
$title_combos['ip']['type'] = 'node';
$arreglo['ip']['enunciadop'] = array();
if (variable_get('proyectos_operativos_muestra_enunciado_problema', TRUE)) {
$arreglo['ip']['enunciadop'] = array(
'field_proyecto_causas' => 'field_proyecto_causas',
'field_proyecto_problemas' => 'field_proyecto_problemas',
'field_proyecto_consecuencias' => 'field_proyecto_consecuencias',
);
}
$title_combos['ip']['enunciadop']['title'] = t('Enunciado del Problema');
$title_combos['ip']['enunciadop']['type'] = 'node';
//Justificación del Proyecto
$arreglo['ip']['justificacion'] = array();
if (variable_get('proyectos_operativos_muestra_justicacion', TRUE)) {
$arreglo['ip']['justificacion'] = array(
'field_proyecto_justificacion' => 'field_proyecto_justificacion',
);
}
$title_combos['ip']['justificacion']['title'] = t('Justificación del Proyecto');
$title_combos['ip']['justificacion']['type'] = 'node';
//Alcance del Proyecto
$arreglo['ip']['alcance'] = array();
if (variable_get('proyectos_operativos_muestra_alcance', TRUE)) {
$arreglo['ip']['alcance'] = array(
'field_proyecto_alcance' => 'field_proyecto_alcance',
);
}
$title_combos['ip']['alcance']['title'] = t('Alcance del Proyecto');
$title_combos['ip']['alcance']['type'] = 'node';
//Situación Actual del Proyecto
$arreglo['ip']['situaciona'] = array();
if (variable_get('proyectos_operativos_muestra_sa', TRUE)) {
$arreglo['ip']['situaciona'] = array(
'field_proyecto_sa_descripcion' => 'field_proyecto_sa_descripcion',
);
if (variable_get('proyectos_operativos_muestra_sa_cuantificacion', TRUE)) {
$arreglo['ip']['situaciona']['field_proyecto_sa_cuantificacion'] = 'field_proyecto_sa_cuantificacion';
}
$arreglo['ip']['situaciona']['field_proyecto_sa_formulai'] = 'field_proyecto_sa_formulai';
$arreglo['ip']['situaciona']['field_proyecto_sa_fuentei'] = 'field_proyecto_sa_fuentei';
$arreglo['ip']['situaciona']['field_proyecto_sa_fecha'] = 'field_proyecto_sa_fecha';
}
$title_combos['ip']['situaciona']['title'] = t('Situación Actual');
$title_combos['ip']['situaciona']['type'] = 'node';
//Situación Objetivo
$arreglo['ip']['situaciono'] = array();
if (variable_get('proyectos_operativos_muestra_so', TRUE)) {
$arreglo['ip']['situaciono'] = array(
'field_proyecto_so_descripcion' => 'field_proyecto_so_descripcion',
'field_proyecto_so_cuantificacion' => 'field_proyecto_so_cuantificacion',
'field_proyecto_tiempoi' => 'field_proyecto_tiempoi',
);
}
$title_combos['ip']['situaciono']['title'] = t('Situación Objetivo');
$title_combos['ip']['situaciono']['type'] = 'node';
//Indicador del resultado del Proyecto
$arreglo['ip']['resultadop'] = array();
$arreglo['ip']['resultadop'] = array(
'field_proyecto_descripcion_bien' => 'field_proyecto_descripcion_bien',
'field_proyecto_unidadm' => 'field_proyecto_unidadm',
// 'field_proyecto_meta_m' => 'field_proyecto_meta_m',
// 'field_proyecto_meta_f' => 'field_proyecto_meta_f',
'field_proyecto_meta_fisica' => 'field_proyecto_meta_fisica',
);
$title_combos['ip']['resultadop']['title'] = t('Indicador del resultado del Proyecto');
$title_combos['ip']['resultadop']['type'] = 'node';
$title_combos['otros']['title'] = t('Otros');
$title_combos['otros']['type'] = 'flow';
$title_combos['otros']['fl']['title'] = t('Flujo de Trabajo');
$arreglo['otros']['fl'] = array(
'proyectos_operativos_flujo' => 'Flujo Actual',
);
drupal_alter('proyecto_obtiene_fields_categorias', $title_combos);
drupal_alter('proyecto_obtiene_fields_campos', $arreglo);
return array(
'categorias' => $title_combos,
'campos' => $arreglo,
);
}
/*
* Implementation of hook_menu()
*/
function entes_detail_workflow_menu() {
$items = array();
$items['entes_detail_workflow_js_util'] = array(
'title' => 'JS utilities',
'page callback' => 'entes_detail_workflow_js_util',
'access arguments' => array('ver planificador'),
'type' => MENU_CALLBACK,
);
return $items;
}
function entes_detail_workflow_js_util() {
$options_select = isset($_POST['workflow_details']) && is_array($_POST['workflow_details'])? $_POST['workflow_details']: array();
//$options_select = array_reverse($options_select);
$form_state = array('submitted' => FALSE);
$form_build_id = $_POST['form_build_id'];
// Add the new element to the stored form. Without adding the element to the
// form, Drupal is not aware of this new elements existence and will not
// process it. We retreive the cached form, add the element, and resave.
$form = form_get_cache($form_build_id, $form_state);
$new_form = array();
$new_form['campos_modificar'] = array(
'#type' => 'fieldset',
'#weight' => 11,
'#title' => 'Observaciones por campos',
);
foreach($options_select as $select){
$nidae = explode('_', $select);
if (is_numeric($nidae[0])){
$fieldae = str_replace($nidae[0] . '_', '', $select);
$output = $form['#nodeae_workflow_display'][$nidae[0]][$fieldae];
}
else {
$output = $form['#node_workflow_display'][$select] . 'a';
}
$new_form['campos_modificar'][$select] = array(
'#type' => 'fieldset',
'#title' => $form['#node_workflow_titles'][$select],
'#weight' => 1,
);
$new_form['campos_modificar'][$select]['comentario_' . $select] = array(
'#title' => t('Comentario'),
'#prefix' => '
' . $output . '
',
'#type' => 'textarea',
'#default_value' => '',
);
}
$form['campos_modificar'] = $new_form['campos_modificar'];
form_set_cache($form_build_id, $form, $form_state);
$form += array(
'#post' => $_POST,
'#programmed' => FALSE,
);
// Rebuild the form.
$form = form_builder($_POST['form_id'], $form, $form_state);
$output = drupal_render($form['campos_modificar']);
print drupal_to_js(array('data' => $output, 'status' => true));
exit();
}
function _entes_detail_workflow_get_lastworkflow(){
}
/*
* hook_form_alter()
*/
function entes_detail_workflow_form_alter(&$form, $form_state, $form_id) {
if (($form_id == 'proyectos_operativos_proyecto_basico_form' || $form_id == 'proyectos_operativos_proyecto_generales_form' || $form_id == 'proyectos_operativos_proyecto_indicadores_form') && $form['#node']->nid){
$node_load = $form['#node'];
$field_form = $form['#proyectos_operativos_fields'];
$new_field_form = array();
if (is_array($field_form) && count($field_form)){
foreach($field_form as $field_id)
$new_field_form[$field_id] = $field_id;
}
$result = db_query("SELECT * FROM {entes_detail_workflow} WHERE id = %d AND tipo = 'proyectos_operativos' AND active = 1 ORDER BY field_name, time DESC", $node_load->nid);
$comentarios_details = array();
$pre_render = FALSE;
$form['#proyecto_fields'];
$nuevos = array();
$nuevos1 = array();
while($comentario = db_fetch_object($result)) {
$nidae = explode('_', $comentario->field_name);
if (array_key_exists($comentario->field_name, $new_field_form) && trim($comentario->comentario) != ''){
if (!array_key_exists($comentario->field_name, $nuevos)){
$nuevos[$comentario->field_name] = $comentario->field_name;
$comentarios_details[] = '' . $form['#proyecto_fields'][$comentario->field_name]['widget']['label'] . '
' . $comentario->comentario . '
';
}
else {
if (!array_key_exists($field, $nuevos1)){
$nuevos1[$field] = $field;
$comentarios_details[] = 'Comentarios Anteriores:
' . $comentario->comentario . '
';
}
else {
$comentarios_details[] = '' . $comentario->comentario . '
';
}
}
}
}
if(count($comentarios_details)){
$form['entes_detail_workflow']['#value'] = 'Observaciones:
' . implode('', $comentarios_details) . '
';
}
}
if ($form_id == 'proyectos_operativos_accion_especifica_crear_form'){
$node_load = $form['#proyecto'];
$field_form = $form['#proyectos_operativos_fields'];
$new_field_form = array();
if (is_array($field_form) && count($field_form)){
foreach($field_form as $field_id) {
$new_field_form[$field_id] = $field_id;
}
}
$ae = array();
$i = 1;
foreach($form['#acciones_especificas'] as $accion) {
if (isset($accion->nid)) {
$ae[$accion->nid] = $i;
$i++;
}
}
$result = db_query("SELECT * FROM {entes_detail_workflow} WHERE id = %d AND tipo = 'proyectos_operativos' AND active = 1 ORDER BY field_name, time DESC", $node_load->nid);
$comentarios_details = array();
$nuevos = array();
$nuevos1 = array();
while($comentario = db_fetch_object($result)) {
$nidae = explode('_', $comentario->field_name);
if (is_numeric($nidae[0])){
$nid = $nidae[0];
unset($nidae[0]);
$field = implode('_', $nidae);
//se estan viendo todas las acciones especificas
if ($form['#node']->nid == $nid){
if (array_key_exists($field, $new_field_form) && trim($comentario->comentario) != ''){
if (!array_key_exists($field, $nuevos)){
$nuevos[$field] = $field;
$comentarios_details[] = '' . $form['#aeproyecto_fields'][$field]['widget']['label'] . '
' . $comentario->comentario . '
';
}
else {
if (!array_key_exists($field, $nuevos1)){
$nuevos1[$field] = $field;
$comentarios_details[] = 'Comentarios Anteriores:
' . $comentario->comentario . '
';
}
else {
$comentarios_details[] = '' . $comentario->comentario . '
';
}
}
}
}
elseif(!$form['#node']->nid){
if (!array_key_exists($field, $nuevos)){
$nuevos[$field] = $field;
$comentarios_details[] = 'AE_' .$ae[$nid] . ' ' . $form['#aeproyecto_fields'][$field]['widget']['label'] . '
' . $comentario->comentario . '
';
}
else {
if (!array_key_exists($field, $nuevos1)){
$nuevos1[$field] = $field;
$comentarios_details[] = 'Comentarios Anteriores:
' . $comentario->comentario . '
';
}
else {
$comentarios_details[] = '' . $comentario->comentario . '
';
}
}
}
}
}
if(count($comentarios_details)){
$form['entes_detail_workflow']['#value'] = 'Observaciones:
' . implode('', $comentarios_details) . '
';
}
}
if ($form_id == 'workflow_tab_form') {
if ($form['node']['#value']->type == 'proyectos_operativos'){
$node = $form['node']['#value'];
$campos_leidos = _entes_detail_proyectos_operativos_get_campos_proyectos();
$options_campos = array();
$node_type = content_types('proyectos_operativos');
$fields = $node_type['fields'];
$node_type1 = content_types('accion_especifica');
$fields1 = $node_type1['fields'];
$node_workflow_display = node_build_content($node);
$contenido = array();
$array_titles = array();
$todas_opciones = array();
foreach($campos_leidos['campos'] as $idcat => $array){
foreach($array as $idcamp => $arrat1){
$array_soptions = array();
foreach($arrat1 as $ind2 => $array2){
$contenido[$ind2] = drupal_render($node_workflow_display->content[$ind2]);
if ($ind2 == 'title'){
$array_soptions[$ind2] = t('Nombre del Proyecto');
}
else {
$array_soptions[$ind2] = $fields[$ind2]['widget']['label'];
}
$array_titles[$ind2] = $array_soptions[$ind2];
$todas_opciones[$ind2] = $ind2;
}
if ($campos_leidos['categorias'][$idcat][$idcamp]['type'] == 'node'){
$options_campos[$campos_leidos['categorias'][$idcat][$idcamp]['title']] = $array_soptions;
}
}
}
//add weight to submit button
$form['submit']['#weight'] = 100;
$form['#node_workflow_display'] = $contenido;
//Se obtienen las acciones especificas del proyecto
$i = 1;
$contenidoae = array();
$acciones_especificas = array();
if (isset($node->field_proyecto_accion_esp)){
foreach($node->field_proyecto_accion_esp as $accion) {
if ($accion['nid']) {
$accionep = node_load($accion['nid']);
$opcionAE = array();
$contenidoae[$accionep->nid] = array();
$nodeae_workflow_display = node_build_content($accionep);
foreach($fields1 as $idcat => $array){
$contenidoae[$accionep->nid][$idcat] = drupal_render($nodeae_workflow_display->content[$idcat]);
$opcionAE[$accionep->nid . '_' . $idcat] = $fields1[$idcat]['widget']['label'];
$array_titles[$accionep->nid . '_' . $idcat] = 'AE_' .$i . ': ' . $opcionAE[$accionep->nid . '_' . $idcat];
$todas_opciones[$accionep->nid . '_' . $idcat] = $accionep->nid . '_' . $idcat;
}
$options_campos['AE_' .$i] = $opcionAE;
$i++;
}
}
}
$form['#nodeae_workflow_display'] = $contenidoae;
$form['#node_workflow_titles'] = $array_titles;
$form['#node_workflow_todas_opciones'] = $todas_opciones;
$form['proyectos_operativos_remove'] = array(
'#type' => 'checkbox',
'#title' => t('Borrar los comentarios de campos Previos.'),
'#default_value' => FALSE,
'#access' => user_access('remove observaciones'),
);
$form['workflow_details'] = array(
'#title' => t('Comentarios por Campos'),
'#type' => 'select',
'#default_value' => array(),
'#options' => $options_campos,
'#multiple' => TRUE,
'#weight' => 10,
'#ahah' => array(
'path' => 'entes_detail_workflow_js_util',
'wrapper' => 'fields_problems',
'method' => 'replace',
'progress' => array('type' => 'bar', 'message' => t('Please wait...')),
),
);
$form['campos_modificar'] = array(
'#type' => 'fieldset',
'#prefix' => '',
'#suffix' => '
',
'#weight' => 11,
'#title' => 'Observaciones por campos',
);
$form['campos_modificar']['no_comentarios'] = array(
'#value' => 'No exiten comentarios de los campos del proyecto',
);
/*
$res = db_query('SELECT * FROM {workflow_node} WHERE nid = %d', $form['node']['#value']->nid);
$row = db_fetch_object($res);
if ($row && $row->sid){
$sid = $row->sid;
//SE OBTIENEN TODOS LOS COMENTARIOS QUE EXISTEN
$result = db_query("SELECT * FROM {entes_detail_workflow} WHERE id = %d AND sid = %d AND tipo = 'proyectos_operativos'", $form['node']['#value']->nid, $sid);
$defaults = array();
while($comentario = db_fetch_object($result)) {
$output = $form['#node_workflow_display'][$comentario->field_name];
$defaults[$comentario->field_name] = $comentario->field_name;
$form['campos_modificar'][$comentario->field_name] = array(
'#type' => 'fieldset',
'#title' => $form['#node_workflow_titles'][$comentario->field_name],
'#weight' => 1,
);
$form['campos_modificar'][$comentario->field_name]['comentario_' . $comentario->field_name] = array(
'#title' => t('Comentario'),
'#prefix' => '' . $output . '
',
'#type' => 'textarea',
'#default_value' => $comentario->comentario,
);
}
//$form['workflow_details']['#default_value'] = $defaults;
}
*/
//remove previous submit
$new_submit = array();
foreach($form['#submit'] as $submit) {
if ($submit == 'workflow_tab_form_submit'){
$new_submit[] = 'entes_detail_workflow_form_submit';
}
}
$form['#submit'] = $new_submit;
}
}
}
/*
* Implementation of proyectos_reformulacion_reformula_tab_page_ae_form_validate()
*/
function entes_detail_workflow_form_submit($form, &$form_state) {
global $user;
// The entire node object was stashed in the form.
$node = $form_state['values']['node'];
$node->workflow = $form_state['values']['workflow'];
$node->workflow_comment = $form_state['values']['workflow_comment'];
$node->workflow_scheduled = $form_state['values']['workflow_scheduled'];
$node->workflow_scheduled_date = $form_state['values']['workflow_scheduled_date'];
$node->workflow_scheduled_hour = $form_state['values']['workflow_scheduled_hour'];
//crear una nueva revision
$node->revision = 1;
// Call node_save() to make sure any handlers that use the
// new workflow values will see them.
node_save($node);
//add node save values
$form_state['values']['node'] = $node;
$form_state['redirect'] = 'node/' . $node->nid;
$sid = $node->workflow;
if (array_key_exists('proyectos_operativos_remove', $form_state['values']) && $form_state['values']['proyectos_operativos_remove']){
db_query("UPDATE {entes_detail_workflow} set active = 0 WHERE id = %d AND tipo = 'proyectos_operativos'", $node->nid);
}
$fecha = time();
//SE OBTIENE el hid del historico del workflow
$res = db_query("select max(hid) as hid from workflow_node_history WHERE nid = %d AND sid = %d", $node->nid, $sid);
$hid = db_fetch_object($res);
$chid = ($hid && $hid->hid) ? $hid->hid : 0;
$time = time();
foreach($form['#node_workflow_todas_opciones'] as $id => $title){
if (array_key_exists('comentario_' . $id, $form_state['values'])){
db_query("INSERT INTO {entes_detail_workflow} (id, sid, tipo, field_name, comentario, hid, vid, active, time) VALUES (%d, %d, 'proyectos_operativos', '%s', '%s', %d, %d, 1, %d)", $node->nid, $sid, $id, check_plain(trim($form_state['values']['comentario_' . $id])), $chid, $node->vid, $time);
}
}
}