'Diff', 'page callback' => 'proyectos_operativos_revision_diff_diffs_show', 'page arguments' => array(1, 4, 5), 'type' => MENU_LOCAL_TASK, 'access callback' => 'diff_node_revision_access', 'access arguments' => array(1), 'tab_parent' => 'proyectosop/%', ); return $items; } /** * Implementation of hook_action_info(). * asignar los proyectos operativos a los usuarios. */ function proyectos_operativos_revision_action_info() { return array( 'proyectos_operativos_revision_action' => array( 'description' => t('Compara los tipos de contenido'), 'type' => 'system', 'configurable' => true, ), ); } /** * implementacion del hook_action_submit() */ function proyectos_operativos_revision_action_submit($form, $form_state) { foreach ($form_state['storage']['selection'] as $id => $info) { if($info->vid) { $vids[] = $info->vid; } if($info->node_revisions_title) { $titles[] = $info->node_revisions_title; } if($info->node_nid) { $nids[] = $info->node_nid; } if($info->users_uid) { $users[] = $info->users_uid; } } $old_vid = min($vids[0], $vids[1]); $new_vid = max($vids[0], $vids[1]); drupal_goto('proyectosop/'. $nids[0] .'/revisions/view/'. $old_vid .'/'. $new_vid); } /** * Implementar la accion */ function proyectos_operativos_revision_action(&$node, $context) { module_load_include('inc', 'node', 'node.pages'); module_load_include('inc', 'diff', 'diff.pages'); //$output = proyectos_operativos_revision_diff_diffs_show($node, $context['vid']); drupal_set_message(t('Los proyectos Fueron Comparados')); } /** * Validation for input form to select two revisions. */ function proyectos_operativos_revision_action_validate($form, $form_state) { foreach ($form_state['values']['objects']['selection'] as $id => $info) { if($info) { $vids[] = $info; } } if (count($vids) != 2) { form_set_error('op', t('Porfavor seleccione solo dos articulos a comparar.')); } } /** * Implementation of hook_form_alter() */ function proyectos_operativos_revision_form_alter(&$form, $form_state, $form_id) { if ($form_id == 'workflow_tab_form' && $form['node']['#value']->type == 'proyectos_operativos') { $form['#submit'][] = 'proyectos_operativos_revision_workflow_tab_form_submit'; } } /** * agrega la informacion del nodo, asi como la del flujo de trabajo */ function proyectos_operativos_revision_workflow_tab_form_submit($form, &$form_state) { $values = $form_state['values']; db_query("INSERT INTO {proyectos_operativos_workflow_revision} (nid, vid, sid) VALUES (%d, %d, %d)", $values['node']->nid, $values['node']->vid, $values['workflow']); } /** * Presenta el nombre del estado del flujo de trabajo */ function proyectos_operativos_revision_workflow_search($sid) { $result = db_result(db_query("SELECT w.state FROM {workflow_states} AS w INNER JOIN {proyectos_operativos_workflow_revision} AS p ON p.sid = w.sid WHERE p.sid = %d", $sid)); return $result; } /** * Presenta el comentario del estado del flujo de trabajo */ function proyectos_operativos_revision_workflow_comment_search($sid) { $result = db_result(db_query("SELECT w.comment FROM {workflow_node_history} AS w INNER JOIN {proyectos_operativos_workflow_revision} AS p ON p.sid = w.sid WHERE p.sid = %d AND w.comment!=''", $sid)); return $result; } /** * Implementation of hook_views_api(). */ function proyectos_operativos_revision_views_api() { return array( 'api' => '2.0', 'path' => drupal_get_path('module', 'proyectos_operativos_revision') . '/views', ); } /** * Create output string for a comparison of 'node' between * versions 'old_vid' and 'new_vid'. * * @param $node * Node on which to perform comparison * @param $old_vid * Version ID of the old revision. * @param $new_vid * Version ID of the new revision. */ function proyectos_operativos_revision_diff_diffs_show($node, $old_vid, $new_vid) { module_load_include('inc', 'diff', 'diff.pages'); // Set same title as on the 'Revisions' tab for consistency drupal_set_title(t('Revisions for %title', array('%title' => $node->title))); $node_revisions = node_revision_list($node); $old_node = node_load($node->nid, $old_vid); $new_node = node_load($node->nid, $new_vid); // Generate table header (date, username, logmessage). $old_header = t('!date by !username', array( '!date' => l(format_date($old_node->revision_timestamp), "proyectosop/$node->nid/revisions/$old_node->vid/view"), '!username' => theme('username', $node_revisions[$old_vid]), )); $new_header = t('!date by !username', array( '!date' => l(format_date($new_node->revision_timestamp), "proyectosop/$node->nid/revisions/$new_node->vid/view"), '!username' => theme('username', $node_revisions[$new_vid]), )); $old_log = $old_node->log != '' ? '

'. filter_xss($old_node->log) .'

' : ''; $new_log = $new_node->log != '' ? '

'. filter_xss($new_node->log) .'

' : ''; // Generate previous diff/next diff links. $next_vid = _diff_get_next_vid($node_revisions, $new_vid); if ($next_vid) { $next_link = l(t('next diff >'), 'proyectosop/'. $node->nid .'/revisions/view/'. $new_vid .'/'. $next_vid); } else { $next_link = ''; } $prev_vid = _diff_get_previous_vid($node_revisions, $old_vid); if ($prev_vid) { $prev_link = l(t('< previous diff'), 'proyectosop/'. $node->nid .'/revisions/view/'. $prev_vid .'/'. $old_vid); } else { $prev_link = ''; } $cols = _diff_default_cols(); $header = _diff_default_header($old_header, $new_header); $rows = array(); if ($old_log || $new_log) { $rows[] = array( array( 'data' => $old_log, 'colspan' => 2 ), array( 'data' => $new_log, 'colspan' => 2 ) ); } $rows[] = array( array( 'data' => $prev_link, 'class' => 'diff-prevlink', 'colspan' => 2 ), array( 'data' => $next_link, 'class' => 'diff-nextlink', 'colspan' => 2 ) ); $rows = array_merge($rows, _diff_body_rows($old_node, $new_node)); $output = theme('diff_table', $header, $rows, array('class' => 'diff'), NULL, $cols); if ($node->vid == $new_vid) { $output .= '
'. t('Current revision:') .'
'; } else { $output .= '
'. t('Revision of !new_date:', array('!new_date' => format_date($new_node->revision_timestamp))) .'
'; } // Don't include node links (final argument) when viewing the diff. $output .= theme('proyectos_operativos_mcti_ficha_proyecto', $new_node); //$output .= node_view($new_node, FALSE, FALSE, FALSE); return $output; }