source: sipp/0.3-stable-modules/entes_detail_workflow/entes_detail_workflow.module @ e51826a

0.3-stable
Last change on this file since e51826a was 221dd7a, checked in by José Gregorio Puentes <jpuentes@…>, 9 años ago

se creo una vista para listar los comentarios realizados a los campos, asi como se mejoro este proceso

  • Propiedad mode establecida a 100644
File size: 50.8 KB
Línea 
1<?php
2  /**
3  * Modulo para la gestión de los detalles de comentarios en workflow
4  * Sistema Automatizado para la Planificación Estratégico-Situacional en la Administración Pública Venezolana
5  * @file entes_detail_workflow.module
6  * Drupal part Module to code ente planificador module
7  * Copyright 2011 Sistema Automatizado para la Planificación Estratégico-Situacional en la Administración Pública Venezolana (CENDITEL)
8  *
9  * This program is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation; either version 2 of the License, or
12  * (at your option) any later version.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program; if not, write to the Free Software
21  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
22  *
23  * @author Cenditel Merida - Msc. Juan Vizcarrondo
24  * @date 2015-05-21 // (a&#241;o-mes-dia)
25  * @version 0.2 // (0.1)
26  *
27  */
28
29/*
30 * Implementation of hook_nodeapi()
31 */
32function entes_detail_workflow_nodeapi(&$node, $op, $teaser = NULL, $page = NULL) {
33  switch ($op) {
34    case 'view':
35      if ($node->type == 'proyectos_operativos') {
36        //Se obtienen las AE
37        $aes = array();
38        foreach($node->field_proyecto_accion_esp as $ae){
39          if (isset($ae['nid'])){
40            $aes[$ae['nid']] = $ae['safe']['title'];
41          }
42
43        }
44        $node_type = content_types('proyectos_operativos');
45        $fields = $node_type['fields'];
46        $node_type1 = content_types('accion_especifica');
47        $fields1 = $node_type1['fields'];
48        $result = db_query("SELECT sid, state FROM {workflow_states} WHERE status = 1 ORDER BY sid");
49        while ($data = db_fetch_object($result)) {
50          $states[$data->sid] = check_plain(t($data->state));
51        }
52        //leer los comentarios
53        $result = db_query("SELECT e.*, u.name, u.uid, w.old_sid, w.comment FROM {entes_detail_workflow} AS e INNER JOIN {workflow_node_history} AS w ON w.hid = e.hid INNER JOIN {users} AS u ON w.uid =u.uid WHERE id = %d AND tipo = 'proyectos_operativos' AND active = 1 ORDER BY time DESC", $node->nid);
54        $tablas_row = array();
55        $headers_tabla = array();
56        $headers_tabla[] = array('data' => t('Fecha'));
57        $headers_tabla[] = array('data' => t('Estado Pasado'));
58        $headers_tabla[] = array('data' => t('Estado Nuevo'));
59        $headers_tabla[] = array('data' => t('Usuario'));
60        $headers_tabla[] = array('data' => t('Comentario General'));
61        $headers_tabla[] = array('data' => t('Campo'));
62        $headers_tabla[] = array('data' => t('Comentario')); 
63        $rows = array();
64        while($comentario = db_fetch_object($result)) {
65          $row = array();
66          $row[] = array('data' => format_date($comentario->time),);
67          $estado = isset($states[$comentario->old_sid])? $states[$comentario->old_sid] : 'N/A';
68          $row[] = array('data' => $estado,);
69          $estado = isset($states[$comentario->sid])? $states[$comentario->sid] : 'N/A';
70          $row[] = array('data' => $estado,);
71          $row[] = array('data' => theme('username', $comentario),);
72          $row[] = array('data' => filter_xss($comentario->comment, array('a', 'em', 'strong')),);
73          $titulo = $comentario->field_name;
74          if ($comentario->field_name == 'title') {
75            $titulo = t('Nombre del Proyecto');
76          }
77          elseif(isset($fields[$comentario->field_name])){
78            $titulo = $fields[$comentario->field_name]['widget']['label'];
79          }
80          else {
81            $nidae = explode('_', $comentario->field_name);
82            if (is_numeric($nidae[0])){
83              $nid = $nidae[0];
84              unset($nidae[0]);
85              $field = implode('_', $nidae);
86              if (isset($fields1[$field])) {
87                $ae_title = isset($aes[$nid])? ' (' . l($aes[$nid], 'proyectosopedit/' . $node->nid . '/ae/' . $nid . '/edit') . ')' : '';
88                $titulo = 'AE' . $ae_title . ': ' . $fields1[$field]['widget']['label'];
89              }
90            }
91          }
92           $row[] = array('data' => $titulo,);
93          $row[] = array('data' => filter_xss($comentario->comentario, array('a', 'em', 'strong')),);
94          $rows[] = $row;
95
96        }
97        $output = theme('table', $headers_tabla, $rows);
98        $node->content['flujo_comentarios'] = array(
99          '#value' => '<fieldset><legend>' . t('Flujo con Comentarios') . '</legend>' . $output . '</fieldset>',
100          '#weight' => 100,
101        );
102      }
103    break;
104  }
105}
106
107/*
108 * Implementation of reformula_ver_campos()
109 * Retorna los campos de reformulacion
110 */
111function reformula_ver_campos($node, $reformulacion_load) {
112  $id_ref = $reformulacion_load ? $reformulacion_load->id_ref : 0;
113  $reformula = _proyectos_reformulacion_load($node, $id_ref);
114  $format_number = array(
115    'decimals' => variable_get('proyectos_operativos_number_decimals', 0),
116    'dec_point' => variable_get('proyectos_operativos_number_dec_point', ','),
117    'thousands_sep' => variable_get('proyectos_operativos_number_thousands_sep', '.'),
118  );
119  $ftypes = array(
120    'value' => t('January'),
121    'value_1' => t('February'),
122    'value_2' => t('March'),
123    'value_3' => t('April'),
124    'value_4' => t('May'),
125    'value_5' => t('June'),
126    'value_6' => t('July'),
127    'value_7' => t('August'),
128    'value_8' => t('September'),
129    'value_9' => t('Octuber'),
130    'value_10' => t('November'),
131    'value_11' => t('December'),
132  );
133  $tipos = array(
134    1 => t('Traspaso'),
135    2 => t('Incremento'),
136    3 => t('Disminución'),
137  );
138  //se obtiene la unidad de medida
139  $field = content_fields('field_proyecto_unidadm', 'proyectos_operativos');
140  $tree = taxonomy_get_tree($field['vid']);
141  $options = array();
142  if ($tree) {
143    foreach ($tree as $term) {
144      if ($term->tid == $unidad_ant) {
145        $text_unidad = $term->name;
146      }
147      $choice = new stdClass();
148      $choice->option = array($term->tid => str_repeat('-', $term->depth) . $term->name);
149      $options[$term->tid] = $term->name;
150    }
151  }
152  $grupos = array();
153  if ($node->field_proyecto_accion_esp[0]['nid']) {
154    foreach($node->field_proyecto_accion_esp as $ae) {
155      $grupos[$ae['nid']] = node_load($ae['nid']);
156    }
157  }
158  $field = content_fields('field_accion_esp_unidadm', 'accion_especifica');
159  $unidadesm = array();
160  $tree = taxonomy_get_tree($field['vid']);
161  if ($tree) {
162    foreach ($tree as $term) {
163      $unidadesm[$term->tid] = $term->name;
164    }
165  }
166  $field = content_fields('field_accion_esp_programacion', 'accion_especifica');
167  $tree = taxonomy_get_tree($field['vid']);
168  $vtid = $field['vtid'];
169  $partidas = array();
170  if ($tree) {
171    foreach ($tree as $term) {
172      if (isset($vtid[$term->tid])) {
173        $partidas[$term->tid] = $term->name;
174      }
175    }
176  }
177  $financia = array();
178  $accion_especifica_number_fields = variable_get('accion_especifica_number_fields', 4);
179  $financia = array();
180  for($i = 0; $i < $accion_especifica_number_fields; $i++) {
181    $financarray = variable_get('accion_especifica_financiamiento_options_' . $i, array());
182    if (count($financarray)) {
183      foreach($financarray as $id1 => $camp1){
184        if ($camp1){
185          $financia[$id1] = $fields1[$id1]['widget']['label'];
186        }
187      }
188    }
189  }
190  $display = array();
191  $display['fecha_onapre'] = date( 'd/m/Y', $reformula['fecha_onapre']);
192  $display['justificacion'] = $reformula['justificacion'];
193  $display['traspaso'] = array_key_exists($reformula['tipo'], $tipos) ? $tipos[$reformula['tipo']] : 'N/A';
194  $signo = '';
195  if ($reformulacion_load->variacion > 0) {
196    $signo = '+';
197  }
198  $display['variacion'] = $signo . number_format($reformulacion_load->variacion, $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']);
199  $display['field_proyecto_unidadm'] = $options[$reformulacion_load->unidad];
200  //meta fisica del proyecto
201  foreach($ftypes as $id_field => $texto) {
202    $valor = isset($reformula['field_proyecto_meta_fisica'][0][$id_field])? $reformula['field_proyecto_meta_fisica'][0][$id_field] : 0;
203    $signo = '';
204    if ($valor > 0) {
205      $signo = '+';
206    }
207    $display['field_proyecto_meta_fisica_' . $id_field] = $signo . number_format($valor, 0, $format_number['dec_point'], $format_number['thousands_sep']);
208  }
209
210  foreach($grupos as $nid => $grupo) {
211    $display[$nid]['field_accion_esp_metaf_unidadm'] = $unidadesm[$reformula['field_accion_esp_metaf_' . $nid][0]['unidad']];
212    foreach($ftypes as $id_field => $texto) {
213      $valor = isset($reformula['field_accion_esp_metaf_' . $nid][0][$id_field])? $reformula['field_accion_esp_metaf_' . $nid][0][$id_field] : 0;
214      $signo = '';
215      if ($valor > 0) {
216        $signo = '+';
217      }
218
219      $display[$nid]['field_accion_esp_metaf_' . $id_field] = $signo . number_format($valor, 0, $format_number['dec_point'], $format_number['thousands_sep']);
220      foreach($partidas as $tid => $term) {
221        $valor = isset($reformula['field_accion_esp_programacion_' . $nid][$tid][$id_field])? $reformula['field_accion_esp_programacion_' . $nid][$tid][$id_field] : 0;
222        $signo = '';
223        if ($valor > 0) {
224          $signo = '+';
225        }
226        $idformu = 'field_accion_esp_programacion_' . $tid . '_' . $id_field;
227        $display[$nid][$idformu] = $signo . number_format($valor, 0, $format_number['dec_point'], $format_number['thousands_sep']);
228      }
229    }
230    foreach($financia as $id_field => $texto) {
231      $valor = isset($reformula[$id_field . '_' . $nid][0]['value'])? $reformula[$id_field . '_' . $nid][0]['value'] : 0;
232        $signo = '';
233      if ($valor > 0) {
234        $signo = '+';
235      }
236      $display[$nid][$id_field] = $signo . number_format($valor, $format_number['decimals'], $format_number['dec_point'], $format_number['thousands_sep']);
237    }
238
239  }
240  return $display;
241}
242
243/*
244 * Implementation of hook_perm()
245 */
246function entes_detail_proyectos_perm() {
247  return array(
248    'remove observaciones',
249  );
250}
251
252/*
253 * Implementation of _entes_detail_proyectos_operativos_get_campos_proyectos_reformula()
254 * Obtiene los capos de reformulacion
255 */
256function _entes_detail_proyectos_operativos_get_campos_proyectos_reformula($proyecto = 0){
257  $title_combos = array();
258  $arreglo = array();
259  if ($proyecto && $proyecto->nid){
260    $title_combos['monto']['title'] = t('Monto Total del Proyecto');
261    $arreglo['monto'] = array();
262    $arreglo['monto'] = array(
263      'fecha_onapre' => t('Fecha de Aprobación'),
264      'traspaso' => t('Traspaso'),
265      'justificacion' => t('Justificación'),
266      'variacion' => t('Variación Presupuestaria'),
267    );
268    $ftypes = array(
269      'value' => t('January'),
270      'value_1' => t('February'),
271      'value_2' => t('March'),
272      'value_3' => t('April'),
273      'value_4' => t('May'),
274      'value_5' => t('June'),
275      'value_6' => t('July'),
276      'value_7' => t('August'),
277      'value_8' => t('September'),
278      'value_9' => t('Octuber'),
279      'value_10' => t('November'),
280      'value_11' => t('December'),
281    );
282    $title_combos['distribucion']['title'] = t('Distribución de la Meta Física');
283    $arreglo['distribucion'] = array(
284      'field_proyecto_unidadm' => t('Unidad de Medida Nueva'),
285    );
286    foreach($ftypes as $id_field => $texto) {
287      $arreglo['distribucion']['field_proyecto_meta_fisica_' . $id_field] = t('Variación del Proyecto: @mes', array('@mes' => t($texto)));
288    }
289    //Se obtienen todas las fuentes de finaciamiento
290    //financiamiento
291    $arreglo_financiamiento = array();
292    $arreglo_financiamiento_fields = array();
293    $accion_especifica_number_fields = variable_get('accion_especifica_number_fields', 4);
294    for($i = 0; $i < $accion_especifica_number_fields; $i++) {
295      $arreglo_financiamiento['financiamiento_' . $i] = variable_get('accion_especifica_financiamiento_label_' . $i, '') ? variable_get('accion_especifica_financiamiento_label_' . $i, '') : '';
296      $arreglo_financiamiento_fields['financiamiento_' . $i] = variable_get('accion_especifica_financiamiento_options_' . $i, array());
297    }
298    //se obtienen las partidas presupuestarias
299    $field = content_fields('field_accion_esp_programacion', 'accion_especifica');
300    $tree = taxonomy_get_tree($field['vid']);
301    $vtid = $field['vtid'];
302    $partidas = array();
303    if ($tree) {
304      foreach ($tree as $term) {
305        if (isset($vtid[$term->tid])) {
306          $partidas[$term->tid] = $term->name;
307        }
308      }
309    }
310    //financiamiento
311    $node_type1 = content_types('accion_especifica');
312    $fields1 = $node_type1['fields'];
313    $arreglo_financiamiento = array();
314    $financia = array();
315    $accion_especifica_number_fields = variable_get('accion_especifica_number_fields', 4);
316    $financia = array();
317    for($i = 0; $i < $accion_especifica_number_fields; $i++) {
318      $financarray = variable_get('accion_especifica_financiamiento_options_' . $i, array());
319      if (count($financarray)) {
320        foreach($financarray as $id1 => $camp1){
321          if ($camp1){
322            $financia[$id1] = $fields1[$id1]['widget']['label'];
323          }
324        }
325      }
326    }
327    $i = 1;
328    if ($proyecto->field_proyecto_accion_esp[0]['nid']) {
329      foreach($proyecto->field_proyecto_accion_esp as $ae) {
330        if (is_numeric($ae['nid'])) {
331          $idae = 'AE_' . $i;
332          $title_combos['AE_' . $i]['title'] = 'AE_' . $i;
333          $arreglo['distribucion'][$ae['nid'] . '_field_accion_esp_metaf_unidadm'] = '(AE_' . $i . ') ' . t('Unidad de Medida Nueva');
334          foreach($ftypes as $id_field => $texto) {
335            $arreglo['distribucion'][$ae['nid'] . '_field_accion_esp_metaf_' . $id_field] = '(AE_' . $i . ') ' . t('Variación') . ': ' . t($texto);
336            foreach($partidas as $tid => $term) {
337              $idformu = $ae['nid'] . '_field_accion_esp_programacion_' . $tid . '_' . $id_field;
338              $arreglo[$idae][$idformu] = t('Variación partida') . ' ' . $term  .': ' . t($texto);
339            }
340          }
341          foreach($financia as $id_field => $texto) {
342              $arreglo[$idae][$ae['nid'] . '_' . $id_field] = t('Fuente de Finaciamiento') . ': ' . $texto;
343          }
344
345          $i++;
346        }
347      }
348    }
349  }
350  drupal_alter('proyecto_reformula_obtiene_fields_categorias', $title_combos);
351  drupal_alter('proyecto_reformula_obtiene_fields_campos', $arreglo);
352  return array(
353    'categorias' => $title_combos,
354    'campos' => $arreglo,
355  );
356}
357
358/*
359 * Implementation of _entes_detail_proyectos_operativos_get_campos_proyectos()
360 * Obtiene los capos de proyectos
361 */
362function _entes_detail_proyectos_operativos_get_campos_proyectos(){
363  $title_combos = array();
364  $arreglo = array();
365  $title_combos['db']['title'] = t('Datos Básicos');
366  $title_combos['db']['type'] = 'node';
367  $arreglo['db']['identificacion'] = array();
368  $arreglo['db']['identificacion'] = array(
369    'title' => t('Nombre del Proyecto'),
370    'field_proyecto_codigo' => 'field_proyecto_codigo',
371    'field_proyecto_codigo_n_etap' => 'field_proyecto_codigo_n_etap',
372    'field_proyecto_fecha_i' => 'field_proyecto_fecha_i',
373    'field_proyecto_fecha_f' => 'field_proyecto_fecha_f',
374    'field_proyecto_status' => 'field_proyecto_status',
375    'field_proyecto_situacion_p' => 'field_proyecto_situacion_p',
376    'field_proyecto_plurianual' => 'field_proyecto_plurianual',
377    'field_proyecto_monto_anual' => 'field_proyecto_monto_anual',
378    'field_proyecto_total' => 'field_proyecto_total',
379    'field_proyecto_poan' => 'field_proyecto_poan',
380  );
381  $title_combos['db']['identificacion']['title'] = t('Datos Básicos de Identificación del Proyecto');
382  $title_combos['db']['identificacion']['type'] = 'node';
383  //Gerente del Proyecto
384  $arreglo['db']['gerentep'] = array();
385  $arreglo['db']['gerentep'] = array(
386    'field_proyecto_ente' => 'field_proyecto_ente',
387    'field_proyecto_autoridad' => 'field_proyecto_autoridad',
388    'field_proyecto_lider' => 'field_proyecto_lider',
389    'field_proyecto_unidad_a' => 'field_proyecto_unidad_a',
390    'field_proyecto_cargo' => 'field_proyecto_cargo',
391    'field_proyecto_telefono' => 'field_proyecto_telefono',
392    'field_proyecto_correo' => 'field_proyecto_correo',
393  );
394  $title_combos['db']['gerentep']['title'] = t('Gerente del Proyecto');
395  $title_combos['db']['gerentep']['type'] = 'node';
396  //Área Estrategica
397  $pndes = variable_get('proyectos_operativos_muestra_pndes', TRUE);
398  $mcti = variable_get('proyectos_operativos_muestra_mcti', TRUE);
399  if ($pndes || $mcti) {
400    $arreglo['db']['areae'] = array();
401    if ($pndes) {
402      $arreglo['db']['areae']['field_proyecto_pndes'] = 'field_proyecto_pndes';
403    }
404    if ($mcti) {
405      $arreglo['db']['areae']['field_proyecto_mcti'] = 'field_proyecto_mcti';
406    }
407    $title_combos['db']['areae']['title'] = t('Área Estratégica');
408    $title_combos['db']['areae']['type'] = 'node';
409  }
410  //DATOS GENERALES
411  $title_combos['dg']['title'] = t('Datos Generales');
412  $title_combos['dg']['type'] = 'node';
413  //Clasificación Sectorial
414  $arreglo['dg']['sector'] = array();
415  $arreglo['dg']['sector'] = array(
416    'field_proyecto_sector' => 'field_proyecto_sector',
417  );
418  $title_combos['dg']['sector']['title'] = t('Clasificación Sectorial');
419  $title_combos['dg']['sector']['type'] = 'node';
420  //Talento Humano
421  if (variable_get('proyectos_operativos_muestra_talento', TRUE)) {
422    $arreglo['dg']['talentoh'] = array();
423    $arreglo['dg']['talentoh'] = array(
424      'field_proyecto_institucionth' => 'field_proyecto_institucionth',
425      'field_proyecto_nombres_a' => 'field_proyecto_nombres_a',
426      'field_proyecto_cargo_th' => 'field_proyecto_cargo_th',
427      'field_proyecto_rol_th' => 'field_proyecto_rol_th',
428      'field_proyecto_esfuerzo' => 'field_proyecto_esfuerzo',
429      'field_proyecto_formacion' => 'field_proyecto_formacion',
430    );
431    $title_combos['dg']['talentoh']['title'] = t('Talento Humano');
432    $title_combos['dg']['talentoh']['type'] = 'node';
433  }
434  //Capacidades
435  $arreglo['dg']['capacidades'] = array();
436  if (variable_get('proyectos_operativos_muestra_capacidades', TRUE)) {
437    $arreglo['dg']['capacidades'] = array(
438      'field_proyecto_institucion_alc' => 'field_proyecto_institucion_alc',
439      'field_proyecto_infraestructura' => 'field_proyecto_infraestructura',
440      'field_proyecto_equipos' => 'field_proyecto_equipos',
441      'field_proyecto_insumos' => 'field_proyecto_insumos',
442      'field_proyectos_servicios' => 'field_proyectos_servicios',
443    );
444  }
445  $title_combos['dg']['capacidades']['title'] = t('Capacidades');
446  $title_combos['dg']['capacidades']['type'] = 'node';
447  //Instituciones
448  $arreglo['dg']['relacion'] = array();
449  $arreglo['dg']['relacion'] = array(
450    'field_proyecto_relacion' => 'field_proyecto_relacion',
451  );
452  $title_combos['dg']['relacion']['title'] = t('Instituciones');
453  $title_combos['dg']['relacion']['type'] = 'node';
454  //Empleos Generados
455
456  if (variable_get('proyectos_operativos_muestra_beneficiario', TRUE)) {
457    $arreglo['dg']['empleosg'] = array(
458      'field_proyecto_emdirecto' => 'field_proyecto_emdirecto',
459      'field_proyecto_efdirecto' => 'field_proyecto_efdirecto',
460    );
461    if (variable_get('proyectos_operativos_muestra_beneficiarios_indirectos', TRUE)) {
462      $arreglo['dg']['empleosg']['field_proyecto_emindirecto'] = 'field_proyecto_emindirecto';
463      $arreglo['dg']['empleosg']['field_proyecto_efindirecto'] = 'field_proyecto_efindirecto';
464    }
465    $arreglo['dg']['empleosg'] = array();
466    $title_combos['dg']['empleosg']['title'] = t('Empleos Generados');
467    $title_combos['dg']['empleosg']['type'] = 'node';
468  }
469  //Objetivos del Proyecto
470  $arreglo['dg']['objetivosp'] = array();
471  $arreglo['dg']['objetivosp'] = array(
472    'field_proyecto_og' => 'field_proyecto_og',
473    'field_proyecto_oe' => 'field_proyecto_oe',
474  );
475  $title_combos['dg']['objetivosp']['title'] = t('Objetivos');
476  $title_combos['dg']['objetivosp']['type'] = 'node';
477  //INDICADORES DEL PROYECTO
478  //Enunciado del Problema
479  $title_combos['ip']['title'] = t('Indicadores del Proyecto');
480  $title_combos['ip']['type'] = 'node';
481  $arreglo['ip']['enunciadop'] = array();
482  if (variable_get('proyectos_operativos_muestra_enunciado_problema', TRUE)) {
483    $arreglo['ip']['enunciadop'] = array(
484      'field_proyecto_causas' => 'field_proyecto_causas',
485      'field_proyecto_problemas' => 'field_proyecto_problemas',
486      'field_proyecto_consecuencias' => 'field_proyecto_consecuencias',
487    );
488  }
489  $title_combos['ip']['enunciadop']['title'] = t('Enunciado del Problema');
490  $title_combos['ip']['enunciadop']['type'] = 'node';
491  //Justificación del Proyecto
492  $arreglo['ip']['justificacion'] = array();
493  if (variable_get('proyectos_operativos_muestra_justicacion', TRUE)) {
494    $arreglo['ip']['justificacion'] = array(
495      'field_proyecto_justificacion' => 'field_proyecto_justificacion',
496    );
497  }
498  $title_combos['ip']['justificacion']['title'] = t('Justificación del Proyecto');
499  $title_combos['ip']['justificacion']['type'] = 'node';
500  //Alcance del Proyecto
501  $arreglo['ip']['alcance'] = array();
502  if (variable_get('proyectos_operativos_muestra_alcance', TRUE)) {
503    $arreglo['ip']['alcance'] = array(
504      'field_proyecto_alcance' => 'field_proyecto_alcance',
505    );
506  }
507  $title_combos['ip']['alcance']['title'] = t('Alcance del Proyecto');
508  $title_combos['ip']['alcance']['type'] = 'node';
509  //Situación Actual del Proyecto
510  $arreglo['ip']['situaciona'] = array();
511  if (variable_get('proyectos_operativos_muestra_sa', TRUE)) {
512    $arreglo['ip']['situaciona'] = array(
513      'field_proyecto_sa_descripcion' => 'field_proyecto_sa_descripcion',
514    );
515    if (variable_get('proyectos_operativos_muestra_sa_cuantificacion', TRUE)) {
516      $arreglo['ip']['situaciona']['field_proyecto_sa_cuantificacion'] = 'field_proyecto_sa_cuantificacion';
517    }
518    $arreglo['ip']['situaciona']['field_proyecto_sa_formulai'] = 'field_proyecto_sa_formulai';
519    $arreglo['ip']['situaciona']['field_proyecto_sa_fuentei'] = 'field_proyecto_sa_fuentei';
520    $arreglo['ip']['situaciona']['field_proyecto_sa_fecha'] = 'field_proyecto_sa_fecha';
521  }
522  $title_combos['ip']['situaciona']['title'] = t('Situación Actual');
523   $title_combos['ip']['situaciona']['type'] = 'node';
524  //Situación Objetivo
525  $arreglo['ip']['situaciono'] = array();
526  if (variable_get('proyectos_operativos_muestra_so', TRUE)) {
527    $arreglo['ip']['situaciono'] = array(
528      'field_proyecto_so_descripcion' => 'field_proyecto_so_descripcion',
529      'field_proyecto_so_cuantificacion' => 'field_proyecto_so_cuantificacion',
530      'field_proyecto_tiempoi' => 'field_proyecto_tiempoi',
531    );
532  }
533  $title_combos['ip']['situaciono']['title'] = t('Situación Objetivo');
534   $title_combos['ip']['situaciono']['type'] = 'node';
535
536  //Indicador del resultado del Proyecto
537  $arreglo['ip']['resultadop'] = array();
538  $arreglo['ip']['resultadop'] = array(
539    'field_proyecto_descripcion_bien' => 'field_proyecto_descripcion_bien',
540    'field_proyecto_unidadm' => 'field_proyecto_unidadm',
541    'field_proyecto_meta_m' => 'field_proyecto_meta_m',
542    'field_proyecto_meta_f' => 'field_proyecto_meta_f',
543    'field_proyecto_meta_fisica' => 'field_proyecto_meta_fisica',
544  );
545  $title_combos['ip']['resultadop']['title'] = t('Indicador del resultado del Proyecto');
546  $title_combos['ip']['resultadop']['type'] = 'node';
547  $title_combos['otros']['title'] = t('Otros');
548  $title_combos['otros']['type'] = 'flow';
549  $title_combos['otros']['fl']['title'] = t('Flujo de Trabajo');
550  $arreglo['otros']['fl'] = array(
551    'proyectos_operativos_flujo' => 'Flujo Actual',
552  );
553  drupal_alter('proyecto_obtiene_fields_categorias', $title_combos);
554  drupal_alter('proyecto_obtiene_fields_campos', $arreglo);
555  return array(
556    'categorias' => $title_combos,
557    'campos' => $arreglo,
558  );
559}
560
561/*
562 * Implementation of hook_menu()
563 */
564function entes_detail_workflow_menu() {
565  $items = array();
566  $items['entes_detail_workflow_js_util/proyectos'] = array(
567    'title' => 'JS utilities',
568    'page callback' => 'entes_detail_workflow_js_util_proyectos',
569    'access arguments' => array('ver planificador'),
570    'type' => MENU_CALLBACK,
571  );
572  //consulta proyecto operativo (comentarios)
573  $items['proyectosop/%proyectosop/comentarios'] = array(
574    'title' => t('Comentarios'),
575    'page callback' => '_list_proyectos_operativos_detail_workflow',
576    'page arguments' => array(1),
577    'access callback' => '_proyectos_operativos_ver_datos_wk_access',
578    'access arguments' => array(1),
579    'weight' => -5,
580    'type' => MENU_LOCAL_TASK,
581  );
582  return $items;
583}
584
585/*
586 * Implementation of hook_acciones_obtiene_links_alter()
587 */
588function entes_detail_workflow_proyecto_obtiene_links_alter(&$links, $proyecto, $acceso = FALSE) {
589  $node_accion = node_load($proyecto->nid);
590  if (_proyectos_operativos_ver_datos_wk_access($node_accion)) {
591    $links['proyecto_view_comentarios'] = array(
592      'data' => l(t('Consultar Comentarios'), 'proyectosop/' . $proyecto->nid . '/comentarios'),
593      'class' => 'proyectos-operativos-comentarios',
594    );
595  }
596}
597
598function _list_proyectos_operativos_detail_workflow($node){
599  module_load_include('inc', 'workflow', 'workflow.pages');
600  $campos_leidos = _entes_detail_proyectos_operativos_get_campos_proyectos();
601  $options_campos = array();
602  $node_type = content_types('proyectos_operativos');
603  $fields = $node_type['fields'];
604  $node_type1 = content_types('accion_especifica');
605  $fields1 = $node_type1['fields'];
606  $node_workflow_display = node_build_content($node);
607  $result = db_query("SELECT e.*, u.name, u.uid, w.old_sid, w.comment FROM {entes_detail_workflow} AS e INNER JOIN {workflow_node_history} AS w ON w.hid = e.hid INNER JOIN {users} AS u ON w.uid =u.uid WHERE id = %d AND tipo = 'proyectos_operativos' AND active = 1 ORDER BY field_name, time DESC", $node->nid);
608  $comentarios =array();
609  while($comentario = db_fetch_object($result)) {
610    if (!isset($comentarios[$comentario->field_name])) {
611      $comentarios[$comentario->field_name] = array();
612    }
613    if (trim($comentario->comentario) != '') {
614      $comentarios[$comentario->field_name][] = '<div class="comentario-ver"><div class="comentario-contenido">' . check_plain($comentario->comentario) . '</div><div class="comentario-usuario-fecha">' . theme('username', $comentario) . ' | ' . format_date($comentario->time) . '</div></div>';
615    }
616  }
617  $contenido = array();
618  $array_titles = array();
619  $todas_opciones = array();
620  $output = '';
621  foreach($campos_leidos['campos'] as $idcat => $array){
622    foreach($array as $idcamp => $arrat1){
623      $output .= '<fieldset><legend>' . $campos_leidos['categorias'][$idcat][$idcamp]['title'] . '</legend>';
624      $array_soptions = array();
625      foreach($arrat1 as $ind2 => $array2){
626        if ($ind2 == 'title'){
627          $contenido[$ind2] = '<div class="field field-type-title field-field-proyecto-title"><div class="field-label">' . t('Nombre del Proyecto') . ':&nbsp;</div><div class="field-items"><div class="field-item odd">' . check_plain($node->title) . '</div></div></div>';
628          $array_soptions[$ind2] = t('Nombre del Proyecto');
629        }
630        else {
631          $contenido[$ind2] = drupal_render($node_workflow_display->content[$ind2]);
632          $array_soptions[$ind2] = $fields[$ind2]['widget']['label'];
633        }
634        $array_titles[$ind2] = $array_soptions[$ind2];
635        $todas_opciones[$ind2] = $ind2;
636        if ($fields[$ind2]['display_settings']['full']['format'] != 'hidden' && trim($contenido[$ind2]) != '') {
637          $ncomentario = isset($comentarios[$ind2]) && count($comentarios[$ind2])? '<div class="todos-comentarios"><b>' . t('Comentarios') . ':</b>' . implode ('', $comentarios[$ind2]) . '</div>' : '';
638          $output .= $contenido[$ind2] . $ncomentario;
639        }
640      }
641      if ($campos_leidos['categorias'][$idcat][$idcamp]['type'] == 'node'){
642        $options_campos[$campos_leidos['categorias'][$idcat][$idcamp]['title']] = $array_soptions;
643      }
644      $output .= '</fieldset>';
645    }
646  }
647  $contenidoae = array();
648  $acciones_especificas = array();
649  if (isset($node->field_proyecto_accion_esp)){
650    foreach($node->field_proyecto_accion_esp as $accion) {
651      if ($accion['nid']) {
652        $accionep = node_load($accion['nid']);
653        $output .= '<fieldset><legend>' . 'AE: ' . check_plain($accionep->title) . '</legend>';
654        $opcionAE = array();
655        $contenidoae[$accionep->nid] = array();
656        $nodeae_workflow_display = node_build_content($accionep);
657        foreach($fields1 as $idcat => $array){
658          $idcat1 = $accion['nid'] . '_' . $idcat;
659          $contenidoae[$accionep->nid][$idcat] = drupal_render($nodeae_workflow_display->content[$idcat]);
660          $opcionAE[$accionep->nid . '_' . $idcat] = $fields1[$idcat]['widget']['label'];
661          $array_titles[$accionep->nid . '_' . $idcat] = 'AE_' .$i . ': ' . $opcionAE[$accionep->nid . '_' . $idcat];
662          $todas_opciones[$accionep->nid . '_' . $idcat] = $accionep->nid . '_' . $idcat;
663          if ($fields1[$idcat]['display_settings']['full']['format'] != 'hidden' && trim($contenidoae[$accionep->nid][$idcat]) != '') {
664            $ncomentario = isset($comentarios[$idcat1]) && count($comentarios[$idcat1])? '<div class="todos-comentarios"><b>' . t('Comentarios') . ':</b>' . implode ('', $comentarios[$idcat1]) . '</div>' : '';
665            $output .= $contenidoae[$accionep->nid][$idcat] . $ncomentario;
666          }
667        }
668        $output .= '</fieldset>';
669      }
670    }
671  }
672  return $output;
673}
674
675/*
676 * Implementation of entes_detail_workflow_js_util()
677 * Utilidad javascript para realizar ajax en el formulario
678 */
679function entes_detail_workflow_js_util_proyectos($categoria = '', $campo = '') {
680  $options_select = isset($_POST[$campo])? $_POST[$campo]: 0;
681  $form_state = array('submitted' => FALSE);
682  $form_build_id = $_POST['form_build_id'];
683  // Add the new element to the stored form. Without adding the element to the
684  // form, Drupal is not aware of this new elements existence and will not
685  // process it. We retreive the cached form, add the element, and resave.
686  $form = form_get_cache($form_build_id, $form_state);
687  if ($options_select) {
688    $form[$categoria][$campo]['comentario_' . $campo] = array(
689      '#title' => t('Comentario'),
690      '#type' => 'textarea',
691      '#default_value' => '',
692    );
693  }
694  elseif (isset($form[$categoria][$campo]['comentario_' . $campo])) {
695    unset($form[$categoria][$campo]['comentario_' . $campo]);
696  }
697  form_set_cache($form_build_id, $form, $form_state);
698  $form += array(
699    '#post' => $_POST,
700    '#programmed' => FALSE,
701  );
702  // Rebuild the form.
703  $form = form_builder($_POST['form_id'], $form, $form_state);
704  $output = drupal_render($form[$categoria][$campo]['comentario_' . $campo]);
705  print drupal_to_js(array('data' => $output, 'status' => true));
706  exit();
707}
708
709/*
710 * hook_form_alter()
711 */
712function entes_detail_workflow_form_alter(&$form, $form_state, $form_id) {
713  if ($form_id == 'proyectos_operativos_proyecto_genera_campos_form' && isset($form['otros']['fl'])){
714    $form['otros']['fl']['#options']['flujo_comentarios'] = t('Flujo de Trabajo con comentarios');
715  }
716  if (($form_id == 'proyectos_operativos_proyecto_basico_form' || $form_id == 'proyectos_operativos_proyecto_generales_form' || $form_id == 'proyectos_operativos_proyecto_indicadores_form') && $form['#node']->nid){
717    $node_load = $form['#node'];
718    $field_form = $form['#proyectos_operativos_fields'];
719    $new_field_form = array();
720    if (is_array($field_form) && count($field_form)){
721      foreach($field_form as $field_id)
722      $new_field_form[$field_id] = $field_id;
723    }
724    $result = db_query("SELECT * FROM {entes_detail_workflow} WHERE id = %d AND tipo = 'proyectos_operativos' AND active = 1 ORDER BY field_name, time DESC", $node_load->nid);
725    $comentarios_details = array();
726    $pre_render = FALSE;
727$form['#proyecto_fields'];
728    $nuevos = array();
729    $nuevos1 = array();
730    $campos_comentarios = array();
731    while($comentario = db_fetch_object($result)) {
732      $campo = $comentario->field_name == 'title'? 'field_proyecto_titulo': $comentario->field_name;
733      $nidae = explode('_', $comentario->field_name);
734      if (array_key_exists($campo, $new_field_form) && trim($comentario->comentario) != ''){
735        if (!array_key_exists($campo, $nuevos)){
736            if (!isset($campos_comentarios[$campo])) {
737              $campos_comentarios[$campo] = check_plain($comentario->comentario);
738            }
739          $nuevos[$campo] = $campo;
740         $comentarios_details[] = '<div style="border: 1px solid #BBBBBB;font-size:10px;background:#FFFFFF;line-height: 12px;background:#fffcc5;"><b>' . $form['#proyecto_fields'][$campo]['widget']['label'] . '</b><br>' . $comentario->comentario . '</div>';
741        }
742        else {
743          if (!array_key_exists($field, $nuevos1)){
744            $nuevos1[$field] = $field;
745            $comentarios_details[] = '<div style="border: 1px solid #BBBBBB;font-size:10px;background:#FFFFFF;line-height: 12px;"><b>' . t('Comentarios Anteriores') . ':</b><br>' . $comentario->comentario . '</div>';
746          }
747          else {
748            $comentarios_details[] = '<div style="border: 1px solid #BBBBBB;font-size:10px;background:#FFFFFF;line-height: 12px;">' . $comentario->comentario . '</div>';
749          }
750        }
751      }
752    }
753    if(count($comentarios_details)){
754      if (!isset($form['#pre_render'])) {
755        $form['#pre_render'] = array();
756      }
757      $form['#entes_detail_workflow_comment'] = $campos_comentarios;
758      $form['#pre_render'][] = 'entes_detail_workflow_commment_field_pre_render';
759      $form['entes_detail_workflow']['#value'] = '<div id="bloque_apps" style="position: fixed;vertical-align: top;width:180px;z-index: 10000;margin: 0;top:10px;right:10px;background:#DDDDDD; border: 1px solid #BBBBBB;"><div style="padding:5px;"><b>' . t('Observaciones') . ':</b></div><div id="contenido-observaciones" style="overflow-y:scroll;max-height:100px;">' . implode('', $comentarios_details) . '</div></div>';
760    }
761  }
762  if ($form_id == 'proyectos_operativos_accion_especifica_crear_form'){
763    $node_load = $form['#proyecto'];
764    $field_form = $form['#proyectos_operativos_fields'];
765    $new_field_form = array();
766    if (is_array($field_form) && count($field_form)){
767      foreach($field_form as $field_id) {
768        $new_field_form[$field_id] = $field_id;
769      }
770    }
771    $ae = array();
772    $i = 1;
773    foreach($form['#acciones_especificas'] as $accion) {
774      if (isset($accion->nid)) {
775        $ae[$accion->nid] = $i;
776        $i++;
777      }
778    }
779    $result = db_query("SELECT * FROM {entes_detail_workflow} WHERE id = %d AND tipo = 'proyectos_operativos' AND active = 1 ORDER BY field_name, time DESC", $node_load->nid);
780    $comentarios_details = array();
781    $nuevos = array();
782    $nuevos1 = array();
783    $campos_comentarios = array();
784    while($comentario = db_fetch_object($result)) {
785      $nidae = explode('_', $comentario->field_name);
786      if (is_numeric($nidae[0])){
787        $nid = $nidae[0];
788        unset($nidae[0]);
789        $field = implode('_', $nidae);
790        //se estan viendo todas las acciones especificas
791        if ($form['#node']->nid == $nid){
792          if (array_key_exists($field, $new_field_form) && trim($comentario->comentario) != ''){
793            if (!array_key_exists($field, $nuevos)){
794            if (!isset($campos_comentarios[$field])) {
795              $campos_comentarios[$field] = check_plain($comentario->comentario);
796            }
797              $nuevos[$field] = $field;
798              $comentarios_details[] = '<div style="border: 1px solid #BBBBBB;font-size:10px;background:#FFFFFF;line-height: 12px;background:#fffcc5;"><b>' . $form['#aeproyecto_fields'][$field]['widget']['label'] . '</b><br>' . $comentario->comentario . '</div>';
799            }
800            else {
801              if (!array_key_exists($field, $nuevos1)){
802                $nuevos1[$field] = $field;
803                $comentarios_details[] = '<div style="border: 1px solid #BBBBBB;font-size:10px;background:#FFFFFF;line-height: 12px;"><b>' . t('Comentarios Anteriores') . ':</b><br>' . $comentario->comentario . '</div>';
804              }
805              else {
806                $comentarios_details[] = '<div style="border: 1px solid #BBBBBB;font-size:10px;background:#FFFFFF;line-height: 12px;">' . $comentario->comentario . '</div>';
807              }
808            }
809          }
810        }
811        elseif(!$form['#node']->nid){
812            if (!array_key_exists($field, $nuevos)){
813              $nuevos[$field] = $field;
814              $comentarios_details[] = '<div class="comentario-workflow" style="border: 1px solid #BBBBBB;font-size:10px;background:#FFFFFF;line-height: 12px;background:#fffcc5;"><b>AE_' .$ae[$nid] . ' ' . $form['#aeproyecto_fields'][$field]['widget']['label'] . '</b><br>' . $comentario->comentario . '</div>';
815            }
816            else {
817              if (!array_key_exists($field, $nuevos1)){
818                $nuevos1[$field] = $field;
819                $comentarios_details[] = '<div style="border: 1px solid #BBBBBB;font-size:10px;background:#FFFFFF;line-height: 12px;"><b>' . t('Comentarios Anteriores') . ':</b><br>' . $comentario->comentario . '</div>';
820              }
821              else  {
822                $comentarios_details[] = '<div style="border: 1px solid #BBBBBB;font-size:10px;background:#FFFFFF;line-height: 12px;">' . $comentario->comentario . '</div>';
823              }
824            }
825        }
826      }
827    }
828    if(count($comentarios_details)){
829      if (!isset($form['#pre_render'])) {
830        $form['#pre_render'] = array();
831      }
832      $form['#entes_detail_workflow_comment'] = $campos_comentarios;
833      $form['#pre_render'][] = 'entes_detail_workflow_commment_field_pre_render';
834      $form['entes_detail_workflow']['#value'] = '<div id="bloque_apps" style="position: fixed;vertical-align: bottom;width:160px;z-index: 10000;margin: 0;bottom:0;right:10px;background:#DDDDDD; border: 1px solid #BBBBBB;"><div style="padding:5px;"><b>' . t('Observaciones') . ':</b></div><div id="contenido-observaciones" style="overflow-y:scroll;max-height:300px;">' . implode('', $comentarios_details) . '</div></div>';
835    }
836  }
837  if ($form_id == 'workflow_tab_form') {
838    if ($form['node']['#value']->type == 'proyectos_operativos'){
839      $node = $form['node']['#value'];
840      $campos_leidos = _entes_detail_proyectos_operativos_get_campos_proyectos();
841      $options_campos = array();
842      $node_type = content_types('proyectos_operativos');
843      $fields = $node_type['fields'];
844      $node_type1 = content_types('accion_especifica');
845      $fields1 = $node_type1['fields'];
846      $node_workflow_display = node_build_content($node);
847      $result = db_query("SELECT e.*, u.name, u.uid, w.old_sid, w.comment FROM {entes_detail_workflow} AS e INNER JOIN {workflow_node_history} AS w ON w.hid = e.hid INNER JOIN {users} AS u ON w.uid =u.uid WHERE id = %d AND tipo = 'proyectos_operativos' AND active = 1 ORDER BY field_name, time DESC", $node->nid);
848      $comentarios =array();
849      while($comentario = db_fetch_object($result)) {
850        if (!isset($comentarios[$comentario->field_name])) {
851          $comentarios[$comentario->field_name] = array();
852        }
853        if (trim($comentario->comentario) != '') {
854          $comentarios[$comentario->field_name][] = '<div class="comentario-ver"><div class="comentario-contenido">' . check_plain($comentario->comentario) . '</div><div class="comentario-usuario-fecha">' . theme('username', $comentario) . ' | ' . format_date($comentario->time) . '</div></div>';
855        }
856      }
857      $contenido = array();
858      $array_titles = array();
859      $todas_opciones = array();
860      $form['proyectos_operativos_remove'] = array(
861        '#type' => 'checkbox',
862        '#title' => t('Borrar los comentarios de campos Previos.'),
863        '#default_value' => FALSE,
864        '#access' => user_access('remove observaciones'),
865      );
866      foreach($campos_leidos['campos'] as $idcat => $array){
867        foreach($array as $idcamp => $arrat1){
868          $form[$idcamp] = array(
869            '#type' => 'fieldset',
870            '#title' => $campos_leidos['categorias'][$idcat][$idcamp]['title'],
871          );
872          $array_soptions = array();
873          foreach($arrat1 as $ind2 => $array2){
874            if ($ind2 == 'title'){
875              $contenido[$ind2] = '<div class="field field-type-title field-field-proyecto-title"><div class="field-label">' . t('Nombre del Proyecto') . ':&nbsp;</div><div class="field-items"><div class="field-item odd">' . check_plain($node->title) . '</div></div></div>';
876              $array_soptions[$ind2] = t('Nombre del Proyecto');
877            }
878            else {
879              $contenido[$ind2] = drupal_render($node_workflow_display->content[$ind2]);
880              $array_soptions[$ind2] = $fields[$ind2]['widget']['label'];
881            }
882            $array_titles[$ind2] = $array_soptions[$ind2];
883            $todas_opciones[$ind2] = $ind2;
884            if ($fields[$ind2]['display_settings']['full']['format'] != 'hidden' && trim($contenido[$ind2]) != '') {
885              $ncomentario = isset($comentarios[$ind2]) && count($comentarios[$ind2])? '<div class="todos-comentarios"><b>' . t('Comentarios Previos') . ':</b>' . implode ('', $comentarios[$ind2]) . '</div>' : '';
886              $form[$idcamp][$ind2 . '_display']['#value'] = $contenido[$ind2] . $ncomentario;
887              $form[$idcamp][$ind2][$ind2] = array(
888                '#type' => 'checkbox',
889                '#title' => t('Agregar comentario al campos (@campo9).', array('@campo9' => $array_soptions[$ind2])),
890                '#default_value' => FALSE,
891                '#suffix' => '<div id ="' . $ind2 . '_comentario"></div>',
892                '#ahah' => array(
893                'path' => 'entes_detail_workflow_js_util/proyectos/' . $idcamp . '/' . $ind2,
894                  'wrapper' => $ind2 . '_comentario',
895                  'method' => 'replace',
896                  'progress' => array('type' => 'bar', 'message' => t('Please wait...')),
897                ),
898              ); 
899            }
900          }
901
902          if ($campos_leidos['categorias'][$idcat][$idcamp]['type'] == 'node'){
903            $options_campos[$campos_leidos['categorias'][$idcat][$idcamp]['title']] = $array_soptions;
904          }
905        }
906      }
907      //add weight to submit button
908      $form['submit']['#weight'] = 100;
909      $form['#node_workflow_display'] = $contenido;
910      //Se obtienen las acciones especificas del proyecto
911      $i = 1;
912      $contenidoae = array();
913      $acciones_especificas = array();
914      if (isset($node->field_proyecto_accion_esp)){
915        foreach($node->field_proyecto_accion_esp as $accion) {
916          if ($accion['nid']) {
917            $accionep = node_load($accion['nid']);
918            $form['AE_' . $accionep->nid] = array(
919              '#type' => 'fieldset',
920              '#title' => 'AE: ' . check_plain($accionep->title),
921            );
922            $opcionAE = array();
923            $contenidoae[$accionep->nid] = array();
924            $nodeae_workflow_display = node_build_content($accionep);
925            foreach($fields1 as $idcat => $array){
926              $contenidoae[$accionep->nid][$idcat] = drupal_render($nodeae_workflow_display->content[$idcat]);
927              $opcionAE[$accionep->nid . '_' . $idcat] = $fields1[$idcat]['widget']['label'];
928              $array_titles[$accionep->nid . '_' . $idcat] = 'AE_' .$i . ': ' . $opcionAE[$accionep->nid . '_' . $idcat];
929              $todas_opciones[$accionep->nid . '_' . $idcat] = $accionep->nid . '_' . $idcat;
930              if ($fields1[$idcat]['display_settings']['full']['format'] != 'hidden' && trim($contenidoae[$accionep->nid][$idcat]) != '') {
931                $idcat1 = $accion['nid'] . '_' . $idcat;
932                $ncomentario = isset($comentarios[$idcat1]) && count($comentarios[$idcat1])? '<div class="todos-comentarios"><b>' . t('Comentarios Previos') . ':</b>' . implode ('', $comentarios[$idcat1]) . '</div>' : '';
933                $form['AE_' . $accionep->nid][$accionep->nid . '_' . $idcat . '_display']['#value'] = $contenidoae[$accionep->nid][$idcat] . $ncomentario;
934                $form['AE_' . $accionep->nid][$accionep->nid . '_' . $idcat][$accionep->nid . '_' . $idcat] = array(
935                  '#type' => 'checkbox',
936                  '#title' => t('Agregar comentario al campo (@campo9).', array('@campo9' => $array_titles[$accionep->nid . '_' . $idcat])),
937                  '#default_value' => FALSE,
938                  '#suffix' => '<div id ="' . $accionep->nid . '_' . $idcat . '_comentario"></div>',
939                  '#ahah' => array(
940                    'path' => 'entes_detail_workflow_js_util/proyectos/' . 'AE_' . $accionep->nid . '/' . $accionep->nid . '_' . $idcat,
941                    'wrapper' => $accionep->nid . '_' . $idcat . '_comentario',
942                    'method' => 'replace',
943                    'progress' => array('type' => 'bar', 'message' => t('Please wait...')),
944                  ),
945                );
946              }
947            }
948            $options_campos['AE_' .$i] = $opcionAE;
949            $i++;
950          }
951        }
952      }
953      $form['#nodeae_workflow_display'] = $contenidoae;
954      $form['#node_workflow_titles'] = $array_titles;
955      $form['#node_workflow_todas_opciones'] = $todas_opciones;
956      //remove previous submit
957      $new_submit = array();
958      foreach($form['#submit'] as $submit) {
959        if ($submit == 'workflow_tab_form_submit'){
960          $new_submit[] = 'entes_detail_workflow_form_submit';
961        }
962      }
963      $form['#submit'] = $new_submit;
964    }
965  }
966  if ($form_id == 'proyectos_reformulacion_reformula_wk_tab_page_form'){
967    $proyecto = $form['#node'];
968    $options_campos = _entes_detail_proyectos_operativos_get_campos_proyectos_reformula($proyecto);
969    $display = reformula_ver_campos($form['#node'], $form['#reformulacion']);
970    $nodeae_workflow_display = array();
971    if (count($options_campos['campos'])) {
972      $todas_opciones = array();
973      $array_titles = $options_campos['categorias'];
974      foreach($options_campos['campos'] as $idcat => $array){
975        $array_soptions[$array_titles[$idcat]['title']] = $array ;
976        foreach($array as $idcamp => $arrat1){
977          $array_titles[$idcamp] = $arrat1;
978          $todas_opciones[$idcamp] = $arrat1;
979        }
980      }
981      foreach($display as $id_d => $disp){
982        if (is_numeric($id_d)){
983          $nodeae_workflow_display[$id_d] = $display[$id_d];
984        }
985      }
986      $form['#node_workflow_display'] = $display;
987      $form['#nodeae_workflow_display'] = $nodeae_workflow_display;
988      $form['#node_workflow_titles'] = $array_titles;
989      $form['#node_workflow_todas_opciones'] = $todas_opciones;
990      $form['proyectos_operativos_remove'] = array(
991        '#type' => 'checkbox',
992        '#title' => t('Borrar los comentarios de campos Previos.'),
993        '#default_value' => FALSE,
994        '#access' => user_access('remove observaciones'),
995      );
996      $form['workflow_details'] = array(
997        '#title' => t('Comentarios por Campos'),
998        '#type' => 'select',
999        '#default_value' => array(),
1000        '#options' => $array_soptions,
1001        '#multiple' => TRUE,
1002        '#weight' => 10,
1003        '#ahah' => array(
1004          'path' => 'entes_detail_workflow_js_util',
1005          'wrapper' => 'fields_problems',
1006          'method' => 'replace',
1007          'progress' => array('type' => 'bar', 'message' => t('Please wait...')),
1008        ),
1009      );
1010      $form['campos_modificar'] = array(
1011        '#type' => 'fieldset',
1012        '#prefix' => '<div id="fields_problems">',
1013        '#suffix' => '</div>',
1014        '#weight' => 11,
1015        '#title' => t('Observaciones por campos'),
1016      );
1017      $form['campos_modificar']['no_comentarios'] = array(
1018        '#value' => t('No exiten comentarios de los campos de la modificación'),
1019      );
1020      $form['#submit'][] = 'entes_detail_workflow_reformula_form_submit';
1021      $form['actions']['#weight'] = 100;
1022
1023    }
1024  }
1025}
1026
1027/*
1028 * Implementation of proyectos_operativos_nodereference2_field_pre_render()
1029 * Limitar al formulario a los entes que le es posible a los usuarios
1030 */
1031function entes_detail_workflow_commment_field_pre_render($form) {
1032  $campos_comentarios = $form['#entes_detail_workflow_comment'];
1033  foreach($campos_comentarios as $campo => $comentario) {
1034    if (isset($form[$campo])) {
1035      if (!isset($form[$campo][0]['value']['#attributes']['class'])) {
1036        $form[$campo][0]['value']['#attributes']['class'] = '';
1037      }
1038      $form[$campo][0]['value']['#attributes']['class'] .= ' campos_comentarios beautytips';
1039      $form[$campo][0]['value']['#attributes']['title'] = $comentario;
1040    }
1041  }
1042  return $form;
1043}
1044
1045/*
1046 * Implementation of proyectos_reformulacion_reformula_tab_page_ae_form_validate()
1047 */
1048function entes_detail_workflow_form_submit($form, &$form_state) {
1049  global $user;
1050  // The entire node object was stashed in the form.
1051  $node = $form_state['values']['node'];
1052  $node->workflow = $form_state['values']['workflow'];
1053  $node->workflow_comment = $form_state['values']['workflow_comment'];
1054  $node->workflow_scheduled = $form_state['values']['workflow_scheduled'];
1055  $node->workflow_scheduled_date = $form_state['values']['workflow_scheduled_date'];
1056  $node->workflow_scheduled_hour = $form_state['values']['workflow_scheduled_hour'];
1057  //crear una nueva revision
1058  $node->revision = 1;
1059  // Call node_save() to make sure any handlers that use the
1060  // new workflow values will see them.
1061  node_save($node);
1062  //add node save values
1063  $form_state['values']['node'] = $node;
1064  $form_state['redirect'] = 'node/' . $node->nid;
1065  $sid = $node->workflow;
1066  if (array_key_exists('proyectos_operativos_remove',  $form_state['values']) && $form_state['values']['proyectos_operativos_remove']){
1067    db_query("UPDATE {entes_detail_workflow} set active = 0 WHERE id = %d AND tipo = 'proyectos_operativos'", $node->nid);
1068  }
1069  //SE OBTIENE el hid del historico del workflow
1070  $res = db_query("select max(hid) as hid from workflow_node_history WHERE nid = %d AND sid = %d", $node->nid, $sid);
1071  $hid = db_fetch_object($res);
1072  $chid = ($hid && $hid->hid) ? $hid->hid : 0;
1073
1074  $time = time();
1075  foreach($form['#node_workflow_todas_opciones'] as $id => $title){
1076    if (array_key_exists('comentario_' . $id,  $form_state['values'])){
1077      db_query("INSERT INTO {entes_detail_workflow} (id, sid, tipo, field_name, comentario, hid, vid, active, time) VALUES (%d, %d, 'proyectos_operativos', '%s', '%s', %d, %d, 1, %d)", $node->nid, $sid, $id, check_plain(trim($form_state['values']['comentario_' . $id])), $chid, $node->vid, $time);
1078    }
1079  }
1080}
1081
1082/*
1083 * Implementation of proyectos_reformulacion_reformula_tab_page_ae_form_validate()
1084 */
1085function entes_detail_workflow_reformula_form_submit($form, &$form_state) {
1086  global $user;
1087  if (array_key_exists('proyectos_operativos_remove',  $form_state['values']) && $form_state['values']['proyectos_operativos_remove']){
1088    db_query("UPDATE {entes_detail_workflow} set active = 0 WHERE id = %d AND tipo = 'proyectos_reformula'", $node->nid);
1089  }
1090  $time = time();
1091  foreach($form['#node_workflow_todas_opciones'] as $id => $title){
1092    if (array_key_exists('comentario_' . $id,  $form_state['values'])){
1093      db_query("INSERT INTO {entes_detail_workflow} (id, sid, tipo, field_name, comentario, hid, vid, active, time) VALUES (%d, %d, 'proyectos_reformula', '%s', '%s', %d, %d, 1, %d)", $form['#reformulacion']->id_ref, $form['#nuevo_estado'], $id, check_plain(trim($form_state['values']['comentario_' . $id])), 0, 0, $time);
1094    }
1095  }
1096}
Nota: Vea TracBrowser para ayuda de uso del navegador del repositorio.