[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