t('Continuar Proyecto Plurianual'), 'page callback' => '_continuarproyectosopplurianual', 'page arguments' => array(1), 'access callback' => '_proyectosopplurianual_access_add', 'access arguments' => array(1), 'weight' => -7, 'type' => MENU_NORMAL_ITEM, ); return $items; } /** * Implementation of _proyectos_operativos_access_editar() * Menu access control callback. Determina si un usuario tiene acceso a editar un proyecto */ function _proyectosopplurianual_access_add($node) { global $user; if (!user_access('Agregar proyecto Plurianual')) { return FALSE; } if ($node->field_proyecto_plurianual[0]['value'] != variable_get('proyectos_operativos_plurianual', 0)) { return FALSE; } if (module_exists('workflow')) { $estado_aprobado = variable_get('proyectos_operativos_state_aprobado', NULL); if ($node->_workflow != $estado_aprobado) { return FALSE; } } if ($node->anhoproyectos_operativos != variable_get('proyectos_operativos_anho_creacion', 0) - 1) { 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); 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) { $fecha = TRUE; } elseif (!user_access('admin planificador')) { $fecha = FALSE; } } return $fecha && $roles_perm; } /** * Implementation of _proyectos_operativos_proyecto_agregar_proyecto($proyecto). * Agregar un nuevo proyecto. */ function _continuarproyectosopplurianual($proyecto = 0) { $output = ''; $output .= drupal_get_form('continuarproyectosopplurianual_agregar_proyectos_operativo_form', $proyecto); return $output; } /** * Implementation of proyectos_operativos_proyecto_basico_form(). * Formulario de datos basicos (proyectos operativos). */ function continuarproyectosopplurianual_agregar_proyectos_operativo_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[] = t('Continuar Proyecto Plurianual'); // 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']); } $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; $proyecto_leido = new stdClass(); $proyecto_leido->type = 'proyectos_operativos'; $proyecto_leido->title = ''; $proyecto_leido->field_proyecto_ente[0]['nid'] = $ente_planificador->nid; $proyecto_leido->field_proyecto_plurianualb[0]['nid'] = $proyecto->nid; $arreglo = array( 'field_proyecto_titulo' => 'field_proyecto_titulo', 'field_proyecto_codigo' => 'field_proyecto_codigo', 'field_proyecto_status' => 'field_proyecto_status', 'field_proyecto_situacion_p' => 'field_proyecto_situacion_p', 'field_proyecto_plurianual' => 'field_proyecto_plurianual', 'field_proyecto_total' => 'field_proyecto_total', 'field_proyecto_poan' => 'field_proyecto_poan', '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', 'field_proyecto_emdirecto' => 'field_proyecto_emdirecto', 'field_proyecto_efdirecto' => 'field_proyecto_efdirecto', 'field_proyecto_emindirecto' => 'field_proyecto_emindirecto', 'field_proyecto_efindirecto' => 'field_proyecto_efindirecto', 'field_proyecto_og' => 'field_proyecto_og', 'field_proyecto_oe' => 'field_proyecto_oe', ); 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'; } 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', ); } 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', ); } 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'; } } 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', ); } if (variable_get('proyectos_operativos_muestra_justicacion', TRUE)) { $arreglo += array( 'field_proyecto_justificacion' => 'field_proyecto_justificacion', ); } if (variable_get('proyectos_operativos_muestra_alcance', TRUE)) { $arreglo += array( 'field_proyecto_alcance' => 'field_proyecto_alcance', ); } $sa = variable_get('proyectos_operativos_muestra_sa', TRUE); $so = variable_get('proyectos_operativos_muestra_so', TRUE); if ($sa) { $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'; } if ($so) { $arreglo += array( 'field_proyecto_so_descripcion' => 'field_proyecto_so_descripcion', 'field_proyecto_so_cuantificacion' => 'field_proyecto_so_cuantificacion', 'field_proyecto_tiempoi' => 'field_proyecto_tiempoi', ); } $arreglo['field_proyecto_descripcion_bien'] = 'field_proyecto_descripcion_bien'; $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'; } $arreglo['field_proyecto_meta_fisica'] = 'field_proyecto_meta_fisica'; foreach ($arreglo as $indice) { $proyecto_leido->{$indice} = $proyecto->{$indice}; } $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', '.'), ); $node_type = content_types('proyectos_operativos'); $fields = $node_type['fields']; $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; $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', ); 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['#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); } } $form['#proyecto_anho'] = variable_get('proyectos_operativos_anho_creacion', 0) ? variable_get('proyectos_operativos_anho_creacion', 0) : date("Y"); $form['#proyectos_operativos_fields'] = $fields_form; $form['buttons'] = array( '#prefix' => '
', '#suffix' => '
', '#weight' => 200, ); $form['buttons']['registrar'] = array( '#type' => 'submit', '#default_value' => t('Continuar Proyecto Plurianual'), '#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('continuarproyectosopplurianual_agregar_proyectos_operativo_form_submit'); return $form; } /* * Implementation of proyectos_operativos_proyecto_basico_form_validate() * Validar formulario de datos basicos (proyectos operativos). */ function continuarproyectosopplurianual_agregar_proyectos_operativo_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'); //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')); } $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']))); } } } /* * Implementation of proyectos_operativos_proyecto_basico_form_submit(). * Guardar formulario de datos basicos (proyectos operativos). */ function continuarproyectosopplurianual_agregar_proyectos_operativo_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; $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('Agregado la continuación del proyecto Plurianual'); $node_load->log = t('Agregado la continuación del proyecto Plurianual'); drupal_set_message($texto); } $node_load->revision = 1; node_save($node_load); if ($_REQUEST['destination']) { $form_state['redirect'] = url('proyectosopedit/' . $node_load->nid, array( 'query' => array( 'destination' => $_REQUEST['destination'], ), 'absolute' => TRUE, ) ); unset($_REQUEST['destination']); } else { // add redirect $form_state['redirect'] = 'proyectosopedit/' . $node_load->nid; } } /* * Implementation of hook_proyecto_obtiene_links_alter() */ function continuarproyectosopplurianual_proyecto_obtiene_links_alter(&$links, $proyecto, $acceso = FALSE) { if (_proyectosopplurianual_access_add($proyecto)) { $nid_proyecto_base = (isset($proyecto->field_proyecto_plurianualb[0]['nid']) && $proyecto->field_proyecto_plurianualb[0]['nid'])? $proyecto->field_proyecto_plurianualb[0]['nid'] : $proyecto->nid; $links['proyecto_plurianual'] = array( 'data' => l(t('Continuar Proyecto Plurianual'), 'continuarproyectosopplurianual/' . $nid_proyecto_base), 'class' => 'continuar-proyectos-operativos', ); } }