[evolvis-commits] r10998: -Adding a sys_template_group variable which is used for tracker cloning. ↵ -Any number of template trackers can be set up and cloned into other projects↵ -Tracker admin navigation improved↵

mirabilos at evolvis.org mirabilos at evolvis.org
Thu Feb 24 17:59:14 CET 2011


Author: mirabilos
Date: 2011-02-24 17:59:14 +0100 (Thu, 24 Feb 2011)
New Revision: 10998

Added:
   trunk/gforge_base/evolvisforge-5.1/gforge/db/20050628.sql
Modified:
   trunk/gforge_base/evolvisforge-5.1/gforge/common/tracker/ArtifactExtraField.class
   trunk/gforge_base/evolvisforge-5.1/gforge/common/tracker/ArtifactType.class
   trunk/gforge_base/evolvisforge-5.1/gforge/etc/local.d/30homegroupother
   trunk/gforge_base/evolvisforge-5.1/gforge/etc/local.inc.example
   trunk/gforge_base/evolvisforge-5.1/gforge/www/include/languages/Base.tab
   trunk/gforge_base/evolvisforge-5.1/gforge/www/tracker/admin/index.php
   trunk/gforge_base/evolvisforge-5.1/gforge/www/tracker/admin/updates.php
   trunk/gforge_base/evolvisforge-5.1/gforge/www/tracker/include/ArtifactTypeHtml.class
Log:
-Adding a sys_template_group variable which is used for tracker cloning.
-Any number of template trackers can be set up and cloned into other projects
-Tracker admin navigation improved


Modified: trunk/gforge_base/evolvisforge-5.1/gforge/common/tracker/ArtifactExtraField.class
===================================================================
--- trunk/gforge_base/evolvisforge-5.1/gforge/common/tracker/ArtifactExtraField.class	2011-02-24 16:59:13 UTC (rev 10997)
+++ trunk/gforge_base/evolvisforge-5.1/gforge/common/tracker/ArtifactExtraField.class	2011-02-24 16:59:14 UTC (rev 10998)
@@ -140,11 +140,39 @@
 					db_rollback();
 					return false;
 				} else {
-					db_query("INSERT INTO artifact_extra_field_elements(extra_field_id,element_name,status_id) 
+//
+//	Must insert some default statuses for each artifact
+//
+					$reso=db_query("INSERT INTO artifact_extra_field_elements(extra_field_id,element_name,status_id) 
 						values ('$id','Open','1')");
-					echo db_error();
-					db_query("INSERT INTO artifact_extra_field_elements(extra_field_id,element_name,status_id) 
+					if (!$reso) {
+						echo db_error();
+					} else {
+						$resoid=db_insertid($reso,'artifact_extra_field_elements','element_id');
+						db_query("INSERT INTO artifact_extra_field_data(artifact_id,field_data,extra_field_id) 
+							SELECT artifact_id,$resoid,$id FROM artifact 
+							WHERE group_artifact_id='".$this->ArtifactType->getID()."'
+							AND status_id=1");
+					}
+					$resc=db_query("INSERT INTO artifact_extra_field_elements(extra_field_id,element_name,status_id)
 						values ('$id','Closed','2')");
+					if (!$resc) {
+						echo db_error();
+					} else {
+						$rescid=db_insertid($resc,'artifact_extra_field_elements','element_id');
+						db_query("INSERT INTO artifact_extra_field_data(artifact_id,field_data,extra_field_id) 
+							SELECT artifact_id,$rescid,$id FROM artifact 
+							WHERE group_artifact_id='".$this->ArtifactType->getID()."'
+							AND status_id != 1");
+					}
+				}
+			} elseif (strstr(ARTIFACT_EXTRAFIELD_FILTER_INT,$field_type) !== false) {
+//
+//	Must insert some default 100 rows for the data table so None queries will work right
+//
+				$resdefault=db_query("INSERT INTO artifact_extra_field_data(artifact_id,field_data,extra_field_id) 
+					SELECT artifact_id,100,$id FROM artifact WHERE group_artifact_id='".$this->ArtifactType->getID()."'");
+				if (!$resdefault) {
 					echo db_error();
 				}
 			}

Modified: trunk/gforge_base/evolvisforge-5.1/gforge/common/tracker/ArtifactType.class
===================================================================
--- trunk/gforge_base/evolvisforge-5.1/gforge/common/tracker/ArtifactType.class	2011-02-24 16:59:13 UTC (rev 10997)
+++ trunk/gforge_base/evolvisforge-5.1/gforge/common/tracker/ArtifactType.class	2011-02-24 16:59:14 UTC (rev 10998)
@@ -638,6 +638,63 @@
 	}
 
 	/**
+	 *	cloneFieldsFrom - clone all the fields and elements from another tracker
+	 *
+	 *	@return	boolean	true/false on success
+	 */
+	function cloneFieldsFrom($clone_tracker_id) {
+		global $sys_template_group;
+		$g =& group_get_object($sys_template_group);
+		if (!$g || !is_object($g)) {
+			$this->setError('Could Not Get Template Group');
+			return false;
+		} elseif ($g->isError()) {
+			$this->setError('Template Group Error '.$g->getErrorMessage());
+			return false;
+		}
+		$at =& new ArtifactType($g,$clone_tracker_id);
+		if (!$at || !is_object($at)) {
+			$this->setError('Could Not Get Tracker To Clone');
+			return false;
+		} elseif ($at->isError()) {
+			$this->setError('Clone Tracker Error '.$at->getErrorMessage());
+			return false;
+		}
+		$efs =& $at->getExtraFields();
+
+
+		//
+		//	Iterate list of extra fields
+		//
+		db_begin();
+		foreach ($efs as $ef) {
+			//new field in this tracker
+			$nef = new ArtifactExtraField($this);
+			if (!$nef->create( addslashes(util_unconvert_htmlspecialchars($ef['field_name'])), $ef['field_type'], $ef['attribute1'], $ef['attribute2'], $ef['is_required'])) {
+				db_rollback();
+				$this->setError('Error Creating New Extra Field: '.$nef->getErrorMessage());
+				return false;
+			}
+			//
+			//	Iterate the elements
+			//
+			$resel=db_query("SELECT * FROM artifact_extra_field_elements WHERE extra_field_id='".$ef['extra_field_id']."'");
+			while ($el =& db_fetch_array($resel)) {
+				//new element
+				$nel = new ArtifactExtraFieldElement($nef);
+				if (!$nel->create( addslashes(util_unconvert_htmlspecialchars($el['element_name'])), $el['status_id'] )) {
+					db_rollback();
+					$this->setError('Error Creating New Extra Field Element: '.$nel->getErrorMessage());
+					return false;
+				}
+			}
+		}
+		db_commit();
+		return true;
+
+	}
+
+	/**
 	 *	getExtraFieldName - Get a box name using the box ID 
 	 *
 	 *	@param  int 	id of an extra field.

Added: trunk/gforge_base/evolvisforge-5.1/gforge/db/20050628.sql
===================================================================
--- trunk/gforge_base/evolvisforge-5.1/gforge/db/20050628.sql	                        (rev 0)
+++ trunk/gforge_base/evolvisforge-5.1/gforge/db/20050628.sql	2011-02-24 16:59:14 UTC (rev 10998)
@@ -0,0 +1,2 @@
+INSERT INTO groups (group_name, is_public, status, unix_group_name, short_description, register_time) VALUES 
+('Template Project',1,'P','template','Project to house templates used to build other projects', extract(EPOCH FROM now()));

Modified: trunk/gforge_base/evolvisforge-5.1/gforge/etc/local.d/30homegroupother
===================================================================
--- trunk/gforge_base/evolvisforge-5.1/gforge/etc/local.d/30homegroupother	2011-02-24 16:59:13 UTC (rev 10997)
+++ trunk/gforge_base/evolvisforge-5.1/gforge/etc/local.d/30homegroupother	2011-02-24 16:59:14 UTC (rev 10998)
@@ -77,6 +77,7 @@
 $sys_news_group={newsadmin_groupid};
 $sys_stats_group={statsadmin_groupid};
 $sys_peer_rating_group={peerrating_groupid};
+$sys_template_group={template_project};
 $default_trove_cat={default_trove_cat};
 
 // JPGRAPH Package

Modified: trunk/gforge_base/evolvisforge-5.1/gforge/etc/local.inc.example
===================================================================
--- trunk/gforge_base/evolvisforge-5.1/gforge/etc/local.inc.example	2011-02-24 16:59:13 UTC (rev 10997)
+++ trunk/gforge_base/evolvisforge-5.1/gforge/etc/local.inc.example	2011-02-24 16:59:14 UTC (rev 10998)
@@ -245,6 +245,7 @@
 $sys_news_group=3;
 $sys_stats_group=2;
 $sys_peer_rating_group=4;
+$sys_template_group=5;
 $default_trove_cat=18;
 
 // JPGRAPH Package

Modified: trunk/gforge_base/evolvisforge-5.1/gforge/www/include/languages/Base.tab
===================================================================
--- trunk/gforge_base/evolvisforge-5.1/gforge/www/include/languages/Base.tab	2011-02-24 16:59:13 UTC (rev 10997)
+++ trunk/gforge_base/evolvisforge-5.1/gforge/www/include/languages/Base.tab	2011-02-24 16:59:14 UTC (rev 10998)
@@ -2779,13 +2779,23 @@
 tracker_add	for_project	For project
 tracker_add	submit		Submit
 tracker_add	title	Submit Tracker Item
+tracker_admin	choose_tracker	Choose the template tracker to clone. The site administrator will have to set up trackers with default values and set permissions properly so you can access them.
+tracker_admin	clone_warning	WARNING!!! Cloning this tracker will duplicate all the fields and all the elements from those fields into this tracker. There is nothing to prevent you from cloning multiple times or making a huge mess. You have been warned!
+tracker_admin	add_artifact_types	New Tracker
+tracker_admin	update_artifact_types	Update Settings
+tracker_admin	manage_extrafield	Manage Custom Fields
+tracker_admin	clone_tracker	Clone Tracker
+tracker_admin	add_canned	Add Canned Responses
+tracker_admin	delete	Delete Tracker
+tracker_admin	add_artifact_types
+tracker_admin	add_artifact_types
 tracker_admin	permanently_delete_info	Permanently delete this tracker.
 tracker_admin	deleted	Successfully Deleted.
 tracker_admin	delete_warning	You are about to permanently and irretrievably delete this tracker and all its contents!
 tracker_admin	delete_extrafieldwarning	You are about to permanently and irretrievably delete this custom field and all its contents!
 tracker_admin	sure	I'm Sure.
 tracker_admin	really_sure	I'm Really Sure.
-tracker_admin	delete	Delete.
+tracker_admin	delete	Delete
 tracker_admin	add_canned_responses	Add/Update Canned Responses
 tracker_admin	add_canned_responses_info	Create/Change generic response messages for the tracker
 tracker_admin	add_categories	Add/Update Categories

Modified: trunk/gforge_base/evolvisforge-5.1/gforge/www/tracker/admin/index.php
===================================================================
--- trunk/gforge_base/evolvisforge-5.1/gforge/www/tracker/admin/index.php	2011-02-24 16:59:13 UTC (rev 10997)
+++ trunk/gforge_base/evolvisforge-5.1/gforge/www/tracker/admin/index.php	2011-02-24 16:59:14 UTC (rev 10998)
@@ -72,6 +72,10 @@
 
 		include ('form-addcanned.php');
 
+	} elseif ($clone_tracker) {
+
+		include ('form-clonetracker.php');
+
 	} elseif ($uploadtemplate) {
 
 		include ('form-uploadtemplate.php');

Modified: trunk/gforge_base/evolvisforge-5.1/gforge/www/tracker/admin/updates.php
===================================================================
--- trunk/gforge_base/evolvisforge-5.1/gforge/www/tracker/admin/updates.php	2011-02-24 16:59:13 UTC (rev 10997)
+++ trunk/gforge_base/evolvisforge-5.1/gforge/www/tracker/admin/updates.php	2011-02-24 16:59:14 UTC (rev 10998)
@@ -207,6 +207,21 @@
 			}
 
 		//
+		//	Clone a tracker's elements to this tracker
+		//
+		} elseif ($clone_tracker) {
+
+			if (!$clone_id) {
+				exit_missing_param();
+			}
+			if (!$ath->cloneFieldsFrom($clone_id)) {
+				exit_error('Error','Error cloning fields: '.$ath->getErrorMessage());
+			} else {
+				$feedback .= 'Successfully Cloned Tracker Fields ';
+				$clone_tracker='';
+			}
+
+		//
 		//	Update a tracker
 		//
 		} elseif ($update_type) {

Modified: trunk/gforge_base/evolvisforge-5.1/gforge/www/tracker/include/ArtifactTypeHtml.class
===================================================================
--- trunk/gforge_base/evolvisforge-5.1/gforge/www/tracker/include/ArtifactTypeHtml.class	2011-02-24 16:59:13 UTC (rev 10997)
+++ trunk/gforge_base/evolvisforge-5.1/gforge/www/tracker/include/ArtifactTypeHtml.class	2011-02-24 16:59:14 UTC (rev 10998)
@@ -76,13 +76,35 @@
 	}
 
 	function adminHeader($params) {
-		global $Language;
+		global $Language,$HTML;
 		echo $this->header($params);
-//		$group_id= $this->Group->getID();
-//		echo '<strong>'.$Language->getText('tracker_artifacttype','admin_functions').': <a href="/tracker/admin/?group_id='.$group_id.'">'.$Language->getText('tracker_artifacttype','add_artifact_types').'</a>';
-//		echo ' | <a href="/tracker/admin/?group_id='.$group_id.'&atid='. $this->getID() .'">'.$Language->getText('tracker_artifacttype','edit_options').': '. $this->getName() .'</a></strong>';
+		$group_id= $this->Group->getID();
+
+		$links_arr[]='/tracker/admin/?group_id='.$group_id;
+		$title_arr[]=$Language->getText('tracker_admin','add_artifact_types');
+
+		$links_arr[]='/tracker/admin/?group_id='.$group_id.'&atid='.$this->getID().'&update_type=1';
+		$title_arr[]=$Language->getText('tracker_admin','update_artifact_types');
+
+		$links_arr[]='/tracker/admin/?group_id='.$group_id.'&atid='.$this->getID().'&add_extrafield=1';
+		$title_arr[]=$Language->getText('tracker_admin','manage_extrafield');
+
+		$links_arr[]='/tracker/admin/?group_id='.$group_id.'&atid='.$this->getID().'&clone_tracker=1';
+		$title_arr[]=$Language->getText('tracker_admin','clone_tracker');
+
+		$links_arr[]='/tracker/admin/?group_id='.$group_id.'&atid='.$this->getID().'&add_canned=1';
+		$title_arr[]=$Language->getText('tracker_admin','add_canned');
+
+		$links_arr[]='/tracker/admin/?group_id='.$group_id.'&atid='.$this->getID().'&delete=1';
+		$title_arr[]=$Language->getText('tracker_admin','delete');
+
+		echo $HTML->printSubMenu($title_arr,$links_arr);
 	}
 
+	function adminFooter($params) {
+		echo $this->footer($params);
+	}
+
 	function renderExtraFields($selected=array(),$show_100=false,$text_100='none',$show_any=false,$text_any='Any',$filter='',$status_show_100=false,$mode='') {
 		$efarr = $this->getExtraFields($filter);
 		//each two columns, we'll reset this and start a new row



More information about the evolvis-commits mailing list