array( 'name' => t('Proyectos Operativos'), 'description' => '', 'has_title' => TRUE, 'title_label' => 'Nombre del proyecto', 'has_body' => FALSE, 'body_label' => 'Cuerpo', 'module' => 'proyectos_operativos', ), ); } /* * Implementation of hook_form() */ function proyectos_operativos_form(&$node, $form_state) { return node_content_form($node, $form_state); } /* * Implementation of hook_access() */ function proyectos_operativos_access($op, $node, $account) { if ($op == 'view') { return user_access('ver planificador'); } if ($op == 'create') { return user_access('admin planificador'); } if ($op == 'update') { return user_access('admin planificador'); } if ($op == 'delete') { return user_access('admin planificador'); //return (user_access('admin planificador') || _proyectos_operativos_edita_datos_ae_access($node)); } } /* * Implementation of hook_ente_procesos_alter() */ function proyectos_operativos_ente_procesos_alter(&$procesos, $type) { if ($type == 'status') { $procesos['proyectos_operativos'] = array( 'title' => t('Proyectos Operativos'), 'description' => t('Definición de Proyectos Direccionales'), 'weight' => -9, ); } else { $procesos['proyectos_operativos_formular'] = array( 'title' => t('Formular Proyectos Operativos'), 'description' => t('Permite agregar, modificar y eliminar los Proyectos Operativos'), 'message' => 'Se podrá registrar y/o modificar las Proyectos Operativos desde %fecha hasta la fecha %fecha1', 'message_expire' => 'Registrar y/o modificar las Proyectos Operativos no se encuentra disponible, se podra realizar desde %fecha hasta la fecha %fecha1)', 'weight' => 3, 'proceso' => 'proyectos_operativos', ); } } /* * Implementation of proyectos_operativos_status_planificacion_proyectos_operativos() */ function proyectos_operativos_status_planificacion_proyectos_operativos($ente_planificador, $tipo = 2) { $datos_proyectos_operativos_status = array(); $tipo_plan = 'proyectos_operativos_formular'; $mi_fecha = ente_planificador_user_acceso_proceso($tipo_plan, $ente_planificador); $year = variable_get('proyectos_operativos_anho_creacion', 0); $estado_aprobado = variable_get('proyectos_operativos_state_aprobado', NULL); $estado_naprobado = variable_get('proyectos_operativos_state_naprobado', NULL); //se obtienen todos los proyectos agregados que sean diferentes a Cancelados $cantidad_proyectos = db_fetch_object(db_query("SELECT count(ac.nid) AS cantidad FROM {proyectos_operativos} AS ac INNER JOIN {workflow_node} AS w ON w.nid = ac.nid WHERE ac.ente = %d AND year = %d AND w.sid <> %d", $ente_planificador, $year, $estado_naprobado))->cantidad; $cantidad_proyectos_aprobados = db_fetch_object(db_query("SELECT count(ac.nid) AS cantidad FROM {proyectos_operativos} AS ac INNER JOIN {workflow_node} AS w ON w.nid = ac.nid WHERE ac.ente = %d AND year = %d AND w.sid = %d", $ente_planificador, $year, $estado_aprobado))->cantidad; $porc = $cantidad_proyectos != 0 ? ($cantidad_proyectos_aprobados) / $cantidad_proyectos : 0; //se verifica que exista la planificacion, si existe al menos los datos de familiarizacion fueron ingresados $datos_proyectos_operativos_status['proyectos_operativos_formular']['value'] = $porc; $datos_proyectos_operativos_status['proyectos_operativos_formular']['title'] = t('Registrar Proyectos Operativos para el año @year', array('@year' => $year)); $datos_proyectos_operativos_status['proyectos_operativos_formular']['link'] = 'proyectos_operativos'; $datos_proyectos_operativos_status['proyectos_operativos_formular']['mylink'] = 'proyectos_operativos'; $datos_proyectos_operativos_status['proyectos_operativos_formular']['weight'] = -10; return $datos_proyectos_operativos_status; } /** * Menu access control callback. Determine access to Workflow tab. */ function _proyectos_operativos_edita_datos_generales_access($node = NULL) { $acceso = _proyectos_operativos_access_editar($node); if (!$acceso) { return FALSE; } return TRUE; } /* * Implementation of hook_nodeapi() */ function proyectos_operativos_nodeapi(&$node, $op, $teaser = NULL, $page = NULL) { switch ($op) { case 'insert': if ($node->type == 'proyectos_operativos') { $year = variable_get('proyectos_operativos_anho_creacion', 0) ? variable_get('proyectos_operativos_anho_creacion', 0) : date("Y"); db_query('INSERT INTO {proyectos_operativos} (nid, year, ente) VALUES (%d, %d, %d)', $node->nid, $year, $node->field_proyecto_ente[0]['nid']); } break; case 'update': if ($node->type == 'proyectos_operativos') { $result = db_query("SELECT ente FROM {proyectos_operativos} WHERE nid = %d", $node->nid); $proyectos_operativos = db_fetch_array($result); //print_r($proyectos_operativos); if ($proyectos_operativos && $proyectos_operativos['ente'] != $node->field_proyecto_ente[0]['nid']){ db_query('update {proyectos_operativos} set ente = %d WHERE nid = %d', $node->field_proyecto_ente[0]['nid'], $node->nid); } } break; case 'load': if ($node->type == 'proyectos_operativos') { $titulo = isset($node->field_proyecto_titulo[0]['value']) && trim($node->field_proyecto_titulo[0]['value']) != '' ? $node->field_proyecto_titulo[0]['value'] : $node->title; $node->titulo_asignado = $titulo; $result = db_query("SELECT year FROM {proyectos_operativos} WHERE nid = %d", $node->nid); if (!($proyectos_operativos = db_fetch_array($result))){ $year = variable_get('proyectos_operativos_anho_creacion', 0) ? variable_get('proyectos_operativos_anho_creacion', 0) : date("Y"); db_query('INSERT INTO {proyectos_operativos} (nid, year, ente) VALUES (%d, %d, %d)', $node->nid, $year, $node->field_proyecto_ente[0]['nid']); $result = db_query("SELECT year FROM {proyectos_operativos} WHERE nid = %d", $node->nid); $proyectos_operativos = db_fetch_array($result); } $node->anhoproyectos_operativos = $proyectos_operativos['year']; } elseif ($node->type == 'accion_especifica') { $titulo = isset($node->field_accion_titulo[0]['value']) && trim($node->field_accion_titulo[0]['value']) != '' ? $node->field_accion_titulo[0]['value'] : $node->title; $node->titulo_asignado = $titulo; } break; case 'delete': //eliminar todas las ae del proyecto if ($node->type == 'proyectos_operativos') { foreach($node->field_proyecto_accion_esp as $accion) { if ($accion['nid']) { node_delete($accion['nid']); } } db_query('DELETE FROM {proyectos_operativos} WHERE nid = %d', $node->nid); } break; case 'view': if ($node->type == 'proyectos_operativos') { module_load_include('inc', 'workflow', 'workflow.pages'); $output = '
' . t('Flujo de Trabajo') . ': 
'; $wid = workflow_get_workflow_for_type($node->type); $states_per_page = variable_get('workflow_states_per_page', 20); $result = db_query("SELECT sid, state FROM {workflow_states} WHERE status = 1 ORDER BY sid"); while ($data = db_fetch_object($result)) { $states[$data->sid] = check_plain(t($data->state)); } $deleted_states = array(); $result = db_query("SELECT sid, state FROM {workflow_states} WHERE status = 0 ORDER BY sid"); while ($data = db_fetch_object($result)) { $deleted_states[$data->sid] = check_plain(t($data->state)); } $current = workflow_node_current_state($node); // theme_workflow_current_state() must run state through check_plain(). $output .= '

'. t('Current state: !state', array('!state' => theme('workflow_current_state', $states[$current]))) . "

\n"; $result = db_query("SELECT h.*, u.name FROM {workflow_node_history} h LEFT JOIN {users} u ON h.uid = u.uid WHERE nid = %d ORDER BY hid DESC", $node->nid); $rows = array(); while ($history = db_fetch_object($result)) { if ($history->sid == $current && !isset($deleted_states[$history->sid]) && !isset($current_themed)) { // Theme the current state differently so it stands out. $state_name = theme('workflow_current_state', $states[$history->sid]); // Make a note that we have themed the current state; other times in the history // of this node where the node was in this state do not need to be specially themed. $current_themed = TRUE; } elseif (isset($deleted_states[$history->sid])) { // The state has been deleted, but we include it in the history. $state_name = theme('workflow_deleted_state', $deleted_states[$history->sid]); $footer_needed = TRUE; } else { // Regular state. $state_name = check_plain(t($states[$history->sid])); } if (isset($deleted_states[$history->old_sid])) { $old_state_name = theme('workflow_deleted_state', $deleted_states[$history->old_sid]); $footer_needed = TRUE; } else { $old_state_name = check_plain(t($states[$history->old_sid])); } $rows[] = theme('workflow_history_table_row', $history, $old_state_name, $state_name); } $output .= theme('workflow_history_table', $rows, !empty($footer_needed)); $node->content['proyectos_operativos_flujo'] = array( '#value' => $output, '#weight' => 100, ); } elseif ($node->type == 'accion_especifica') { $node->title = $node->titulo_asignado; $format_number = array( 'decimals' => variable_get('proyectos_operativos_number_decimals', 0), 'dec_point' => variable_get('proyectos_operativos_number_dec_point', ','), 'thousands_sep' => variable_get('proyectos_operativos_number_thousands_sep', '.'), ); $ftypes = array( 'value' => t('January'), 'value_1' => t('February'), 'value_2' => t('March'), 'value_3' => t('April'), 'value_4' => t('May'), 'value_5' => t('June'), 'value_6' => t('July'), 'value_7' => t('August'), 'value_8' => t('September'), 'value_9' => t('Octuber'), 'value_10' => t('November'), 'value_11' => t('December'), ); $proyecto = node_load($node->field_accion_esp_proyecto[0]['nid']); $field = content_fields('field_accion_esp_programacion', 'accion_especifica'); $tree = taxonomy_get_tree($field['vid']); $vtid = $field['vtid']; $partidas = array(); if ($tree) { foreach ($tree as $term) { if (isset($vtid[$term->tid])) { if ($term && module_exists('i18ntaxonomy') && i18ntaxonomy_vocabulary($term->vid) == I18N_TAXONOMY_LOCALIZE) { $term->name = tt("taxonomy:term:$term->tid:name", $unidad_medida_term->name); } $partidas[$term->tid] = $term->name; } } } $partidas_nodo = array(); foreach ($node->field_accion_esp_programacion as $partida) { if(!empty($partida['tid'])) { $partidas_nodo[$partida['tid']] = $partida; } } $output = ''; $output .= '
' . t('Distribución por Partidas Presupuestarias (Bs)') . ''; $header = array(); $header[] = array('data' => t('Partidas')); foreach($ftypes as $id_field => $texto) { $header[] = array('data' => $texto); } $header[] = array('data' => t('TOTAL')); $rows = array(); $rowsF = array(); $totales = array(); $totalT = 0; $plant = array(); $sumaplan = 0; $sumaplanm = array(); foreach($partidas as $tid => $grupo) { $total = 0; $total1 = 0; $row = array(); $row[] = array('data' => $grupo); foreach($ftypes as $id_field => $texto) { $min = $partidas_nodo[$tid][$id_field]; if (!isset($plant[$tid])) { $plant[$tid] = 0; } $totalT += $min; $plant[$tid] += $min; $total += $min; $sumaplan += $min; if (!isset($sumaplanm[$id_field])) { $sumaplanm[$id_field] = 0; } $sumaplanm[$id_field] += $min; $row[] = array('data' => number_format($min, $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']), ); } $row[] = array('data' => number_format($plant[$tid], $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']), ); if ($plant[$tid] > 0) { $rows[] = $row; } } $row = array(); $row[] = array('data' => '' . t('TOTAL POR PARTIDAS') . '', 'align' => 'right'); foreach($ftypes as $id_field => $texto) { $row[] = array('data' => '' . number_format($sumaplanm[$id_field], $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']) . '', ); } $row[] = array('data' => '' . number_format($totalT, $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']) . '', ); $rows[] = $row; $output .= theme('table', $header, $rows); $output .= '
'; $node->content['accion_especifica_partidas_reformulado'] = array( '#value' => $output, '#weight' => 101, ); $output = ''; //financiamiento $arreglo_financiamiento = array(); $accion_especifica_number_fields = variable_get('accion_especifica_number_fields', 4); for($i = 0; $i < $accion_especifica_number_fields; $i++) { $arreglo_financiamiento['financiamiento_' . $i] = variable_get('accion_especifica_financiamiento_label_' . $i, '') ? variable_get('accion_especifica_financiamiento_label_' . $i, '') : ''; $arreglo_financiamiento_fields['financiamiento_' . $i] = variable_get('accion_especifica_financiamiento_options_' . $i, array()); } $rows = array(); $row = array(); $row1 = array(); $sumalT = 0; foreach($arreglo_financiamiento as $id_items => $titulo) { $sumal = 0; $output1 = '
' . $titulo . ''; foreach($arreglo_financiamiento_fields[$id_items] as $id1) { if ($id1) { $field = content_fields($id1, 'accion_especifica'); $min = $node->{$id1}[0]['value']; if (!isset($sumafinm[$id_items])) { $sumafinm[$id_items] = 0; } $sumafinm[$id_items] += $min; $sumatotalf += $min; $field = content_fields($id1, 'accion_especifica'); $sumal += $min; $sumalT += $min; $output1 .= '
' . $field['widget']['label'] . ':
' . '
' . number_format($min, $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']) . '
' . '
'; } } $output1 .= '
'; $row[] = array('data' => $output1, ); $row1[] = array('data' => number_format($sumal, $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']), ); } $rows[] = $row; $rows[] = $row1; $row = array(); $cantifuentes = count($arreglo_financiamiento); $row[] = array('data' => '' . t('TOTAL FUENTES DE FINANCIAMIENTO') . ':', 'colspan' => ($cantifuentes - 1), 'align' => 'right'); $row[] = array('data' => '' . number_format($sumalT, $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']) . '', ); $rows[] = $row; $output .= '
' . t('Distribución por fuentes de Financiamiento (Bs)') . '' . theme('table', array(), $rows) . '
'; $node->content['accion_especifica_fuentesfinanc_reformulado'] = array( '#value' => $output, '#weight' => 102, ); } break; } } /** * Implementation of _proyectos_operativos_edita_datos_indicadores_access() * Menu access control callback. Determina si un proyecto tiene acceso a indicadores. */ function _proyectos_operativos_edita_datos_indicadores_access($node = NULL) { global $user; $acceso = _proyectos_operativos_access_editar($node); if (!$acceso) { return FALSE; } return $node->field_proyecto_og[0]['value']; } /** * Implementation of _proyectos_operativos_edita_datos_ae_access() * Menu access control callback. Determina si un proyecto tiene acceso a acciones especificas. */ function _proyectos_operativos_edita_datos_ae_access($node = NULL) { global $user; $acceso = _proyectos_operativos_access_editar($node); if (!$acceso) { return FALSE; } return $node->field_proyecto_unidadm[0]['value']; } /** * Implementation of _proyectos_operativos_edita_datos_financieros_access() * Menu access control callback. Determina si un proyecto tiene acceso a los datos financieros. */ function _proyectos_operativos_edita_datos_financieros_access($node = NULL) { if (!_proyectos_operativos_edita_datos_ae_access($node)) { return FALSE; } foreach($node->field_proyecto_accion_esp as $accion) { if ($accion['nid'] && $nid != $accion['nid']) { $accion_load = node_load($accion['nid']); if ($accion_load && $accion_load->type == 'accion_especifica') { if ($accion_load->field_accion_esp_programacion[0]['tid']) { foreach($accion_load->field_accion_esp_programacion as $programacion) { foreach($programacion as $id_value => $mesp){ if ($id_value != 'tid') { $montos +=$mesp; } } } } $acciones_especificas[$accion_load->nid] = $accion_load; $porcentajes[$accion_load->field_accion_esp_ponderacion[0]['value']] = 1; $ejecucion += $accion_load->field_accion_esp_ponderacion[0]['value']; } } elseif($nid = $accion['nid']) { $acciones_especificas[$ae->nid] = $ae; } } $monto_restante = $node->field_proyecto_monto_anual[0]['value'] - $montos; $et = 100 - $ejecucion; return (($monto_restante == 0) && ($et == 0)); } /** * Implementation of _proyectos_operativos_ver_datos_wk_access() * Menu access control callback. Determina si un usuario tiene acceso al flujo de trabajo */ function _proyectos_operativos_ver_datos_wk_access($node = NULL) { return (user_access('ver planificador') && $node->type == 'proyectos_operativos'); } /** * Implementation of _proyectos_operativos_ver_datos_wk_access() * Menu access control callback. Determina si un usuario tiene acceso a editar el flujo de trabajo */ /* function _proyectos_operativos_edita_datos_wk_access($node = NULL) { global $user; print "
";
print_r($node);
print "
"; $fecha = FALSE; $ente = usuario_tiene_ente($user->uid); if ($ente->nid == $ente_planificador->nid) { $fecha = TRUE; } elseif (!user_access('admin planificador')) { $fecha = FALSE; } $accesso = workflow_node_tab_access($node); return $fecha && $accesso && _proyectos_operativos_edita_datos_financieros_access($node); } */ function _proyectos_operativos_edita_datos_wk_access($node = NULL) { global $user; if (!isset($node->field_proyecto_ente[0]['nid'])) { return FALSE; } $fecha = FALSE; $ente = usuario_tiene_ente($user->uid); $ente_planificador = ente_planificador_leer_ente_planificadores($node->field_proyecto_ente[0]['nid']); $children = FALSE; if (user_access('admin planificador')) { $fecha = TRUE; } elseif ($ente_planificador->nid == $ente->nid) { $fecha = TRUE; } elseif (module_exists('ente_planificador_hierarchical')) { $fathers = _ente_planificador_hierarchical_get_descbyid($ente_planificador->nid, 1); $fecha = isset($fathers[$ente->nid]) ? TRUE : FALSE; } //print $fecha . "hola"; $accesso = workflow_node_tab_access($node); //print _proyectos_operativos_edita_datos_financieros_access($node) . "aa"; /* print "
";
print_r($node);
print "
"; */ return $fecha && $accesso && _proyectos_operativos_edita_datos_financieros_access($node); } /** * Implementation of _proyectos_operativos_edita_datos_agregar() * Menu access control callback. Determina si un usuario tiene acceso a crear un nuevo proyecto */ function _proyectos_operativos_edita_datos_agregar($enteagregar = 0) { global $user; $current_time = time(); $tipo_plan = 'proyectos_operativos_formular'; $ente = usuario_tiene_ente($user->uid); $ente_planificador = 0; if ($ente && $ente->nid) { $ente_planificador = ente_planificador_leer_ente_planificadores($ente->nid); } elseif (user_access('admin planificador') && $enteagregar) { $ente_planificador = ente_planificador_leer_ente_planificadores($enteagregar); } if (!$ente_planificador) { return FALSE; } $first_state = 0; if (!user_access('admin planificador') && module_exists('workflow')) { $states = _proyectos_operativos_reformula_obtiene_estados(); if ($states['wid']) { $first_state = _workflow_creation_state($states['wid']); } if ($first_state) { $roles_perm = FALSE; $roles_allow = variable_get('proyectos_operativos_state_m_' . $first_state, array()); $roles = array_keys($user->roles); if (count($roles)) { foreach($roles as $rol) { if($roles_allow[$rol]) { $roles_perm = TRUE; } elseif ($rol == -1 && $node->uid == $user->uid) { $roles_perm = TRUE; } } } if (!$roles_perm) { return FALSE; } } } $mi_fecha = ente_planificador_user_acceso_proceso($tipo_plan, $ente_planificador); return $mi_fecha[1] + 86399 > $current_time && $mi_fecha[0] < $current_time; } /** * Implementation of _proyectos_operativos_access_editar() * Menu access control callback. Determina si un usuario tiene acceso a editar un proyecto */ function _proyectos_operativos_access_editar($node) { global $user; if (module_exists('workflow')) { $estado_aprobado = variable_get('proyectos_operativos_state_aprobado', NULL); $estado_naprobado = variable_get('proyectos_operativos_state_naprobado', NULL); if ($node->_workflow == $estado_aprobado || $node->_workflow == $estado_naprobado) { return FALSE; } } if ($node->anhoproyectos_operativos != variable_get('proyectos_operativos_anho_creacion', 0)) { return FALSE; } $ente_planificador = ente_planificador_leer_ente_planificadores($node->field_proyecto_ente[0]['nid']); if (!$ente_planificador || !$ente_planificador->nid) { return FALSE; } $current_time = time(); $tipo_plan = 'proyectos_operativos_formular'; $fecha = FALSE; $ente = usuario_tiene_ente($user->uid); /* $children = FALSE; if (module_exists('ente_planificador_hierarchical')) { $fathers = _ente_planificador_hierarchical_get_descbyid($ente_planificador->nid,1); $children = isset($fathers[$ente->nid]) ? TRUE : FALSE; //$childrens = _ente_planificador_hierarchical_get_descbyid($fathers['nid'], 0); //$children = isset($childrens[$ente->nid]) ? TRUE : FALSE; } if (($ente_planificador->nid != $ente->nid && !$children) && !user_access('admin planificador')) { return FALSE; } */ if ($ente_planificador->nid != $ente->nid && !user_access('admin planificador')) { return FALSE; } $mi_fecha = ente_planificador_user_acceso_proceso($tipo_plan, $ente_planificador); if ($mi_fecha[1] + 86399 > $current_time && $mi_fecha[0] < $current_time) { $fecha = TRUE; } if ($fecha) { if ($ente->nid == $ente_planificador->nid || $children) { $fecha = TRUE; } elseif (!user_access('admin planificador')) { $fecha = FALSE; } } $roles_perm = TRUE; if (module_exists('workflow') && $fecha && !user_access('admin planificador')) { $roles_perm = FALSE; $roles_allow = variable_get('proyectos_operativos_state_m_' . $node->_workflow, array()); $roles = array_keys($user->roles); if (count($roles)) { foreach($roles as $rol) { if($roles_allow[$rol]) { $roles_perm = TRUE; } elseif ($rol == -1 && $node->uid == $user->uid) { $roles_perm = TRUE; } } } } return $fecha && $roles_perm; } /* * Implementation of hook_menu() */ function proyectos_operativos_menu() { $items = array(); //consultar proyectos operativos $items['proyectos_operativos'] = array( 'title' => t('Consultar Proyectos Operativos'), 'page callback' => 'proyectos_operativos_search_ac_display', 'access arguments' => array('ver planificador'), 'type' => MENU_NORMAL_ITEM, ); //editar proyectos operativos (basicos) $items['proyectosopedit/%proyectosop'] = array( 'title callback' => 'node_page_title', 'title arguments' => array(1), 'page callback' => 'drupal_get_form', 'page arguments' => array('proyectos_operativos_proyecto_basico_form', 1), 'access callback' => '_proyectos_operativos_access_editar', 'access arguments' => array(1), 'type' => MENU_CALLBACK, ); $items['proyectosopedit/%proyectosop/basicos'] = array( 'title' => t('Datos Básicos'), 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10 ); //editar proyectos operativos (generales) $items['proyectosopedit/%proyectosop/generales'] = array( 'title' => t('Datos Generales'), 'page callback' => 'drupal_get_form', 'page arguments' => array('proyectos_operativos_proyecto_generales_form', 1), 'access callback' => '_proyectos_operativos_edita_datos_generales_access', 'access arguments' => array(1), 'weight' => -7, 'type' => MENU_LOCAL_TASK, ); //editar proyectos operativos (indicadores) $items['proyectosopedit/%proyectosop/indicadores'] = array( 'title' => t('Indicadores del Proyecto'), 'page callback' => 'drupal_get_form', 'page arguments' => array('proyectos_operativos_proyecto_indicadores_form', 1), 'access callback' => '_proyectos_operativos_edita_datos_indicadores_access', 'access arguments' => array(1), 'weight' => -6, 'type' => MENU_LOCAL_TASK, ); //editar proyectos operativos (acciones especificas) $items['proyectosopedit/%proyectosop/ae'] = array( 'title' => t('Acciones Específicas'), 'page callback' => '_proyectos_operativos_proyecto_ae', 'page arguments' => array(1), 'access callback' => '_proyectos_operativos_edita_datos_ae_access', 'access arguments' => array(1), 'weight' => -5, 'type' => MENU_LOCAL_TASK, ); $items['proyectosopedit/%proyectosop/ae/ver'] = array( 'title' => t('Acciones Especificas'), 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10 ); //editar proyectos operativos (editar acciones especificas) $items['proyectosopedit/%proyectosop/ae/%accion_especifical/edit'] = array( 'title' => t('Editar'), 'page callback' => '_proyectos_operativos_proyecto_ae', 'page arguments' => array(1, 3), 'access callback' => '_proyectos_operativos_edita_datos_ae_access', 'access arguments' => array(1), 'weight' => -4, 'type' => MENU_LOCAL_TASK, ); //editar proyectos operativos (borrar acciones especificas) $items['proyectosopedit/%proyectosop/ae/%accion_especifical/remove'] = array( 'title' => t('Eliminar'), 'page callback' => 'drupal_get_form', 'page arguments' => array('proyectos_operativos_remove_ac_form', 1, 3), 'access callback' => '_proyectos_operativos_edita_datos_ae_access', 'access arguments' => array(1), 'weight' => -4, 'type' => MENU_LOCAL_TASK, ); //editar proyectos operativos (datos financieros) $items['proyectosopedit/%proyectosop/finacieros'] = array( 'title' => t('Datos Financieros'), 'page callback' => '_proyectos_operativos_proyecto_financieros', 'page arguments' => array(1), 'access callback' => '_proyectos_operativos_edita_datos_financieros_access', 'access arguments' => array(1), 'weight' => -4, 'type' => MENU_LOCAL_TASK, ); //ver ficha del proyecto $items['proyectosopedit/%proyectosop/ficha'] = array( 'title' => t('Ficha'), 'page callback' => '_proyectos_operativos_proyecto_ficha_proyecto', 'page arguments' => array(1), 'access callback' => '_proyectos_operativos_edita_datos_financieros_access', 'access arguments' => array(1), 'weight' => -3, 'type' => MENU_LOCAL_TASK, ); //consulta proyecto operativo $items['proyectosopedit/%proyectosop/ver'] = array( 'title' => 'Consultar', 'page callback' => '_proyectos_operativos_proyecto_regresa_ver', 'page arguments' => array(1), 'access callback' => '_proyectos_operativos_ver_datos_wk_access', 'access arguments' => array(1), 'type' => MENU_LOCAL_TASK ); //agregar proyecto operativo $items['agregarproyectosop'] = array( 'title' => t('Agregar Proyecto'), 'page callback' => '_proyectos_operativos_proyecto_agregar_proyecto', 'access callback' => '_proyectos_operativos_edita_datos_agregar', 'weight' => -7, 'type' => MENU_NORMAL_ITEM, ); $items['agregarproyectosop/%'] = array( 'title' => t('Agregar Proyecto'), 'page callback' => '_proyectos_operativos_proyecto_agregar_proyecto', 'page arguments' => array(1), 'access callback' => '_proyectos_operativos_edita_datos_agregar', 'access arguments' => array(1), 'weight' => -7, 'type' => MENU_NORMAL_ITEM, ); //configuracion proyectos operativos $items['agregar_proyectoopente'] = array( 'title' => t('Agregar Proyectos Operativos por ente'), 'page callback' => 'proyectos_operativos_agregar_proyectoente', 'access arguments' => array('admin planificador'), 'weight' => -6, 'type' => MENU_NORMAL_ITEM, ); //consulta proyecto operativo $items['proyectosop/%proyectosop'] = array( 'title' => t('Ver'), 'page callback' => '_proyectos_operativos_proyecto_campos', 'page arguments' => array(1), 'access callback' => '_proyectos_operativos_ver_datos_wk_access', 'access arguments' => array(1), 'weight' => -7, 'type' => MENU_CALLBACK, ); $items['proyectosop/%proyectosop/ver'] = array( 'title' => t('Ver'), 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10 ); $items['proyectosop/%proyectosop/ficha'] = array( 'title' => t('Ficha'), 'page callback' => '_proyectos_operativos_proyecto_ficha_proyecto', 'page arguments' => array(1), 'access callback' => '_proyectos_operativos_ver_datos_wk_access', 'access arguments' => array(1), 'weight' => -6, 'type' => MENU_LOCAL_TASK, ); //consulta proyecto operativo (accion especificas) $items['proyectosop/%proyectosop/ae'] = array( 'title' => t('Acciones Especificas'), 'page callback' => '_list_proyectos_operativos_proyecto_ae', 'page arguments' => array(1), 'access callback' => '_proyectos_operativos_ver_datos_wk_access', 'access arguments' => array(1), 'weight' => -5, 'type' => MENU_LOCAL_TASK, ); $items['proyectosop/%proyectosop/ae/%accion_especifical/ver'] = array( 'title' => t('Consultar Acción Específica'), 'page callback' => 'node_view', 'page arguments' => array(3), 'access callback' => '_proyectos_operativos_ver_datos_wk_access', 'access arguments' => array(1), 'weight' => -4, 'type' => MENU_LOCAL_TASK, ); //editar proyectos operativos (borrar acciones especificas) $items['proyectosop/%proyectosop/ae/%accion_especifical/remove'] = array( 'title' => t('Eliminar'), 'page callback' => 'drupal_get_form', 'page arguments' => array('proyectos_operativos_remove_ac_form', 1, 3), 'access callback' => '_proyectos_operativos_edita_datos_ae_access', 'access arguments' => array(1), 'weight' => -4, 'type' => MENU_CALLBACK, ); //consulta proyecto operativo (datos financieros) $items['proyectosop/%proyectosop/finacieros'] = array( 'title' => t('Datos Financieros'), 'page callback' => '_proyectos_operativos_proyecto_financieros', 'page arguments' => array(1), 'access callback' => '_proyectos_operativos_ver_datos_wk_access', 'access arguments' => array(1), 'weight' => -4, 'type' => MENU_LOCAL_TASK, ); //consulta proyecto operativo (flujo de trabajo) $items['proyectosop/%proyectosop/workflow'] = array( 'title' => t('Workflow'), 'page callback' => '_proyectos_operativos_proyecto_ver_workflow', 'page arguments' => array(1), 'access callback' => '_proyectos_operativos_edita_datos_wk_access', 'access arguments' => array(1), 'weight' => -4, 'type' => MENU_LOCAL_TASK, ); //editar proyecto operativo $items['proyectosop/%proyectosop/edit'] = array( 'title' => t('Edit'), 'page callback' => '_proyectos_operativos_proyecto_editar', 'page arguments' => array(1), 'access callback' => '_proyectos_operativos_access_editar', 'access arguments' => array(1), 'weight' => -3, 'type' => MENU_LOCAL_TASK, ); //editar proyecto operativo $items['proyectosop/%proyectosop/remove'] = array( 'title' => t('Eliminar'), 'page callback' => 'drupal_get_form', 'page arguments' => array('proyectos_operativos_remove_proyectosop_form', 1), 'access callback' => '_proyectos_operativos_access_editar', 'access arguments' => array(1), 'weight' => -3, 'type' => MENU_LOCAL_TASK, ); //configuracion proyectos operativos $items['admin/settings/ente_planificador/proyectos_operativos'] = array( 'title' => t('Proyectos Operativos'), 'page callback' => 'drupal_get_form', 'page arguments' => array('proyectos_operativos_admin_settings'), 'access arguments' => array('admin planificador'), 'weight' => -6, 'type' => MENU_LOCAL_TASK, 'file' => 'proyectos_operativos.admin.inc', ); $items['admin/settings/ente_planificador/proyectos_operativos/configurar'] = array( 'title' => t('Configurar'), 'type' => MENU_DEFAULT_LOCAL_TASK, 'type' => MENU_DEFAULT_LOCAL_TASK, 'weight' => -10 ); if (module_exists('workflow')) { //configuracion proyectos operativos $items['admin/settings/ente_planificador/proyectos_operativos/worflow'] = array( 'title' => t('Workflow'), 'page callback' => 'drupal_get_form', 'page arguments' => array('proyectos_operativos_admin_workflow_settings'), 'access arguments' => array('admin planificador'), 'weight' => -6, 'type' => MENU_LOCAL_TASK, 'file' => 'proyectos_operativos.admin.inc', ); } $items['proyectos_operativos_proyecto_generales_agrega_talento_js_util'] = array( 'title' => 'JS utilities', 'page callback' => 'proyectos_operativos_proyecto_generales_agrega_talento_js_util', 'access arguments' => array('ver planificador'), 'type' => MENU_CALLBACK, ); return $items; } /** * Implementation of _proyectos_operativos_proyecto_financieros(). * Ver datos financieros (proyectos operativos). */ function _proyectos_operativos_proyecto_ficha_proyecto($proyecto = 0) { drupal_set_title(t('Ficha del Proyecto')); //add breadcrumb $breadcrumb = array(); $breadcrumb[] = l(t('Home'), ''); $breadcrumb[] = l(t('Proyectos Operativos'), 'proyectos_operativos'); if ($node->nid) { $breadcrumb[] = l(check_plain($node->title), 'proyectosop/' . $node->nid); } $breadcrumb[] = t('Ficha del Proyecto'); drupal_set_breadcrumb($breadcrumb); return theme('proyectos_operativos_ficha_proyecto', $proyecto); } /* * proyectos_operativos_proyecto_generales_agrega_talento_js_util * Generates AJAX responses of talento humano */ function proyectos_operativos_proyecto_generales_agrega_talento_js_util($tipo) { $arreglov['talento'] = 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', ); $arreglov['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', ); $arreglov['beneficiario'] = array( 'field_proyecto_beneficiario' => 'field_proyecto_beneficiario', 'field_proyectos_masculino_d' => 'field_proyectos_masculino_d', 'field_proyectos_femenino_d' => 'field_proyectos_femenino_d', ); if (variable_get('proyectos_operativos_muestra_beneficiarios_indirectos', TRUE)) { $arreglov['beneficiario']['field_proyectos_masculino_i'] = 'field_proyectos_masculino_i'; $arreglov['beneficiario']['field_proyectos_femenino_i'] = 'field_proyectos_femenino_i'; } if (array_key_exists($tipo, $arreglov)) { $arreglo = $arreglov[$tipo]; } else { drupal_not_found(); } $cantidad = intval($_POST['cantidad_' . $tipo]) > 0 ? intval($_POST['cantidad_' . $tipo]) : 0; $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); $node_type = content_types('proyectos_operativos'); $fields = $node_type['fields']; foreach($arreglo as $field_id => $field) { $fields_extra_form1[] = $field_id; $prefixC .= '' . $fields[$field_id]['widget']['label'] . ''; } $format_number = array( 'decimals' => variable_get('proyectos_operativos_number_decimals', 0), 'dec_point' => variable_get('proyectos_operativos_number_dec_point', ','), 'thousands_sep' => variable_get('proyectos_operativos_number_thousands_sep', '.'), ); $cantidad++; $texto_1_aux = $tipo == 'talento' ? 'talento-humano' : $tipo; if ($tipo == 'talento' || $tipo == 'capacidades') { for ($i = 0; $i < $cantidad; $i++) { $prefix = ''; if ($i == 0) { $prefix = '
' . $prefixC . '', ); if ($field_id == 'field_proyecto_esfuerzo') { $new_form[$field_id . '_' . $i]['#element_validate'] = array('proyectos_operativos_number_integer_validate2',); } $aux = $field_id; $aui = $i; $prefix = ''; $form[$tipo][$aux . '_' . $aui] = $new_form[$aux . '_' . $aui]; } $new_form[$aux . '_' . $aui]['#suffix'] .= '
'; } else { $prefix .= '
'; } $aux = ''; $aui = ''; foreach($arreglo as $field_id => $field) { $new_form[$field_id . '_' . $i] = array( '#type' => 'textfield', '#size' => 18, '#maxlength' => 255, '#prefix' => $prefix, '#suffix' => ''; $form[$tipo][$field_id . '_' . $i] = $new_form[$field_id . '_' . $i]; } $new_form[$aux . '_' . $aui]['#suffix'] .= '
'; $form[$tipo][$aux . '_' . $aui] = $new_form[$aux . '_' . $aui]; $new_form['cantidad_' . $tipo] = array('#type' => 'hidden', '#value' => $cantidad, '#suffix' => '
'); unset($form[$tipo]['cantidad_' . $tipo]); $form[$tipo]['cantidad_' . $tipo] = $new_form['cantidad_' . $tipo]; } elseif($tipo == 'beneficiario') { $prefixC .= '' . t('Total') . ''; $vid = variable_get('proyectos_operativos_extra_bene', 0); //$terms = taxonomy_get_tree($vid); $tree = taxonomy_get_tree($vid); $options = array(); $options[''] = t('Seleccionar'); if ($tree) { foreach ($tree as $term) { $options[$term->name] = $term->name; } } for ($i = 0; $i < $cantidad; $i++) { $subtotal = 0; $prefix = ''; if ($i == 0) { $prefix = '
' . $prefixC . '', ); } else { $new_form[$field_id . '_' . $i] = array( '#type' => 'textfield', '#default_value' => $valor, '#size' => 10, '#maxlength' => 255, '#prefix' => $prefix, '#suffix' => '', ); } if ($field_id != 'field_proyecto_beneficiario') { if (!isset($total_arreglo[$field_id])) { $total_arreglo[$field_id] = 0; } $subtotal += (int) $valor; $totales += (int) $valor; $total_arreglo[$field_id] += (int) $valor; $sumas['beneficiarios']['beneficiario_' . $i] = 'beneficiario_' . $i; $new_form[$field_id . '_' . $i]['#element_validate'] = array('proyectos_operativos_number_integer_validate2',); $new_form[$field_id . '_' . $i]['#attributes'] = array('class' => 'number beneficiario_' . $i . ' todosbeneficiarios beneficiarios_' . $field_id, 'onchange' => "sumabeneficiario('beneficiario_$i');sumabeneficiario('todosbeneficiarios');sumabeneficiario('beneficiarios_$field_id');"); $form[$tipo][$field_id . '_' . $i] = $new_form[$field_id . '_' . $i]; } $aux = $field_id; $aui = $i; $prefix = ''; $new_form[$aux . '_' . $aui]['#suffix'] .= ''; $form[$tipo][$aux . '_' . $aui] = $new_form[$aux . '_' . $aui]; } $new_form[$aux . '_' . $aui]['#suffix'] .= ''; foreach($arreglo as $field_id => $field) { if ($field_id != 'field_proyecto_beneficiario') { $sumas['beneficiarios']['beneficiarios_' . $field_id] = 'beneficiarios_' . $field_id; $new_form[$aux . '_' . $aui]['#suffix'] .= ''; $form[$tipo][$aux . '_' . $aui] = $new_form[$aux . '_' . $aui]; } } $sumas['beneficiarios']['todosbeneficiarios'] = 'todosbeneficiarios'; $sumas['beneficiarios']['empleos_generados'] = 'empleos_generados'; $new_form[$aux . '_' . $aui]['#suffix'] .= ''; $new_form[$aux . '_' . $aui]['#suffix'] .= '
'; } else { $prefix .= '
'; } $aux = ''; $aui = ''; foreach($arreglo as $field_id => $field) { //$field_id1 = 'edit-' . str_replace('_', '-', $field_id . '_' . $i); $_POST[$field_id . '_' . $i] = str_replace('.', '', $_POST[$field_id . '_' . $i]); $valor = intval($_POST[$field_id . '_' . $i]) > 0 ? intval($_POST[$field_id . '_' . $i]) : 0; if ($field_id == 'field_proyecto_beneficiario') { $new_form[$field_id . '_' . $i] = array( '#type' => 'select', '#default_value' => $valor, '#options' => $options, '#prefix' => $prefix, '#suffix' => ''; $form[$tipo][$field_id . '_' . $i] = $new_form[$field_id . '_' . $i]; } $new_form[$aux . '_' . $aui]['#suffix'] .= '
' . number_format($subtotal, $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']) . '
' . t('TOTAL') . '
' . $total_arreglo[$field_id] . '
' . $totales . '
'; $form[$tipo][$aux . '_' . $aui] = $new_form[$aux . '_' . $aui]; unset($form[$tipo]['cantidad_' . $tipo]); $new_form['cantidad_' . $tipo] = array('#type' => 'hidden', '#value' => $cantidad, '#suffix' => '
'); $form[$tipo]['cantidad_' . $tipo] = $new_form['cantidad_' . $tipo]; } //$form[$tipo] = $new_form; 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); // Render the new output. $new_form = array(); $prefix = ''; for ($i = 0; $i < $cantidad; $i++) { if ($i == 0) { $prefix = '' . $prefixC . ''; } $cantidad++; if ($tipo == 'talento' || $tipo == 'capacidades') { for ($i = 0; $i < $cantidad; $i++) { $prefix = ''; if ($i == 0) { $prefix = '
'; } foreach($arreglo as $field_id => $field) { $new_form[$field_id . '_' . $i] = $form[$tipo][$field_id . '_' . $i]; if ($prefix != '') { $new_form[$field_id . '_' . $i]['#prefix'] = $prefix; } $prefix = ''; $aux = $field_id; $aui = $i; $new_form[$aux . '_' . $aui] = $form[$tipo][$aux . '_' . $aui]; } $new_form[$aux . '_' . $aui] = $form[$tipo][$aux . '_' . $aui]; } $new_form[$aux . '_' . $aui] = $form[$tipo][$aux . '_' . $aui]; foreach($arreglo as $field_id => $field) { if ($field_id != 'field_proyecto_beneficiario') { $new_form[$aux . '_' . $aui] = $form[$tipo][$aux . '_' . $aui]; } } $new_form['cantidad_' . $tipo] = $form[$tipo]['cantidad_' . $tipo]; unset($new_form['cantidad_' . $tipo]['#suffix']); unset($new_form['#prefix'], $new_form['#suffix']); // Prevent duplicate wrappers. //unset($new_form['agrega_' . $tipo]); $output = drupal_render($new_form); print drupal_to_js(array('data' => $output, 'status' => true)); exit(); } /* function proyectos_operativos_proyecto_generales_agrega_talento_js_util($tipo) { $arreglov['talento'] = 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', ); $arreglov['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', ); $arreglov['beneficiario'] = array( 'field_proyecto_beneficiario' => 'field_proyecto_beneficiario', 'field_proyectos_masculino_d' => 'field_proyectos_masculino_d', 'field_proyectos_femenino_d' => 'field_proyectos_femenino_d', 'field_proyectos_masculino_i' => 'field_proyectos_masculino_i', 'field_proyectos_femenino_i' => 'field_proyectos_femenino_i', ); if (array_key_exists($tipo, $arreglov)) { $arreglo = $arreglov[$tipo]; } else { drupal_not_found(); } $cantidad = intval($_POST['cantidad_' . $tipo]) > 0 ? intval($_POST['cantidad_' . $tipo]) : 0; $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); $node_type = content_types('proyectos_operativos'); $fields = $node_type['fields']; foreach($arreglo as $field_id => $field) { $fields_extra_form1[] = $field_id; $prefixC .= '' . $fields[$field_id]['widget']['label'] . '
' . $prefixC . '', ); if ($field_id == 'field_proyecto_esfuerzo') { $form[$field_id . '_' . $i]['#element_validate'] = array('proyectos_operativos_number_integer_validate2',); } $aux = $field_id; $aui = $i; $prefix = ''; } $new_form[$aux . '_' . $aui]['#suffix'] .= '
'; } else { $prefix .= '
'; } $aux = ''; $aui = ''; foreach($arreglo as $field_id => $field) { $new_form[$field_id . '_' . $i] = array( '#type' => 'textfield', '#size' => 10, '#maxlength' => 255, '#prefix' => $prefix, '#suffix' => ''; } $new_form[$aux . '_' . $aui]['#suffix'] .= '
'; $new_form['cantidad_' . $tipo] = array('#type' => 'hidden', '#value' => $cantidad); } elseif($tipo == 'beneficiario') { $prefixC .= '' . t('Total') . ''; $vid = variable_get('proyectos_operativos_extra_bene', 0); //$terms = taxonomy_get_tree($vid); $tree = taxonomy_get_tree($vid); $options = array(); $options[''] = t('Seleccionar'); if ($tree) { foreach ($tree as $term) { $options[$term->name] = $term->name; } } for ($i = 0; $i < $cantidad; $i++) { $subtotal = 0; $prefix = ''; if ($i == 0) { $prefix = '' . $prefixC . '', ); } else { $new_form[$field_id . '_' . $i] = array( '#type' => 'textfield', '#default_value' => $valor, '#size' => 10, '#maxlength' => 255, '#prefix' => $prefix, '#suffix' => '', ); } if ($field_id != 'field_proyecto_beneficiario') { if (!isset($total_arreglo[$field_id])) { $total_arreglo[$field_id] = 0; } $subtotal += (int) $valor; $totales += (int) $valor; $total_arreglo[$field_id] += (int) $valor; $sumas['beneficiarios']['beneficiario_' . $i] = 'beneficiario_' . $i; $new_form[$field_id . '_' . $i]['#element_validate'] = array('proyectos_operativos_number_integer_validate2',); $new_form[$field_id . '_' . $i]['#attributes'] = array('class' => 'number beneficiario_' . $i . ' todosbeneficiarios beneficiarios_' . $field_id, 'onchange' => "sumabeneficiario('beneficiario_$i');sumabeneficiario('todosbeneficiarios');sumabeneficiario('beneficiarios_$field_id');"); } $aux = $field_id; $aui = $i; $prefix = ''; $new_form[$aux . '_' . $aui]['#suffix'] .= ''; } $new_form[$aux . '_' . $aui]['#suffix'] .= ''; foreach($arreglo as $field_id => $field) { if ($field_id != 'field_proyecto_beneficiario') { $sumas['beneficiarios']['beneficiarios_' . $field_id] = 'beneficiarios_' . $field_id; $new_form[$aux . '_' . $aui]['#suffix'] .= ''; } } $sumas['beneficiarios']['todosbeneficiarios'] = 'todosbeneficiarios'; $sumas['beneficiarios']['empleos_generados'] = 'empleos_generados'; $new_form[$aux . '_' . $aui]['#suffix'] .= ''; $new_form[$aux . '_' . $aui]['#suffix'] .= '
'; } else { $prefix .= '
'; } $aux = ''; $aui = ''; foreach($arreglo as $field_id => $field) { $_POST[$field_id . '_' . $i] = str_replace('.', '', $_POST[$field_id . '_' . $i]); $valor = intval($_POST[$field_id . '_' . $i]) > 0 ? intval($field_id . '_' . $i) : 0; if ($field_id == 'field_proyecto_beneficiario') { $new_form[$field_id . '_' . $i] = array( '#type' => 'select', '#default_value' => $valor, '#options' => $options, '#prefix' => $prefix, '#suffix' => ''; } $new_form[$aux . '_' . $aui]['#suffix'] .= '
' . $subtotal . '
' . t('TOTAL') . '
' . $total_arreglo[$field_id] . '
' . $totales . '
'; $new_form['cantidad_' . $tipo] = array('#type' => 'hidden', '#value' => $cantidad); } $form[$tipo] = $new_form; 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); // Render the new output. $new_form = $form[$tipo]; unset($new_form['#prefix'], $new_form['#suffix']); // Prevent duplicate wrappers. $output = drupal_render($new_form); print drupal_to_js(array('data' => $output, 'status' => true)); exit(); } */ /** * Implementation of proyectos_operativos_remove_ac_form() * Eliminar accion especifica */ function proyectos_operativos_remove_ac_form($form_state, $node = 0, $ac = 0) { //add breadcrumb $breadcrumb = array(); $breadcrumb[] = l(t('Home'), ''); $breadcrumb[] = l(t('Proyectos Operativos'), 'proyectos_operativos'); if ($proyecto->nid) { $breadcrumb[] = l(check_plain($proyecto->title), 'proyectosop/' . $proyecto->nid); } if ($ac->nid) { $breadcrumb[] = check_plain($ac->titulo_asignado); } drupal_set_breadcrumb($breadcrumb); $form = array(); $form['#node'] = $node; //print "
";print_r($form['#node']);print "
"; $form['#ac'] = $ac; $message = t('Esta seguro de eliminar la acción especifica @nombre?', array('@nombre' => $ac->titulo_asignado)); $caption = '

'. t('This action cannot be undone.') .'

'; $return_path = $_REQUEST['destination'] ? $_REQUEST['destination'] : 'proyectosopedit/' . $node->nid . '/ae'; return confirm_form($form, $message, $return_path, $caption, t('Eliminar')); } /** * Implementation of proyectos_operativos_remove_ac_form_submit(). * Process funcion delete accion especifica. */ function proyectos_operativos_remove_ac_form_submit($form, &$form_state) { global $user; $titulo = $form['#$ac']->titulo_asignado; $nid = $form['#ac']->nid; node_delete($form['#ac']->nid); $accion_esp = array(); $proyecto = $form['#node']; foreach($proyecto->field_proyecto_accion_esp as $ac) { if ($ac['nid'] != $nid) { $accion_esp[] = array('nid' => $ac['nid']); } } $proyecto->field_proyecto_accion_esp = $accion_esp; $proyecto->revision = 1; $texto = t('Se elimino la acción especifica @nombre', array('@nombre' => $ac->titulo_asignado)); $proyecto->log = $texto; //print "
";print_r($proyecto);print "
"; //juan(); //drupal_set_message("
". print_r($proyecto, 1). "
"); node_save($proyecto); drupal_set_message($texto); if (!$_REQUEST['destination']) { // add redirect $form_state['redirect'] = 'proyectosopedit/' . $form['#node']->nid . '/ae'; } } /* * hook_form_alter() */ function proyectos_operativos_form_alter(&$form, $form_state, $form_id) { if ($form_id == 'proyectos_operativos_proyecto_basico_form' && !user_access('admin planificador')) { //$form['field_proyecto_ente']['#pre_render'][] = 'proyectos_operativos_nodereference_field_pre_render'; } if ($form_id == 'proyectos_operativos_proyecto_generales_form') { //$form['field_proyecto_relacion']['#pre_render'][] = 'proyectos_operativos_nodereference2_field_pre_render'; $arreglo = array( 'field_proyecto_emdirecto' => 'field_proyecto_emdirecto', 'field_proyecto_efdirecto' => 'field_proyecto_efdirecto', 'field_proyecto_emindirecto' => 'field_proyecto_emindirecto', 'field_proyecto_efindirecto' => 'field_proyecto_efindirecto', ); foreach($arreglo as $id) { $form[$id]['#pre_render'][] = 'proyectos_operativos_agregaclase_field_pre_render'; } } if ($form_id == 'workflow_tab_form') { if ($form['node']['#value']->type == 'proyectos_operativos') { /* print "
";
print_r($form);
print "
"; */ $form['submit']['#value'] = 'Enviar'; $current = $form['node']['#value']->_workflow; $form['#proyectos_operativos_states_d'] = array(); $nombre = check_plain((t($form['#wf']->name))); $actual = $form['workflow'][$nombre]['#options'][$current]; unset($form['workflow'][$nombre]['#options'][$current]); if (!count($form['workflow'][$nombre]['#options'])) { drupal_set_title(t('El proyecto !proyecto se encuentra en estado !estado', array('!proyecto' => $node->title, '!estado' =>$actual))); } $options_worflow = $form['workflow'][$nombre]['#options']; $form['workflow'][$nombre]['#required'] = TRUE; //$wid = workflow_get_workflow_for_type('proyectos_operativos'); //$workflow = workflow_load($wid);i //$nombre = check_plain((t($form['#wf']->name))); //borrar la opcion del estado actual //unset($form['workflow'][$nombre]['#options'][$current]); /* print "
";
print_r($form['workflow']);
print "
"; */ if ($options_worflow) { foreach($options_worflow as $sid => $state) { if (variable_get('proyectos_operativos_state_d_' . $current . '_' . $sid, FALSE)) { $form['#proyectos_operativos_states_d'][$sid] = $sid; $form['workflow'][$nombre]['#options'][$sid] = t(variable_get('proyectos_operativos_state_tdevueltos', 'Devuelto a @state'), array('@state' => $form['workflow'][$nombre]['#options'][$sid])); } else { $form['workflow'][$nombre]['#options'][$sid] = t(variable_get('proyectos_operativos_state_tndevueltos', 'Enviado a @state'), array('@state' => $form['workflow'][$nombre]['#options'][$sid])); //$form['workflow'][$nombre]['#default_value'] = $sid; } } $form['workflow'][$nombre]['#default_value'] = $sid; } $form['#validate'][] = 'proyectos_operativos_cambia_workflow_description_validate'; $form['#submit'][] = 'proyectos_operativos_cambia_redirect_submit'; } } if ($form_id == 'proyectos_operativos_proyecto_indicadores_form') { $form['field_proyecto_meta_m']['#pre_render'][] = 'proyectos_operativos_agregaclase_indicadores_field_pre_render'; $form['field_proyecto_meta_f']['#pre_render'][] = 'proyectos_operativos_agregaclase_indicadores_field_pre_render'; } } function proyectos_operativos_cambia_workflow_description_validate($form, &$form_state) { $new_state = $form_state['values']['workflow']; if (isset($form['#proyectos_operativos_states_d'][$new_state]) && trim($form_state['values']['workflow_comment'] == '')) { form_set_error('workflow_comment', t('Debe ingresar el motivo por el que se regresa el proyecto')); } } /* * Implementation of proyectos_operativos_agregaclase_field_pre_render() * agregar clases y funciones javascript en el formulario */ function proyectos_operativos_agregaclase_field_pre_render($element) { $element[0]['value']['#attributes']['class'] .= ' empleos_generados'; $element[0]['value']['#attributes']['onchange'] .= ";sumabeneficiario('empleos_generados');"; return $element; } /* * Implementation of proyectos_operativos_agregaclase_indicadores_field_pre_render() * agregar clases y funciones javascript en el formulario */ function proyectos_operativos_agregaclase_indicadores_field_pre_render($element) { $element[0]['value']['#attributes']['class'] .= ' unidad_personas'; $element[0]['value']['#attributes']['onchange'] .= ";sumunidpersonas('unidad_personas');"; return $element; } /* * Implementation of proyectos_operativos_nodereference_field_pre_render() * Limitar al formulario a los entes que le es posible a los usuarios */ function proyectos_operativos_nodereference_field_pre_render($element) { global $user; $ente = usuario_tiene_ente($user->uid); if ($ente) { if (count($element['nid']['nid']['#options'])) { foreach($element['nid']['nid']['#options'] as $id => $entes){ if ($ente->nid != $id) { unset($element['nid']['nid']['#options'][$id]); } } } } return $element; } /* * Implementation of proyectos_operativos_nodereference2_field_pre_render() * Limitar al formulario a los entes que le es posible a los usuarios */ function proyectos_operativos_nodereference2_field_pre_render($element) { global $user; if (!((user_access('edit all planificador'))||(user_access('admin planificador')))) { $entes = obtener_mis_ente_planificador($user->uid); $options = array(); if (count($entes)) { foreach($entes as $ente){ unset($element['nid']['nid']['#options'][$ente['nid']]); } } } return $element; } /** * proyectos_operativos_cambia_redirect_submit. * retorna a consultar proyecto cuando se actualiza el estado del proyecto. */ function proyectos_operativos_cambia_redirect_submit($form, &$form_state) { // The entire node object was stashed in the form. $node = $form_state['values']['node']; $form_state['redirect'] = 'proyectosop/' . $node->nid; $choices = workflow_field_choices($form_state['values']['node']); drupal_set_message(t('Proyecto enviado a "#usuario".', array('#usuario' => $choices[$node->workflow]))); //drupal_set_message(t('Se modifico el estado del proyecto.')); } /** * Implementation of _proyectos_operativos_proyecto_regresa_ver(). * retorna a consultar proyecto. */ function _proyectos_operativos_proyecto_regresa_ver($node) { drupal_goto('proyectosop/' . $node->nid); } /** * Implementation of _proyectos_operativos_proyecto_editar(). * retorna a editar proyecto. */ function _proyectos_operativos_proyecto_editar($node) { drupal_goto('proyectosopedit/' . $node->nid); } /** * Implementation of _list_proyectos_operativos_proyecto_ae(). * listar acciones especificas de un proyecto. */ function _list_proyectos_operativos_proyecto_ae($node) { global $user; drupal_set_title('Consultar Acciones Específicas'); //add breadcrumb $breadcrumb = array(); $breadcrumb[] = l(t('Home'), ''); $breadcrumb[] = l(t('Proyectos Operativos'), 'proyectos_operativos'); if ($node->nid) { $breadcrumb[] = l(check_plain($node->title), 'proyectosop/' . $node->nid); } $breadcrumb[] = t('Acciones Específicas'); drupal_set_breadcrumb($breadcrumb); $current_time = time(); $tipo_plan = 'proyectos_operativos_formular'; $fecha = FALSE; $ente = usuario_tiene_ente($user->uid); $ente_planificador = 0; if ($ente && $ente->nid) { $ente_planificador = ente_planificador_leer_ente_planificadores($ente->nid); } $mi_fecha = ente_planificador_user_acceso_proceso($tipo_plan, $ente_planificador); if ($mi_fecha[1] + 86399 > $current_time && $mi_fecha[0] < $current_time) { $fecha = TRUE; } if (!fecha) { muestra_mensaje($tipo_plan, $ente_planificador); } if ($fecha && $ente->nid) { muestra_mensaje($tipo_plan, $ente_planificador, 0); } foreach($node->field_proyecto_accion_esp as $accion) { if ($accion['nid'] && $nid != $accion['nid']) { $accion_load = node_load($accion['nid']); if ($accion_load && $accion_load->type == 'accion_especifica') { $acciones_especificas[$accion_load->nid] = $accion_load; $ejecucion += $accion_load->field_accion_esp_ponderacion[0]['value']; } } elseif($nid = $accion['nid']) { $acciones_especificas[$ae->nid] = $ae; } } $output = ''; $header = array(); $cab = 6; $header[] = array('data' => t('Nro')); $header[] = array('data' => t('Nombre')); $header[] = array('data' => t('Fecha de inicio')); $header[] = array('data' => t('Fecha de Fin')); $header[] = array('data' => t('%')); $header[] = array('data' => t('Acción')); $rows = array(); $i = 1; if (count($acciones_especificas)) { $suma = 0; foreach($acciones_especificas as $accion) { $row = array(); $row[] = array('data' => $i,); $row[] = array('data' => $accion->titulo_asignado,); //Se cambia el formato de la fecha $fecha = explode(' ', $accion->field_accion_esp_fechai[0]['value']); $formato = explode('-', $fecha[0]); $row[] = array('data' => $formato[2] . '/' . $formato[1] . '/' . $formato[0],); //Se cambia el formato de la fecha $fecha = explode(' ', $accion->field_accion_esp_fechaf[0]['value']); $formato = explode('-', $fecha[0]); $row[] = array('data' => $formato[2] . '/' . $formato[1] . '/' . $formato[0],); $suma += $accion->field_accion_esp_ponderacion[0]['value']; $row[] = array('data' => $accion->field_accion_esp_ponderacion[0]['value'],); $links = array(); $links[] = array( 'data' => l(t('Consultar Acción específica'), 'proyectosop/' . $node->nid . '/ae/' . $accion->nid . '/ver'), 'class' => 'proyectos-operativos-acciones_especificas-pdf', ); if (_proyectos_operativos_edita_datos_ae_access($node)){ $links[] = array( 'data' => l(t('Eliminar Acción específica'), 'proyectosop/' . $node->nid . '/ae/' . $accion->nid . '/remove', array('query' => array('destination' => 'proyectosop/' . $node->nid . '/ae'))), 'class' => 'proyectos-operativos-acciones_especificas-pdf', ); } drupal_alter('proyecto_accion_obtiene_links', $links, $node, $accion, $fecha); $row[] = array('data' => theme('item_list', $links),); $rows[] = $row; $i++; } } if (count($rows)) { $output .= theme('table', $header, $rows); } else { $output .= t('No existen acciones especifícas para este proyecto'); } return $output; } /** * Implementation of _proyectos_operativos_proyecto_ver_workflow(). * cambiar estado del flujo de trabajo. */ function _proyectos_operativos_proyecto_ver_workflow($node){ global $user; //add breadcrumb $breadcrumb = array(); $breadcrumb[] = l(t('Home'), ''); $breadcrumb[] = l(t('Proyectos Operativos'), 'proyectos_operativos'); if ($node->nid) { $breadcrumb[] = l(check_plain($node->title), 'proyectosop/' . $node->nid); } $breadcrumb[] = t('Flujo de Trabajo'); drupal_set_breadcrumb($breadcrumb); $current_time = time(); $tipo_plan = 'proyectos_operativos_formular'; $fecha = FALSE; $ente = usuario_tiene_ente($user->uid); $ente_planificador = 0; if ($ente && $ente->nid) { $ente_planificador = ente_planificador_leer_ente_planificadores($ente->nid); } $mi_fecha = ente_planificador_user_acceso_proceso($tipo_plan, $ente_planificador); if ($mi_fecha[1] + 86399 > $current_time && $mi_fecha[0] < $current_time) { $fecha = TRUE; } if (!$fecha) { muestra_mensaje($tipo_plan, $ente_planificador); } if ($fecha && $ente->nid) { muestra_mensaje($tipo_plan, $ente_planificador, 0); } module_load_include('inc', 'workflow', 'workflow.pages'); $wid = workflow_get_workflow_for_type($node->type); $states_per_page = variable_get('workflow_states_per_page', 20); $result = db_query("SELECT sid, state FROM {workflow_states} WHERE status = 1 ORDER BY sid"); while ($data = db_fetch_object($result)) { $states[$data->sid] = check_plain(t($data->state)); } $deleted_states = array(); $result = db_query("SELECT sid, state FROM {workflow_states} WHERE status = 0 ORDER BY sid"); while ($data = db_fetch_object($result)) { $deleted_states[$data->sid] = check_plain(t($data->state)); } $current = workflow_node_current_state($node); // theme_workflow_current_state() must run state through check_plain(). drupal_set_title(t('El proyecto !proyecto se encuentra en el estado "!estado"', array('!proyecto' => $node->title, '!estado' =>$states[$current]))); $output = '

'. t('Current state: !state', array('!state' => theme('workflow_current_state', $states[$current]))) . "

\n"; unset($states[$current]); //$output .= '
' . t('Historico del Flujo de Trabajo') . ': 
'; $wid = workflow_get_workflow_for_type($node->type); $states_per_page = variable_get('workflow_states_per_page', 20); $result = db_query("SELECT sid, state FROM {workflow_states} WHERE status = 1 ORDER BY sid"); while ($data = db_fetch_object($result)) { $states[$data->sid] = check_plain(t($data->state)); } $deleted_states = array(); $result = db_query("SELECT sid, state FROM {workflow_states} WHERE status = 0 ORDER BY sid"); while ($data = db_fetch_object($result)) { $deleted_states[$data->sid] = check_plain(t($data->state)); } $current = workflow_node_current_state($node); // theme_workflow_current_state() must run state through check_plain(). //$output .= '

'. t('Current state: !state', array('!state' => theme('workflow_current_state', $states[$current]))) . "

\n"; $result = db_query("SELECT h.*, u.name FROM {workflow_node_history} h LEFT JOIN {users} u ON h.uid = u.uid WHERE nid = %d ORDER BY hid DESC", $node->nid); $rows = array(); while ($history = db_fetch_object($result)) { if ($history->sid == $current && !isset($deleted_states[$history->sid]) && !isset($current_themed)) { // Theme the current state differently so it stands out. $state_name = theme('workflow_current_state', $states[$history->sid]); // Make a note that we have themed the current state; other times in the history // of this node where the node was in this state do not need to be specially themed. $current_themed = TRUE; } elseif (isset($deleted_states[$history->sid])) { // The state has been deleted, but we include it in the history. $state_name = theme('workflow_deleted_state', $deleted_states[$history->sid]); $footer_needed = TRUE; } else { // Regular state. $state_name = check_plain(t($states[$history->sid])); } if (isset($deleted_states[$history->old_sid])) { $old_state_name = theme('workflow_deleted_state', $deleted_states[$history->old_sid]); $footer_needed = TRUE; } else { $old_state_name = check_plain(t($states[$history->old_sid])); } $rows[] = theme('workflow_history_table_row', $history, $old_state_name, $state_name); } $output .= theme('workflow_history_table', $rows, !empty($footer_needed)); //print_r($states); if (count($states)) { $output .= drupal_get_form('workflow_tab_form', $node, $wid, $states, $current); } else { drupal_set_title(t('El proyecto !proyecto se encuentra en el estado !estado', array('!proyecto' => $node->title, '!estado' =>$states[$current]))); } //echo "HOLA"; //$output .= drupal_get_form('workflow_tab_form', $node, $wid, $states, $current); return $output; } /** * Implementation of proyectos_operativos_proyecto_genera_campos_form(). * Formulario con todos los campos disponibles en el proyecto. */ function proyectos_operativos_proyecto_genera_campos_form(&$form_state, $node = 0) { $form = array(); $form['#node'] = $node; $node_type = content_types('proyectos_operativos'); $fields = $node_type['fields']; //$campos = array(); //DATOS BASICOS //Datos Básicos de Identificación del Proyecto $title_combos = array(); $title_combos['db']['title'] = t('Datos Básicos'); $arreglo['db']['identificacion'] = array(); $arreglo['db']['identificacion'] = array( 'title' => 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'); //Gerente del Proyecto $gerentes = variable_get('proyectos_operativos_muestra_gerentes', TRUE); $arreglo['db']['gerentep'] = array(); $arreglo['db']['gerentep'] = array( 'field_proyecto_ente' => 'field_proyecto_ente', ); if ($gerentes) { $arreglo['db']['gerentep'] = array( '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'); } //Área Estrategica $pndes = variable_get('proyectos_operativos_muestra_pndes', TRUE); $mcti = variable_get('proyectos_operativos_muestra_mcti', TRUE); $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'); //DATOS GENERALES $title_combos['dg']['title'] = t('Datos Generales'); //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'); //Talento Humano $arreglo['dg']['talentoh'] = array(); if (variable_get('proyectos_operativos_muestra_talento', TRUE)) { $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'); //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'); //Instituciones $arreglo['dg']['relacion'] = array(); $arreglo['dg']['relacion'] = array( 'field_proyecto_relacion' => 'field_proyecto_relacion', ); $title_combos['dg']['relacion']['title'] = t('Instituciones'); //Empleos Generados $arreglo['dg']['empleosg'] = array(); 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'; } } $title_combos['dg']['empleosg']['title'] = t('Empleos Generados'); //Objetivos del Proyecto $arreglo['dg']['objetivosp'] = array(); $arreglo['dg']['objetivosp'] = array( 'field_proyecto_og' => 'field_proyecto_og', 'field_proyecto_oe' => 'field_proyecto_oe', ); //INDICADORES DEL PROYECTO //Enunciado del Problema $title_combos['ip']['title'] = t('Indicadores del Proyecto'); $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'); //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'); //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'); //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'); //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_tiempoi' => 'field_proyecto_tiempoi', ); } $title_combos['ip']['situaciono']['title'] = t('Situación Objetivo'); //Indicador del resultado del Proyecto $arreglo['ip']['resultadop'] = array(); $arreglo['ip']['resultadop'] = array( 'field_proyecto_descripcion_bien' => 'field_proyecto_descripcion_bien', 'field_proyecto_so_cuantificacion' => 'field_proyecto_so_cuantificacion', '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'); if (!isset($_SESSION['proyectos_operativos_mostrar_campos'][$form['#node']->nid]) || !count($_SESSION['proyectos_operativos_mostrar_campos'][$form['#node']->nid])) { $campos['todos-los-campos'] = t('Mostrar todos los campos'); //$campos['title'] = t('Nombre del Proyecto'); if (count($fields)) { foreach($fields as $id => $field) { if (!$field['display_settings']['full']['exclude']) { //DATOS BASICOS DEL PROYECTO //Datos Básicos de Identificación del Proyecto if (array_key_exists($id, $arreglo['db']['identificacion'])) { $arreglo['db']['identificacion'][$id] = $field['widget']['label']; } //Gerente del Proyecto elseif(array_key_exists($id, $arreglo['db']['gerentep'])) { $arreglo['db']['gerentep'][$id] = $field['widget']['label']; } //Área Estrategica elseif(array_key_exists($id, $arreglo['db']['areae'])) { $arreglo['db']['areae'][$id] = $field['widget']['label']; } //DATOS GENERALES //Clasificación Sectorial elseif(array_key_exists($id, $arreglo['dg']['sector'])) { $arreglo['dg']['sector'][$id] = $field['widget']['label']; } //Talento Humano elseif(array_key_exists($id, $arreglo['dg']['talentoh'])) { $arreglo['dg']['talentoh'][$id] = $field['widget']['label']; } //Capacidades elseif(array_key_exists($id, $arreglo['dg']['capacidades'])) { $arreglo['dg']['capacidades'][$id] = $field['widget']['label']; } //Instituciones elseif(array_key_exists($id, $arreglo['dg']['relacion'])) { $arreglo['dg']['relacion'][$id] = $field['widget']['label']; } //Empleos Generados elseif(array_key_exists($id, $arreglo['dg']['empleosg'])) { $arreglo['dg']['empleosg'][$id] = $field['widget']['label']; } //Objetivos del Proyecto elseif(array_key_exists($id, $arreglo['dg']['objetivosp'])) { $arreglo['dg']['objetivosp'][$id] = $field['widget']['label']; } //INDICADORES DEL PROYECTO //Enunciado del Problema elseif(array_key_exists($id, $arreglo['ip']['enunciadop'])) { $arreglo['ip']['enunciadop'][$id] = $field['widget']['label']; } //Justificación del Proyecto elseif(array_key_exists($id, $arreglo['ip']['justificacion'])) { $arreglo['ip']['justificacion'][$id] = $field['widget']['label']; } //Alcance del Proyecto elseif(array_key_exists($id, $arreglo['ip']['alcance'])) { $arreglo['ip']['alcance'][$id] = $field['widget']['label']; } //Situación Actual del Proyecto elseif(array_key_exists($id, $arreglo['ip']['situaciona'])) { $arreglo['ip']['situaciona'][$id] = $field['widget']['label']; } //Situación Objetivo elseif(array_key_exists($id, $arreglo['ip']['situaciono'])) { $arreglo['ip']['situaciono'][$id] = $field['widget']['label']; } //Indicador del resultado del Proyecto elseif(array_key_exists($id, $arreglo['ip']['resultadop'])) { $arreglo['ip']['resultadop'][$id] = $field['widget']['label']; } //DATOS BASICOS DEL PROYECTO //Datos Básicos de Identificación del Proyecto elseif (variable_get('proyectos_operativos_ac_d_' . $id, FALSE)) { $arreglo['db']['identificacion'][$id] = $field['widget']['label']; } //Gerente del Proyecto elseif (variable_get('proyectos_operativos_ac_di_' . $id, FALSE)) { $arreglo['db']['gerentep'][$id] = $field['widget']['label']; } //Área Estrategica elseif (variable_get('proyectos_operativos_ac_p_' . $id, FALSE)) { $arreglo['db']['areae'][$id] = $field['widget']['label']; } //DATOS GENERALES //Clasificación Sectorial elseif (variable_get('proyectos_operativos_dg_s_' . $id, FALSE)) { $arreglo['dg']['sector'][$id] = $field['widget']['label']; } //Instituciones elseif (variable_get('proyectos_operativos_dg_r_' . $id, FALSE)) { $arreglo['dg']['relacion'][$id] = $field['widget']['label']; } //Objetivos del Proyecto elseif (variable_get('proyectos_operativos_dg_o_' . $id, FALSE)) { $arreglo['dg']['objetivosp'][$id] = $field['widget']['label']; } //Enunciado del Problema elseif (variable_get('proyectos_operativos_ip_in_' . $id, FALSE)) { $arreglo['ip']['enunciadop'][$id] = $field['widget']['label']; } //Alcance del Proyecto elseif (variable_get('proyectos_operativos_ip_al_' . $id, FALSE)) { $arreglo['ip']['alcance'][$id] = $field['widget']['label']; } //Justificación del Proyecto elseif (variable_get('proyectos_operativos_ip_ju_' . $id, FALSE)) { $arreglo['ip']['justificacion'][$id] = $field['widget']['label']; } //Situación Actual del Proyecto elseif (variable_get('proyectos_operativos_ip_sa_' . $id, FALSE)) { $arreglo['ip']['situaciona'][$id] = $field['widget']['label']; } //Situación Objetivo elseif (variable_get('proyectos_operativos_ip_so_' . $id, FALSE)) { $arreglo['ip']['situaciono'][$id] = $field['widget']['label']; } //Indicador del resultado del Proyecto elseif (variable_get('proyectos_operativos_ip_re_' . $id, FALSE)) { $arreglo['ip']['resultadop'][$id] = $field['widget']['label']; } //$campos[$id] = $field['widget']['label']; } //DATOS BASICOS DEL PROYECTO //Datos Básicos de Identificación del Proyecto elseif (array_key_exists($id, $arreglo['db']['identificacion'])) { unset($arreglo['db']['identificacion'][$id]); } //Gerente del Proyecto elseif (array_key_exists($id, $arreglo['db']['gerentep'])) { unset($arreglo['db']['gerentep'][$id]); } //Área Estrategica elseif (array_key_exists($id, $arreglo['db']['areae'])) { unset($arreglo['db']['areae'][$id]); } //DATOS GENERALES //Clasificación Sectorial elseif (array_key_exists($id, $arreglo['dg']['sector'])) { unset($arreglo['dg']['sector'][$id]); } //Talento Humano elseif (array_key_exists($id, $arreglo['dg']['talentoh'])) { unset($arreglo['dg']['talentoh'][$id]); } //Capacidades elseif (array_key_exists($id, $arreglo['dg']['capacidades'])) { unset($arreglo['dg']['capacidades'][$id]); } //Instituciones elseif (array_key_exists($id, $arreglo['dg']['relacion'])) { unset($arreglo['dg']['relacion'][$id]); } //Empleos Generados elseif (array_key_exists($id, $arreglo['dg']['empleosg'])) { unset($arreglo['dg']['empleosg'][$id]); } //Objetivos del Proyecto elseif (array_key_exists($id, $arreglo['dg']['objetivosp'])) { unset($arreglo['dg']['objetivosp'][$id]); } //INDICADORES DEL PROYECTO //Enunciado del Problema elseif (array_key_exists($id, $arreglo['ip']['enunciadop'])) { unset($arreglo['ip']['enunciadop'][$id]); } //Justificación del Proyecto elseif (array_key_exists($id, $arreglo['ip']['justificacion'])) { unset($arreglo['ip']['justificacion'][$id]); } //Alcance del Proyecto elseif (array_key_exists($id, $arreglo['ip']['alcance'])) { unset($arreglo['ip']['alcance'][$id]); } //Situación Actual del Proyecto elseif (array_key_exists($id, $arreglo['ip']['situaciona'])) { unset($arreglo['ip']['situaciona'][$id]); } //Situación Objetivo elseif (array_key_exists($id, $arreglo['ip']['situaciono'])) { unset($arreglo['ip']['situaciono'][$id]); } //Indicador del resultado del Proyecto elseif (array_key_exists($id, $arreglo['ip']['resultadop'])) { unset($arreglo['ip']['resultadop'][$id]); } } } //$campos['proyectos_operativos_flujo'] = t('Flujo de Trabajo'); //DATOS BASICOS DEL PROYECTO $identificacion = count($arreglo['db']['identificacion']); $gerentep = count($arreglo['db']['gerentep']); $areae = count($arreglo['db']['areae']); if ($identificacion || $gerentep || $areae) { $form['db'] = array( '#type' => 'fieldset', '#title' => t('Datos Básicos'), ); } if ($identificacion) { $form['db']['identificacion'] = array( '#type' => 'checkboxes', '#options' => $arreglo['db']['identificacion'], '#default_value' => array(), '#title' => t('Datos Básicos de Identificación del Proyecto'), '#multiple' => TRUE, ); } if ($gerentep) { $form['db']['gerentep'] = array( '#type' => 'checkboxes', '#options' => $arreglo['db']['gerentep'], '#default_value' => array(), '#title' => t('Gerente del Proyecto'), '#multiple' => TRUE, ); } if ($areae) { $form['db']['areae'] = array( '#type' => 'checkboxes', '#options' => $arreglo['db']['areae'], '#default_value' => array(), '#title' => t('Área Estratégica'), '#multiple' => TRUE, ); } //DATOS GENERALES DEL PROYECTO $sector = count($arreglo['dg']['sector']); $talentoh = count($arreglo['dg']['talentoh']); $capacidades = count($arreglo['dg']['capacidades']); $relacion = count($arreglo['dg']['relacion']); $objetivosp = count($arreglo['dg']['objetivosp']); if ($sector || $talentoh || $capacidades || $relacion || $objetivosp) { $form['dg'] = array( '#type' => 'fieldset', '#title' => t('Datos Generales'), ); } //Clasificación Sectorial if ($sector) { $form['dg']['sector'] = array( '#type' => 'checkboxes', '#options' => $arreglo['dg']['sector'], '#default_value' => array(), '#title' => t('Clasificación Sectorial'), '#multiple' => TRUE, ); } //Talento Humano if ($talentoh) { $form['dg']['talentoh'] = array( '#type' => 'checkboxes', '#options' => $arreglo['dg']['talentoh'], '#default_value' => array(), '#title' => t('Talento Humano'), '#multiple' => TRUE, ); } //Capacidades if ($capacidades) { $form['dg']['capacidades'] = array( '#type' => 'checkboxes', '#options' => $arreglo['dg']['capacidades'], '#default_value' => array(), '#title' => t('Capacidades'), '#multiple' => TRUE, ); } //Instituciones if ($relacion) { $form['dg']['relacion'] = array( '#type' => 'checkboxes', '#options' => $arreglo['dg']['relacion'], '#default_value' => array(), '#title' => t('Instituciones'), '#multiple' => TRUE, ); } //Objetivos del Proyecto if ($objetivosp) { $form['dg']['objetivosp'] = array( '#type' => 'checkboxes', '#options' => $arreglo['dg']['objetivosp'], '#default_value' => array(), '#title' => t('Objetivos del Proyecto'), '#multiple' => TRUE, ); } //INDICADORES DEL PROYECTO $enunciadop = count($arreglo['ip']['enunciadop']); $justificacion = count($arreglo['ip']['justificacion']); $alcance = count($arreglo['ip']['alcance']); $situaciona = count($arreglo['ip']['situaciona']); $situaciono = count($arreglo['ip']['situaciono']); $resultadop = count($arreglo['ip']['resultadop']); if ($enunciadop || $justificacion || $alcance || $situaciona || $situaciono || $resultadop) { $form['ip'] = array( '#type' => 'fieldset', '#title' => t('Indicadores del Proyecto'), ); } //Enunciado del Problema if ($enunciadop) { $form['ip']['enunciadop'] = array( '#type' => 'checkboxes', '#options' => $arreglo['ip']['enunciadop'], '#default_value' => array(), '#title' => t('Enunciado del Problema'), '#multiple' => TRUE, ); } //Justificación del Proyecto if ($justificacion) { $form['ip']['justificacion'] = array( '#type' => 'checkboxes', '#options' => $arreglo['ip']['justificacion'], '#default_value' => array(), '#title' => t('Justificación del Proyecto'), '#multiple' => TRUE, ); } //Alcance del Proyecto if ($alcance) { $form['ip']['alcance'] = array( '#type' => 'checkboxes', '#options' => $arreglo['ip']['alcance'], '#default_value' => array(), '#title' => t('Alcance del Proyecto'), '#multiple' => TRUE, ); } //Situación Actual del Proyecto if ($situaciona) { $form['ip']['situaciona'] = array( '#type' => 'checkboxes', '#options' => $arreglo['ip']['situaciona'], '#default_value' => array(), '#title' => t('Situación Actual'), '#multiple' => TRUE, ); } //Situación Objetivo if ($situaciono) { $form['ip']['situaciono'] = array( '#type' => 'checkboxes', '#options' => $arreglo['ip']['situaciono'], '#default_value' => array(), '#title' => t('Situación Objetivo'), '#multiple' => TRUE, ); } //Indicador del resultado del Proyecto if ($resultadop) { $form['ip']['resultadop'] = array( '#type' => 'checkboxes', '#options' => $arreglo['ip']['resultadop'], '#default_value' => array(), '#title' => t('Indicador del resultado del Proyecto'), '#multiple' => TRUE, ); } //Acciones especificas $form['ae'] = array( '#type' => 'fieldset', '#title' => t('Acciones Específicas'), ); $arreglo['ae']['field_proyecto_accion_esp'] = t('Acciones Específicas'); //Indicador del resultado del Proyecto $form['ae']['accionesesp'] = array( '#type' => 'checkboxes', '#options' => $arreglo['ae'], '#default_value' => array(), '#title' => t('Acciones Específicas'), '#multiple' => TRUE, '#weight' => 99, ); $title_combos['accionesesp']['title'] = t('Acciones Específicas'); //otros $form['otros'] = array( '#type' => 'fieldset', '#title' => t('Otros'), ); $arreglo['otros']['proyectos_operativos_flujo'] = t('Historico del Flujo de Trabajo'); //Indicador del resultado del Proyecto $form['otros']['fl'] = array( '#type' => 'checkboxes', '#options' => $arreglo['otros'], '#default_value' => array(), '#title' => t('Historico del Flujo de Trabajo'), '#multiple' => TRUE, '#weight' => 99, ); $title_combos['fl']['title'] = t('Historico del Flujo de Trabajo'); $form['#title_combos'] = $title_combos; //$campos['proyectos_operativos_flujo'] = t('Flujo de Trabajo'); /* $form['proyectos_operativos_campos'] = array( '#type' => 'checkboxes', '#options' => $campos, '#default_value' => array(), '#title' => t('Campos a mostrar'), '#multiple' => TRUE, ); */ $form['buttons'] = array( '#prefix' => '
', '#suffix' => '
', '#weight' => 100, ); $form['buttons']['registrar'] = array( '#type' => 'submit', '#default_value' => t('Mostrar'), '#weight' => 100, ); $form['buttons']['cancelar'] = array( '#type' => 'submit', '#default_value' => t('Cancelar'), '#weight' => 101, '#attributes' => array('onClick' => 'window.location="' . base_path() .$_GET['q'] . '"; return false;'), '#skip_validation' => TRUE, ); } else { $form['buttons']['cancelar'] = array( '#type' => 'submit', '#default_value' => t('Volver a las opciones de campo'), '#weight' => 101, '#skip_validation' => TRUE, ); } return $form; } /** * Implementation of proyectos_operativos_proyecto_genera_campos_form_submit(). * cambia los valores del filtro de campos. */ function proyectos_operativos_proyecto_genera_campos_form_submit($form, &$form_state) { $op = isset($form_state['values']['op']) ? $form_state['values']['op'] : ''; if ($op == t('Volver a las opciones de campo')) { unset($_SESSION['proyectos_operativos_mostrar_campos'][$form['#node']->nid]); $form_state['redirect'] = 'proyectosop/' . $form['#node']->nid; return; } $_SESSION['proyectos_operativos_mostrar_campos'][$form['#node']->nid]['#values'] = $form_state['values']; $_SESSION['proyectos_operativos_mostrar_campos'][$form['#node']->nid]['#title_combos'] = $form['#title_combos']; } /** * Implementation of _proyectos_operativos_proyecto_campos(). * Muestra los campos de un proyecto. */ function _proyectos_operativos_proyecto_campos($node) { global $user; drupal_set_title(t('Consultar Datos del Proyecto')); //add breadcrumb $breadcrumb = array(); $breadcrumb[] = l(t('Home'), ''); $breadcrumb[] = l(t('Proyectos Operativos'), 'proyectos_operativos'); if ($node->nid) { $breadcrumb[] = l(check_plain($node->title), 'proyectosop/' . $node->nid); } $breadcrumb[] = t('Datos del Proyecto'); drupal_set_breadcrumb($breadcrumb); $current_time = time(); $tipo_plan = 'proyectos_operativos_formular'; $fecha = FALSE; $ente = usuario_tiene_ente($user->uid); $ente_planificador = 0; if ($ente && $ente->nid) { $ente_planificador = ente_planificador_leer_ente_planificadores($ente->nid); } $mi_fecha = ente_planificador_user_acceso_proceso($tipo_plan, $ente_planificador); if ($mi_fecha[1] + 86399 > $current_time && $mi_fecha[0] < $current_time) { $fecha = TRUE; } if (!$fecha) { muestra_mensaje($tipo_plan, $ente_planificador); } if ($fecha && $ente->nid) { muestra_mensaje($tipo_plan, $ente_planificador, 0); } $output = drupal_get_form('proyectos_operativos_proyecto_genera_campos_form', $node); $views = array(); if (isset($_SESSION['proyectos_operativos_mostrar_campos'][$node->nid]) && count($_SESSION['proyectos_operativos_mostrar_campos'][$node->nid])) { $content = node_build_content($node); $datos = $_SESSION['proyectos_operativos_mostrar_campos'][$node->nid]['#values']; $title_combos = $_SESSION['proyectos_operativos_mostrar_campos'][$node->nid]['#title_combos']; $valores = array(); foreach($_SESSION['proyectos_operativos_mostrar_campos'][$node->nid]['#values'] as $id => $campos){ if (is_array($campos) && count($campos)) { foreach($campos as $campo) { if ($campo) { $valores[$id][] = $campo; } } } else { } } foreach($_SESSION['proyectos_operativos_mostrar_campos'][$node->nid]['#title_combos'] as $id => $campos){ if (isset($valores[$id])) { $views[$id] = !isset($views[$id]) ? '
' . $campos['title'] . 'content[$campo])) { $views[$id] .= drupal_render($content->content[$campo]); } elseif($campo == 'title') { $views[$id] .= '

' . $node->titulo_asignado . '

'; } } $views[$id] .= '
'; } else { foreach($campos as $id_campo => $campo) { if (isset($valores[$id_campo])) { $muestra = TRUE; $views[$id] = !isset($views[$id]) ? '
' . $campos['title'] . 'content[$id_field])) { $views[$id] .= drupal_render($content->content[$id_field]); } elseif($id_field == 'title') { $views[$id] .= '

' . $node->titulo_asignado . '

'; } } $views[$id] .= '
'; } } if (isset($views[$id])) { $views[$id] .= ''; } } } //mostrar por defecto el formulario de busqueda. unset($_SESSION['proyectos_operativos_mostrar_campos'][$node->nid]); } if (count($views)) { $output .= implode('', $views); } elseif (isset($_SESSION['proyectos_operativos_mostrar_campos'][$node->nid])) { $output .= '

' . t('No ha seleccionado ningún campo que mostrar') . '

'; } return $output; } /** * Implementation of _proyectos_operativos_reformula_obtiene_estados(). * Obtiene los estados del tipo de contenido proyecto. */ function _proyectos_operativos_reformula_obtiene_estados() { static $lista_estados; if (module_exists('workflow')) { if (!isset($lista_estados)) { $lista_estados = array(); $estados = array(); $wid = workflow_get_workflow_for_type('proyectos_operativos'); if ($wid){ $estados = workflow_get_states($wid); } $lista_estados = array( 'wid' => $wid, 'states' => $estados, ); } } else { $lista_estados = array(); } return $lista_estados; } /** * Implementation of proyectos_operativos_search_ac_display(). * Muestra la lista de proyectos disponibles. */ function proyectos_operativos_search_ac_display() { global $user; $current_time = time(); $tipo_plan = 'proyectos_operativos_formular'; $fecha = FALSE; $ente_planificador = 0; $ente = usuario_tiene_ente($user->uid); if ($ente && $ente->nid) { $ente_planificador = ente_planificador_leer_ente_planificadores($ente->nid); } $mi_fecha = ente_planificador_user_acceso_proceso($tipo_plan, $ente_planificador); if ($mi_fecha[1] + 86399 > $current_time && $mi_fecha[0] < $current_time) { $fecha = TRUE; } if (!$fecha) { muestra_mensaje($tipo_plan, $ente_planificador); } if ($fecha && $ente->nid) { muestra_mensaje($tipo_plan, $ente_planificador, 0); } if ($fecha && (is_numeric($ente_planificador) && user_access('admin all planificador'))) { //usuarios administradores muestra_mensaje($tipo_plan, $ente_planificador, 0); } $rol_macro = variable_get('ActorPlanificadorMacro', 0); if ($fecha && in_array($rol_macro, array_keys($user->roles))) { //es usuario control muestra_mensaje($tipo_plan, $ente_planificador, 0); } $states = array(); $first_state = 0; if (module_exists('workflow')) { $states = _proyectos_operativos_reformula_obtiene_estados(); if ($states['wid']) { $first_state = _workflow_creation_state($states['wid']); } } $output = drupal_get_form('proyectos_operativos_search_ac_form'); $inputs = array(); $sql = ''; if (!user_access('admin planificador') && $user->entes) { $inputs[] = $user->entes; $inputs[] = variable_get('proyectos_operativos_state_naprobado', NULL); $sql .= "SELECT ac.nid, ac.year, w.sid, n.created, n.title as nombre, u.name, n.uid, e.title AS ente, ctpo.field_proyecto_titulo_value FROM {proyectos_operativos} AS ac INNER JOIN {node} AS n ON n.nid = ac.nid INNER JOIN {users} AS u ON u.uid = n.uid INNER JOIN {node} as e ON e.nid = ac.ente INNER JOIN {workflow_node} AS w ON w.nid = ac.nid LEFT JOIN {content_type_proyectos_operativos} AS ctpo ON ctpo.nid = n.nid AND ctpo.vid = n.vid WHERE ac.ente = %d AND w.sid <> %d"; // $sql .= "SELECT ac.nid, ac.year, w.sid, n.created, n.title as nombre, u.name, n.uid, e.title AS ente FROM {proyectos_operativos} AS ac INNER JOIN {node} AS n ON n.nid = ac.nid INNER JOIN {users} AS u ON u.uid = n.uid INNER JOIN {node} as e ON e.nid = ac.ente INNER JOIN {workflow_node} AS w ON w.nid = ac.nid WHERE ac.ente = %d AND w.sid <> %d"; } elseif (user_access('admin planificador')) { $inputs[] = variable_get('proyectos_operativos_state_naprobado', NULL); $sql .= "SELECT ac.nid, ac.year, ac.ente, w.sid, n.created, n.title as nombre, u.name, n.uid, e.title AS enten, ctpo.field_proyecto_titulo_value FROM {proyectos_operativos} AS ac INNER JOIN {node} AS n ON n.nid = ac.nid INNER JOIN {users} AS u ON u.uid = n.uid INNER JOIN {node} as e ON e.nid = ac.ente INNER JOIN {workflow_node} AS w ON w.nid = ac.nid LEFT JOIN {content_type_proyectos_operativos} AS ctpo ON ctpo.nid = n.nid AND ctpo.vid = n.vid WHERE w.sid <> %d"; // $sql .= "SELECT ac.nid, ac.year, ac.ente, w.sid, n.created, n.title as nombre, u.name, n.uid, e.title AS enten FROM {proyectos_operativos} AS ac INNER JOIN {node} AS n ON n.nid = ac.nid INNER JOIN {users} AS u ON u.uid = n.uid INNER JOIN {node} as e ON e.nid = ac.ente INNER JOIN {workflow_node} AS w ON w.nid = ac.nid WHERE w.sid <> %d"; $proyectos_operativos_search_ac_ente = isset($_SESSION['proyectos_operativos']) && isset($_SESSION['proyectos_operativos']['ente']) ? $_SESSION['proyectos_operativos']['ente'] : 0; if ($proyectos_operativos_search_ac_ente) { $inputs[] = $proyectos_operativos_search_ac_ente; $sql .= ' AND ac.ente = %d'; } } $proyectos_operativos_search_ac_anho_creacion = isset($_SESSION['proyectos_operativos']) && isset($_SESSION['proyectos_operativos']['anho']) ? $_SESSION['proyectos_operativos']['anho'] : 0; if ($proyectos_operativos_search_ac_anho_creacion) { $sql .= ' AND ac.year = %d'; $inputs[] = $proyectos_operativos_search_ac_anho_creacion; } $sql .= ' ORDER BY ac.year DESC, ac.ente'; $header = array(); $cab = 6; if (user_access('admin planificador')) { $header[] = array('data' => t('Ente.')); $cab++; } $header[] = array('data' => t('Proyecto')); $header[] = array('data' => t('Año')); $header[] = array('data' => t('Estado')); $header[] = array('data' => t('Fecha de creación')); $header[] = array('data' => t('Autor')); $header[] = array('data' => t('Acción')); $result = db_query($sql, $inputs); $rows = array(); while($ac = db_fetch_object($result)) { $row = array(); if (user_access('admin planificador')) { $row[] = array('data' => l($ac->enten, 'node/' . $ac->ente),); } $nombre_proyecto = $ac->field_proyecto_titulo_value ? $ac->field_proyecto_titulo_value : $ac->nombre; $row[] = array('data' => $nombre_proyecto,); // $row[] = array('data' => $ac->nombre,); $row[] = array('data' => $ac->year,); $estad0 = $ac->sid == $first_state ? t('Ingresado') : $states['states'][$ac->sid]; $row[] = array('data' => $estad0,); $row[] = array('data' => format_date($ac->created),); $row[] = array('data' => l($ac->name, 'user/' . $ac->uid),); $links = array(); drupal_alter('proyecto_obtiene_links', $links, $ac, $fecha); $row[] = array('data' => theme('item_list', $links),); $rows[] = $row; } if (!count($rows)) { $row[] = array('data' => t('No existen Proyectos Operativos'), 'colspan' => $cab); $rows[] = $row; } $output .= theme('table', $header, $rows); if ($fecha) { $links = array(); drupal_alter('proyecto_obtiene_agregar_links', $links); $output .= '
' . theme('item_list', $links) . '
'; } return $output; } /* * Implementation of hook_proyecto_obtiene_agregar_links_alter() */ function proyectos_operativos_proyecto_obtiene_agregar_links_alter(&$links) { global $user; $ente_planificador = 0; $ente = usuario_tiene_ente($user->uid); if ($ente && $ente->nid) { $ente_planificador = ente_planificador_leer_ente_planificadores($ente->nid); } if ($ente_planificador && _proyectos_operativos_edita_datos_agregar()) { $links['proyecto_agregar'] = array( 'data' => l(t('Agregar proyectos operativos'), 'agregarproyectosop'), 'class' => 'proyectos-operativos-agregar', ); } if (user_access('admin planificador')) { $links['proyecto_agregar_ente'] = array( 'data' => l(t('Agregar proyectos operativos por ente '), 'agregar_proyectoopente'), 'class' => 'proyectos-operativos-agregar-ente', ); } } /** * Implementation of proyectos_operativos_remove_ac_form() * Eliminar accion especifica */ function proyectos_operativos_remove_proyectosop_form($form_state, $node = 0) { $form = array(); //add breadcrumb $breadcrumb = array(); $breadcrumb[] = l(t('Home'), ''); $breadcrumb[] = l(t('Proyectos Operativos'), 'proyectos_operativos'); $breadcrumb[] = l(check_plain($node->title), 'proyectosop/' . $node->nid); $breadcrumb[] = t('Eliminar Proyecto'); drupal_set_breadcrumb($breadcrumb); $form['#node'] = $node; $message = t('Esta seguro de eliminar el proyecto operativo @nombre?', array('@nombre' => $form['#node']->titulo_asignado)); $caption = '

'. t('This action cannot be undone.') .'

'; $return_path = $_REQUEST['destination'] ? $_REQUEST['destination'] : 'proyectos_operativos'; return confirm_form($form, $message, $return_path, $caption, t('Eliminar')); } /** * Implementation of proyectos_operativos_remove_ac_form_submit(). * Process funcion delete accion especifica. */ function proyectos_operativos_remove_proyectosop_form_submit($form, &$form_state) { global $user; $titulo = $form['#node']->titulo_asignado; $nid = $form['#node']->nid; node_delete($form['#node']->nid); $texto = t('Se elimino el proyecto @nombre', array('@nombre' => $form['#node']->titulo_asignado)); drupal_set_message($texto); if (!$_REQUEST['destination']) { // add redirect $form_state['redirect'] = 'proyectos_operativos'; } } /* * Implementation of hook_acciones_obtiene_links_alter() */ function proyectos_operativos_proyecto_obtiene_links_alter(&$links, $proyecto, $acceso = FALSE) { $node_accion = node_load($proyecto->nid); if(node_access('view', $node_accion)){ $links['proyecto_view'] = array( 'data' => l(t('Consultar'), 'proyectosop/' . $proyecto->nid), 'class' => 'proyectos-operativos-ver', ); } if(_proyectos_operativos_access_editar($node_accion)){ $links['proyecto_update'] = array( 'data' => l(t('Modificar'), 'proyectosop/' . $proyecto->nid . '/edit'), 'class' => 'proyectos-operativos-modificar', ); if (_proyectos_operativos_edita_datos_ae_access($node_accion)) { $links['proyecto_ae_update'] = array( 'data' => l(t('Modificar las Acciones Específicas'), 'proyectosopedit/' . $proyecto->nid . '/ae'), //'data' => l(t('Agregar Acción Específica'), 'proyectosopedit/' . $proyecto->nid . '/ae'), 'class' => 'proyectos-operativos-ae-modificar', ); } $links['proyecto_remove'] = array( 'data' => l(t('Eliminar'), 'proyectosop/' . $proyecto->nid . '/remove'), 'class' => 'proyectos-operativos-eliminar', ); } if (_proyectos_operativos_edita_datos_wk_access($node_accion)) { $links['proyecto_state'] = array( 'data' => l(t('Revisión del Proyecto'), 'proyectosop/' . $proyecto->nid . '/workflow'), 'class' => 'proyectos-operativos-estado', ); } if (_proyectos_operativos_ver_datos_wk_access($node_accion)) { $links['proyecto_ae_view'] = array( 'data' => l(t('Consultar las Acciones Especificas'), 'proyectosop/' . $proyecto->nid . '/ae'), 'class' => 'proyectos-operativos-ae', ); $links['proyecto_financial_view'] = array( 'data' => l(t('Consultar Datos Financieros'), 'proyectosop/' . $proyecto->nid . '/finacieros'), 'class' => 'proyectos-operativos-finacieros', ); } } /** * Implementation of proyectos_operativos_search_ac_form(). * Formulario de busqueda de proyecto. */ function proyectos_operativos_search_ac_form($form_state) { $form = array(); if (user_access('admin planificador')) { $entes = array(); $result = db_query('SELECT e.nid, n.title FROM {ente_planificador} AS e INNER JOIN {node} AS n ON n.nid = e.nid WHERE n.status = 1'); $entes[0] = t('Todos'); while($ente = db_fetch_object($result)) { $entes[$ente->nid] = $ente->title; } $proyectos_operativos_search_ac_ente = isset($_SESSION['proyectos_operativos']) && isset($_SESSION['proyectos_operativos']['ente']) ? $_SESSION['proyectos_operativos']['ente'] : 0; $form['proyectos_operativos_search_ac_ente'] = array( '#title' => t('Ente Planificador'), '#type' => 'select', '#default_value' => $proyectos_operativos_search_ac_ente, '#options' => $entes, ); } $years = array(); $years[0] = t('Todos'); $current_year = date("Y"); for($i = $current_year - 10; $i <= $current_year; $i++) { $years[$i] = $i; } $proyectos_operativos_search_ac_anho_creacion = isset($_SESSION['proyectos_operativos']) && isset($_SESSION['proyectos_operativos']['anho']) ? $_SESSION['proyectos_operativos']['anho'] : 0; $form['proyectos_operativos_search_ac_anho_creacion'] = array( '#title' => t('Proyectos Operativos para el año'), '#type' => 'select', '#default_value' => $proyectos_operativos_search_ac_anho_creacion, '#options' => $years, ); $form['buttons'] = array( '#prefix' => '
', '#suffix' => '
', ); $form['buttons']['submit'] = array( '#type' => 'submit', '#value' => t('Buscar'), ); return $form; } /** * Implementation of proyectos_operativos_search_ac_form_submit(). * cambia el filtro de busqueda de proyectos. */ function proyectos_operativos_search_ac_form_submit($form, &$form_state) { $_SESSION['proyectos_operativos'] = array(); if (user_access('admin planificador')) { $_SESSION['proyectos_operativos']['ente'] = $form_state['values']['proyectos_operativos_search_ac_ente']; } $_SESSION['proyectos_operativos']['anho'] = $form_state['values']['proyectos_operativos_search_ac_anho_creacion']; } /* * Implementation of hook_perm */ function proyectos_operativos_perm() { return array( 'editar datos institucionales de mi ente', ); } /** * Implementation of proyectosop_load(). * Leer un proyecto operativo. */ function proyectosop_load($nid = 0) { if ($nid && is_numeric($nid)) { $node_load = node_load($nid); if ($node_load && $node_load->type == 'proyectos_operativos') { return $node_load; } } return FALSE; } /** * Implementation of accion_especifical_load(). * Leer una accion especifica. */ function accion_especifical_load($nid = 0) { if ($nid && is_numeric($nid)) { $node_load = node_load($nid); if ($node_load && $node_load->type == 'accion_especifica') { return $node_load; } } return FALSE; } /** * Implementation of _proyectos_operativos_proyecto_agregar_proyecto(). * Agregar un nuevo proyecto. */ function _proyectos_operativos_proyecto_agregar_proyecto($ente = 0) { $output = ''; $output .= drupal_get_form('proyectos_operativos_proyecto_basico_form', 0, $ente); return $output; } /** * Implementation of proyectos_operativos_proyecto_basico_form(). * Formulario de datos basicos (proyectos operativos). */ function proyectos_operativos_proyecto_basico_form(&$form_state, $proyecto = 0, $ente_agregar = 0) { global $user; //add breadcrumb $breadcrumb = array(); $breadcrumb[] = l(t('Home'), ''); $breadcrumb[] = l(t('Proyectos Operativos'), 'proyectos_operativos'); if ($proyecto->nid) { $breadcrumb[] = l(check_plain($proyecto->title), 'proyectosop/' . $proyecto->nid); $breadcrumb[] = t('Datos Básicos'); // Link to current URL } else { $breadcrumb[] = t('Agregar Proyecto'); // Link to current URL } drupal_set_breadcrumb($breadcrumb); $current_time = time(); $tipo_plan = 'proyectos_operativos_formular'; $ente_planificador = 0; if($proyecto && $proyecto->nid && $proyecto->field_proyecto_ente[0]['nid']) { $ente_planificador = ente_planificador_leer_ente_planificadores($proyecto->field_proyecto_ente[0]['nid']); } else { $ente = usuario_tiene_ente($user->uid); if ($ente && $ente->nid) { $ente_planificador = ente_planificador_leer_ente_planificadores($ente->nid); } elseif($ente_agregar && user_access('admin planificador')) { $ente_planificador = ente_planificador_leer_ente_planificadores($ente_agregar); } } $mi_fecha = ente_planificador_user_acceso_proceso($tipo_plan, $ente_planificador); $fecha = FALSE; if ($mi_fecha[1] + 86399 > $current_time && $mi_fecha[0] < $current_time) { $fecha = TRUE; } if (!$fecha) { muestra_mensaje($tipo_plan, $ente_planificador); } if ($fecha && $ente->nid) { muestra_mensaje($tipo_plan, $ente_planificador, 0); } $fechas_validacion = array( 'inicio' => '', 'fin' => '', ); $montos_asignados = 0; $acciones_especificas = array(); $porcentajes = array(); $ejecucion = 0; if (!$proyecto) { $proyecto_leido = new stdClass(); $proyecto_leido->type = 'proyectos_operativos'; $proyecto_leido->title = ''; $proyecto_leido->field_proyecto_ente[0]['nid'] = $ente_planificador->nid; } else { $proyecto_leido = $proyecto; $proyecto_leido->field_proyecto_titulo[0]['value'] = trim($proyecto_leido->field_proyecto_titulo[0]['value']) == '' ? $proyecto_leido->title : $proyecto_leido->field_proyecto_titulo[0]['value']; if (isset($proyecto->field_proyecto_accion_esp)){ foreach($proyecto->field_proyecto_accion_esp as $accion) { if ($accion['nid']) { $accion_load = node_load($accion['nid']); if ($accion_load && ($fechas_validacion['inicio'] == '' || $accion_load->field_accion_esp_fechai[0]['value'] < $fechas_validacion['inicio'])) { $fechas_validacion['inicio'] = $accion_load->field_accion_esp_fechai[0]['value']; } if ($accion_load && ($fechas_validacion['fin'] == '' || $accion_load->field_accion_esp_fechaf[0]['value'] > $fechas_validacion['fin'])) { $fechas_validacion['fin'] = $accion_load->field_accion_esp_fechaf[0]['value']; } if ($accion_load && $accion_load->type == 'accion_especifica') { if ($accion_load->field_accion_esp_programacion[0]['tid']) { foreach($accion_load->field_accion_esp_programacion as $programacion) { foreach($programacion as $id_value => $mesp){ if ($id_value != 'tid') { $montos_asignados +=$mesp; } } } } $acciones_especificas[$accion_load->nid] = $accion_load; $porcentajes[$accion_load->field_accion_esp_ponderacion[0]['value']] = 1; $ejecucion += $accion_load->field_accion_esp_ponderacion[0]['value']; } } } } } $proyectos_operativos_path = drupal_get_path('module', 'proyectos_operativos'); drupal_add_js($proyectos_operativos_path . '/js/proyectos_operativos_extra.js'); drupal_add_js($proyectos_operativos_path . '/js/proyectos_operativos2.js'); $form = array(); $fechas_validacion['fin_texto'] = ''; $fechas_validacion['inicio_texto'] = ''; if ($fechas_validacion['inicio']) { $f_aux = explode(' ', $fechas_validacion['inicio']); $f_aux = explode('-', $f_aux[0]); $fechas_validacion['inicio_texto'] = $f_aux[2] . '-' . $f_aux[1] . '-' . $f_aux[0]; $fechas_validacion['inicio_time'] = mktime(0, 0, 0, $f_aux[1], $f_aux[2], $f_aux[0]); $f_aux = explode(' ', $proyecto_leido->field_proyecto_fecha_i[0]['value']); $f_aux = explode('-', $f_aux[0]); $fechas_validacion['inicio_current_texto'] = $f_aux[2] . '-' . $f_aux[1] . '-' . $f_aux[0]; $fechas_validacion['inicio_current_time'] = mktime(0, 0, 0, $f_aux[1], $f_aux[2], $f_aux[0]); } if ($fechas_validacion['fin']) { $f_aux = explode(' ', $fechas_validacion['fin']); $f_aux = explode('-', $f_aux[0]); $fechas_validacion['fin_texto'] = $f_aux[2] . '-' . $f_aux[1] . '-' . $f_aux[0]; $fechas_validacion['fin_time'] = mktime(0, 0, 0, $f_aux[1], $f_aux[2], $f_aux[0]); $f_aux = explode(' ', $proyecto_leido->field_proyecto_fecha_f[0]['value']); $f_aux = explode('-', $f_aux[0]); $fechas_validacion['fin_current_texto'] = $f_aux[2] . '-' . $f_aux[1] . '-' . $f_aux[0]; $fechas_validacion['fin_current_time'] = mktime(0, 0, 0, $f_aux[1], $f_aux[2], $f_aux[0]); } $format_number = array( 'decimals' => variable_get('proyectos_operativos_number_decimals', 0), 'dec_point' => variable_get('proyectos_operativos_number_dec_point', ','), 'thousands_sep' => variable_get('proyectos_operativos_number_thousands_sep', '.'), ); $form['#format_number'] = array('format_number' => $format_number); drupal_add_js($form['#format_number'], 'setting'); drupal_add_js(array('proyectos_operativos' => array('plurianual' => variable_get('proyectos_operativos_plurianual', 0))), 'setting'); $form['#ente_planificador'] = $ente_planificador; $form['#fechas_validacion'] = $fechas_validacion; $form['#montos_asignados'] = $montos_asignados; $form['#count_ae'] = count($acciones_especificas); $node_type = content_types('proyectos_operativos'); $fields = $node_type['fields']; $form['#proyecto_fields'] = $fields; $form['#proyecto_anho'] = variable_get('proyectos_operativos_anho_creacion', 0) ? variable_get('proyectos_operativos_anho_creacion', 0) : date("Y"); $field_form = array(); $fields_form = array(); $fields_form_ac_d = array(); $arreglo = array( 'field_proyecto_titulo' => 'field_proyecto_titulo', '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', ); if (is_array($fields) && count($fields)) { foreach($fields as $field_id => $field) { if (array_key_exists($field_id, $arreglo)) { $field_form[] = $field_id; $fields_form[] = $field_id; } elseif (variable_get('proyectos_operativos_ac_d_' . $field_id, FALSE)) { $fields_form_ac_d[$field_id] = $field_id; $field_form[] = $field_id; $fields_form[] = $field_id; } } } /* $form['title'] = array( '#type' => 'textfield', '#title' => t('Nombre del Proyecto'), '#required' => TRUE, '#default_value' => $proyecto_leido->title, '#maxlength' => 511, '#weight' => -5, ); */ $form['#node'] = $proyecto_leido; if (is_array($field_form) && count($field_form)) { module_load_include('inc', 'content', 'includes/content.node_form'); foreach ($field_form as $field_id) { $field = content_fields($field_id, 'proyectos_operativos'); $form['#field_info'][$field_id] = $field; $form += (array) content_field_form($form, $form_state, $field); } } $field_form = array(); $gerentes = variable_get('proyectos_operativos_muestra_gerentes', TRUE); if ($gerentes) { $arreglo = 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', ); } $fields_form_ac_di = array(); if (is_array($fields) && count($fields)) { foreach($fields as $field_id => $field) { if (array_key_exists($field_id, $arreglo)) { $field_form[] = $field_id; $fields_form[] = $field_id; } elseif (variable_get('proyectos_operativos_ac_di_' . $field_id, FALSE)) { $fields_form_ac_di[$field_id] = $field_id; $field_form[] = $field_id; $fields_form[] = $field_id; } } } if (is_array($field_form) && count($field_form)) { module_load_include('inc', 'content', 'includes/content.node_form'); foreach ($field_form as $field_id) { $field = content_fields($field_id, 'proyectos_operativos'); $form['#field_info'][$field_id] = $field; $form += (array) content_field_form($form, $form_state, $field); } } $field_form = array(); if (variable_get('proyectos_operativos_muestra_pndes', TRUE)) { $arreglo['field_proyecto_pndes'] = 'field_proyecto_pndes'; } if (variable_get('proyectos_operativos_muestra_mcti', TRUE)) { $arreglo['field_proyecto_mcti'] = 'field_proyecto_mcti'; } $fields_form_ac_p = array(); if (is_array($fields) && count($fields)) { foreach($fields as $field_id => $field) { if (array_key_exists($field_id, $arreglo)) { $field_form[] = $field_id; $fields_form[] = $field_id; } elseif (variable_get('proyectos_operativos_ac_p_' . $field_id, FALSE)) { $fields_form_ac_p[$field_id] = $field_id; $field_form[] = $field_id; $fields_form[] = $field_id; } } } if (is_array($field_form) && count($field_form)) { module_load_include('inc', 'content', 'includes/content.node_form'); foreach ($field_form as $field_id) { $field = content_fields($field_id, 'proyectos_operativos'); $form['#field_info'][$field_id] = $field; $form += (array) content_field_form($form, $form_state, $field); } } $form['#fields_form_ac_d'] = $fields_form_ac_d; $form['#fields_form_ac_di'] = $fields_form_ac_di; $form['#fields_form_ac_p'] = $fields_form_ac_p; $form['#proyectos_operativos_fields'] = $fields_form; $form['buttons'] = array( '#prefix' => '
', '#suffix' => '
', ); $form['buttons']['registrar'] = array( '#type' => 'submit', '#default_value' => t('Aceptar'), '#weight' => 100, ); $form['buttons']['cancelar'] = array( '#type' => 'submit', '#default_value' => t('Cancelar'), '#attributes' => array('onClick' => 'window.location="' . base_path() .$_GET['q'] . '"; return false;'), '#weight' => 101, ); $form['#submit'] = array('proyectos_operativos_proyecto_basico_form_submit'); return $form; } /* * Implementation of proyectos_operativos_proyecto_basico_form_validate() * Validar formulario de datos basicos (proyectos operativos). */ function proyectos_operativos_proyecto_basico_form_validate($form, &$form_state) { $op = isset($form_state['values']['op']) ? $form_state['values']['op'] : ''; if ($op == t('Cancelar')) { return; } $proyectos_operativos_path = drupal_get_path('module', 'proyectos_operativos'); drupal_add_js($proyectos_operativos_path . '/js/proyectos_operativos_extra.js'); drupal_add_js($proyectos_operativos_path . '/js/proyectos_operativos2.js'); //drupal_add_js($form['#format_number'], 'setting'); $form_state['values']['field_proyecto_monto_anual'][0]['value'] = str_replace("", $form['#format_number']['format_number']['thousands_sep'], $form_state['values']['field_proyecto_monto_anual'][0]['value']); $form_state['values']['field_proyecto_monto_anual'][0]['value'] = str_replace(".", $form['#format_number']['format_number']['dec_point'], $form_state['values']['field_proyecto_monto_anual'][0]['value']); $form_state['values']['field_proyecto_total'][0]['value'] = str_replace("", $form['#format_number']['format_number']['thousands_sep'], $form_state['values']['field_proyecto_total'][0]['value']); $form_state['values']['field_proyecto_total'][0]['value'] = str_replace(".", $form['#format_number']['format_number']['dec_point'], $form_state['values']['field_proyecto_total'][0]['value']); // garantizar el formato numerico y no exponencial con numeros grandes $form_state['values']['field_proyecto_monto_anual'][0]['value'] = number_format($form_state['values']['field_proyecto_monto_anual'][0]['value'], $form['#format_number']['format_number']['decimals'], '.', ''); $form_state['values']['field_proyecto_total'][0]['value'] = number_format($form_state['values']['field_proyecto_total'][0]['value'], $form['#format_number']['format_number']['decimals'], '.', ''); if (trim($form_state['values']['field_proyecto_correo'][0]['email']) && !valid_email_address(trim($form_state['values']['field_proyecto_correo'][0]['email']))) { form_set_error('field_proyecto_correo', t('"%mail" is not a valid email address',array('%mail' => $form_state['values']['field_proyecto_correo'][0]['email']))); } if ($form_state['values']['field_proyecto_monto_anual'][0]['value'] <= 0) { form_set_error('field_proyecto_monto_anual', t('El monto anual del proyecto no puede ser negativo o cero')); } $start = $form_state['values']['field_proyecto_total'][0]['value']; $value = preg_replace('@[^-0-9]@', '', $start); if ($start != $value) { form_set_error('field_proyecto_total', t('Solo números enteros son permitidos en el monto anual del proyecto.')); } $start = $form_state['values']['field_proyecto_monto_anual'][0]['value']; $value = preg_replace('@[^-0-9]@', '', $start); if ($start != $value) { form_set_error('field_proyecto_monto_anual', t('Solo números enteros son permitidos en el monto total del proyecto')); } if ($form['#count_ae'] && $form['#montos_asignados'] > $value) { form_set_error('field_proyecto_monto_anual', t('El monto anual del proyecto (@monto_proyecto Bs.) es inferior al asignado a las Acciones Específicas (@monto_asignado Bs.)', array('@monto_proyecto' => number_format($value, $form['#format_number']['format_number']['decimals'], $form['#format_number']['format_number']['dec_point'], $form['#format_number']['format_number']['thousands_sep']), '@monto_asignado' => number_format($form['#montos_asignados'], $form['#format_number']['format_number']['decimals'], $form['#format_number']['format_number']['dec_point'], $form['#format_number']['format_number']['thousands_sep'])))); } if ($form_state['values']['field_proyecto_total'][0]['value'] <= 0) { form_set_error('field_proyecto_total', t('El monto anual del proyecto no puede ser negativo o cero')); } if ($form_state['values']['field_proyecto_monto_anual'][0]['value'] > $form_state['values']['field_proyecto_total'][0]['value']) { form_set_error('field_proyecto_monto_anual', t('El monto anual debe ser menor o igual al monto total del proyecto.')); } //lamentablemente date no valida que from sea menor que to if ($form_state['values']['field_proyecto_fecha_i'][0]['value'] > $form_state['values']['field_proyecto_fecha_f'][0]['value']) { form_set_error('field_proyecto_fecha_i', t('La fecha de inicio debe ser menor a la fecha de culminación')); } if ($form_state['values']['field_proyecto_plurianual'][0]['value'] != variable_get('proyectos_operativos_plurianual', 0) && $form_state['values']['field_proyecto_total'][0]['value'] != $form_state['values']['field_proyecto_monto_anual'][0]['value']) { form_set_error('field_proyecto_monto_anual', t('Cuando un proyecto no es plurianual, el monto total debe ser igual al monto anual del proyecto')); } //validamos el añofield_proyecto_plurianual $fecha = explode('-', $form_state['values']['field_proyecto_fecha_i'][0]['value']); if (is_array($fecha) && count($fecha)) { if ($form['#proyecto_anho'] != $fecha[0]) { form_set_error('field_proyecto_fecha_i',t('El año de inicio del proyecto debe ser igual a @year', array('@year' => $form['#proyecto_anho']))); } } if ($form['#count_ae'] && $form['#fechas_validacion']['inicio'] < $form_state['values']['field_proyecto_fecha_i'][0]['value']) { $fecha_dia = explode(' ', $fecha[2]); form_set_error('field_proyecto_fecha_i',t('La fecha de inicio del proyecto (@fecha_inicio) es mayor a la menor fecha de inicio de las Acciones Específicas (@fecha_aei)', array('@fecha_inicio' => $fecha_dia[0] . '-' . $fecha[1] . '-' . $fecha[0], '@fecha_aei' => $form['#fechas_validacion']['inicio_texto']))); } $fecha = explode('-', $form_state['values']['field_proyecto_fecha_f'][0]['value']); if (is_array($fecha) && count($fecha)) { if ($form['#proyecto_anho'] != $fecha[0]) { form_set_error('field_proyecto_fecha_f',t('El año de finalización del debe ser igual a @year', array('@year' => $form['#proyecto_anho']))); } } if ($form['#count_ae'] && $form['#fechas_validacion']['fin'] > $form_state['values']['field_proyecto_fecha_f'][0]['value']) { $fecha_dia = explode(' ', $fecha[2]); form_set_error('field_proyecto_fecha_f',t('La fecha de culminación del proyecto (@fecha_inicio) es menor a la menor fecha de inicio de las Acciones Específicas (@fecha_aei)', array('@fecha_inicio' => $fecha_dia[0] . '-' . $fecha[1] . '-' . $fecha[0], '@fecha_aei' => $form['#fechas_validacion']['fin_texto']))); } } /* * Implementation of proyectos_operativos_proyecto_basico_form_submit(). * Guardar formulario de datos basicos (proyectos operativos). */ function proyectos_operativos_proyecto_basico_form_submit($form, &$form_state) { $op = isset($form_state['values']['op']) ? $form_state['values']['op'] : ''; if ($op == t('Cancelar')) { drupal_set_message(t('Se cancelo el ingreso de los datos básicos del proyecto.')); if ($form['#node']->nid) { $form_state['redirect'] = 'proyectosopedit/' . $form['#node']->nid; } else { $form_state['redirect'] = 'proyectos_operativos'; } return; } global $user; if (module_exists('hs_content_taxonomy')) { foreach ($form['#field_info'] as $field_name => $field_info) { if ($field_info['widget']['type'] == 'content_taxonomy_hs') { // Change format of values to the one Content Taxonomy expects if (is_array($form_state['values'][$field_name]['tids'])) { $values = array(); foreach($form_state['values'][$field_name]['tids'] as $tid) { $values[] = array('value' => $tid); array_unshift($form_state['values'][$field_name], array('value' => $tid)); } $form_state['values'][$field_name]['tids'] = $values; } else { $values[] = array('value' => $form_state['values'][$field_name]['tids']); array_unshift($form_state['values'][$field_name],array('value' => $form_state['values'][$field_name]['tids'])); $form_state['values'][$field_name]['tids'] = $values; } } } } if (module_exists('hs_content_taxonomy_description')) { foreach ($form['#field_info'] as $field_name => $field_info) { if ($field_info['widget']['type'] == 'content_taxonomy_hsd') { // Change format of values to the one Content Taxonomy expects if (is_array($form_state['values'][$field_name]['tids'])) { $values = array(); foreach($form_state['values'][$field_name]['tids'] as $tid) { $values[] = array('value' => $tid); array_unshift($form_state['values'][$field_name], array('value' => $tid)); } $form_state['values'][$field_name]['tids'] = $values; } else { $values[] = array('value' => $form_state['values'][$field_name]['tids']); array_unshift($form_state['values'][$field_name],array('value' => $form_state['values'][$field_name]['tids'])); $form_state['values'][$field_name]['tids'] = $values; } } } } $field_form = $form['#proyectos_operativos_fields']; module_load_include('inc', 'node', 'node.pages'); $node_load = $form['#node']; $form_values = $form_state['values']; //$node_load->title = check_plain($form_values['title']); if (is_array($field_form) && count($field_form)) { foreach ($field_form as $field_id) { if (isset($form_values[$field_id]) && is_array($form_values[$field_id])) { foreach($form_values[$field_id] as $id => $value) { if (is_numeric($id) && isset($form_values[$field_id][$id]['_error_element'])) { unset($form_values[$field_id][$id]['_error_element']); } } $node_load->{$field_id} = $form_values[$field_id]; } } } $node_load->title = $node_load->field_proyecto_codigo[0]['value'] && trim($node_load->field_proyecto_codigo[0]['value']) != '' ? check_plain($node_load->field_proyecto_codigo[0]['value']) : 'proyecto'; if ($node_load->nid) { $texto = t('Modificados los datos básicos del proyecto'); $node_load->log = $texto; drupal_set_message($texto); } else { $node_load->uid = $user->uid; $texto = t('Agregados los datos básicos del proyecto'); $node_load->log = t('Agregados los datos básicos del proyecto'); drupal_set_message($texto); } $node_load->revision = 1; node_save($node_load); if ($_REQUEST['destination']) { $form_state['redirect'] = url('proyectosopedit/' . $node_load->nid . '/generales', array( 'query' => array( 'destination' => $_REQUEST['destination'], ), 'absolute' => TRUE, ) ); unset($_REQUEST['destination']); } else { // add redirect $form_state['redirect'] = 'proyectosopedit/' . $node_load->nid . '/generales'; } } /** * Implementation of proyectos_operativos_proyecto_generales_form(). * Formulario de datos generales (proyectos operativos). */ function proyectos_operativos_proyecto_generales_form(&$form_state, $proyecto = 0) { global $user; //add breadcrumb $breadcrumb = array(); $breadcrumb[] = l(t('Home'), ''); $breadcrumb[] = l(t('Proyectos Operativos'), 'proyectos_operativos'); if ($proyecto->nid) { $breadcrumb[] = l(check_plain($proyecto->title), 'proyectosop/' . $proyecto->nid); } $breadcrumb[] = 'Datos Generales'; // Link to current URL drupal_set_breadcrumb($breadcrumb); $proyectos_operativos_path = drupal_get_path('module', 'proyectos_operativos'); drupal_add_js($proyectos_operativos_path . '/js/proyectos_operativos_extra.js'); drupal_add_js($proyectos_operativos_path . '/js/proyectos_operativos_generales.js'); $format_number = array( 'decimals' => variable_get('proyectos_operativos_number_decimals', 0), 'dec_point' => variable_get('proyectos_operativos_number_dec_point', ','), 'thousands_sep' => variable_get('proyectos_operativos_number_thousands_sep', '.'), ); $current_time = time(); $tipo_plan = 'proyectos_operativos_formular'; $fecha = FALSE; $ente = usuario_tiene_ente($user->uid); $ente_planificador = 0; if ($ente && $ente->nid) { $ente_planificador = ente_planificador_leer_ente_planificadores($ente->nid); } $mi_fecha = ente_planificador_user_acceso_proceso($tipo_plan, $ente_planificador); if ($mi_fecha[1] + 86399 > $current_time && $mi_fecha[0] < $current_time) { $fecha = TRUE; } if (!$fecha) { muestra_mensaje($tipo_plan, $ente_planificador); } if ($fecha && $ente->nid) { muestra_mensaje($tipo_plan, $ente_planificador, 0); } if (!$proyecto) { $proyecto_leido = new stdClass(); $proyecto_leido->type = 'proyectos_operativos'; } else { $proyecto_leido = $proyecto; if (isset($proyecto->field_proyecto_accion_esp)){ foreach($proyecto->field_proyecto_accion_esp as $accion) { if ($accion['nid']) { $accion_load = node_load($accion['nid']); if ($accion_load && ($fechas_validacion['inicio'] == '' || $accion_load->field_accion_esp_fechai[0]['value'] < $fechas_validacion['inicio'])) { $fechas_validacion['inicio'] = $accion_load->field_accion_esp_fechai[0]['value']; } if ($accion_load && ($fechas_validacion['fin'] == '' || $accion_load->field_accion_esp_fechaf[0]['value'] > $fechas_validacion['fin'])) { $fechas_validacion['fin'] = $accion_load->field_accion_esp_fechaf[0]['value']; } if ($accion_load && $accion_load->type == 'accion_especifica') { if ($accion_load->field_accion_esp_programacion[0]['tid']) { foreach($accion_load->field_accion_esp_programacion as $programacion) { foreach($programacion as $id_value => $mesp){ if ($id_value != 'tid') { $montos_asignados +=$mesp; } } } } $acciones_especificas[$accion_load->nid] = $accion_load; $porcentajes[$accion_load->field_accion_esp_ponderacion[0]['value']] = 1; $ejecucion += $accion_load->field_accion_esp_ponderacion[0]['value']; } } } } } $fechas_validacion['fin_texto'] = ''; $fechas_validacion['inicio_texto'] = ''; if ($fechas_validacion['inicio']) { $f_aux = explode(' ', $fechas_validacion['inicio']); $f_aux = explode('-', $f_aux[0]); $fechas_validacion['inicio_texto'] = $f_aux[2] . '-' . $f_aux[1] . '-' . $f_aux[0]; $fechas_validacion['inicio_time'] = mktime(0, 0, 0, $f_aux[1], $f_aux[2], $f_aux[0]); $f_aux = explode(' ', $proyecto_leido->field_proyecto_fecha_i[0]['value']); $f_aux = explode('-', $f_aux[0]); $fechas_validacion['inicio_current_texto'] = $f_aux[2] . '-' . $f_aux[1] . '-' . $f_aux[0]; $fechas_validacion['inicio_current_time'] = mktime(0, 0, 0, $f_aux[1], $f_aux[2], $f_aux[0]); } if ($fechas_validacion['fin']) { $f_aux = explode(' ', $fechas_validacion['fin']); $f_aux = explode('-', $f_aux[0]); $fechas_validacion['fin_texto'] = $f_aux[2] . '-' . $f_aux[1] . '-' . $f_aux[0]; $fechas_validacion['fin_time'] = mktime(0, 0, 0, $f_aux[1], $f_aux[2], $f_aux[0]); $f_aux = explode(' ', $proyecto_leido->field_proyecto_fecha_f[0]['value']); $f_aux = explode('-', $f_aux[0]); $fechas_validacion['fin_current_texto'] = $f_aux[2] . '-' . $f_aux[1] . '-' . $f_aux[0]; $fechas_validacion['fin_current_time'] = mktime(0, 0, 0, $f_aux[1], $f_aux[2], $f_aux[0]); } $form = array(); $form['#fechas_validacion'] = $fechas_validacion; $form['#montos_asignados'] = $montos_asignados; $form['#count_ae'] = count($acciones_especificas); $form['#node'] = $proyecto_leido; $node_type = content_types('proyectos_operativos'); $fields = $node_type['fields']; $form['#proyecto_fields'] = $fields; $form['#proyecto_anho'] = variable_get('proyectos_operativos_anho_creacion', 0) ? variable_get('proyectos_operativos_anho_creacion', 0) : date("Y"); $field_form = array(); $fields_form = array(); $fields_extra_form = array(); $arreglo = array( 'field_proyecto_sector' => 'field_proyecto_sector', ); $fields_form_dg_se = array(); if (is_array($fields) && count($fields)) { foreach($fields as $field_id => $field) { if (array_key_exists($field_id, $arreglo)) { $field_form[] = $field_id; $fields_form[] = $field_id; } elseif (variable_get('proyectos_operativos_dg_se_' . $field_id, FALSE)) { $fields_form_dg_se[$field_id] = $field_id; $field_form[] = $field_id; $fields_form[] = $field_id; } } } if (is_array($field_form) && count($field_form)) { module_load_include('inc', 'content', 'includes/content.node_form'); foreach ($field_form as $field_id) { $field = content_fields($field_id, 'proyectos_operativos'); $form['#field_info'][$field_id] = $field; $form += (array) content_field_form($form, $form_state, $field); } } $arreglo = array( 'field_proyecto_emdirecto' => 'field_proyecto_emdirecto', 'field_proyecto_efdirecto' => 'field_proyecto_efdirecto', 'field_proyecto_emindirecto' => 'field_proyecto_emindirecto', 'field_proyecto_efindirecto' => 'field_proyecto_efindirecto', ); if (is_array($fields) && count($fields)) { foreach($fields as $field_id => $field) { if (array_key_exists($field_id, $arreglo)) { $field_form[] = $field_id; $fields_form[] = $field_id; } } } if (is_array($field_form) && count($field_form)) { module_load_include('inc', 'content', 'includes/content.node_form'); foreach ($field_form as $field_id) { $field = content_fields($field_id, 'proyectos_operativos'); $form['#field_info'][$field_id] = $field; $form += (array) content_field_form($form, $form_state, $field); } } if (variable_get('proyectos_operativos_muestra_talento', TRUE)) { $arreglo = 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', ); $form['talento'] = array( '#type' => 'fieldset', '#title' => t('Talento Humano'), ); $prefixC = ''; $fields_extra_form1 = array(); foreach($arreglo as $field_id => $field) { $fields_extra_form1[] = $field_id; $prefixC .= '' . $fields[$field_id]['widget']['label'] . ''; } $fields_extra_form['talento'] = $fields_extra_form1; $tamano_array = array(); foreach($arreglo as $field_id => $field) { $tamano_array[] = count($proyecto_leido->{$field_id}); } $cantidad_talento = max($tamano_array); for ($i = 0; $i < $cantidad_talento; $i++) { $prefix = ''; if ($i == 0) { $prefix = '
' . $prefixC . '', ); if ($field_id == 'field_proyecto_esfuerzo') { $form['talento'][$field_id . '_' . $i]['#element_validate'] = array('proyectos_operativos_number_integer_validate2',); } $aux = $field_id; $aui = $i; $prefix = ''; } $form['talento'][$aux . '_' . $aui]['#suffix'] .= '
'; } else { $prefix .= '
'; } $aux = ''; $aui = ''; foreach($arreglo as $field_id => $field) { $valor_d = ($field_id == 'field_proyecto_esfuerzo') ? 0 : ''; $form['talento'][$field_id . '_' . $i] = array( '#type' => 'textfield', '#default_value' => isset($proyecto_leido->{$field_id}[$i]) ? $proyecto_leido->{$field_id}[$i]['value'] : $valor_d, '#size' => 18, '#maxlength' => $fields[$field_id]['max_length'], '#prefix' => $prefix, '#suffix' => ''; } $form['talento'][$aux . '_' . $aui]['#suffix'] .= '
AAA'; $form['talento']['cantidad_talento'] = array('#type' => 'hidden', '#value' => $cantidad_talento, '#suffix' => '
'); $form['talento']['agrega_' . 'talento'] = array( '#type' => 'submit', '#default_value' => t('Agregar otro campo'), '#weight' => 100, '#ahah' => array( 'path' => 'proyectos_operativos_proyecto_generales_agrega_talento_js_util/talento', 'wrapper' => 'talento-humano-modificar', 'method' => 'replace', 'progress' => array('type' => 'bar', 'message' => t('Please wait...')), ), ); } if (variable_get('proyectos_operativos_muestra_capacidades', TRUE)) { $arreglo = 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', ); $form['capacidades'] = array( '#type' => 'fieldset', '#title' => t('Capacidades'), ); $prefixC = ''; $fields_extra_form1 = array(); $tamano_array = array(); foreach($arreglo as $field_id => $field) { $tamano_array[] = count($proyecto_leido->{$field_id}); } $cantidad_capacidades = max($tamano_array); foreach($arreglo as $field_id => $field) { $fields_extra_form1[] = $field_id; $prefixC .= '' . $fields[$field_id]['widget']['label'] . ''; } $fields_extra_form['capacidades'] = $fields_extra_form1; for ($i = 0; $i < $cantidad_capacidades; $i++) { $prefix = ''; if ($i == 0) { $prefix = '
' . $prefixC . '', ); $aux = $field_id; $aui = $i; $prefix = ''; } $form['capacidades'][$aux . '_' . $aui]['#suffix'] .= '
'; } else { $prefix .= '
'; } $aux = ''; $aui = ''; foreach($arreglo as $field_id => $field) { $form['capacidades'][$field_id . '_' . $i] = array( '#type' => 'textfield', '#default_value' => isset($proyecto_leido->{$field_id}[$i]) ? $proyecto_leido->{$field_id}[$i]['value'] : '', '#size' => 18, '#maxlength' => $fields[$field_id]['max_length'], '#prefix' => $prefix, '#suffix' => ''; } $form['capacidades'][$aux . '_' . $aui]['#suffix'] .= '
'; $form['capacidades']['cantidad_capacidades'] = array('#type' => 'hidden', '#value' => $cantidad_capacidades, '#suffix' => '
'); $form['capacidades']['agrega_' . 'capacidades'] = array( '#type' => 'submit', '#default_value' => t('Agregar otro campo'), '#weight' => 100, '#ahah' => array( 'path' => 'proyectos_operativos_proyecto_generales_agrega_talento_js_util/capacidades', 'wrapper' => 'capacidades-modificar', 'method' => 'replace', 'progress' => array('type' => 'bar', 'message' => t('Please wait...')), ), ); } $field_form = array(); $arreglo = array( 'field_proyecto_relacion' => 'field_proyecto_relacion', ); $fields_form_dg_r = array(); if (is_array($fields) && count($fields)) { foreach($fields as $field_id => $field) { if (array_key_exists($field_id, $arreglo)) { $field_form[] = $field_id; $fields_form[] = $field_id; } elseif (variable_get('proyectos_operativos_dg_r_' . $field_id, FALSE)) { $fields_form_dg_r[$field_id] = $field_id; $field_form[] = $field_id; $fields_form[] = $field_id; } } } if (is_array($field_form) && count($field_form)) { module_load_include('inc', 'content', 'includes/content.node_form'); foreach ($field_form as $field_id) { $field = content_fields($field_id, 'proyectos_operativos'); $form['#field_info'][$field_id] = $field; $form += (array) content_field_form($form, $form_state, $field); } } if (variable_get('proyectos_operativos_muestra_beneficiario', TRUE)) { $arreglo = array( 'field_proyecto_beneficiario' => 'field_proyecto_beneficiario', 'field_proyectos_masculino_d' => 'field_proyectos_masculino_d', 'field_proyectos_femenino_d' => 'field_proyectos_femenino_d', ); if (variable_get('proyectos_operativos_muestra_beneficiarios_indirectos', TRUE)) { $arreglo['field_proyectos_masculino_i'] = 'field_proyectos_masculino_i'; $arreglo['field_proyectos_femenino_i'] = 'field_proyectos_femenino_i'; } $form['beneficiario'] = array( '#type' => 'fieldset', '#title' => t('Beneficiario'), ); $prefixC = ''; $fields_extra_form1 = array(); foreach($arreglo as $field_id => $field) { $fields_extra_form1[] = $field_id; $prefixC .= '' . $fields[$field_id]['widget']['label'] . ''; } $prefixC .= '' . t('Total') . ''; $fields_extra_form['beneficiario'] = $fields_extra_form1; $totales = 0; $total_arreglo = array(); $sumas['beneficiarios'] = array(); $vid = variable_get('proyectos_operativos_extra_bene', 0); //$terms = taxonomy_get_tree($vid); $tree = taxonomy_get_tree($vid); $options = array(); $options[''] = t('Seleccionar'); if ($tree) { foreach ($tree as $term) { $options[$term->name] = $term->name; } } $tamano_array = array(); foreach($arreglo as $field_id => $field) { $tamano_array[] = count($proyecto_leido->{$field_id}); } $cantidad_beneficiario = max($tamano_array); for ($i = 0; $i < $cantidad_beneficiario; $i++) { $subtotal = 0; $prefix = ''; if ($i == 0) { $prefix = '
' . $prefixC . '', ); } else { $form['beneficiario'][$field_id . '_' . $i] = array( '#type' => 'textfield', '#default_value' => $valor, '#size' => 10, '#maxlength' => $fields[$field_id]['max_length'], '#prefix' => $prefix, '#suffix' => '', ); } if ($field_id != 'field_proyecto_beneficiario') { if (!isset($total_arreglo[$field_id])) { $total_arreglo[$field_id] = 0; } $subtotal += (int) $valor; $totales += (int) $valor; $total_arreglo[$field_id] += (int) $valor; $sumas['beneficiarios']['beneficiario_' . $i] = 'beneficiario_' . $i; $form['beneficiario'][$field_id . '_' . $i]['#element_validate'] = array('proyectos_operativos_number_integer_validate2',); $form['beneficiario'][$field_id . '_' . $i]['#attributes'] = array('class' => 'number beneficiario_' . $i . ' todosbeneficiarios beneficiarios_' . $field_id, 'onchange' => "sumabeneficiario('beneficiario_$i');sumabeneficiario('todosbeneficiarios');sumabeneficiario('beneficiarios_$field_id');"); } $aux = $field_id; $aui = $i; $prefix = ''; $form['beneficiario'][$aux . '_' . $aui]['#suffix'] .= ''; } $form['beneficiario'][$aux . '_' . $aui]['#suffix'] .= ''; foreach($arreglo as $field_id => $field) { if ($field_id != 'field_proyecto_beneficiario') { $sumas['beneficiarios']['beneficiarios_' . $field_id] = 'beneficiarios_' . $field_id; $form['beneficiario'][$aux . '_' . $aui]['#suffix'] .= ''; } } $sumas['beneficiarios']['todosbeneficiarios'] = 'todosbeneficiarios'; $sumas['beneficiarios']['empleos_generados'] = 'empleos_generados'; drupal_add_js($sumas, 'setting'); $form['#sumas'] = $sumas; $form['beneficiario'][$aux . '_' . $aui]['#suffix'] .= ''; $form['beneficiario'][$aux . '_' . $aui]['#suffix'] .= '
'; } else { $prefix .= '
'; } $aux = ''; $aui = ''; foreach($arreglo as $field_id => $field) { $valor = isset($proyecto_leido->{$field_id}[$i]) ? $proyecto_leido->{$field_id}[$i]['value'] : ''; if ($field_id == 'field_proyecto_beneficiario') { $form['beneficiario'][$field_id . '_' . $i] = array( '#type' => 'select', '#default_value' => $valor, '#options' => $options, '#prefix' => $prefix, '#suffix' => ''; } $form['beneficiario'][$aux . '_' . $aui]['#suffix'] .= '
' . $subtotal . '
' . t('TOTAL') . '
' . $total_arreglo[$field_id] . '
' . $totales . '
'; $form['beneficiario']['cantidad_beneficiario'] = array('#type' => 'hidden', '#value' => $cantidad_beneficiario, '#suffix' => '
'); $form['beneficiario']['agrega_' . 'beneficiario'] = array( '#type' => 'submit', '#default_value' => t('Agregar otro campo'), '#weight' => 100, '#ahah' => array( 'path' => 'proyectos_operativos_proyecto_generales_agrega_talento_js_util/beneficiario', 'wrapper' => 'beneficiario-modificar', 'method' => 'replace', 'progress' => array('type' => 'bar', 'message' => t('Please wait...')), ), ); } $field_form = array(); $arreglo = array( 'field_proyecto_og' => 'field_proyecto_og', 'field_proyecto_oe' => 'field_proyecto_oe', ); $fields_form_dg_o = array(); if (is_array($fields) && count($fields)) { foreach($fields as $field_id => $field) { if (array_key_exists($field_id, $arreglo)) { $field_form[] = $field_id; $fields_form[] = $field_id; } elseif (variable_get('proyectos_operativos_dg_o_' . $field_id, FALSE)) { $fields_form_dg_o[$field_id] = $field_id; $field_form[] = $field_id; $fields_form[] = $field_id; } } } $form['#format_number'] = array('format_number' => $format_number); drupal_add_js($form['#format_number'], 'setting'); $form['#proyectos_operativos_fields_extra'] = $fields_extra_form; $form['#fields_form_dg_o'] = $fields_form_dg_o; $form['#fields_form_dg_se'] = $fields_form_dg_se; $form['#fields_form_dg_r'] = $fields_form_dg_r; $form['#proyectos_operativos_fields_extra'] = $fields_extra_form; $form['#proyectos_operativos_fields'] = $fields_form; if (is_array($field_form) && count($field_form)) { module_load_include('inc', 'content', 'includes/content.node_form'); foreach ($field_form as $field_id) { $field = content_fields($field_id, 'proyectos_operativos'); $form['#field_info'][$field_id] = $field; $form += (array) content_field_form($form, $form_state, $field); } } $form['buttons'] = array( '#prefix' => '
', '#suffix' => '
', ); $form['buttons']['registrar'] = array( '#type' => 'submit', '#default_value' => t('Aceptar'), '#weight' => 100, ); $form['buttons']['cancelar'] = array( '#type' => 'submit', '#default_value' => t('Cancelar'), '#attributes' => array('onClick' => 'window.location="' . base_path() .$_GET['q'] . '"; return false;'), '#weight' => 101, ); $form['#submit'] = array('proyectos_operativos_proyecto_generales_form_submit'); return $form; } /** * Implementation of proyectos_operativos_number_integer_validate2(). * Validar si el dato suministrado es un entero. */ function proyectos_operativos_number_integer_validate2($element, &$form_state) { $start = $element['#value']; $value = preg_replace('@[^-0-9]@', '', $start); if ($start != $value) { $fielda = explode('_', $element['#name']); $i = array_pop($fielda); $field = implode('_', $fielda); form_set_error($field . '_' . $i, t('Solo números enteros son permitidos')); } } /** * Implementation of proyectos_operativos_proyecto_generales_form_validate(). * Validar formulario de datos generales (proyectos operativos). */ function proyectos_operativos_proyecto_generales_form_validate($form, &$form_state) { $op = isset($form_state['values']['op']) ? $form_state['values']['op'] : ''; if ($op == t('Cancelar')) { return; } $proyectos_operativos_path = drupal_get_path('module', 'proyectos_operativos'); drupal_add_js($form['#format_number'], 'setting'); drupal_add_js($proyectos_operativos_path . '/js/proyectos_operativos_extra.js'); drupal_add_js($proyectos_operativos_path . '/js/proyectos_operativos_generales.js'); drupal_add_js($form['#sumas'], 'setting'); if (count($form['#proyectos_operativos_fields_extra'])) { foreach($form['#proyectos_operativos_fields_extra'] as $id => $arreglo) { $all_null = TRUE; $cantidad = $form_state['values']['cantidad_' . $id]; for($i = 0; $i < $cantidad; $i++) { $null = TRUE; $first_campo = FALSE; $suma = 0; foreach($arreglo as $campo) { if (!$first_campo) { $first_campo = $campo; } if ($form_state['values'][$campo . '_' . $i] && trim($form_state['values'][$campo . '_' . $i]) != '') { $all_null = FALSE; $null = FALSE; } if ($campo == 'field_proyecto_esfuerzo' || $campo == 'field_proyectos_masculino_d' || $campo == 'field_proyectos_masculino_i' || $campo == 'field_proyectos_femenino_d' || $campo == 'field_proyectos_femenino_i') { $start = $form_state['values'][$campo . '_' . $i]; $value = (int) $start; $suma += $value; if ($start != $value) { form_set_error($campo . '_' . $i, t('Solo números enteros son permitidos en el campo %field.' . $start, array('%field' => t($form['#proyecto_fields'][$campo]['widget']['label'])))); } elseif ($value < 0) { form_set_error($campo . '_' . $i, t('Solo números enteros positivos son permitidos en el campo %field.' . $start, array('%field' => t($form['#proyecto_fields'][$campo]['widget']['label'])))); } } } if (!$null) { foreach($arreglo as $campo) { if (trim($form_state['values'][$campo . '_' . $i]) == '') { form_set_error($campo . '_' . $i, t('El campo @campo_name no puede estar vacio', array('@campo_name' => $form['#proyecto_fields'][$campo]['widget']['label']))); } elseif($campo == 'field_proyecto_beneficiario' && ($suma < 0 || !$suma)) { form_set_error($campo . '_' . $i, t('La suma de @campo_name debe ser mayor que cero', array('@campo_name' => $form['#proyecto_fields'][$campo]['widget']['label']))); } } } } if ($all_null) { form_set_error($first_campo . '_0', t('Debe llenar al menos un campo')); } } } } /** * Implementation of proyectos_operativos_proyecto_generales_form_submit(). * Guardar formulario de datos generales (proyectos operativos). */ function proyectos_operativos_proyecto_generales_form_submit($form, &$form_state) { $op = isset($form_state['values']['op']) ? $form_state['values']['op'] : ''; if ($op == t('Cancelar')) { drupal_set_message(t('Se cancelo el ingreso de los datos generales del proyecto.')); $form_state['redirect'] = 'proyectosopedit/' . $form['#node']->nid; return; } if (module_exists('hs_content_taxonomy')) { foreach ($form['#field_info'] as $field_name => $field_info) { if ($field_info['widget']['type'] == 'content_taxonomy_hs') { // Change format of values to the one Content Taxonomy expects if (is_array($form_state['values'][$field_name]['tids'])) { $values = array(); foreach($form_state['values'][$field_name]['tids'] as $tid) { $values[] = array('value' => $tid); array_unshift($form_state['values'][$field_name], array('value' => $tid)); } $form_state['values'][$field_name]['tids'] = $values; } else { $values[] = array('value' => $form_state['values'][$field_name]['tids']); array_unshift($form_state['values'][$field_name],array('value' => $form_state['values'][$field_name]['tids'])); $form_state['values'][$field_name]['tids'] = $values; } } } } $field_form = $form['#proyectos_operativos_fields']; module_load_include('inc', 'node', 'node.pages'); $node_load = $form['#node']; if (count($form['#proyectos_operativos_fields_extra'])) { foreach($form['#proyectos_operativos_fields_extra'] as $id => $arreglo) { foreach($arreglo as $campo) { $node_load->{$campo} = array(); } $all_null = TRUE; $cantidad = $form_state['values']['cantidad_' . $id]; for($i = 0; $i < $cantidad; $i++) { $null = TRUE; $first_campo = FALSE; foreach($arreglo as $campo) { if (!$first_campo) { $first_campo = $campo; } if (trim($form_state['values'][$campo . '_' . $i]) != '') { $all_null = FALSE; $null = FALSE; } } if (!$null) { foreach($arreglo as $campo) { $node_load->{$campo}[] = array('value' => trim($form_state['values'][$campo . '_' . $i])); } } } } } $form_values = $form_state['values']; if (is_array($field_form) && count($field_form)) { foreach ($field_form as $field_id) { if (isset($form_values[$field_id]) && is_array($form_values[$field_id])) { foreach($form_values[$field_id] as $id => $value) { if (is_numeric($id) && isset($form_values[$field_id][$id]['_error_element'])) { unset($form_values[$field_id][$id]['_error_element']); } } $node_load->{$field_id} = $form_values[$field_id]; } } } if ($node_load->nid) { $texto = t('Modificados los datos generales del proyecto'); $node_load->log = $texto; drupal_set_message($texto); } else { $texto = t('Agregados los datos generales del proyecto'); $node_load->log = $texto; drupal_set_message($texto); } $node_load->revision = 1; node_save($node_load); if ($_REQUEST['destination']) { $form_state['redirect'] = url('proyectosopedit/' . $node_load->nid . '/indicadores', array( 'query' => array( 'destination' => $_REQUEST['destination'], ), 'absolute' => TRUE, ) ); unset($_REQUEST['destination']); } else { // add redirect $form_state['redirect'] = 'proyectosopedit/' . $node_load->nid . '/indicadores'; } } /** * Implementation of proyectos_operativos_proyecto_indicadores_form(). * Formulario de indicadores (proyectos operativos). */ function proyectos_operativos_proyecto_indicadores_form(&$form_state, $proyecto = 0) { global $user; //add breadcrumb $breadcrumb = array(); $breadcrumb[] = l(t('Home'), ''); $breadcrumb[] = l(t('Proyectos Operativos'), 'proyectos_operativos'); $breadcrumb[] = l(check_plain($proyecto->title), 'proyectosop/' . $proyecto->nid); $breadcrumb[] = 'Indicadores del Proyecto'; // Link to current URL drupal_set_breadcrumb($breadcrumb); $current_time = time(); $tipo_plan = 'proyectos_operativos_formular'; $fecha = FALSE; $ente = usuario_tiene_ente($user->uid); $ente_planificador = 0; if ($ente && $ente->nid) { $ente_planificador = ente_planificador_leer_ente_planificadores($ente->nid); } $mi_fecha = ente_planificador_user_acceso_proceso($tipo_plan, $ente_planificador); if ($mi_fecha[1] + 86399 > $current_time && $mi_fecha[0] < $current_time) { $fecha = TRUE; } if (!$fecha) { muestra_mensaje($tipo_plan, $ente_planificador); } if ($fecha && $ente->nid) { muestra_mensaje($tipo_plan, $ente_planificador, 0); } if (!$proyecto) { $proyecto_leido = new stdClass(); $proyecto_leido->type = 'proyectos_operativos'; } else { $proyecto_leido = $proyecto; if (isset($proyecto->field_proyecto_accion_esp)){ foreach($proyecto->field_proyecto_accion_esp as $accion) { if ($accion['nid']) { $accion_load = node_load($accion['nid']); if ($accion_load && ($fechas_validacion['inicio'] == '' || $accion_load->field_accion_esp_fechai[0]['value'] < $fechas_validacion['inicio'])) { $fechas_validacion['inicio'] = $accion_load->field_accion_esp_fechai[0]['value']; } if ($accion_load && ($fechas_validacion['fin'] == '' || $accion_load->field_accion_esp_fechaf[0]['value'] > $fechas_validacion['fin'])) { $fechas_validacion['fin'] = $accion_load->field_accion_esp_fechaf[0]['value']; } if ($accion_load && $accion_load->type == 'accion_especifica') { if ($accion_load->field_accion_esp_programacion[0]['tid']) { foreach($accion_load->field_accion_esp_programacion as $programacion) { foreach($programacion as $id_value => $mesp){ if ($id_value != 'tid') { $montos_asignados +=$mesp; } } } } $acciones_especificas[$accion_load->nid] = $accion_load; $porcentajes[$accion_load->field_accion_esp_ponderacion[0]['value']] = 1; $ejecucion += $accion_load->field_accion_esp_ponderacion[0]['value']; } } } } } $fechas_validacion['fin_texto'] = ''; $fechas_validacion['inicio_texto'] = ''; if ($fechas_validacion['inicio']) { $f_aux = explode(' ', $fechas_validacion['inicio']); $f_aux = explode('-', $f_aux[0]); $fechas_validacion['inicio_texto'] = $f_aux[2] . '-' . $f_aux[1] . '-' . $f_aux[0]; $fechas_validacion['inicio_time'] = mktime(0, 0, 0, $f_aux[1], $f_aux[2], $f_aux[0]); $f_aux = explode(' ', $proyecto_leido->field_proyecto_fecha_i[0]['value']); $f_aux = explode('-', $f_aux[0]); $fechas_validacion['inicio_current_texto'] = $f_aux[2] . '-' . $f_aux[1] . '-' . $f_aux[0]; $fechas_validacion['inicio_current_time'] = mktime(0, 0, 0, $f_aux[1], $f_aux[2], $f_aux[0]); } if ($fechas_validacion['fin']) { $f_aux = explode(' ', $fechas_validacion['fin']); $f_aux = explode('-', $f_aux[0]); $fechas_validacion['fin_texto'] = $f_aux[2] . '-' . $f_aux[1] . '-' . $f_aux[0]; $fechas_validacion['fin_time'] = mktime(0, 0, 0, $f_aux[1], $f_aux[2], $f_aux[0]); $f_aux = explode(' ', $proyecto_leido->field_proyecto_fecha_f[0]['value']); $f_aux = explode('-', $f_aux[0]); $fechas_validacion['fin_current_texto'] = $f_aux[2] . '-' . $f_aux[1] . '-' . $f_aux[0]; $fechas_validacion['fin_current_time'] = mktime(0, 0, 0, $f_aux[1], $f_aux[2], $f_aux[0]); } $form = array(); $form['#fechas_validacion'] = $fechas_validacion; $form['#montos_asignados'] = $montos_asignados; $form['#count_ae'] = count($acciones_especificas); $form['#node'] = $proyecto_leido; $node_type = content_types('proyectos_operativos'); $fields = $node_type['fields']; $field_form = array(); $fields_form = array(); if (variable_get('proyectos_operativos_muestra_enunciado_problema', TRUE)) { $arreglo = array( 'field_proyecto_causas' => 'field_proyecto_causas', 'field_proyecto_problemas' => 'field_proyecto_problemas', 'field_proyecto_consecuencias' => 'field_proyecto_consecuencias', ); $fields_form_ip_in = array(); if (is_array($fields) && count($fields)) { foreach($fields as $field_id => $field) { if (array_key_exists($field_id, $arreglo)) { $field_form[] = $field_id; $fields_form[] = $field_id; } elseif (variable_get('proyectos_operativos_ip_in_' . $field_id, FALSE)) { $fields_form_ip_in[$field_id] = $field_id; $field_form[] = $field_id; $fields_form[] = $field_id; } } } $form['#datos_institucionales_fields_datos1'] = $field_form; if (is_array($field_form) && count($field_form)) { module_load_include('inc', 'content', 'includes/content.node_form'); foreach ($field_form as $field_id) { $field = content_fields($field_id, 'proyectos_operativos'); $form['#field_info'][$field_id] = $field; $form += (array) content_field_form($form, $form_state, $field); } } } if (variable_get('proyectos_operativos_muestra_justicacion', TRUE)) { $field_form = array(); $arreglo = array( 'field_proyecto_justificacion' => 'field_proyecto_justificacion', ); $fields_form_ip_ju = array(); if (is_array($fields) && count($fields)) { foreach($fields as $field_id => $field) { if (array_key_exists($field_id, $arreglo)) { $field_form[] = $field_id; $fields_form[] = $field_id; } elseif (variable_get('proyectos_operativos_ip_ju_' . $field_id, FALSE)) { $fields_form_ip_ju[$field_id] = $field_id; $field_form[] = $field_id; $fields_form[] = $field_id; } } } $form['#datos_institucionales_fields_datosds'] = $field_form; if (is_array($field_form) && count($field_form)) { module_load_include('inc', 'content', 'includes/content.node_form'); foreach ($field_form as $field_id) { $field = content_fields($field_id, 'proyectos_operativos'); $form['#field_info'][$field_id] = $field; $form += (array) content_field_form($form, $form_state, $field); } } } if (variable_get('proyectos_operativos_muestra_alcance', TRUE)) { $field_form = array(); $arreglo = array( 'field_proyecto_alcance' => 'field_proyecto_alcance', ); $fields_form_ip_al = array(); if (is_array($fields) && count($fields)) { foreach($fields as $field_id => $field) { if (array_key_exists($field_id, $arreglo)) { $field_form[] = $field_id; $fields_form[] = $field_id; } elseif (variable_get('proyectos_operativos_ip_al_' . $field_id, FALSE)) { $fields_form_ip_al[$field_id] = $field_id; $field_form[] = $field_id; $fields_form[] = $field_id; } } } $form['#datos_institucionales_fields_datosds1'] = $field_form; if (is_array($field_form) && count($field_form)) { module_load_include('inc', 'content', 'includes/content.node_form'); foreach ($field_form as $field_id) { $field = content_fields($field_id, 'proyectos_operativos'); $form['#field_info'][$field_id] = $field; $form += (array) content_field_form($form, $form_state, $field); } } } $sa = variable_get('proyectos_operativos_muestra_sa', TRUE); $so = variable_get('proyectos_operativos_muestra_so', TRUE); if ($sa || $so) { $form['indicador'] = array( '#type' => 'fieldset', '#title' => t('Indicador de la Situación'), ); } if ($sa) { $field_form = array(); $arreglo = array( 'field_proyecto_sa_descripcion' => 'field_proyecto_sa_descripcion', ); if (variable_get('proyectos_operativos_muestra_sa_cuantificacion', TRUE)) { $arreglo['field_proyecto_sa_cuantificacion'] = 'field_proyecto_sa_cuantificacion'; } $arreglo['field_proyecto_sa_formulai'] = 'field_proyecto_sa_formulai'; $arreglo['field_proyecto_sa_fuentei'] = 'field_proyecto_sa_fuentei'; $arreglo['field_proyecto_sa_fecha'] = 'field_proyecto_sa_fecha'; $fields_form_ip_sa = array(); if (is_array($fields) && count($fields)) { foreach($fields as $field_id => $field) { if (array_key_exists($field_id, $arreglo)) { $field_form[] = $field_id; $fields_form[] = $field_id; } elseif (variable_get('proyectos_operativos_ip_sa_' . $field_id, FALSE)) { $fields_form_ip_sa[$field_id] = $field_id; $field_form[] = $field_id; $fields_form[] = $field_id; } } } $form['indicador']['sa'] = array( '#type' => 'fieldset', '#title' => t('Situación Actual'), ); $form['#datos_institucionales_fields_datosds1'] = $field_form; if (is_array($field_form) && count($field_form)) { module_load_include('inc', 'content', 'includes/content.node_form'); foreach ($field_form as $field_id) { $field = content_fields($field_id, 'proyectos_operativos'); $form['#field_info'][$field_id] = $field; $form['indicador']['sa'] += (array) content_field_form($form, $form_state, $field); } } } if ($so) { $field_form = array(); $arreglo = array( 'field_proyecto_so_descripcion' => 'field_proyecto_so_descripcion', 'field_proyecto_tiempoi' => 'field_proyecto_tiempoi', ); $fields_form_ip_so = array(); if (is_array($fields) && count($fields)) { foreach($fields as $field_id => $field) { if (array_key_exists($field_id, $arreglo)) { $field_form[] = $field_id; $fields_form[] = $field_id; } elseif (variable_get('proyectos_operativos_ip_so_' . $field_id, FALSE)) { $fields_form_ip_so[$field_id] = $field_id; $field_form[] = $field_id; $fields_form[] = $field_id; } } } $form['indicador']['so'] = array( '#type' => 'fieldset', '#title' => t('Situación Objetivo'), ); $form['#datos_institucionales_fields_datosds1'] = $field_form; if (is_array($field_form) && count($field_form)) { module_load_include('inc', 'content', 'includes/content.node_form'); foreach ($field_form as $field_id) { $field = content_fields($field_id, 'proyectos_operativos'); $form['#field_info'][$field_id] = $field; $form['indicador']['so'] += (array) content_field_form($form, $form_state, $field); } } } $field_form = array(); $arreglo = array(); $arreglo['field_proyecto_descripcion_bien'] = 'field_proyecto_descripcion_bien'; $arreglo['field_proyecto_so_cuantificacion'] = 'field_proyecto_so_cuantificacion'; $arreglo['field_proyecto_unidadm'] = 'field_proyecto_unidadm'; $personas = variable_get('proyectos_operativos_allow_unidpersona', array()); if (count($personas)) { $arreglo['field_proyecto_meta_m'] = 'field_proyecto_meta_m'; $arreglo['field_proyecto_meta_f'] = 'field_proyecto_meta_f'; } $form['#personas'] = $personas; $arreglo['field_proyecto_meta_fisica'] = 'field_proyecto_meta_fisica'; $fields_form_ip_re = array(); if (is_array($fields) && count($fields)) { foreach($fields as $field_id => $field) { if (array_key_exists($field_id, $arreglo)) { $field_form[] = $field_id; $fields_form[] = $field_id; } elseif (variable_get('proyectos_operativos_ip_re_' . $field_id, FALSE)) { $fields_form_ip_re[$field_id] = $field_id; $field_form[] = $field_id; $fields_form[] = $field_id; } } } if (is_array($field_form) && count($field_form)) { module_load_include('inc', 'content', 'includes/content.node_form'); foreach ($field_form as $field_id) { $field = content_fields($field_id, 'proyectos_operativos'); $form['#field_info'][$field_id] = $field; $form += (array) content_field_form($form, $form_state, $field); } } //obtener la fecha de inicio y fin $mes = explode('-', $form['#node']->field_proyecto_fecha_i[0]['value']); $mes_inicio = 0; if (count($mes)) { $mes_inicio = $mes[1] - 1; } //obtener la fecha de inicio y fin $mes = explode('-', $form['#node']->field_proyecto_fecha_f[0]['value']); $mes_final = 0; if (count($mes)) { $mes_final = $mes[1] - 1; } $form['#fields_form_ip_al'] = $fields_form_ip_al; $form['#fields_form_ip_in'] = $fields_form_ip_in; $form['#fields_form_ip_ju'] = $fields_form_ip_ju; $form['#fields_form_ip_sa'] = $fields_form_ip_sa; $form['#fields_form_ip_so'] = $fields_form_ip_so; $form['#fields_form_ip_re'] = $fields_form_ip_re; $form['#proyectos_operativos_fecha'] = array(); $form['#proyectos_operativos_fecha'][0] = $mes_inicio; $form['#proyectos_operativos_fecha'][1] = $mes_final; $proyectos_operativos_path = drupal_get_path('module', 'proyectos_operativos'); drupal_add_js($proyectos_operativos_path . '/js/proyectos_operativos_extra.js'); drupal_add_js($proyectos_operativos_path . '/js/proyectos_operativos1.js'); drupal_add_js(array('proyectos_operativos' => array('fecha' => $form['#proyectos_operativos_fecha'], 'unidadmpers' => $personas)), 'setting'); $format_number = array( 'decimals' => variable_get('proyectos_operativos_number_decimals', 0), 'dec_point' => variable_get('proyectos_operativos_number_dec_point', ','), 'thousands_sep' => variable_get('proyectos_operativos_number_thousands_sep', '.'), ); $form['#format_number'] = array('format_number' => $format_number); drupal_add_js($form['#format_number'], 'setting'); $form['#proyectos_operativos_fields'] = $fields_form; $form['buttons'] = array( '#prefix' => '
', '#suffix' => '
', ); $form['buttons']['registrar'] = array( '#type' => 'submit', '#default_value' => t('Aceptar'), '#weight' => 100, ); $form['buttons']['cancelar'] = array( '#type' => 'submit', '#default_value' => t('Cancelar'), '#attributes' => array('onClick' => 'window.location="' . base_path() .$_GET['q'] . '"; return false;'), '#weight' => 101, ); $form['#submit'] = array('proyectos_operativos_proyecto_indicadores_form_submit'); return $form; } /** * Implementation of proyectos_operativos_proyecto_indicadores_form_validate(). * Validar formulario de indicadores (proyectos operativos). */ function proyectos_operativos_proyecto_indicadores_form_validate($form, &$form_state) { $op = isset($form_state['values']['op']) ? $form_state['values']['op'] : ''; if ($op == t('Cancelar')) { return; } $proyectos_operativos_path = drupal_get_path('module', 'proyectos_operativos'); drupal_add_js($proyectos_operativos_path . '/js/proyectos_operativos_extra.js'); drupal_add_js($proyectos_operativos_path . '/js/proyectos_operativos1.js'); drupal_add_js(array('proyectos_operativos' => array('fecha' => $form['#proyectos_operativos_fecha'], 'unidadmpers' => $form['#personas'])), 'setting'); drupal_add_js($form['#format_number'], 'setting'); if (isset($form_state['values']['field_proyecto_meta_fisica'])) { $suma = 0; for ($i = 0; $i < 12; $i++) { if ($form['#proyectos_operativos_fecha'][0] <= $i && $form['#proyectos_operativos_fecha'][1] >= $i) { $valor = $i ? 'value_' . $i : 'value'; $suma += $form_state['values']['field_proyecto_meta_fisica'][0][$valor]; } } if (!$suma) { form_set_error('field_proyecto_meta_fisica', t('La Distribución de la Meta Fisíca del Proyecto debe tener al menos un resultado')); } if ($form_state['values']['field_proyecto_so_cuantificacion'][0]['value'] != $suma) { form_set_error('field_proyecto_so_cuantificacion', t('La cuantificación de la Meta del Proyectos debe ser igual a la Distribución de la Meta Fisíca')); } $personas = $form['#personas']; if (count($personas) && isset($personas[$form_state['values']['field_proyecto_unidadm'][0]['value']])) { $totalpersonas = $form_state['values']['field_proyecto_meta_m'][0]['value'] + $form_state['values']['field_proyecto_meta_f'][0]['value']; if ($totalpersonas != $suma) { form_set_error('field_proyecto_meta_m', t('El total de Distribución de la Meta Fisíca del Proyecto debe ser igual a la cantidad de personas')); } } } } /** * Implementation of proyectos_operativos_proyecto_indicadores_form_submit(). * Guardar formulario de indicadores (proyectos operativos). */ function proyectos_operativos_proyecto_indicadores_form_submit($form, &$form_state) { $op = isset($form_state['values']['op']) ? $form_state['values']['op'] : ''; if ($op == t('Cancelar')) { drupal_set_message(t('Se cancelo el ingreso de los indicadores del proyecto.')); $form_state['redirect'] = 'proyectosopedit/' . $form['#node']->nid; return; } if (module_exists('hs_content_taxonomy')) { foreach ($form['#field_info'] as $field_name => $field_info) { if ($field_info['widget']['type'] == 'content_taxonomy_hs') { // Change format of values to the one Content Taxonomy expects if (is_array($form_state['values'][$field_name]['tids'])) { $values = array(); foreach($form_state['values'][$field_name]['tids'] as $tid) { $values[] = array('value' => $tid); array_unshift($form_state['values'][$field_name], array('value' => $tid)); } $form_state['values'][$field_name]['tids'] = $values; } else { $values[] = array('value' => $form_state['values'][$field_name]['tids']); array_unshift($form_state['values'][$field_name],array('value' => $form_state['values'][$field_name]['tids'])); $form_state['values'][$field_name]['tids'] = $values; } } } } $field_form = $form['#proyectos_operativos_fields']; module_load_include('inc', 'node', 'node.pages'); $node_load = $form['#node']; if (isset($form_state['values']['field_proyecto_meta_fisica'])) { $suma = 0; for ($i = 0; $i < 12; $i++) { $valor = $i ? 'value_' . $i : 'value'; if ($form['#proyectos_operativos_fecha'][0] <= $i && $form['#proyectos_operativos_fecha'][1] >= $i) { $suma += $form_state['values']['field_proyecto_meta_fisica'][0][$valor]; } else { $form_state['values']['field_proyecto_meta_fisica'][0][$valor] = 0; } } } $form_values = $form_state['values']; if (is_array($field_form) && count($field_form)) { foreach ($field_form as $field_id) { if (isset($form_values[$field_id]) && is_array($form_values[$field_id])) { foreach($form_values[$field_id] as $id => $value) { if (is_numeric($id) && isset($form_values[$field_id][$id]['_error_element'])) { unset($form_values[$field_id][$id]['_error_element']); } } $node_load->{$field_id} = $form_values[$field_id]; } } } if ($node_load->nid) { $texto = t('Modificados los indicadores del proyecto'); $node_load->log = $texto; drupal_set_message($texto); } else { $texto = t('Agregados los indicadores del proyecto'); $node_load->log = $texto; drupal_set_message($texto); } $node_load->revision = 1; node_save($node_load); if ($_REQUEST['destination']) { $form_state['redirect'] = url('proyectosopedit/' . $node_load->nid . '/ae', array( 'query' => array( 'destination' => $_REQUEST['destination'], ), 'absolute' => TRUE, ) ); unset($_REQUEST['destination']); } else { // add redirect $form_state['redirect'] = 'proyectosopedit/' . $node_load->nid . '/ae'; } } /** * Implementation of _proyectos_operativos_proyecto_ae(). * Formulario de acciones especificas (proyectos operativos). */ function _proyectos_operativos_proyecto_ae($proyecto = 0, $ae = 0) { global $user; $current_time = time(); $tipo_plan = 'proyectos_operativos_formular'; $fecha = FALSE; $ente = usuario_tiene_ente($user->uid); $ente_planificador = 0; if ($ente && $ente->nid) { $ente_planificador = ente_planificador_leer_ente_planificadores($ente->nid); } $mi_fecha = ente_planificador_user_acceso_proceso($tipo_plan, $ente_planificador); if ($mi_fecha[1] + 86399 > $current_time && $mi_fecha[0] < $current_time) { $fecha = TRUE; } if (!$fecha) { muestra_mensaje($tipo_plan, $ente_planificador); } if ($fecha && $ente->nid) { muestra_mensaje($tipo_plan, $ente_planificador, 0); } $output = ''; $output .= drupal_get_form('proyectos_operativos_accion_especifica_crear_form', $proyecto, $ae); return $output; } /** * Implementation of _proyectos_operativos_proyecto_financieros(). * Ver datos financieros (proyectos operativos). */ function _proyectos_operativos_proyecto_financieros($proyecto = 0) { drupal_set_title(t('Consultar Datos Financieros')); //add breadcrumb $breadcrumb = array(); $breadcrumb[] = l(t('Home'), ''); $breadcrumb[] = l(t('Proyectos Operativos'), 'proyectos_operativos'); if ($proyecto->nid) { $breadcrumb[] = l(check_plain($proyecto->title), 'proyectosop/' . $proyecto->nid); } $breadcrumb[] = t('Datos Financieros'); drupal_set_breadcrumb($breadcrumb); global $user; $format_number = array( 'decimals' => variable_get('proyectos_operativos_number_decimals', 0), 'dec_point' => variable_get('proyectos_operativos_number_dec_point', ','), 'thousands_sep' => variable_get('proyectos_operativos_number_thousands_sep', '.'), ); $current_time = time(); $tipo_plan = 'proyectos_operativos_formular'; $fecha = FALSE; $ente = usuario_tiene_ente($user->uid); $ente_planificador = 0; if ($ente && $ente->nid) { $ente_planificador = ente_planificador_leer_ente_planificadores($ente->nid); } $mi_fecha = ente_planificador_user_acceso_proceso($tipo_plan, $ente_planificador); if ($mi_fecha[1] + 86399 > $current_time && $mi_fecha[0] < $current_time) { $fecha = TRUE; } if (!$fecha) { muestra_mensaje($tipo_plan, $ente_planificador); } if ($fecha && $ente->nid) { muestra_mensaje($tipo_plan, $ente_planificador, 0); } $output = ''; $ejecucion = 0; $acciones_especificas = array(); $arreglo_anual = array(); $arreglo_partida = array(); $titles = array(); $partidas = array(); $node_type = content_types('accion_especifica'); $fields = $node_type['fields']; $titulos_campos = array(); $valores = array(); $campos = array(); //financiamiento $arreglo_financiamiento = array(); $accion_especifica_number_fields = variable_get('accion_especifica_number_fields', 4); if ($accion_especifica_number_fields > 0) { for($i = 0; $i < $accion_especifica_number_fields; $i++) { $arreglo_financiamiento['financiamiento_' . $i] = variable_get('accion_especifica_financiamiento_label_' . $i, '') ? variable_get('accion_especifica_financiamiento_label_' . $i, '') : ''; $arreglo_financiamiento_fields['financiamiento_' . $i] = variable_get('accion_especifica_financiamiento_options_' . $i, array()); } } if (is_array($fields) && count($fields)) { foreach($fields as $field_id => $field) { $titulos_campos[$field_id] = $field['widget']['label']; } } $valores_financiamiento = array(); foreach($proyecto->field_proyecto_accion_esp as $accion) { if ($accion['nid']) { $accion_load = node_load($accion['nid']); if ($accion_load && $accion_load->type == 'accion_especifica') { foreach($campos as $field) { $valores[$field] += $accion_load->{$field}[0]['value']; } $titles[$accion_load->nid] = $accion_load->titulo_asignado; $acciones_especificas[$accion_load->nid] = $accion_load; $ejecucion += $accion_load->field_accion_esp_ponderacion[0]['value']; foreach($accion_load->field_accion_esp_programacion as $accion) { if ($accion['tid']) { $partidas[$accion['tid']] = $accion['tid']; for ($i = 0; $i < 12; $i++) { $valor = $i ? 'value_' . $i : 'value'; if (!isset($arreglo_partida[$accion_load->nid][$accion['tid']])) { $arreglo_partida[$accion_load->nid][$accion['tid']] = 0; } if (!isset($arreglo_anual[$accion_load->nid][$valor])) { $arreglo_anual[$accion_load->nid][$valor] = 0; } $arreglo_partida[$accion_load->nid][$accion['tid']] += $accion[$valor]; $arreglo_anual[$accion_load->nid][$valor] += $accion[$valor]; } } } foreach($arreglo_financiamiento as $id => $titulo) { foreach($arreglo_financiamiento_fields[$id] as $field) { if (!isset($valores_financiamiento[$field])) { $valores_financiamiento[$field] = 0; } $valores_financiamiento[$field] += $accion_load->{$field}[0]['value']; } } } } } $ftypes = array( 'value' => t('ENE'), 'value_1' => t('FEB'), 'value_2' => t('MAR'), 'value_3' => t('ABR'), 'value_4' => t('MAY'), 'value_5' => t('JUN'), 'value_6' => t('JUL'), 'value_7' => t('AGO'), 'value_8' => t('SEP'), 'value_9' => t('OCT'), 'value_10' => t('NOV'), 'value_11' => t('DEC'), ); $rows = array(); $row = array(); $row[] = array('data' => '' . t('Acciones Especificas') . '', 'rowspan' => 2, 'align' => 'center'); $row[] = array('data' => '' . t('Mes') . '', 'colspan' => 12, 'align' => 'center'); $row[] = array('data' => '' . t('Total') . '', 'rowspan' => 2, 'align' => 'center'); $rows[] = $row; $row = array(); foreach($ftypes as $valor) { $row[] = array('data' => '' . $valor . '', 'align' => 'center'); } $rows[] = $row; $i = 1; $suma_mes = array(); if (count($arreglo_anual)) { foreach($arreglo_anual as $nid => $valore) { $suma = 0; $row = array(); $row[] = array('data' => $titles[$nid], 'align' => 'center'); foreach($ftypes as $id => $valor) { $suma += $valore[$id]; if (!isset($suma_mes[$id])) { $suma_mes[$id] = 0; } $suma_mes[$valor] += $valore[$id]; $row[] = array('data' => number_format($valore[$id], $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']), 'align' => 'center'); } $row[] = array('data' => number_format($suma, $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']), 'align' => 'center'); $rows[] = $row; } $row = array(); $row[] = array('data' => '' . t('TOTAL DEL PROYECTO') . '', 'align' => 'right'); $suma = 0; foreach($ftypes as $valor) { $row[] = array('data' => '' . number_format($suma_mes[$valor], $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']) . '', 'align' => 'center'); $suma += $suma_mes[$valor]; } $style = ''; if ($suma != $proyecto->field_proyecto_monto_anual[0]['value']) { $style = ''; } $row[] = array('data' => '' . number_format($suma, $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']) . '', 'align' => 'center', 'style' => $style); $rows[] = $row; } else { $row = array(); $row[] = array('data' => t('No existen acciones especificas'), 'colspan' => 12, 'align' => 'center'); } $output .= '
' . t('Resumen financiero de las acciones') . '' . '
' . t('Monto total del proyecto para el año en curso:') . ' ' . number_format($proyecto->field_proyecto_monto_anual[0]['value'], $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']) . '
' . theme('table', array(), $rows) . '
'; $rows = array(); $row = array(); $row[] = array('data' => '' . t('Acciones Especificas') . '', 'rowspan' => 2, 'align' => 'center'); $row[] = array('data' => '' . t('Partidas') . '', 'colspan' => count($partidas), 'align' => 'center'); $row[] = array('data' => '' . t('Total') . '', 'rowspan' => 2, 'align' => 'center'); $rows[] = $row; $row = array(); foreach($partidas as $valor) { $term = taxonomy_get_term($valor); // If this term's vocabulary supports localization. if (module_exists('i18ntaxonomy') && i18ntaxonomy_vocabulary($term->vid) == I18N_TAXONOMY_LOCALIZE) { $term->name = tt("taxonomy:term:$term->tid:name", $term->name); } $row[] = array('data' => '' . $term->name . '', 'align' => 'center'); } $rows[] = $row; $suma_mes = array(); if (count($arreglo_partida)) { foreach($arreglo_partida as $nid => $valore) { $suma = 0; $row = array(); $row[] = array('data' => $titles[$nid], 'align' => 'center'); foreach($partidas as $valor) { if (!$valore[$valor]) { $valore[$valor] = 0; } $suma += $valore[$valor]; if (!isset($suma_mes[$valor])) { $suma_mes[$valor] = 0; } $suma_mes[$valor] += $valore[$valor]; $row[] = array('data' => number_format($valore[$valor], $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']), 'align' => 'center'); } $row[] = array('data' => number_format($suma, $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']), 'align' => 'center'); $rows[] = $row; } $row = array(); $row[] = array('data' => '' . t('TOTAL DEL PROYECTO') . '', 'align' => 'right'); $suma = 0; foreach($partidas as $valor) { $row[] = array('data' => '' . number_format($suma_mes[$valor], $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']) . '', 'align' => 'center'); $suma += $suma_mes[$valor]; } $style = ''; if ($suma != $proyecto->field_proyecto_monto_anual[0]['value']) { $style = ''; } $row[] = array('data' => '' . number_format($suma, $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']) . '', 'align' => 'center', 'style' => $style); $rows[] = $row; } else { $row = array(); $row[] = array('data' => t('No existen acciones especificas'), 'colspan' => 12, 'align' => 'center'); } $output .= '
' . t('Distribución por partida presupuestaria') . '' . '
' . t('Monto total del proyecto para el año en curso:') . ' ' . number_format($proyecto->field_proyecto_monto_anual[0]['value'], $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']) . '
' . theme('table', array(), $rows) . '
'; $rows = array(); $row = array(); $totales_fin = array(); foreach($arreglo_financiamiento as $id => $titulo) { $output1 = '
' . $titulo . ''; foreach($arreglo_financiamiento_fields[$id] as $field) { if ($field) { if (!isset($totales_fin[$id])) { $totales_fin[$id] = 0; } //$valores[$field] = $valores_financiamiento[$field]; $totales_fin[$id] += $valores_financiamiento[$field]; $output1 .= '
' . $titulos_campos[$field] . ': ' . number_format($valores_financiamiento[$field], $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']) . '
'; } } $output1 .= '
'; $row[] = array('data' => $output1, 'align' => 'center'); } $rows[] = $row; $row = array(); $total_total = 0; foreach($arreglo_financiamiento as $id => $arreglo) { $total_total += $totales_fin[$id]; $row[] = array('data' => number_format($totales_fin[$id], $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']), 'align' => 'center'); } $rows[] = $row; $row = array(); $row[] = array('data' => '' . t('TOTAL FUENTES DE FINANCIAMIENTO') . ': ' . number_format($total_total, $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']), 'align' => 'center', 'colspan' => count($arreglo_financiamiento)); $rows[] = $row; $output .= '
' . t('Fuentes de financiamiento') . '' . '
' . t('Monto total del proyecto para el año en curso:') . ' ' . number_format($proyecto->field_proyecto_monto_anual[0]['value'], $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']) . '
' . theme('table', array(), $rows) . '
'; // if (_proyectos_operativos_access_editar($proyecto)) { if (_proyectos_operativos_edita_datos_wk_access($proyecto)) { $output .= _proyectos_operativos_proyecto_ver_workflow($proyecto); } return $output; } /** * Implementation of hook_planner_items_toolbar(). */ function proyectos_operativos_planner_items_toolbar($ente_planificador, $handler_icon) { $link = array(); $icon_path = entes_planificadores_toolbar_get_icon_path('planner', 'proyectosop', $handler_icon); $link[] = array( 'path' => 'proyectos_operativos', 'icon_path' => $icon_path, 'icon' => theme('image', $icon_path, t('Consultar Información de los proyectos operativos del actor planificador'), t('Consultar Información de los proyectos operativos del actor planificador'), array('class' => 'handler-icon-' . $handler_icon)), 'title' => t('Proyectos operativos'), 'description' => t('Consultar Información de los proyectos operativos del actor planificador'), 'category' => 'planner', ); return $link; } /** * Implementation of hook_admin_items_toolbar(). */ function proyectos_operativos_admin_items_toolbar($handler_icon) { $link = array(); $icon_path = entes_planificadores_toolbar_get_icon_path('admin', 'proyectosop', $handler_icon); $link[] = array( 'path' => 'proyectos_operativos', 'icon_path' => $icon_path, 'icon' => theme('image', $icon_path, t('Consultar Información de los proyectos operativos del actor planificador'), t('Consultar Información de los proyectos operativos del actor planificador'), array('class' => 'handler-icon-' . $handler_icon)), 'title' => t('Proyectos operativos'), 'description' => t('Consultar Información de los proyectos operativos del actor planificador'), 'category' => 'planner', ); return $link; } /** * Implementation of hook_theme(). */ function proyectos_operativos_theme() { $proyectos_operativos_path = drupal_get_path('module', 'proyectos_operativos') . '/templates'; return array( 'proyectos_operativos_proyecto_basico_form' => array( 'arguments' => array('form' => NULL), ), 'proyectos_operativos_proyecto_generales_form' => array( 'arguments' => array('form' => NULL), ), 'proyectos_operativos_proyecto_indicadores_form' => array( 'arguments' => array('form' => NULL), ), 'proyectos_operativos_ficha_proyecto' => array( 'arguments' => array( 'proyecto' => array(), ), 'template' => 'proyectos-operativos-ficha-proyecto', 'path' => $proyectos_operativos_path, ), 'proyecto_operativos_flujo_avance' => array( 'arguments' => array( 'proyecto' => array(), 'states' => array(), ), 'template' => 'proyectos-operativos-flujo-avance', 'path' => $proyectos_operativos_path, ), ); } /** * @ingroup themeable * @see proyectos_operativos_proyecto_basico_form */ function theme_proyectos_operativos_proyecto_basico_form($form) { $output = ''; $fecha_inicio = $form['#fechas_validacion']['inicio']; if ($form['#count_ae']) { $format_number = array( 'decimals' => variable_get('proyectos_operativos_number_decimals', 0), 'dec_point' => variable_get('proyectos_operativos_number_dec_point', ','), 'thousands_sep' => variable_get('proyectos_operativos_number_thousands_sep', '.'), ); $mensaje_mostrar = t('Existen @count_ae Acciones Específicas asignadas, con un monto total de @montos_asignados Bs asignados. y fechas de Inicio @inicio y fin @fin. Tome en consideración estos valores al momento de modificar los valores de los campos @title_fecha_i, @final title_fecha_f y @title_monto_total_proyecto_year', array('@count_ae' => $form['#count_ae'], '@montos_asignados' => number_format($form['#montos_asignados'], $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']), '@inicio' => $form['#fechas_validacion']['inicio_texto'], '@fin' => $form['#fechas_validacion']['fin_texto'], '@title_fecha_i' => $form['field_proyecto_fecha_i']['#title'], '@final title_fecha_f' => $form['field_proyecto_fecha_f']['#title'], '@title_monto_total_proyecto_year' => $form['field_proyecto_monto_anual']['#title'] )); $output .= '
' . $mensaje_mostrar . '
'; } $output .= '
' . t('Datos Básicos de Identificación del Proyecto'); $output .= '' . drupal_render($form['field_proyecto_titulo']); if (isset($form['field_proyecto_codigo']) && $form['field_proyecto_codigo']['#access']) { $output .= drupal_render($form['field_proyecto_codigo']); } if (isset($form['field_proyecto_fecha_i']) && $form['field_proyecto_fecha_i']['#access']) { $output .= drupal_render($form['field_proyecto_fecha_i']); } if (isset($form['field_proyecto_fecha_f']) && $form['field_proyecto_fecha_f']['#access']) { $output .= drupal_render($form['field_proyecto_fecha_f']); } if (isset($form['field_proyecto_status']) && $form['field_proyecto_status']['#access']) { $output .= drupal_render($form['field_proyecto_status']); } if (isset($form['field_proyecto_situacion_p']) && $form['field_proyecto_situacion_p']['#access']) { $output .= drupal_render($form['field_proyecto_situacion_p']); } if (isset($form['field_proyecto_plurianual']) && $form['field_proyecto_plurianual']['#access']) { $output .= drupal_render($form['field_proyecto_plurianual']); } if (isset($form['field_proyecto_monto_anual']) && $form['field_proyecto_monto_anual']['#access']) { $output .= drupal_render($form['field_proyecto_monto_anual']); } if (isset($form['field_proyecto_total']) && $form['field_proyecto_total']['#access']) { $output .= drupal_render($form['field_proyecto_total']); } if (isset($form['field_proyecto_poan']) && $form['field_proyecto_poan']['#access']) { $output .= drupal_render($form['field_proyecto_poan']); } if (is_array($form['#fields_form_ac_d']) && count($form['#fields_form_ac_d'])) { foreach($form['#fields_form_ac_d'] as $id_a) { $output .= drupal_render($form[$id_a]); } } $output .= '
'; $gerentes = variable_get('proyectos_operativos_muestra_gerentes', TRUE); $output .= '
' . t('Gerente del Proyecto') . ''; if ($gerentes) { $output .= '
' . check_plain($form['#ente_planificador']->title) . '
'; if (isset($form['field_proyecto_ente']) && $form['field_proyecto_ente']['#access']) { $output .= drupal_render($form['field_proyecto_ente']); } if (isset($form['field_proyecto_autoridad']) && $form['field_proyecto_autoridad']['#access']) { $output .= drupal_render($form['field_proyecto_autoridad']); } if (isset($form['field_proyecto_lider']) && $form['field_proyecto_lider']['#access']) { $output .= drupal_render($form['field_proyecto_lider']); } if (isset($form['field_proyecto_unidad_a']) && $form['field_proyecto_unidad_a']['#access']) { $output .= drupal_render($form['field_proyecto_unidad_a']); } if (isset($form['field_proyecto_cargo']) && $form['field_proyecto_cargo']['#access']) { $output .= drupal_render($form['field_proyecto_cargo']); } if (isset($form['field_proyecto_telefono']) && $form['field_proyecto_telefono']['#access']) { $output .= drupal_render($form['field_proyecto_telefono']); } if (isset($form['field_proyecto_correo']) && $form['field_proyecto_correo']['#access']) { $output .= drupal_render($form['field_proyecto_correo']); } } if (is_array($form['#fields_form_ac_di']) && count($form['#fields_form_ac_di'])) { foreach($form['#fields_form_ac_d'] as $id_a) { $output .= drupal_render($form[$id_a]); } } $output .= '
'; $pndes = variable_get('proyectos_operativos_muestra_pndes', TRUE); $mcti = variable_get('proyectos_operativos_muestra_mcti', TRUE); $count_ac_p = count($form['#fields_form_ac_p']); if ($pndes || $mcti || $count_ac_p) { $output .= '
' . t('Área Estrategica') . ''; if ($pndes) { $output .= drupal_render($form['field_proyecto_pndes']); } if ($mcti) { $output .= drupal_render($form['field_proyecto_mcti']); } if ($count_ac_p) { foreach($form['#fields_form_ac_p'] as $id_a) { $output .= drupal_render($form[$id_a]); } } $output .= '
'; } $output .= drupal_render($form); return $output; } /** * @ingroup themeable * @see proyectos_operativos_proyecto_generales_form */ function theme_proyectos_operativos_proyecto_generales_form($form) { $arreglo = array( 'field_proyecto_emdirecto' => 'field_proyecto_emdirecto', 'field_proyecto_efdirecto' => 'field_proyecto_efdirecto', 'field_proyecto_emindirecto' => 'field_proyecto_emindirecto', 'field_proyecto_efindirecto' => 'field_proyecto_efindirecto', ); $output = ''; if ($form['#count_ae'] && $form['#montos_asignados']!= $form['#node']->field_proyecto_monto_anual[0]['value']) { $link_acciones = l(t('Modificar Acciones específicas'), 'proyectosopedit/' . $form['#node']->nid . '/ae'); $link_proyecto = l(t('Modificar Monto del Proyecto'), 'proyectosopedit/' . $form['#node']->nid); $format_number = array( 'decimals' => variable_get('proyectos_operativos_number_decimals', 0), 'dec_point' => variable_get('proyectos_operativos_number_dec_point', ','), 'thousands_sep' => variable_get('proyectos_operativos_number_thousands_sep', '.'), ); $mensaje_mostrar = t('Existen @count_ae Acciones Específicas asignadas con un monto total de @montos_asignados Bs, el cual difiere con el monto asignado en el proyecto para el @title_monto_total_proyecto_year (@monto_proyecto). Modifique los montos de las Acciones Específicas en !link_acciones o el monto del proyecto !link_proyecto para poder cerrar el proyecto operativo @nombre_proyecto', array('@count_ae' => $form['#count_ae'], '@montos_asignados' => number_format($form['#montos_asignados'], $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']), '@title_monto_total_proyecto_year' => $form['#proyecto_fields']['field_proyecto_monto_anual']['widget']['label'], '@monto_proyecto' => number_format($form['#node']->field_proyecto_monto_anual[0]['value'], $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']), '!link_acciones' => $link_acciones, '!link_proyecto' => $link_proyecto, '@nombre_proyecto' => $form['#node']->titulo_asignado,)); $output .= '
' . $mensaje_mostrar . '
'; } if ($form['#count_ae'] && $fechas_validacion['inicio'] && $fechas_validacion['fin'] && ($fechas_validacion['inicio_time'] < $fechas_validacion['inicio_current_time'] || $fechas_validacion['fin_current_time'] < $fechas_validacion['fin_time'])) { $link_acciones = l(t('Modificar Acciones específicas'), 'proyectosopedit/' . $form['#node']->nid . '/ae'); $link_proyecto = l(t('Modificar Monto del Proyecto'), 'proyectosopedit/' . $form['#node']->nid); $mensaje_mostrar = t('Existen @count_ae Acciones Específicas asignadas que difieren con la @title_fecha_de_inicio o @title_fecha_de_final del Proyecto. Modifique los montos de las Acciones Específicas en !link_acciones o el monto del proyecto !link_proyecto para poder cerrar el proyecto operativo @nombre_proyecto', array('@count_ae' => $form['#count_ae'], '@title_fecha_de_inicio' => $form['#proyecto_fields']['field_proyecto_fecha_i']['widget']['label'], '@title_fecha_de_final' => $form['#proyecto_fields']['field_proyecto_fecha_f']['widget']['label'], '!link_acciones' => $link_acciones, '!link_proyecto' => $link_proyecto, '@nombre_proyecto' => $form['#node']->titulo_asignado,)); $output .= '
' . $mensaje_mostrar . '
'; } $output .= '
' . t('Clasificación Sectorial') . '' . drupal_render($form['field_proyecto_sector']); if (count($form['#fields_form_dg_se'])) { foreach($form['#fields_form_dg_se'] as $id_c) { $output .= drupal_render($form[$id_c]); } } $output .= '
'; if (variable_get('proyectos_operativos_muestra_talento', TRUE)) { $output .= drupal_render($form['talento']); } if (variable_get('proyectos_operativos_muestra_capacidades', TRUE)) { $output .= drupal_render($form['capacidades']); } $output .= '
' . t('Instituciones') . '' . drupal_render($form['field_proyecto_relacion']); if (count($form['#fields_form_dg_r'])) { foreach($form['#fields_form_dg_r'] as $id_c) { $output .= drupal_render($form[$id_c]); } } $output .= '
'; $output .= '
' . t('Empleos Generados') . '' . t('Nro Estimados de Empleos:'); $output .= ''; $output1 = ''; foreach($arreglo as $empleo) { $output .= ''; $form[$empleo][0]['value']['#title'] = ''; $output1 .= ''; } $output1 .= ''; $output .= ''; $output1 .= ''; $output .= '' . $output1 .'
' . $form[$empleo]['#title'] . '' . drupal_render($form[$empleo]) . '
' . t('TOTAL') . '
'; if (variable_get('proyectos_operativos_muestra_beneficiario', TRUE)) { $output .= drupal_render($form['beneficiario']); } $output .= '
' . t('Objetivos del Proyecto') . '' . drupal_render($form['field_proyecto_og']) . drupal_render($form['field_proyecto_oe']); if (count($form['#fields_form_dg_o'])) { foreach($form['#fields_form_dg_o'] as $id_c) { $output .= drupal_render($form[$id_c]); } } $output .= '
'; $output .= drupal_render($form); return $output; } /** * @ingroup themeable * @see proyectos_operativos_proyecto_indicadores_form */ function theme_proyectos_operativos_proyecto_indicadores_form($form) { $output = ''; if ($form['#count_ae'] && $form['#montos_asignados']!= $form['#node']->field_proyecto_monto_anual[0]['value']) { $format_number = array( 'decimals' => variable_get('proyectos_operativos_number_decimals', 0), 'dec_point' => variable_get('proyectos_operativos_number_dec_point', ','), 'thousands_sep' => variable_get('proyectos_operativos_number_thousands_sep', '.'), ); $link_acciones = l(t('Modificar Acciones específicas'), 'proyectosopedit/' . $form['#node']->nid . '/ae'); $link_proyecto = l(t('Modificar Monto del Proyecto'), 'proyectosopedit/' . $form['#node']->nid); $mensaje_mostrar = t('Existen @count_ae Acciones Específicas asignadas con un monto total de @montos_asignados Bs, el cual difiere con el monto asignado en el proyecto para el @title_monto_total_proyecto_year (@monto_proyecto). Modifique los montos de las Acciones Específicas en !link_acciones o el monto del proyecto !link_proyecto para poder cerrar el proyecto operativo @nombre_proyecto', array('@count_ae' => $form['#count_ae'], '@montos_asignados' => number_format($form['#montos_asignados'], $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']), '@title_monto_total_proyecto_year' => $form['#proyecto_fields']['field_proyecto_monto_anual']['widget']['label'], '@monto_proyecto' => number_format($form['#node']->field_proyecto_monto_anual[0]['value'], $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']), '!link_acciones' => $link_acciones, '!link_proyecto' => $link_proyecto, '@nombre_proyecto' => $form['#node']->titulo_asignado,)); $output .= '
' . $mensaje_mostrar . '
'; } if ($form['#count_ae'] && $fechas_validacion['inicio'] && $fechas_validacion['fin'] && ($fechas_validacion['inicio_time'] < $fechas_validacion['inicio_current_time'] || $fechas_validacion['fin_current_time'] < $fechas_validacion['fin_time'])) { $link_acciones = l(t('Modificar Acciones específicas'), 'proyectosopedit/' . $form['#node']->nid . '/ae'); $link_proyecto = l(t('Modificar Monto del Proyecto'), 'proyectosopedit/' . $form['#node']->nid); $mensaje_mostrar = t('Existen @count_ae Acciones Específicas asignadas que difieren con la @title_fecha_de_inicio o @title_fecha_de_final del Proyecto. Modifique los montos de las Acciones Específicas en !link_acciones o el monto del proyecto !link_proyecto para poder cerrar el proyecto operativo @nombre_proyecto', array('@count_ae' => $form['#count_ae'], '@title_fecha_de_inicio' => $form['#proyecto_fields']['field_proyecto_fecha_i']['widget']['label'], '@title_fecha_de_final' => $form['#proyecto_fields']['field_proyecto_fecha_f']['widget']['label'], '!link_acciones' => $link_acciones, '!link_proyecto' => $link_proyecto, '@nombre_proyecto' => $form['#node']->titulo_asignado,)); $output .= '
' . $mensaje_mostrar . '
'; } if (variable_get('proyectos_operativos_muestra_enunciado_problema', TRUE)) { $output .= '
' . t('Enunciado del Problema') . '' . drupal_render($form['field_proyecto_causas']) . drupal_render($form['field_proyecto_problemas']) . drupal_render($form['field_proyecto_consecuencias']); if (count($form['#fields_form_ip_in'])) { foreach($form['#fields_form_ip_in'] as $id_c) { $output .= drupal_render($form[$id_c]); } } $output .= '
'; } if (variable_get('proyectos_operativos_muestra_justicacion', TRUE)) { $output .= '
' . t('Justificación del Proyecto') . '' . drupal_render($form['field_proyecto_justificacion']); if (count($form['#fields_form_ip_ju'])) { foreach($form['#fields_form_ip_ju'] as $id_c) { $output .= drupal_render($form[$id_c]); } } $output .= '
'; } if (variable_get('proyectos_operativos_muestra_alcance', TRUE)) { $output .= '
' . t('Alcance del Proyecto') . '' . drupal_render($form['field_proyecto_alcance']); if (count($form['#fields_form_ip_al'])) { foreach($form['#fields_form_ip_al'] as $id_c) { $output .= drupal_render($form[$id_c]); } } $output .= '
'; } $sa = variable_get('proyectos_operativos_muestra_sa', TRUE); $so = variable_get('proyectos_operativos_muestra_so', TRUE); if ($sa || $so) { $output .= drupal_render($form['indicador']); } $output .= '
' . t('Indicador del resultado del Proyecto') . '' ; $output .= drupal_render($form['field_proyecto_descripcion_bien']); $output .= drupal_render($form['field_proyecto_unidadm']); $output .= drupal_render($form['field_proyecto_so_cuantificacion']); if (isset($form['field_proyecto_meta_m']) && $form['field_proyecto_meta_f']) { $output .= '
'; $form['field_proyecto_meta_m'][0]['value']['#title'] = ''; $form['field_proyecto_meta_f'][0]['value']['#title'] = ''; $total = $form['field_proyecto_meta_m'][0]['#value']['value'] + $form['field_proyecto_meta_f'][0]['#value']['value']; $output .= ''; $output .= ''; $output .= '
' . $form['field_proyecto_meta_m']['#title'] . '' . $form['field_proyecto_meta_f']['#title'] . '' . t('Total') . '
' . drupal_render($form['field_proyecto_meta_m']) . '' . drupal_render($form['field_proyecto_meta_f']) . '
' . number_format($total, $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']) . '
'; } $output .= drupal_render($form['field_proyecto_meta_fisica']); if (count($form['#fields_form_ip_re'])) { foreach($form['#fields_form_ip_re'] as $id_c) { $output .= drupal_render($form[$id_c]); } } $output .= '
'; $output .= drupal_render($form); return $output; } function proyectos_operativos_theme_registry_alter(&$theme_registry) { $theme_registry['hierarchical_select_select']['function'] = 'proyectos_operativos_hierarchical_select_select'; } /** * Format a select in the .hierarchial-select div: prevent it from being * wrapped in a div. This simplifies the CSS and JS code. * * @param $element * An associative array containing the properties of the element. * @return * A themed HTML string representing the form element. */ function proyectos_operativos_hierarchical_select_select($element) { $display_label = ''; foreach($element['#options'] as $id => $label) { if ($label && !is_numeric($id)) { $display_label = ''; $element['#options'][$id] = t('seleccione'); } } $select = ''; $size = $element['#size'] ? ' size="'. $element['#size'] .'"' : ''; $class = array('form-select'); if (form_get_error($element) === '') { $class = array_merge($class, array('error')); } _form_set_class($element, $class); $multiple = isset($element['#multiple']) && $element['#multiple']; return $display_label . ''; } /** * Implementation of hook_views_api(). */ function proyectos_operativos_views_api() { return array( 'api' => '2.0', 'path' => drupal_get_path('module', 'proyectos_operativos') . '/views', ); } /** * Implementation of proyectos_operativos_search_ac_display(). * Muestra la lista de proyectos disponibles. */ function proyectos_operativos_agregar_proyectoente() { global $user; //add breadcrumb $breadcrumb = array(); $breadcrumb[] = l(t('Home'), ''); $breadcrumb[] = t('Proyectos Operativos'); drupal_set_breadcrumb($breadcrumb); $view_id = 'Agregar_proyecto'; $view = views_get_view($view_id); $display_id = 'default'; $view->set_display($display_id); $view->override_path = $_GET['q']; $view->pre_execute(); $view->execute(); $output = $view->render(); return $output; } /** * Implementation of hook_block(). * * Genera un bloque con el estatus de la planificación */ function proyectos_operativos_block($op = 'list', $delta = 0) { if (module_exists('workflow')) { $wid = workflow_get_workflow_for_type('proyectos_operativos'); if ($wid) { if ($op == 'list') { $blocks[0]['info'] = t('Estatus del Avance de proyectos'); return $blocks; } else if ($op == 'view' && user_access('ver planificador')) { if((arg(0) == 'proyectosop' && is_numeric(arg(1)))) { $states = workflow_get_states($wid); $proyecto = node_load(arg(1)); $block['subject'] = t('Avance del Proyecto'); $block['content'] = _proyecto_operativos_flujo_avance_theme($proyecto, $states); } return $block; } } } } /** * Implementation of _proyecto_operativos_flujo_avance_theme(). */ function _proyecto_operativos_flujo_avance_theme($proyecto = 0, $states = 0) { if (count($states)) { return theme('proyecto_operativos_flujo_avance', $proyecto, $states); } else { return t('No se han definido estados para Proyectos Operativos'); } }