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); } } }