Просмотр исходного кода

Adding new tripal_views module

spficklin 13 лет назад
Родитель
Сommit
21c0046a10

+ 10 - 0
base/tripal_views/tripal_views.info

@@ -0,0 +1,10 @@
+name = Tripal Views
+description = This module provides integration with Drupal Views. Other Tripal modules may have an optional dependency with this module and once enabled Views support becomes active for those modules.  This module provides a way to integrate Materialized Views and Chado Tables with Views. It also integrates the Views Data Export module to allow for downloads of Views into Excel, CSV and FASTA formats.
+core = 6.x
+project = tripal_core
+package = Tripal
+version = 6.x-0.4
+
+dependencies[] = views
+dependencies[] = ahah_helper
+dependencies[] = views_data_export

+ 206 - 0
base/tripal_views/tripal_views.install

@@ -0,0 +1,206 @@
+<?php
+
+/************************************************************************
+*  Implementation of hook_install();
+* 
+* @ingroup tripal_views
+*/
+function tripal_views_install(){
+
+   // create the module's data directory
+   tripal_create_moddir('tripal_views');
+
+  // create the tables that manage materialized views and jobs
+  drupal_install_schema('tripal_views');
+
+}
+
+/************************************************************************
+* Implementation of hook_schema().
+*
+* @ingroup tripal_views
+*/
+function tripal_views_schema() {
+   $schema = tripal_views_get_schemas();
+   return $schema;
+}
+/************************************************************************
+* Implementation of hook_uninstall()
+*
+* @ingroup tripal_views
+*/
+function tripal_views_uninstall(){
+   drupal_uninstall_schema('tripal_views');
+}
+
+/************************************************************************
+* This function simply defines all tables needed for the module to work
+* correctly.  By putting the table definitions in a separate function we
+* can easily provide the entire list for hook_install or individual
+* tables for an update.
+*
+* @ingroup tripal_views
+*/
+function tripal_views_get_schemas (){  
+   $schema = array();
+
+   $temp = tripal_views_views_schema();
+   foreach ($temp as $table => $arr){ 
+      $schema[$table] = $arr; 
+   } 
+
+	return $schema;
+}
+
+/************************************************************************
+* 
+*
+* @ingroup tripal_views
+*/
+function tripal_views_views_schema(){
+   $schema = array();
+	$schema['tripal_views'] = array(
+		'description' => 'contains the setupes, their materialized view id and base table name that was used.',
+		'fields' => array(
+			'setup_id' => array(
+				'description' => 'the id of the setup',
+				'type' => 'serial',
+				'unsigned' => TRUE,
+				'not null' => TRUE,
+			),
+			'mview_id' => array(
+				'description' => 'the materialized view used for this setup',
+				'type' => 'int',
+				'unsigned' => TRUE,
+			),
+			'table_name' => array(
+				'description' => 'the base table name to be used when using this setup. Use this field when not using a materialized view',
+				'type' => 'varchar',
+				'length' => 255,
+				'not null' => TRUE,
+				'default' => '',
+			),
+			'name' => array(
+				'description' => 'Human readable name of this setup',
+				'type' => 'varchar',
+				'length' => 255,
+				'not null' => TRUE,
+				'default' => '',
+			),
+			'comment' => array(
+				'description' => 'add notes about this views setup',
+				'type' => 'text',
+				'size' => 'normal',
+				'not null' => FALSE,
+				'default' => '',
+			),
+		),
+		'unique_keys' => array(
+			'setup_id' => array('setup_id'),
+		),
+		'primary key' => array('setup_id'),
+	);
+
+	$schema['tripal_views_join'] = array(
+		'description' => 'coordinate the joining of tables',
+		'fields' => array(
+		  'view_join_id' => array(
+				'description' => 'the id of the join',
+				'type' => 'serial',
+				'unsigned' => TRUE,
+				'not null' => TRUE,
+		  ),
+			'setup_id' => array(
+				'description' => 'setup id from tripal_views table',
+				'type' => 'int',
+				'unsigned' => TRUE,
+				'not null'=> TRUE,
+			),
+			'base_table' => array(
+			   'description' => 'the name of the base table',
+				'type' => 'varchar',
+				'length' => '255',
+				'not null' => TRUE,
+				'default' => '',
+	      ),
+			'base_field' => array(
+				'description' => 'the name of the base table column that will be joined',
+				'type' => 'varchar',
+				'length' => '255',
+				'not null' => TRUE,
+				'default' => '',
+			),
+			'left_table' => array(
+				'description' => 'the table on which to perform a left join',
+				'type' => 'varchar',
+				'length' => '255',
+				'not null' => TRUE,
+				'default' => '',
+			),
+			'left_field' => array(
+				'description' => 'the column on which to perform a left join',
+				'type' => 'varchar',
+				'length' => '255',
+				'not null' => TRUE,
+				'default' => '',
+	      ),
+		),
+		'unique_keys' => array(
+			'setup_id' => array('view_join_id'),
+		),
+		'primary key' => array('view_join_id'),
+	);
+
+	$schema['tripal_views_handlers'] = array(
+		'description' => 'in formation for views: column and views handler name',
+		'fields' => array(
+			'handler_id' => array(
+				'description' => 'the id of the handler',
+				'type' => 'serial',
+			   'unsigned' => TRUE,
+			   'not null' => TRUE,
+	      ),
+			'setup_id' => array(
+				'description' => 'setup id from the tripal_views table',
+				'type' => 'int',
+				'unsigned' => TRUE,
+				'not null'=> TRUE,
+			),
+			'column_name' => array(
+				'description' => '',
+				'type' => 'varchar',
+				'length' => '255',
+				'not null' => TRUE,
+				'default' => '',
+			),
+			'handler_type' => array(
+				'description' => 'identifies the type of hander (e.g. field, filter, sort, argument, relationship, etc.)',
+				'type' => 'varchar',
+				'length' => '50',
+				'not null' => TRUE,
+				'default' => '',
+			),
+			'handler_name' => array(
+				'description' => 'the name of the handler',
+				'type' => 'varchar',
+				'length' => '255',
+				'not null' => TRUE,
+				'default' => '',
+			),
+			'arguments' => array(
+				'description' => 'arguments that may get passed to the handler',
+				'type' => 'text',
+				'size' => 'normal',
+				'not null' => FALSE,
+				'default' => '',
+			),
+		),
+		'unique_keys' => array(
+		   'setup_id' => array('handler_id'),
+	   ),
+		'primary key' => array('handler_id'),
+	);
+
+   return $schema;
+}
+?>

+ 42 - 0
base/tripal_views/tripal_views.module

@@ -0,0 +1,42 @@
+<?php
+
+require_once "tripal_views_integration.inc";
+require_once "tripal_views.views.inc";
+
+function tripal_views_menu() {
+   $items = array();
+   
+ 	$items['admin/tripal/views/integration'] = array(
+     'title' => t('Views Integration'),
+     'description' => t('Allows you to select existing materialized views and provide details for integration with Drupal Views.'),
+     'page callback' => 'tripal_views_views_integration_setup_list',
+     'access arguments' => array('manage tripal_views_integration'),
+     'type' => MENU_NORMAL_ITEM,
+ 	);
+
+
+	$items['admin/tripal/views/integration/new'] = array(
+     'title' => 'Integrate Views',
+     'page callback' => 'drupal_get_form',
+     'page arguments' => array('tripal_views_views_integration_form'),
+     'access arguments' => array('manage tripal_views_integration'), //TODO: figure out the proper permissions arguments
+     'type' => MENU_CALLBACK,
+	);
+	
+	$items['admin/tripal/views/integration/edit/%'] = array(
+     'title' => 'Edit Views Integration',
+     'page callback' => 'drupal_get_form',
+     'page arguments' => array('tripal_views_views_integration_form',5),
+     'access arguments' => array('manage tripal_views_integration'), //TODO: figure out the proper permissions arguments
+     'type' => MENU_CALLBACK,
+	);
+
+	$items['admin/tripal/views/integration/delete/%'] = array(
+     'title' => 'Delete Views Integration',
+     'page callback' => 'tripal_views_views_integration_delete',
+     'page arguments' => array(5),
+     'access arguments' => array('manage tripal_views_integration'), //TODO: figure out the proper permissions arguments
+     'type' => MENU_CALLBACK,
+	);
+  return $items;
+}