Ver Fonte

ahah_helper module not quite working, the new content does not get rendered

alexgl há 13 anos atrás
pai
commit
25c0ec4989

+ 95 - 283
base/tripal_views_setup/includes/tripal_views_setup.admin.inc

@@ -65,27 +65,15 @@ function tripal_views_setup_admin_form_submit($form, &$form_state){
  *
  * @ingroup tripal_view_setup
  */
-// function tripal_views_setup_admin_menu($howmany = NULL){
-// 	hook_menu();
-// 	$items = array();
-// 	for ($i = 0; $i < $howmany; $i++) {
-// 		$items["admin/tripal/tripal_views_setup/ajax/field_col_join-$i"] = array(
-// 			     'title' => 'Get Join Columns',
-// 			     'page callback' => 'tripal_view_setup_ajax_field_col_join',
-// 			  	 'type' => MENU_CALLBACK,
-// 			     'access arguments' => array('access administration pages'),
-// 		);
-// 	}
-
-// 	menu_link_save($items);
-// 	return $items;
-// }
 
-function tripal_views_setup_new_setup_form(&$form_state, $ahah_values = array()){
+function tripal_views_setup_new_setup_form(&$form_state){
 	$form = array();
 
 	$form['#cache'] = TRUE;
 
+	//ahah_helper requires this to register the form with it's module
+	ahah_helper_register($form, $form_state);
+
 	$form['row_name'] = array(
     '#title' => t('Name'),
     '#type' => 'textfield',
@@ -111,20 +99,49 @@ function tripal_views_setup_new_setup_form(&$form_state, $ahah_values = array())
 		$mview_options[$mview_option['mview_id']] = $mview_option['name'];
 	}
 
+	if (!isset($form_state['storage']['mview_id'])){
+		$mview_default_value = '0';
+	}
+	else{
+		$mview_default_value = $form_state['storage']['mview_id'];
+	}
+
+	dpm($mview_default_value, 'mview default value');
+	dpm($mview_options, 'mview options');
+
 	$form['mview_id'] = array(
+	    '#type'   => 'fieldset',
+	    '#title'  => t('Which materialized view to use'),
+	    '#prefix' => '<div id="mview-id-wrapper">', // This is our wrapper div.
+	    '#suffix' => '</div>',
+	    '#tree'   => TRUE, // Don't forget to set #tree!
+	);
+	$form['mview_id']['usage'] = array(
       '#title' => t('Materialized View'),
       '#type' => 'select',
       '#options' => $mview_options,
       '#description' => 'Which materialized view to use.',
       '#required' => TRUE,
+      '#default_value' => $mview_default_value,
       '#ahah' => array(
-	      'path' => 'admin/tripal/tripal_views_setup/ajax/mview_cols',
-  	     'wrapper' => 'table-rows-div',
+	      'path' => ahah_helper_path(array('mview')),
+  	     'wrapper' => 'mview-id-wrapper',
          'effect' => 'fade',
          'event' => 'change',
          'method' => 'replace',
 	),
 	);
+	$form['mview_id']['update_usage'] = array(
+	    '#type'  => 'submit',
+	    '#value' => t('Update usage'),
+	// Note that we can simply use the generic submit callback provided by the
+	// ahah_helper module here!
+	// All it does, is set $form_state['rebuild'] = TRUE.
+	    '#submit' => array('ahah_helper_generic_submit'),
+	// We set the 'no-js' class, which means this submit button will be hidden
+	// automatically by Drupal if JS is enabled.
+	    '#attributes' => array('class' => 'no-js'),
+	);
 
 	// ignore this for now... we'll come back to it later -- spf
 	//	$form['row_base_table_name'] = array(
@@ -136,20 +153,20 @@ function tripal_views_setup_new_setup_form(&$form_state, $ahah_values = array())
 	//		'#required' => TRUE,
 	//	);
 
-	$form['view_setup_table'] = array(
-     '#type' => 'item',
-  	  '#prefix' => '<div id="table-rows-div">',
-  	  '#suffix' => '</div>',
-	);
 
-	if($form_state['values']['mview_id']){
+	dpm(strcmp($mview_default_value['usage'], '0'), 'second mview');
+
+	if (strcmp($mview_default_value['usage'], '0') != 0){
+
+
+		$mview_id = $mview_default_value['usage'];
 
-		$mview_id = $form_state['values']['mview_id'];
+		dpm($mview_id, 'mviewid is');
 
-		$form['view_setup_table'] = array(
+		$form['mview_id'] = array(
 			'#type' => 'fieldset',
 			'#title' => 'Table Fields Setup',
-			'#prefix' => '<div id="table-rows-div">',
+			'#prefix' => '<div id="fieldset-table-rows-wrapper">',
 		   '#suffix' => '</div>',
 		);
 
@@ -163,7 +180,8 @@ function tripal_views_setup_new_setup_form(&$form_state, $ahah_values = array())
 		$chado_tables = tripal_core_get_chado_tables();
 		$chado_tables = array_merge(array('select or leave blank',), $chado_tables);
 		$handlers = array();
-		$form['view_setup_table']["fields_headers"] = array(
+		dpm($chado_tables, 'chado tables');
+		$form['mview_id']["fields_headers"] = array(
          '#type' => 'markup',
          '#value' => "<div class=\"field-headers\">".
               "<div class=\"column-id\">Field Name and Type</div>".
@@ -171,19 +189,9 @@ function tripal_views_setup_new_setup_form(&$form_state, $ahah_values = array())
               "<div class=\"fields-column-join-column\">Join Column</div>".
               "<div class=\"fields-column-handler\">Handler</div></div>",
 		);
+		dpm($form,'form here');
 		foreach ($columns as $column){
-			// each ahah element must have it's own matching menu item, maybe this is why our created ahahs don't work
-			// 			for ($i = 0; $i < $howmany; $i++) {
-			$item = array(
-					'link_path' => "admin/tripal/tripal_views_setup/ajax/field_col_join-$i",
-			     'title' => 'Get Join Columns',
-			     'page callback' => 'tripal_view_setup_ajax_field_col_join',
-			  	 'type' => MENU_CALLBACK,
-			     'access arguments' => array('access administration pages'),
-			);
-			// 			}
-				
-			menu_link_save($item);// saves the menu item
+			dpm($i, 'colmuns');
 
 			$column = trim($column);  // trim trailing and leading spaces
 			preg_match("/^(.*?)\ (.*?)$/",$column,$matches);
@@ -191,12 +199,13 @@ function tripal_views_setup_new_setup_form(&$form_state, $ahah_values = array())
 			$column_type = $matches[2];
 
 			// first print the field name
-			$form['view_setup_table']["fields_start_$mview_id-$i"] = array(
+			$form['mview_id']["fields_start_$mview_id-$i"] = array(
            '#type' => 'markup',
            '#value' => "<div class=\"fields-new-row\">",
 			);
 
-			$form['view_setup_table']["fields_column_name_$mview_id-$i"] = array(
+			dpm($form,'form here 2');
+			$form['mview_id']["fields_column_name_$mview_id-$i"] = array(
            '#type' => 'markup',
            '#attributes' => array('class' => 'fields-column-name'),
            '#value' => "<div class=\"column-id\"><span class=\"column-name\">$column_name</span>".
@@ -204,21 +213,21 @@ function tripal_views_setup_new_setup_form(&$form_state, $ahah_values = array())
 			);
 
 			// second print the table join drop down
-			$table = $form_state['values']["fields_column_join_$mview_id_$i"];
-			$form['view_setup_table']["fields_column_join_$mview_id-$i"] = array(
+// 			$table = $form_state['values']["fields_column_join_$mview_id_$i"];
+			$form['mview_id']["fields_column_join_$mview_id-$i"] = array(
             '#type' => 'select',
             '#prefix' => "<div class=\"fields-column-join\">",
             '#suffix' => "</div>",
             '#options' => $chado_tables,
             '#required' => FALSE,
             '#default_value' => $table,
-            '#ahah' => array(
-      	     'path' => "admin/tripal/tripal_views_setup/ajax/field_col_join_$i",
-      	     'wrapper' => "fields-column-join-column-$mview_id-$i",
-              'effect' => 'fade',
-              'event' => 'change',
-              'method' => 'replace',
-			),
+			//             '#ahah' => array(
+			//       	     'path' => "admin/tripal/tripal_views_setup/ajax/field_col_join_$i",
+			//       	     'wrapper' => "fields-column-join-column-$mview_id-$i",
+			//               'effect' => 'fade',
+			//               'event' => 'change',
+			//               'method' => 'replace',
+			// 			),
 			);
 			if($table){
 				$table_desc = module_invoke_all('chado_'.$table.'_schema');
@@ -226,256 +235,59 @@ function tripal_views_setup_new_setup_form(&$form_state, $ahah_values = array())
 			} else {
 				$columns = array();
 			}
-			$form['view_setup_table']["fields_column_join_column_$mview_id-$i"] = array(
+			$form['mview_id']["fields_column_join_column_$mview_id-$i"] = array(
             '#type' => 'select',
 		      '#prefix' => "<div id=\"fields-column-join-column-$mview_id-$i\" class=\"fields-column-join-column\">",
             '#suffix' => "</div>",
             '#options' => $columns,
             '#required' => FALSE,
 			);
-			$form['view_setup_table']["fields_column_handler_$mview_id-$i"] = array(
+			$form['mview_id']["fields_column_handler_$mview_id-$i"] = array(
             '#type' => 'select',
             '#prefix' => "<div class=\"fields-column-handler\">",
             '#suffix' => "</div>",
             '#options' => $handlers,
             '#required' => FALSE,
 			);
-			$form['view_setup_table']["fields_end_$i"] = array(
+			$form['mview_id']["fields_end_$i"] = array(
             '#type' => 'markup',
             '#value' => "</div>",
 			);
 			$i++;
-			}
+		}
+		
 
-			$form['view_setup_table']['submit'] = array(
-	      '#type' => 'submit',
-	      '#value' => 'Create',
-			);
+// 		$form['submit'] = array(
+// 	      '#type' => 'submit',
+// 	      '#value' => 'Create',
+// 		);
 
-			$form['row_counter'] = array(
-		   '#type' => 'hidden',
-		   '#value' => $i,
-			);
-		} // end if($form_state['values']['mview_id'])
-		return $form;
-	}
-	/**
-	 *
-	 * @ingroup tripal_view_setup
-	 */
-	function tripal_view_setup_ajax_mview_cols(){
-
-		// regenerate the form
-		// 	$form = tripal_views_setup_ajax_rebuild_form($form_state, $args, $_POST);
-		$form = tripal_views_setup_ajax_rebuild_form();
-
-		// because the AJAX sent a post of the mview_id, the form now has in it
-		// form components for the rows for the materialized view.  We want to add
-		// these components to the page, but we don't need to add the existing form
-		// elements because they are already there.
-		$view_setup_table_form = $form['view_setup_table'];
-		unset($view_setup_table_form['#prefix'], $view_setup_table_form['#suffix']);
-		$output = theme('status_message') . drupal_render($view_setup_table_form);
-
-		// Final rendering callback.
-		// 	$javascript = drupal_add_js(NULL, NULL, 'header');
-		drupal_json(array('status' => TRUE, 'data' => $output,));// 'settings' => call_user_func('array_merge_recursive', $javascript['setting'])));
-	}
-	/**
-	 *
-	 * @ingroup tripal_view_setup
-	 */
-	function tripal_view_setup_ajax_field_col_join(){
-
-		// regenerate the form
-		$form = tripal_views_setup_ajax_rebuild_form();
-
-		//    // get the information we need to pull out table select box that was changed
-		//    $mview_id = $form_state['values']['mview_id'];
-		// //   $row = $form_state['values']['mview_id'];
-
-		// //   $row_select_box = $form['view_setup_table']["fields-column-join-column-$mview_id-1"];
-		// //	unset($row_select_box['#prefix'], $row_select_box['#suffix']);
-		// // 	$output = theme('status_message') . drupal_render($row_select_box);
-
-		// 	// Final rendering callback.
-		// // 	$javascript = $javascript = drupal_add_js(NULL);
-		// // 	drupal_json(array('status' => TRUE, 'data' => $output, 'settings' => call_user_func('array_merge_recursive', $javascript['setting'])));
-		//   $javascript = drupal_add_js(NULL, NULL, 'header');
-		// 	drupal_json(array('status' => TRUE, 'data' => 'helloworld', 'settings' => call_user_func('array_merge_recursive', $javascript['setting'])));
-
-		$changed_elements = $form['fields-column-join-column-$mview_1-1'];
-		unset($changed_elements['#prefix'], $changed_elements['#suffix']);
-		$output = theme('status_messages') . drupal_render($changed_elements);
-		drupal_json(array(
-		    'status'   => TRUE,
-		    'data'     => $output,
-		));
-	}
+// 		$form['row_counter'] = array(
+// 		   '#type' => 'hidden',
+// 		   '#value' => $i,
+// 		);
+	} // end if($form_state['values']['mview_id'])
+// 	else{
+// 		$form = array(
+// 			     '#type' => 'item',
+// 			  	  '#prefix' => '<div id="table-rows-wrapper">',
+// 			  	  '#suffix' => '</div>',
+// 		);
+// 	}
 
-	function tripal_views_setup_ajax_rebuild_form(){
-		$form_state = array('storage' => NULL, 'submitted' => FALSE);
-		$form_build_id = $_POST['form_build_id'];
-		$form = form_get_cache($form_build_id, $form_state);
-		$args = $form['#parameters'];
-		$form_id = array_shift($args);
-		$form_state['post'] = $form['#post'] = $_POST;
-		// Enable the submit/validate handlers to determine whether AHAH-submittted.
-		$form_state['ahah_submission'] = TRUE;
-		$form['#programmed'] = $form['#redirect'] = FALSE;
-		drupal_process_form($form_id, $form, $form_state);
-		$form = drupal_rebuild_form($form_id, $form_state, $args, $form_build_id);
-		return $form;
-	}
-	/**
-	 *
-	 * @ingroup tripal_view_setup
-	 */
-	function tripal_views_setup_ajax_rebuild_formz(&$form_state, &$args, &$_POST){
-
-		// Retrieve the form from the cache
-		$form_state = array('storage' => NULL, 'submitted' => FALSE,);
-		$form_build_id = $_POST['form_build_id'];
-		$form = form_get_cache($form_build_id, $form_state);
-
-		// Preparing to process the form
-		$args = $form['#parameters'];
-		$form_id = array_shift($args);
-		$form_state['post'] = $form['#post'] = $_POST;
-		$form['#programmed'] = $form['#redirect'] = FALSE;
-
-		// Sets the form_state so that the validate and submit handlers can tell
-		// when the form is submitted via AHAH
-		$form_state['ahah_submission'] = TRUE;
-
-		// Process the form with drupal_process_form. This function calls the submit
-		// handlers, which put whatever was worthy of keeping into $form_state.
-		drupal_process_form($form_id, $form, $form_state);
-
-		// You call drupal_rebuild_form which destroys $_POST.
-		// The form generator function is called and creates the form again but since
-		// it knows to use $form_state, the form will be different.
-		// The new form gets cached and processed again, but because $_POST is
-		// destroyed, the submit handlers will not be called again.
-		$form = drupal_rebuild_form($form_id, $form_state, $args, $form_build_id);
-
-		dpm($form,'form at rebuild');
-		dpm($form_state['post'], 'post at rebuild');
-
-		return $form;
-	}
+	$form['save'] = array(
+	    '#type'  => 'submit',
+	    '#value' => t('Save'),
+	);
+	return $form;
+}
 
 
-	/**
-	 *
-	 * @ingroup tripal_view_setup
-	 */
-	// function tripal_views_setup_fields(&$form_state=NULL, $mview_id = NULL){
-
-	// 	if(!$mview_id){
-	// 		return;
-	// 	}
-
-	// 	// get the columns in this materialized view.  They are separated by commas
-	// 	// where the first word is the column name and the rest is the type
-	// 	$sql = "SELECT mv_specs FROM {tripal_mviews} WHERE mview_id = $mview_id";
-	// 	$mview = db_fetch_object(db_query($sql));
-	// 	$columns = explode(",",$mview->mv_specs);
-
-	// 	$i=1;
-	// 	$chado_tables = tripal_core_get_chado_tables();
-	// 	$handlers = array();
-	// 	$form["fields_headers"] = array(
-	//        '#type' => 'markup',
-	//        '#value' => "<div class=\"field-headers\">".
-	//             "<div class=\"column-id\">Field Name and Type</div>".
-	//             "<div class=\"fields-column-join\">Join Table</div>".
-	//             "<div class=\"fields-column-join-column\">Join Column</div>".
-	//             "<div class=\"fields-column-handler\">Handler</div></div>",
-	// 	);
-	// 	foreach ($columns as $column){
-
-	// 		$column = trim($column);  // trim trailing and leading spaces
-	// 		preg_match("/^(.*?)\ (.*?)$/",$column,$matches);
-	// 		$column_name = $matches[1];
-	// 		$column_type = $matches[2];
-
-	// 		// first print the field name
-	// 		$form["fields_start_$i"] = array(
-	//        '#type' => 'markup',
-	//        '#value' => "<div class=\"fields-new-row\">",
-	// 		);
-
-	// 		$form["fields_column_name_$i"] = array(
-	//        '#type' => 'markup',
-	//          '#attributes' => array('class' => 'fields-column-name'),
-	//        '#value' => "<div class=\"column-id\"><span class=\"column-name\">$column_name</span>".
-	//                      "<br><span class=\"column-type\">$column_type</span></div>",
-	// 		);
-
-	// 		// second print the table join drop down
-	// 		$chado_tables = array_merge(array(NULL,), $chado_tables);
-	// 		$form["fields_column_join_$i"] = array(
-	//        '#type' => 'select',
-	//        '#prefix' => "<div class=\"fields-column-join\">",
-	//        '#suffix' => "</div>",
-	//        '#options' => $chado_tables,
-	//        '#required' => FALSE,
-	//        '#ahah' => array(
-	//          'path' => 'admin/tripal/tripal_views_setup/ajax/field_col_join',
-	//          'wrapper' => "fields-column-join-column-$i",
-	//          'effect' => 'fade',
-	//          'event' => 'change',
-	//          'method' => 'replace',
-	// 		),
-	// 		);
-	// 		$form["fields_column_join_column_$i"] = array(
-	//        '#type' => 'select',
-	//        '#prefix' => "<div id=\"fields-column-join-column-$i\" class=\"fields-column-join-column\">",
-	//        '#suffix' => "</div>",
-	//        '#options' => array(),
-	//        '#required' => FALSE,
-	// 		);
-	// 		$form["fields_column_handler_$i"] = array(
-	//        '#type' => 'select',
-	//          '#prefix' => "<div class=\"fields-column-handler\">",
-	//          '#suffix' => "</div>",
-	//        '#options' => $handlers,
-	//        '#required' => FALSE,
-	// 		);
-	// 		$form["fields_end_$i"] = array(
-	//        '#type' => 'markup',
-	//        '#value' => "</div>",
-	// 		);
-	// 		$i++;
-	// 	}
-
-	// 	$form['row_counter'] = array(
-	//     '#type' => 'hidden',
-	//     '#value' => $i,
-	// 	);
-
-	// 	$form['submit'] = array(
-	//     '#type' => 'submit',
-	//     '#value' => 'Create',
-	// 	);
-
-	// 	return $form;
-	// }
-
-	// function tripal_views_setup_fields_form_submit($form, &$form_state){
-	// 	----($form,'formfield');
-	// 	----($form_state, 'formstatefield');
-
-	// }
-
-
-
-	/**
-	 *
-	 * @ingroup tripal_view_setup
-	 */
-	function tripal_views_setup_new_setup_form_submit($form, &$form_state){
-		dpm($form, 'form on submit');
-		dpm($form_state, 'forms_state on submit');
-	}
+/**
+ *
+ * @ingroup tripal_view_setup
+ */
+function tripal_views_setup_new_setup_form_submit($form, &$form_state){
+	dpm($form, 'form on submit');
+	dpm($form_state, 'forms_state on submit');
+}

+ 0 - 15
base/tripal_views_setup/tripal_views_setup.module

@@ -24,21 +24,6 @@ function tripal_views_setup_menu(){
      'type' => MENU_NORMAL_ITEM,
 	);
 
-	$items['admin/tripal/tripal_views_setup/ajax/mview_cols'] = array(
-     'title' => 'Get MView Columns',
-     'page callback' => 'tripal_view_setup_ajax_mview_cols',
-     'access arguments' => array('access administration pages'),
-     'type' => MENU_CALLBACK,
-	);
-
-	$items['admin/tripal/tripal_views_setup/ajax/field_col_join/%/%'] = array(
-    'title' => 'Get Join Columns',
-    'page callback' => 'tripal_view_setup_ajax_field_col_join',
-		'page arguments' => array(5,6),
-    'access arguments' => array('access administration pages'),
-  	'type' => MENU_CALLBACK,
-	);
-
 	return $items;
 }