This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "FusionForge".
The branch, master has been updated
via 0f3ebe58f356d4cc96835afbb09fb51847b7f98e (commit)
via ead303898f2b13b26edfbf2d034b85d6478201bf (commit)
from 66dd2cf0c4277bf87e4e5c4b4796afd19a3e7e07 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
https://scm.fusionforge.org/anonscm/gitweb/?p=fusionforge/fusionforge.git;a=commitdiff;h=0f3ebe58f356d4cc96835afbb09fb51847b7f98e
commit 0f3ebe58f356d4cc96835afbb09fb51847b7f98e
Merge: 66dd2cf ead3038
Author: Franck Villaume <[email protected]>
Date: Thu Jul 21 17:00:06 2016 +0200
Merge remote-tracking branch 'bredt/master'
https://scm.fusionforge.org/anonscm/gitweb/?p=fusionforge/fusionforge.git;a=commitdiff;h=ead303898f2b13b26edfbf2d034b85d6478201bf
commit ead303898f2b13b26edfbf2d034b85d6478201bf
Author: Stéphane-Eymeric Bredthauer <[email protected]>
Date: Thu Jul 21 16:13:04 2016 +0200
Taskboard : multi-taskboard support
diff --git a/src/plugins/taskboard/common/TaskBoard.class.php
b/src/plugins/taskboard/common/TaskBoard.class.php
index c113258..6d40146 100644
--- a/src/plugins/taskboard/common/TaskBoard.class.php
+++ b/src/plugins/taskboard/common/TaskBoard.class.php
@@ -1,6 +1,7 @@
<?php
/**
* Copyright (C) 2013 Vitaliy Pylypiv <[email protected]>
+ * Copyright 2016, Stéphane-Eymeric Bredtthauer - TrivialDev
*
* This file is part of FusionForge.
*
@@ -53,14 +54,29 @@ function &taskboard_get_object($taskboard_id, $data =
false) {
* Initialize a task board
*/
function &taskboard_init($group_id) {
+ db_begin();
$res = db_query_params('INSERT INTO plugin_taskboard(group_id)
VALUES($1)', array($group_id));
if (!$res) {
+ $this->setError(db_error());
+ db_rollback();
return false;
}
-
- $Group = group_get_object($data['group_id']);
-
- $Taskboard = new TaskBoard($Group, $data);
+ $taskboard_id=db_insertid($res,'plugin_taskboard','taskboard_id');
+ if ($taskboard_id==0) {
+ db_rollback();
+ return false;
+ }
+ $Group = group_get_object($group_id);
+ if (!$Group) {
+ db_rollback();
+ return false;
+ }
+ $Taskboard = new TaskBoard($Group, $taskboard_id);
+ if (!$Taskboard) {
+ db_rollback();
+ return false;
+ }
+ db_commit();
return $Taskboard;
}
@@ -81,13 +97,13 @@ class TaskBoard extends FFError {
var $TrackersAdapter;
/**
- * Array of artifact data.
+ * Array of taskboard data.
*
* @var array $data_array.
*/
var $data_array;
- function TaskBoard($Group, $arr = false) {
+ function TaskBoard($Group, $data = false) {
parent::__construct();
if (!$Group || !is_object($Group)) {
$this->setError(_('No Valid Group Object'));
@@ -99,16 +115,17 @@ class TaskBoard extends FFError {
}
$this->Group = $Group;
- if (!$arr || !is_array($arr)) {
- if (!$this->fetchDataByGroup()) {
- return false;
- }
- } else {
- $this->data_array =& $arr;
- if ($this->data_array['group_id'] !=
$this->Group->getID()) {
- $this->setError('Group_id in db result does not
match Group Object');
- $this->data_array = null;
- return false;
+
+ if ($data) {
+ if (is_array($data)) {
+ $this->data_array =& $data;
+ if ($this->data_array['group_id'] !=
$this->Group->getID()) {
+ $this->setError('Group_id in db result
does not match Group Object');
+ $this->data_array = null;
+ return false;
+ }
+ } else {
+ $this->fetchData($data);
}
}
@@ -130,16 +147,22 @@ class TaskBoard extends FFError {
* @param array list of trackers IDs, linked to the taskboard
* @param array has of card background colors (key - tracker
id, value - bg color)
* @param string Alias for of 'select' extra field used for
release/sprint
- * @param string Tracke type of extra field used for
release/sprint (1 - task trackers, 2 - user story tracker)
+ * @param string Tracker type of extra field used for
release/sprint (1 - task trackers, 2 - user story tracker)
* @param string Used for cost calculations together with
remaining_cost_field_alias if specified
* @param string Used for cost calculations together with
estimated_cost_field_alias if specified
*
* @return true on success / false on failure.
*/
- function create($trackers, $bgcolors, $release_field_alias = NULL,
$release_field_tracker = 1,
- $estimated_cost_field_alias = NULL,
$remaining_cost_field_alias = NULL,
+ function create($name, $description = '', $trackers = array(),
$bgcolors = array(), $release_field_alias = NULL, $release_field_tracker = 1,
+ $estimated_cost_field_alias = NULL,
$remaining_cost_field_alias = '',
$user_stories_tracker = NULL,
$user_stories_reference_field = NULL,
$user_stories_sort_field = NULL,
$first_column_by_default = 1) {
+
+ //$estimated_cost_field = ''; // TODO define alias by default
in configuration file
+ //$remaining_cost_field = ''; // TODO define alias by default
in configuration file
+ //$user_stories_reference_field = ''; // TODO define alias by
default in configuration file
+ //$user_stories_sort_field = ''; // TODO define alias by
default in configuration file
+
//
// data validation
//
@@ -148,18 +171,13 @@ class TaskBoard extends FFError {
return false;
}
- if (count($trackers) == 0) {
- $this->setError(_('Taskboard must be linked at least to
one tracker'));
- return false;
- }
-
$ret = true;
db_begin();
$res = db_query_params(
- 'INSERT INTO plugin_taskboard(group_id,
release_field_alias, release_field_tracker, estimated_cost_field_alias,
+ 'INSERT INTO plugin_taskboard(taskboard_name,
description, group_id, release_field_alias, release_field_tracker,
estimated_cost_field_alias,
remaining_cost_field_alias,
user_stories_group_artifact_id,
user_stories_reference_field_alias,user_stories_sort_field_alias,
- first_column_by_default) VALUES($1, $2, $3, $4,
$5, $6, $7, $8)',
- array( $release_field_alias,
$release_field_tracker, $estimated_cost_field_alias,
+ first_column_by_default) VALUES($1, $2, $3, $4,
$5, $6, $7, $8, $9, $10, $11)',
+ array($name, $description,
$this->Group->getID(), $release_field_alias, $release_field_tracker,
$estimated_cost_field_alias,
$remaining_cost_field_alias, (
$user_stories_tracker ? $user_stories_tracker: NULL ),
$user_stories_reference_field,
$user_stories_sort_field, $first_column_by_default)
);
@@ -170,7 +188,7 @@ class TaskBoard extends FFError {
$this->data_array['taskboard_id'] =
db_insertid($res,'plugin_taskboard','taskboard_id');
}
- if( $ret ) {
+ if( $ret && is_array($trackers)) {
foreach( $trackers as $tracker_id ) {
$ret = $this->addUsedTracker( $tracker_id, (
array_key_exists($tracker_id, $bgcolors) ? $bgcolors[$tracker_id] : NULL) );
}
@@ -200,7 +218,7 @@ class TaskBoard extends FFError {
*
* @return true on success / false on failure.
*/
- function update($trackers, $bgcolors, $release_field_alias = NULL,
$release_field_tracker = 1,
+ function update($name, $description, $trackers=array(),
$bgcolors=array(), $release_field_alias = NULL, $release_field_tracker = 1,
$estimated_cost_field_alias = NULL,
$remaining_cost_field_alias = NULL,
$user_stories_tracker = NULL,
$user_stories_reference_field = NULL, $user_stories_sort_field = NULL,
$first_column_by_default = 1 ) {
//
@@ -211,22 +229,36 @@ class TaskBoard extends FFError {
return false;
}
- if( count($trackers) == 0 ) {
+ if ($name!=$this->getName() ||
$description!=$this->getDescription()) {
+ $updateOnlyName = true;
+ } else {
+ $updateOnlyName = false;
+ }
+
+ if( count($trackers) == 0 && !$updateOnlyName) {
$this->setError(_('Taskboard must be linked at least to
one tracker'));
return false;
}
$ret = true;
db_begin();
- $res = db_query_params(
- 'UPDATE plugin_taskboard SET
release_field_alias=$1, release_field_tracker=$2,
estimated_cost_field_alias=$3, remaining_cost_field_alias=$4,
- user_stories_group_artifact_id=$5,
user_stories_reference_field_alias=$6, user_stories_sort_field_alias=$7,
- first_column_by_default=$8 WHERE
taskboard_id=$9',
- array(
- $release_field_alias,
$release_field_tracker , $estimated_cost_field_alias,
$remaining_cost_field_alias,
- ( $user_stories_tracker ?
$user_stories_tracker: NULL), $user_stories_reference_field,
$user_stories_sort_field,
- $first_column_by_default,
$this->getID())
- );
+ if($updateOnlyName) {
+ $res = db_query_params(
+ 'UPDATE plugin_taskboard SET
taskboard_name=$1, description=$2 WHERE taskboard_id=$3',
+ array($name, $description,
$this->getID()));
+ } else {
+ $res = db_query_params(
+ 'UPDATE plugin_taskboard SET
taskboard_name=$1, description=$2, release_field_alias=$3,
release_field_tracker=$4,
+ estimated_cost_field_alias=$5,
remaining_cost_field_alias=$6, user_stories_group_artifact_id=$7,
+ user_stories_reference_field_alias=$8,
user_stories_sort_field_alias=$9,
+ first_column_by_default=$10 WHERE
taskboard_id=$11',
+ array(
+ $name, $description,
$release_field_alias, $release_field_tracker ,
+
$estimated_cost_field_alias, $remaining_cost_field_alias, (
$user_stories_tracker ? $user_stories_tracker: NULL),
+
$user_stories_reference_field, $user_stories_sort_field,
+
$first_column_by_default, $this->getID())
+ );
+ }
if (!$res) {
$this->setError(_('Cannot update taskboard'));
$ret = false;
@@ -235,7 +267,7 @@ class TaskBoard extends FFError {
}
// update trackers
- if($ret) {
+ if($ret && !$updateOnlyName) {
$old_trackers = $this->getUsedTrackersIds();
foreach($trackers as $tracker_id) {
if(in_array($tracker_id, $old_trackers)) {
@@ -272,6 +304,20 @@ class TaskBoard extends FFError {
/**
+ * delete - delete taskboard
+ *
+ * @return bool
+ */
+ function delete() {
+ $res = db_query_params('DELETE FROM plugin_taskboard WHERE
taskboard_id = $1', array($this->getID()));
+ if (!$res) {
+ $this->setError(_('Taskboard')._(': ')._('Cannot delete
taskboard'));
+ return false;
+ }
+ return true;
+ }
+
+ /**
* _checkExtraFields() - check where extra field exists in the tracker
*
*/
@@ -308,28 +354,30 @@ class TaskBoard extends FFError {
}
/**
- * fetchDataByGroup - re-fetch the data for this TaskBoard from the
database by group ID.
+ * getID - get this TaskBoardID.
*
- * @return boolean success.
+ * @return int The taskboard_id
*/
- function fetchDataByGroup() {
- $res = db_query_params('SELECT * FROM plugin_taskboard WHERE
group_id=$1', array ($this->Group->getID()));
- if (!$res || db_numrows($res) < 1) {
- $this->setError(_('Taskboard')._(': ')._('Not
configured for this project yet. Please, initialize plugin on the plugin admin
page.'));
- return false;
- }
- $this->data_array = db_fetch_array($res);
- db_free_result($res);
- return true;
+ function getID() {
+ return $this->data_array['taskboard_id'];
}
/**
- * getID - get this TaskBoardID.
+ * getName - get this TaskBoard Name.
*
- * @return int The taskboard_id
+ * @return string The taskboard_name
*/
- function getID() {
- return $this->data_array['taskboard_id'];
+ function getName() {
+ return $this->data_array['taskboard_name'];
+ }
+
+ /**
+ * getDescription - get this TaskBoard Description.
+ *
+ * @return string The taskboard description
+ */
+ function getDescription() {
+ return $this->data_array['description'];
}
/**
diff --git a/src/plugins/taskboard/common/TaskBoardFactory.class.php
b/src/plugins/taskboard/common/TaskBoardFactory.class.php
new file mode 100644
index 0000000..d9d40ec
--- /dev/null
+++ b/src/plugins/taskboard/common/TaskBoardFactory.class.php
@@ -0,0 +1,114 @@
+<?php
+/**
+ * Copyright 2016, Stéphane-Eymeric Bredthauer - TrivialDev
+ *
+ * This file is part of FusionForge. FusionForge is free software;
+ * you can redistribute it and/or modify it under the terms of the
+ * GNU General Public License as published by the Free Software
+ * Foundation; either version 2 of the Licence, or (at your option)
+ * any later version.
+ *
+ * FusionForge is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with FusionForge; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+global $gfplugins;
+require_once $gfcommon.'include/FFError.class.php';
+require_once $gfplugins.'taskboard/common/TaskBoard.class.php';
+
+class TaskboardFactory extends FFError {
+
+ /**
+ * The Group object.
+ *
+ * @var object $Group.
+ */
+ var $Group;
+
+ /**
+ * The Taskboards array.
+ *
+ * @var array Taskboards.
+ */
+ var $Taskboards;
+
+ /**
+ * @param Group $Group The Group object to which this
ArtifactTypeFactory is associated
+ */
+ function __construct(&$Group, $skip_check=false) {
+ parent::__construct();
+ if (!$Group || !is_object($Group)) {
+ $this->setError(_('No Valid Group Object'));
+ return;
+ }
+ if ($Group->isError()) {
+ $this->setError('TaskboardFactory:
'.$Group->getErrorMessage());
+ return;
+ }
+ if (!$skip_check && !$Group->usesTracker()) {
+ $this->setError(sprintf(_('%s does not use the Tracker
tool'),
+ $Group->getPublicName()));
+ return;
+ }
+ $this->Group =& $Group;
+ }
+
+ /**
+ * getGroup - get the Group object this TaskboardFactory is associated
with.
+ *
+ * @return object The Group object.
+ */
+ function &getGroup() {
+ return $this->Group;
+ }
+
+ /**
+ * getAllTaskboardIds - return a list of taskboards ids.
+ *
+ * @return array The array of Taskboard object ids.
+ */
+ function &getAllTaskboardIds() {
+ $result = array () ;
+ $res = db_query_params ('SELECT taskboard_id FROM
plugin_taskboard
+ WHERE group_id=$1
+ ORDER BY taskboard_id ASC',
+ array ($this->Group->getID())) ;
+ if (!$res) {
+ return $result ;
+ }
+ while ($arr = db_fetch_array($res)) {
+ $result[] = $arr['taskboard_id'] ;
+ }
+ return $result ;
+ }
+
+ /**
+ * getTaskboards - return an array of Taskboard objects.
+ *
+ * @return array The array of Taskboard objects.
+ */
+ function getTaskboards() {
+ if ($this->Taskboards) {
+ return $this->Taskboards;
+ }
+
+ $this->Taskboards = array () ;
+ $ids = $this->getAllTaskboardIds() ;
+
+ foreach ($ids as $id) {
+ $taskboard = new Taskboard($this->Group, $id);
+ if($taskboard->isError()) {
+ $this->setError($taskboard->getErrorMessage());
+ } else {
+ $this->Taskboards[] = $taskboard;
+ }
+ }
+ return $this->Taskboards;
+ }
+}
diff --git a/src/plugins/taskboard/common/actions/add_release.php
b/src/plugins/taskboard/common/actions/add_release.php
index 4f32b0b..ad804a0 100644
--- a/src/plugins/taskboard/common/actions/add_release.php
+++ b/src/plugins/taskboard/common/actions/add_release.php
@@ -2,6 +2,7 @@
/**
* Copyright (C) 2015 Vitaliy Pylypiv <[email protected]>
* Copyright 2015, Franck Villaume - TrivialDev
+ * Copyright 2016, Stéphane-Eymeric Bredtthauer - TrivialDev
*
* This file is part of FusionForge.
*
@@ -68,4 +69,4 @@ if ($element_id && $start_date_unixtime &&
$end_date_unixtime) {
} else {
$warning_msg = _('Something missing here');
}
-session_redirect('/plugins/'.$pluginTaskboard->name.'/releases/?group_id='.$group_id);
+session_redirect('/plugins/'.$pluginTaskboard->name.'/releases/?group_id='.$group_id.'&taskboard_id='.$taskboard->getID(),false);
diff --git a/src/plugins/taskboard/common/actions/columns.php
b/src/plugins/taskboard/common/actions/columns.php
index 9ceebc7..21a03c2 100644
--- a/src/plugins/taskboard/common/actions/columns.php
+++ b/src/plugins/taskboard/common/actions/columns.php
@@ -2,6 +2,7 @@
/**
* Copyright (C) 2013 Vitaliy Pylypiv <[email protected]>
* Copyright 2015, Franck Villaume - TrivialDev
+ * Copyright 2016, Stéphane-Eymeric Bredtthauer - TrivialDev
*
* This file is part of FusionForge.
*
@@ -22,7 +23,8 @@
global $group_id, $group, $pluginTaskboard;
session_require_perm('tracker_admin', $group_id);
-$taskboard = new TaskBoardHtml($group);
+$taskboard_id = getStringFromRequest('taskboard_id', '');
+$taskboard = new TaskBoardHtml($group,$taskboard_id);
if (getStringFromRequest('post_changes')) {
$column_title = getStringFromRequest('column_title', '');
@@ -48,4 +50,4 @@ if (getStringFromRequest('post_changes')) {
}
}
-session_redirect('/plugins/'.$pluginTaskboard->name.'/admin/?group_id='.$group_id.'&view=columns');
+session_redirect('/plugins/'.$pluginTaskboard->name.'/admin/?group_id='.$group_id.'&taskboard_id='.$taskboard_id.'&view=columns',
false);
diff --git a/src/plugins/taskboard/common/actions/delete_column.php
b/src/plugins/taskboard/common/actions/delete_column.php
index cf191eb..a59e300 100644
--- a/src/plugins/taskboard/common/actions/delete_column.php
+++ b/src/plugins/taskboard/common/actions/delete_column.php
@@ -1,6 +1,7 @@
<?php
/**
* Copyright (C) 2013 Vitaliy Pylypiv <[email protected]>
+ * Copyright 2016, Stéphane-Eymeric Bredtthauer - TrivialDev
*
* This file is part of FusionForge.
*
@@ -25,8 +26,10 @@ session_require_perm('tracker_admin', $group_id);
$confirmed = getStringFromRequest('confirmed', '');
$column_id = getStringFromRequest('column_id', '');
+$taskboard_id = getStringFromRequest('taskboard_id', '');
$column = &taskboard_column_get_object($column_id);
+
if($confirmed) {
db_begin();
if($column->delete()) {
@@ -35,5 +38,5 @@ if($confirmed) {
} else {
db_rollback();
}
-
session_redirect('/plugins/'.$pluginTaskboard->name.'/admin/?view=columns&group_id='.$group_id);
+
session_redirect('/plugins/'.$pluginTaskboard->name.'/admin/?group_id='.$group_id.'&taskboard_id='.taskboard_id.'&view=columns',
false);
}
diff --git a/src/plugins/taskboard/common/actions/delete_release.php
b/src/plugins/taskboard/common/actions/delete_release.php
index 610a878..8ebeaf6 100644
--- a/src/plugins/taskboard/common/actions/delete_release.php
+++ b/src/plugins/taskboard/common/actions/delete_release.php
@@ -1,6 +1,7 @@
<?php
/**
* Copyright (C) 2015 Vitaliy Pylypiv <[email protected]>
+ * Copyright 2016, Stéphane-Eymeric Bredtthauer - TrivialDev
*
* This file is part of FusionForge.
*
@@ -37,4 +38,4 @@ if ($confirmed) {
}
}
-session_redirect('/plugins/taskboard/releases/?group_id='.$group_id);
+session_redirect('/plugins/taskboard/releases/?group_id='.$group_id.'&taskboard_id='.$taskboard->getID(),false);
diff --git a/src/plugins/taskboard/common/actions/delete_column.php
b/src/plugins/taskboard/common/actions/delete_taskboard.php
similarity index 75%
copy from src/plugins/taskboard/common/actions/delete_column.php
copy to src/plugins/taskboard/common/actions/delete_taskboard.php
index cf191eb..aead5d8 100644
--- a/src/plugins/taskboard/common/actions/delete_column.php
+++ b/src/plugins/taskboard/common/actions/delete_taskboard.php
@@ -1,6 +1,6 @@
<?php
/**
- * Copyright (C) 2013 Vitaliy Pylypiv <[email protected]>
+ * Copyright 2016, Stéphane-Eymeric Bredthauer - TrivialDev
*
* This file is part of FusionForge.
*
@@ -19,21 +19,20 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
-global $group_id, $pluginTaskboard;
+global $group_id, $pluginTaskboard, $taskboard;
session_require_perm('tracker_admin', $group_id);
$confirmed = getStringFromRequest('confirmed', '');
-$column_id = getStringFromRequest('column_id', '');
-$column = &taskboard_column_get_object($column_id);
+$taskboard_id = getStringFromRequest('taskboard_id', '');
if($confirmed) {
db_begin();
- if($column->delete()) {
+ if($taskboard->delete()) {
db_commit();
$feedback.=_('Successfully Removed');
} else {
db_rollback();
}
-
session_redirect('/plugins/'.$pluginTaskboard->name.'/admin/?view=columns&group_id='.$group_id);
+
session_redirect('/plugins/'.$pluginTaskboard->name.'/admin/?group_id='.$group_id,
false);
}
diff --git a/src/plugins/taskboard/common/actions/down_column.php
b/src/plugins/taskboard/common/actions/down_column.php
index 2881e94..fb35fa4 100644
--- a/src/plugins/taskboard/common/actions/down_column.php
+++ b/src/plugins/taskboard/common/actions/down_column.php
@@ -1,6 +1,7 @@
<?php
/**
* Copyright (C) 2013 Vitaliy Pylypiv <[email protected]>
+ * Copyright 2016, Stéphane-Eymeric Bredtthauer - TrivialDev
*
* This file is part of FusionForge.
*
@@ -24,6 +25,7 @@ global $group_id, $pluginTaskboard;
session_require_perm('tracker_admin', $group_id);
$column_id = getStringFromRequest('column_id', '');
+$taskboard_id = getStringFromRequest('taskboard_id', '');
$column = &taskboard_column_get_object($column_id);
@@ -34,4 +36,4 @@ if ($column->setOrder($column->getOrder() + 1)) {
db_rollback();
}
-session_redirect('/plugins/'.$pluginTaskboard->name.'/admin/?group_id='.$group_id.'&view=columns');
+session_redirect('/plugins/'.$pluginTaskboard->name.'/admin/?group_id='.$group_id.'&$taskboard_id='.$$taskboard_id.'&view=columns');
diff --git a/src/plugins/taskboard/common/actions/edit_column.php
b/src/plugins/taskboard/common/actions/edit_column.php
index 8259cdd..e39ecbf 100644
--- a/src/plugins/taskboard/common/actions/edit_column.php
+++ b/src/plugins/taskboard/common/actions/edit_column.php
@@ -2,6 +2,7 @@
/**
* Copyright (C) 2013 Vitaliy Pylypiv <[email protected]>
* Copyright 2015, Franck Villaume - TrivialDev
+ * Copyright 2016, Stéphane-Eymeric Bredtthauer - TrivialDev
*
* This file is part of FusionForge.
*
@@ -24,6 +25,7 @@ global $group_id, $pluginTaskboard;
session_require_perm('tracker_admin', $group_id);
$column_id = getStringFromRequest('column_id', '');
+$taskboard_id = getStringFromRequest('taskboard_id', '');
$column = &taskboard_column_get_object($column_id);
if (getStringFromRequest('post_changes')) {
@@ -55,7 +57,7 @@ if (getStringFromRequest('post_changes')) {
}
} else {
$warning_msg .= _('Please, fill all required fields.');
-
session_redirect('/plugins/'.$pluginTaskboard->name.'/admin/?group_id='.$group_id.'&view=edit_column&column_id='.$column_id);
+
session_redirect('/plugins/'.$pluginTaskboard->name.'/admin/?group_id='.$group_id.'&taskboard_id='.$taskboard_id.'&column_id='.$column_id.'&view=edit_column',
false);
}
}
-session_redirect('/plugins/'.$pluginTaskboard->name.'/admin/?group_id='.$group_id.'&view=columns');
+session_redirect('/plugins/'.$pluginTaskboard->name.'/admin/?group_id='.$group_id.'&taskboard_id='.$taskboard_id.'&view=columns',
false);
diff --git a/src/plugins/taskboard/common/actions/edit_release.php
b/src/plugins/taskboard/common/actions/edit_release.php
index 310c5e9..bd57652 100644
--- a/src/plugins/taskboard/common/actions/edit_release.php
+++ b/src/plugins/taskboard/common/actions/edit_release.php
@@ -1,6 +1,7 @@
<?php
/**
* Copyright (C) 2015 Vitaliy Pylypiv <[email protected]>
+ * Copyright 2016, Stéphane-Eymeric Bredtthauer - TrivialDev
*
* This file is part of FusionForge.
*
@@ -64,4 +65,4 @@ if ($element_id && $start_date_unixtime &&
$end_date_unixtime) {
$error_msg = $release->getErrorMessage();
}
}
-session_redirect('/plugins/taskboard/releases/?group_id='.$group_id );
+session_redirect('/plugins/taskboard/releases/?group_id='.$group_id.'&taskboard_id='.$taskboard->getID(),
false);
diff --git a/src/plugins/taskboard/common/actions/init.php
b/src/plugins/taskboard/common/actions/init.php
new file mode 100644
index 0000000..aaac255
--- /dev/null
+++ b/src/plugins/taskboard/common/actions/init.php
@@ -0,0 +1,59 @@
+<?php
+/**
+ * Copyright 2016, Stéphane-Eymeric Bredtthauer - TrivialDev
+ *
+ * This file is part of FusionForge.
+ *
+ * FusionForge is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published
+ * by the Free Software Foundation; either version 2 of the License,
+ * or (at your option) any later version.
+ *
+ * FusionForge is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+global $group_id, $group, $pluginTaskboard;
+session_require_perm('tracker_admin', $group_id);
+
+if (getStringFromRequest('post_changes')) {
+ $taskboard_id = getIntFromRequest('taskboard_id');
+ $taskboard_name = getStringFromRequest('taskboard_name', '');
+ $taskboard_description = getStringFromRequest('taskboard_description',
'');
+ db_begin();
+ if ($taskboard_id) {
+ $taskboard = new TaskBoard($group,$taskboard_id);
+ } else {
+ $taskboard = new TaskBoard($group);
+ }
+ if($taskboard->isError()) {
+ $error_msg = $taskboard->getErrorMessage();
+ db_rollback();
+
session_redirect('/plugins/'.$pluginTaskboard->name.'/admin/?group_id='.$group_id,
false);
+ } else {
+ if ($taskboard_id) {
+ $ret =
$taskboard->update($taskboard_name,$taskboard_description);
+ } else {
+ $ret =
$taskboard->create($taskboard_name,$taskboard_description);
+ }
+ if(!$ret) {
+ $error_msg = $taskboard->getErrorMessage();
+ db_rollback();
+ if ($taskboard_id) {
+
session_redirect('/plugins/'.$pluginTaskboard->name.'/admin/?group_id='.$group_id.'&taskboard_id'.$taskboard_id,
false);
+ } else {
+
session_redirect('/plugins/'.$pluginTaskboard->name.'/admin/?group_id='.$group_id,
false);
+ }
+ } else {
+ db_commit();
+ $feedback = _('Taskboard successfully created');
+
session_redirect('/plugins/'.$pluginTaskboard->name.'/admin/?group_id='.$group_id.'&taskboard_id='.$taskboard->getID(),
false);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/plugins/taskboard/common/actions/trackers.php
b/src/plugins/taskboard/common/actions/trackers.php
index 4649cc7..edc8371 100644
--- a/src/plugins/taskboard/common/actions/trackers.php
+++ b/src/plugins/taskboard/common/actions/trackers.php
@@ -2,6 +2,7 @@
/**
* Copyright (C) 2013 Vitaliy Pylypiv <[email protected]>
* Copyright 2015, Franck Villaume - TrivialDev
+ * Copyright 2016, Stéphane-Eymeric Bredtthauer - TrivialDev
*
* This file is part of FusionForge.
*
@@ -25,6 +26,8 @@ global $group_id, $pluginTaskboard, $taskboard;
session_require_perm('tracker_admin', $group_id);
if (getStringFromRequest('post_changes')) {
+ $taskboard_name = getStringFromRequest('taskboard_name','');
+ $taskboard_description =
getStringFromRequest('taskboard_description','');
$trackers_selected = getArrayFromRequest('use', array());
$trackers_bgcolor = getArrayFromRequest('bg', array());
$release_field = getStringFromRequest('release_field','');
@@ -38,9 +41,9 @@ if (getStringFromRequest('post_changes')) {
// try to save data
if($taskboard->getID()) {
- $ret = $taskboard->update($trackers_selected,
$trackers_bgcolor, $release_field, $release_field_tracker,
$estimated_cost_field, $remaining_cost_field, $user_stories_tracker,
$user_stories_reference_field, $user_stories_sort_field,
$first_column_by_default);
+ $ret = $taskboard->update($taskboard_name,
$taskboard_description, $trackers_selected, $trackers_bgcolor, $release_field,
$release_field_tracker, $estimated_cost_field, $remaining_cost_field,
$user_stories_tracker, $user_stories_reference_field, $user_stories_sort_field,
$first_column_by_default);
} else {
- $ret = $taskboard->create($trackers_selected,
$trackers_bgcolor, $release_field, $release_field_tracker,
$estimated_cost_field, $remaining_cost_field, $user_stories_tracker,
$user_stories_reference_field, $user_stories_sort_field,
$first_column_by_default);
+ $ret = $taskboard->create($taskboard_name,
$taskboard_description, $trackers_selected, $trackers_bgcolor, $release_field,
$release_field_tracker, $estimated_cost_field, $remaining_cost_field,
$user_stories_tracker, $user_stories_reference_field, $user_stories_sort_field,
$first_column_by_default);
}
if(!$ret) {
@@ -50,4 +53,4 @@ if (getStringFromRequest('post_changes')) {
}
}
-session_redirect('/plugins/'.$pluginTaskboard->name.'/admin/?view=trackers&group_id='.$group_id);
+session_redirect('/plugins/'.$pluginTaskboard->name.'/admin/?group_id='.$group_id.'&taskboard_id='.$taskboard->getID().'&view=trackers',
false);
diff --git
a/src/plugins/taskboard/common/include/TaskBoardFactoryHtml.class.php
b/src/plugins/taskboard/common/include/TaskBoardFactoryHtml.class.php
new file mode 100644
index 0000000..a0be611
--- /dev/null
+++ b/src/plugins/taskboard/common/include/TaskBoardFactoryHtml.class.php
@@ -0,0 +1,59 @@
+<?php
+/**
+ * Copyright 2016, Stéphane-Eymeric Bredtthauer - TrivialDev
+ *
+ * This file is part of FusionForge.
+ *
+ * FusionForge is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published
+ * by the Free Software Foundation; either version 2 of the License,
+ * or (at your option) any later version.
+ *
+ * FusionForge is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+require_once $gfplugins.'taskboard/common/TaskBoardFactory.class.php';
+
+class TaskBoardFactoryHtml extends TaskBoardFactory {
+ function header($params=array()) {
+ global $HTML;
+
+ if (!forge_get_config('use_tracker')) {
+ exit_disabled();
+ }
+
+ $group_id= $this->Group->getID();
+
+ $params['group']=$group_id;
+ if (!isset($params['title'])) {
+ $params['title']=sprintf(_('Taskboards for %s'),
$this->Group->getPublicName());
+ }
+ $params['toptab']='taskboard';
+
+ $labels = array(_('View Taskboards'));
+ $links = array('plugins/taskboard/?group_id='.$group_id);
+ $attr = array(array('title' => _('Get the list of available
taskboards')));
+ if (session_loggedin()) {
+ if (forge_check_perm('tracker_admin', $group_id)) {
+ $labels[] = _('Taskboards Administration');
+ $links[] =
'plugins/taskboard/admin/?group_id='.$group_id;
+ $attr[] = array('title' => _('Global
administration for taskboards.'));
+ }
+ }
+
+ $params['submenu'] = $HTML->subMenu($labels, $links, $attr);
+
+ site_project_header($params);
+ }
+
+ function footer($params = array()) {
+ site_project_footer($params);
+ }
+}
diff --git a/src/plugins/taskboard/common/include/TaskBoardHtml.class.php
b/src/plugins/taskboard/common/include/TaskBoardHtml.class.php
index 889ba82..6ebc77d 100644
--- a/src/plugins/taskboard/common/include/TaskBoardHtml.class.php
+++ b/src/plugins/taskboard/common/include/TaskBoardHtml.class.php
@@ -1,6 +1,7 @@
<?php
/**
* Copyright (C) 2013 Vitaliy Pylypiv <[email protected]>
+ * Copyright 2016, Stéphane-Eymeric Bredtthauer - TrivialDev
*
* This file is part of FusionForge.
*
@@ -26,59 +27,77 @@ class TaskBoardHtml extends TaskBoard {
// the header that displays for the user portion of the plugin
function header($params) {
- global $HTML, $group_id;
+ global $HTML;
html_use_tablesorter();
use_stylesheet('/plugins/taskboard/css/agile-board.css');
use_javascript('/plugins/taskboard/js/agile-board.js');
html_use_jqueryui();
+ $group_id = $this->Group->getID();
+ $taskboard_id = $this->getID();
$params['toptab'] = 'taskboard';
$params['group'] = $group_id;
- $labels[] = _('View Taskboard');
+ $labels[] = _('View Taskboards');
$links[] = '/plugins/taskboard/?group_id='.$group_id;
-
- if( $this->getReleaseField()) {
- $labels[] = _('Releases');
- $links[] =
'/plugins/taskboard/releases/?group_id='.$group_id;
+ $attr = array(array('title' => _('Get the list of available
taskboards')));
+ if (session_loggedin()) {
+ if (forge_check_perm('tracker_admin', $group_id)) {
+ $labels[] = _('Taskboards Administration');
+ $links[] =
'plugins/taskboard/admin/?group_id='.$group_id;
+ $attr[] = array('title' => _('Global
administration for taskboards.'));
+ }
+ }
+ if ($taskboard_id) {
+ $labels[] = $this->getName();
+ $links[] =
'/plugins/taskboard/?group_id='.$group_id.'&taskboard_id='.$taskboard_id;
+ $attr[] = array('title' => _('View this taskboard.'));
+
+ if( $this->getReleaseField()) {
+ $labels[] = _('Releases');
+ $links[] =
'/plugins/taskboard/releases/?group_id='.$group_id.'&taskboard_id='.$taskboard_id;
+ $attr[] = array('title' => _('Manage
releases.'));
+ }
}
if (session_loggedin()) {
- if (forge_check_perm('tracker_admin',
$this->Group->getID())) {
+ if (forge_check_perm('tracker_admin', $group_id)) {
$release_id =
getIntFromRequest('release_id','');
$view = getStringFromRequest('view','');
if($release_id) {
if( $view == 'edit_release' ) {
$labels[] = _('Delete release');
- $links[] =
'/plugins/taskboard/releases/?group_id='.$group_id.'&view=delete_release&release_id='.$release_id;
+ $links[] =
'/plugins/taskboard/releases/?group_id='.$group_id.'&taskboard_id='.$taskboard_id.'&release_id='.$release_id.'&view=delete_release';
} else {
$labels[] = _('Edit release');
- $links[] =
'/plugins/taskboard/releases/?group_id='.$group_id.'&view=edit_release&release_id='.$release_id;
+ $links[] =
'/plugins/taskboard/releases/?group_id='.$group_id.'&taskboard_id='.$taskboard_id.'&release_id='.$release_id.'&view=edit_release';
}
}
}
}
if (session_loggedin()) {
- if (forge_check_perm('tracker_admin',
$this->Group->getID())) {
- $labels[] = _('Administration');
- $links[] =
'/plugins/taskboard/admin/?group_id='.$group_id;
-
+ if (forge_check_perm('tracker_admin', $group_id)) {
+ if ($taskboard_id) {
+ $labels[] = _('Administration');
+ $links[] =
'/plugins/taskboard/admin/?group_id='.$group_id.'&taskboard_id='.$taskboard_id;
+ $attr[] = array('title' =>
_('Administration for this taskboard.'));
+ }
$view = getStringFromRequest('view');
if ($view == 'edit_column') {
$labels[] = _('Configure Columns');
- $links[] =
'/plugins/taskboard/admin/?group_id='.$group_id.'&view=columns';
+ $links[] =
'/plugins/taskboard/admin/?group_id='.$group_id.'&taskboard_id='.$taskboard_id.'&view=columns';
$column_id =
getIntFromRequest('column_id', '');
if ($column_id) {
$labels[] = _('Delete Column');
- $links[] =
'/plugins/taskboard/admin/?group_id='.$group_id.'&view=delete_column&column_id='.$column_id;
+ $links[] =
'/plugins/taskboard/admin/?group_id='.$group_id.'&taskboard_id='.$taskboard_id.'&column_id='.$column_id.'&view=delete_column';
}
}
}
}
- $params['submenu'] = $HTML->subMenu($labels, $links);
+ $params['submenu'] = $HTML->subMenu($labels, $links, $attr);
site_project_header($params);
}
@@ -113,5 +132,4 @@ class TaskBoardHtml extends TaskBoard {
return $ret;
}
-
}
diff --git a/src/plugins/taskboard/common/views/admin/columns.php
b/src/plugins/taskboard/common/views/admin/columns.php
index 3dbeb97..aa94b70 100644
--- a/src/plugins/taskboard/common/views/admin/columns.php
+++ b/src/plugins/taskboard/common/views/admin/columns.php
@@ -2,6 +2,7 @@
/**
* Copyright (C) 2013 Vitaliy Pylypiv <[email protected]>
* Copyright 2015, Franck Villaume - TrivialDev
+ * Copyright 2016, Stéphane-Eymeric Bredtthauer - TrivialDev
*
* This file is part of FusionForge.
*
@@ -24,7 +25,7 @@ global $group_id, $group, $HTML, $pluginTaskboard, $taskboard;
$taskboard->header(
array(
- 'title' => _('Taskboard for ').$group->getPublicName()._(':
')._('Administration')._(': ')._('Columns configuration'),
+ 'title' => $taskboard->getName()._(':
')._('Administration')._(': ')._('Columns configuration'),
'pagename' => _('Columns configuration'),
'sectionvals' => array(group_getname($group_id)),
'group' => $group_id
@@ -40,6 +41,7 @@ if (count($taskboard->getUsedTrackersIds()) == 0) {
echo html_e('div', array('id' => 'messages', 'style' =>
'display: none;'), '', false);
}
+ $taskboard_id = $taskboard->getID();
$columns = $taskboard->getColumns();
$tablearr = array(_('Order'), _('Title'), _('Max number of tasks'),
_('Assigned resolutions'), _('Drop resolution'));
@@ -47,12 +49,12 @@ if (count($taskboard->getUsedTrackersIds()) == 0) {
foreach ($columns as $column) {
$downLink = '';
if ($column->getOrder() < count($columns)) {
- $downLink =
util_make_link('/plugins/'.$pluginTaskboard->name.'/admin/?group_id='.$group_id.'&action=down_column&column_id='.$column->getID(),
html_image('pointer_down.png', 16, 16, array('title' => _('Down'), 'alt' =>
_('Down'))));
+ $downLink =
util_make_link('/plugins/'.$pluginTaskboard->name.'/admin/?group_id='.$group_id.'&taskboard_id='.$taskboard_id.'&column_id='.$column->getID().'&action=down_column',
html_image('pointer_down.png', 16, 16, array('title' => _('Down'), 'alt' =>
_('Down'))));
}
$cells = array();
$cells[][] = $column->getOrder().' '.$downLink;
$cells[][] = html_e('div', array('style' => 'float: left;
border: 1px solid grey; height: 30px; width: 20px; background-color:
'.$column->getColumnBackgroundColor().'; margin-right: 10px;'), html_e('div',
array('style' => 'width: 100%; height: 10px; background-color:
'.$column->getTitleBackgroundColor()), '', false)).
-
util_make_link('/plugins/'.$pluginTaskboard->name.'/admin/?group_id='.$group_id.'&view=edit_column&column_id='.$column->getID(),
+
util_make_link('/plugins/'.$pluginTaskboard->name.'/admin/?group_id='.$group_id.'&taskboard_id='.$taskboard_id.'&column_id='.$column->getID().'&view=edit_column',
$column->getTitle());
$cells[][] = ( $column->getMaxTasks() ? $column->getMaxTasks()
: ' ' );
$cells[][] = implode(', ',
array_values($column->getResolutions()));
@@ -64,7 +66,7 @@ if (count($taskboard->getUsedTrackersIds()) == 0) {
$unused_resolutions = array_values($taskboard->getUnusedResolutions());
echo html_e('h2', array(), _('Add new column').(':'));
if (count($unused_resolutions)) {
- echo $HTML->openForm(array('action' =>
'/plugins/'.$pluginTaskboard->name.'/admin/?group_id='.$group_id.'&action=columns',
'method' => 'post'));
+ echo $HTML->openForm(array('action' =>
'/plugins/'.$pluginTaskboard->name.'/admin/?group_id='.$group_id.'&taskboard_id='.$taskboard_id.'&action=columns',
'method' => 'post'));
echo html_e('input', array('type' => 'hidden', 'name' =>
'post_changes', 'value' => 'y'));
echo $HTML->listTableTop();
$cells = array();
diff --git a/src/plugins/taskboard/common/views/admin/delete_column.php
b/src/plugins/taskboard/common/views/admin/delete_column.php
index a6bc3b6..aaddfb1 100644
--- a/src/plugins/taskboard/common/views/admin/delete_column.php
+++ b/src/plugins/taskboard/common/views/admin/delete_column.php
@@ -2,6 +2,7 @@
/**
* Copyright (C) 2013 Vitaliy Pylypiv <[email protected]>
* Copyright 2015, Franck Villaume - TrivialDev
+ * Copyright 2016, Stéphane-Eymeric Bredtthauer - TrivialDev
*
* This file is part of FusionForge.
*
@@ -28,7 +29,7 @@ $column = &taskboard_column_get_object($column_id);
$taskboard->header(
array(
- 'title' => _('Taskboard for ').$group->getPublicName()._(':
')._('Administration')._(': ')._('Column configuration'),
+ 'title' => $taskboard->getName()._(':
')._('Administration')._(': ')._('Column configuration'),
'pagename' => _('Column configuration'),
'sectionvals' => array(group_getname($group_id)),
'group' => $group_id
@@ -40,8 +41,8 @@ if($taskboard->isError()) {
} else {
echo html_e('div', array('id' => 'messages', 'style' => 'display:
none;'), '', false);
}
-
-echo $HTML->openForm(array('action' =>
'/plugins/'.$pluginTaskboard->name.'/admin/?group_id='.$group_id.'&action=delete_column',
'method' => 'post'));
+$taskboard_id = $taskboard->getID();
+echo $HTML->openForm(array('action' =>
'/plugins/'.$pluginTaskboard->name.'/admin/?group_id='.$group_id.'&taskboard_id='.$taskboard_id.'&action=delete_column',
'method' => 'post'));
echo html_e('input', array('type' => 'hidden', 'name' => 'column_id', 'value'
=> $column_id));
echo html_e('h1', array(), _('Column')." '".$column->getTitle() ."'");
echo html_e('div', array(), _('You are about to permanently and irretrievably
delete this column!'));
diff --git a/src/plugins/taskboard/common/views/admin/delete_column.php
b/src/plugins/taskboard/common/views/admin/delete_taskboard.php
similarity index 69%
copy from src/plugins/taskboard/common/views/admin/delete_column.php
copy to src/plugins/taskboard/common/views/admin/delete_taskboard.php
index a6bc3b6..e8a3c7e 100644
--- a/src/plugins/taskboard/common/views/admin/delete_column.php
+++ b/src/plugins/taskboard/common/views/admin/delete_taskboard.php
@@ -1,7 +1,6 @@
<?php
/**
- * Copyright (C) 2013 Vitaliy Pylypiv <[email protected]>
- * Copyright 2015, Franck Villaume - TrivialDev
+ * Copyright 2016, Stéphane-Eymeric Bredthauer - TrivialDev
*
* This file is part of FusionForge.
*
@@ -20,16 +19,12 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
-
global $group_id, $taskboard, $pluginTaskboard, $HTML;
-$column_id = getStringFromRequest('column_id', '');
-$column = &taskboard_column_get_object($column_id);
-
$taskboard->header(
array(
- 'title' => _('Taskboard for ').$group->getPublicName()._(':
')._('Administration')._(': ')._('Column configuration'),
- 'pagename' => _('Column configuration'),
+ 'title' => $taskboard->getName()._(':
')._('Administration')._(': ')._('Delete taskboard'),
+ 'pagename' => _('Delete taskboard'),
'sectionvals' => array(group_getname($group_id)),
'group' => $group_id
)
@@ -40,11 +35,10 @@ if($taskboard->isError()) {
} else {
echo html_e('div', array('id' => 'messages', 'style' => 'display:
none;'), '', false);
}
-
-echo $HTML->openForm(array('action' =>
'/plugins/'.$pluginTaskboard->name.'/admin/?group_id='.$group_id.'&action=delete_column',
'method' => 'post'));
-echo html_e('input', array('type' => 'hidden', 'name' => 'column_id', 'value'
=> $column_id));
-echo html_e('h1', array(), _('Column')." '".$column->getTitle() ."'");
-echo html_e('div', array(), _('You are about to permanently and irretrievably
delete this column!'));
+$taskboard_id = $taskboard->getID();
+echo $HTML->openForm(array('action' =>
'/plugins/'.$pluginTaskboard->name.'/admin/?group_id='.$group_id.'&taskboard_id='.$taskboard_id.'&action=delete_taskboard',
'method' => 'post'));
+echo html_e('h1', array(), _('Taskboard')." '".$taskboard->getName() ."'");
+echo html_e('div', array(), _('You are about to permanently and irretrievably
delete this taskbord!'));
echo html_e('div', array(), html_e('input', array('type' => 'checkbox',
'value' => 'y', 'name' => 'confirmed')), _('I am Sure'));
echo html_e('p', array(), html_e('input', array('type' => 'submit', 'name' =>
'post_delete', 'value' => _('Delete'))));
echo $HTML->closeForm();
diff --git a/src/plugins/taskboard/common/views/admin/edit_column.php
b/src/plugins/taskboard/common/views/admin/edit_column.php
index abdd15d..abf5a5e 100644
--- a/src/plugins/taskboard/common/views/admin/edit_column.php
+++ b/src/plugins/taskboard/common/views/admin/edit_column.php
@@ -2,6 +2,7 @@
/**
* Copyright (C) 2013 Vitaliy Pylypiv <[email protected]>
* Copyright 2015, Franck Villaume - TrivialDev
+ * Copyright 2016, Stéphane-Eymeric Bredtthauer - TrivialDev
*
* This file is part of FusionForge.
*
@@ -29,7 +30,7 @@ if ($column_id) {
$taskboard->header(
array(
- 'title' => _('Taskboard for
').$group->getPublicName()._(': ')._('Administration')._(': ')._('Column
configuration'),
+ 'title' => $taskboard->getName()._(':
')._('Administration')._(': ')._('Column configuration'),
'pagename' => _('Column configuration'),
'sectionvals' => array($group->getPublicName()),
'group' => $group_id
@@ -43,8 +44,9 @@ if ($column_id) {
}
$drop_rules_by_default = $column->getDropRulesByDefault(true);
+ $taskboard_id = $taskboard->getID();
- echo $HTML->openForm(array('action' =>
'/plugins/'.$pluginTaskboard->name.'/admin/?group_id='.$group_id.'&action=edit_column',
'method' => 'post'));
+ echo $HTML->openForm(array('action' =>
'/plugins/'.$pluginTaskboard->name.'/admin/?group_id='.$group_id.'&taskboard_id='.$taskboard_id.'&action=edit_column',
'method' => 'post'));
echo html_e('input', array('type' => 'hidden', 'name' =>
'post_changes', 'value' => 'y'));
echo html_e('input', array('type' => 'hidden', 'name' =>
'column_id', 'value' => $column_id));
echo html_e('h2', array(), _('Edit column')._(':'));
@@ -133,9 +135,9 @@ jQuery(function($){
echo html_ac(html_ap() - 1);
} else {
$error_msg = _('Cannot edit column due to unknown column ID');
-
session_redirect('/plugins/'.$pluginTaskboard->name.'/admin/?view=columns&group_id='.$group_id);
+
session_redirect('/plugins/'.$pluginTaskboard->name.'/admin/?group_id='.$group_id.'&taskboard_id='.$taskboard_id.'view=columns',
false);
}
} else {
$warning_msg = _('Cannot edit column due to missing column ID');
-
session_redirect('/plugins/'.$pluginTaskboard->name.'/admin/?view=columns&group_id='.$group_id);
+
session_redirect('/plugins/'.$pluginTaskboard->name.'/admin/?group_id='.$group_id.'&taskboard_id='.$taskboard_id.'view=columns',
false);
}
diff --git a/src/plugins/taskboard/common/views/admin/ind.php
b/src/plugins/taskboard/common/views/admin/ind.php
index 59d8eb0..fda6443 100644
--- a/src/plugins/taskboard/common/views/admin/ind.php
+++ b/src/plugins/taskboard/common/views/admin/ind.php
@@ -1,9 +1,11 @@
<?php
/**
- * Tracker Links
+ * Tracker Link & List for administration
*
* Copyright (C) 2013 Vitaliy Pylypiv <[email protected]>
* Copyright 2015 Franck Villaume - TrivialDev
+ * Copyright 2016, Stéphane-Eymeric Bredtthauer - TrivialDev
+ *
* http://fusionforge.org
*
* This file is part of FusionForge. FusionForge is free software;
@@ -26,27 +28,46 @@
// SHOW LINKS TO FUNCTIONS
//
-global $group, $group_id, $pluginTaskboard, $taskboard;
-
-$taskboard->header(
- array(
- 'title' => _('Taskboard for ').$group->getPublicName()._(':
')._('Administration'),
- 'pagename' => _('Administration'),
- 'sectionvals' => array($group->getPublicName()),
- 'group' => $group_id
- )
-);
-
-if($taskboard->getID()) {
- echo html_e('p', array(),
util_make_link('/plugins/'.$pluginTaskboard->name.'/admin/?group_id='.$group_id.'&view=trackers',
- html_e('strong', array(),
_('Configure Trackers')))
- .html_e('br'). _('Choose and configure
trackers, used with taskboard.'));
-
- echo html_e('p', array(),
util_make_link('/plugins/'.$pluginTaskboard->name.'/admin/?group_id='.$group_id.'&view=columns',
- html_e('strong', array(),
_('Configure Columns')))
- .html_e('br'). _('Configure taskboard
columns.'));
+global $group_id, $group, $HTML, $pluginTaskboard;
+
+require_once
$gfplugins.'taskboard/common/include/TaskBoardFactoryHtml.class.php';
+
+$taskboardFactory = new TaskBoardFactoryHtml($group);
+if (!$taskboardFactory || !is_object($taskboardFactory) ||
$taskboardFactory->isError()) {
+ exit_error(_('Could Not Get TaskBoardFactory'),'taskboard');
+}
+//$group_id = $group->getID();
+$tb_arr = $taskboardFactory->getTaskboards();
+if ($tb_arr === false) {
+ exit_permission_denied('taskboard');
+}
+
+html_use_tablesorter();
+
+$taskboardFactory->header();
+echo html_e('p', array(),
util_make_link('/plugins/'.$pluginTaskboard->name.'/admin/?group_id='.$group_id.'&view=init',
+ html_e('strong', array(), _('Initialize a new taskboard')))
+ .html_e('br'). _('Create initial taskboard configuration'));
+
+if (!$tb_arr || count($tb_arr) < 1) {
+ echo $HTML->information(_('No taskboards have been set up, or you
cannot view them.'));
} else {
- echo html_e('p', array(),
util_make_link('/plugins/'.$pluginTaskboard->name.'/admin/?group_id='.$group_id.'&view=init',
- html_e('strong', array(),
_('Initialize taskboard')))
- .html_e('br'). _('Create initial taskboard
configuration'));
+ echo '<p>'._('Choose a taskboard.').'</p>';
+ $tablearr = array(_('Taskboard'),_('Description'));
+ echo $HTML->listTableTop($tablearr, false, 'full sortable
sortable_table_taskboard', 'sortable_table_taskboard');
+
+ for ($j = 0; $j < count($tb_arr); $j++) {
+ if (is_object($tb_arr[$j])) {
+ if ($tb_arr[$j]->isError()) {
+ echo $tb_arr[$j]->getErrorMessage();
+ } else {
+ $cells = array();
+ $cells[][] =
util_make_link('/plugins/'.$pluginTaskboard->name.'/admin/?group_id='.$group_id.'&taskboard_id='.$tb_arr[$j]->getID(),
+ html_image("ic/tracker20w.png",
20, 20).' '.$tb_arr[$j]->getName());
+ $cells[][] = $tb_arr[$j]->getDescription();
+ echo $HTML->multiTableRow(array('class' =>
$HTML->boxGetAltRowStyle($j, true)), $cells);
+ }
+ }
+ }
+ echo $HTML->listTableBottom();
}
diff --git a/src/plugins/taskboard/common/views/admin/init.php
b/src/plugins/taskboard/common/views/admin/init.php
index 1cb67f2..d04aed2 100644
--- a/src/plugins/taskboard/common/views/admin/init.php
+++ b/src/plugins/taskboard/common/views/admin/init.php
@@ -2,6 +2,7 @@
/**
* Copyright (C) 2013 Vitaliy Pylypiv <[email protected]>
* Copyright 2015, Franck Villaume - TrivialDev
+ * Copyright 2016, Stéphane-Eymeric Bredtthauer - TrivialDev
*
* This file is part of FusionForge.
*
@@ -20,10 +21,54 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
-global $group_id, $pluginTaskboard, $taskboard;
+global $group, $group_id, $HTML, $pluginTaskboard, $taskboard;
-if(!$taskboard->getID()) {
- $taskboard = taskboard_init($group_id);
+require_once
$gfplugins.'taskboard/common/include/TaskBoardFactoryHtml.class.php';
+
+$taskboard_id = getIntFromRequest('taskboard_id');
+if ($taskboard_id) {
+ $taskboard->header(
+ array(
+ 'title' => $taskboard->getName()._(':
')._('Administration - Configure Taskboard'),
+ 'pagename' => _('Administration'),
+ 'sectionvals' => array($group->getPublicName()),
+ 'group' => $group_id
+ )
+ );
+ $taskboard_name = $taskboard->getName();
+ $taskboard_description = $taskboard->getDescription();
+} else {
+ $taskboardFactory = new TaskBoardFactoryHtml($group);
+ if (!$taskboardFactory || !is_object($taskboardFactory) ||
$taskboardFactory->isError()) {
+ exit_error(_('Could Not Get TaskBoardFactory'),'taskboard');
+ }
+
+ $taskboardFactory->header(
+ array(
+ 'title' => $taskboard->getName()._(':
')._('Administration - Create Taskboard'),
+ 'pagename' => _('Administration'),
+ 'sectionvals' => array($group->getPublicName()),
+ 'group' => $group_id
+ )
+ );
+ $taskboard_name = '';
+ $taskboard_description = '';
+}
+
+echo $HTML->openForm(array('action' =>
'/plugins/'.$pluginTaskboard->name.'/admin/?group_id='.$group_id.'&action=init',
'method' => 'post'));
+if ($taskboard_id) {
+ echo html_e('input', array('type' => 'hidden', 'name' =>
'taskboard_id','value'=>$taskboard_id));
}
+echo html_ao('p');
+echo html_e('strong', array(), _('Taskboard Name').utils_requiredField());
+echo html_e('br');
+echo html_e('input', array('type' => 'text', 'name' => 'taskboard_name',
'size'=>60, 'required'=>'required','value'=>$taskboard_name));
+echo html_ac(html_ap()-1);
+echo html_ao('p');
+echo html_e('strong', array(), _('Taskboard Description'));
+echo html_e('br');
+echo html_e('textarea', array('name' => 'taskboard_description', 'rows'=>3,
'cols'=>50),$taskboard_description,false);
+echo html_ac(html_ap()-1);
+echo html_e('p', array(), html_e('input', array('type' => 'submit', 'name' =>
'post_changes', 'value' => _('Submit'))));
-session_redirect('/plugins/'.$pluginTaskboard->name.'/admin/?group_id='.$group_id.'&view=trackers');
+echo $HTML->closeForm();
diff --git a/src/plugins/taskboard/common/views/admin/taskboard.php
b/src/plugins/taskboard/common/views/admin/taskboard.php
new file mode 100644
index 0000000..439a365
--- /dev/null
+++ b/src/plugins/taskboard/common/views/admin/taskboard.php
@@ -0,0 +1,57 @@
+<?php
+/**
+ * Tracker Links
+ *
+ * Copyright (C) 2013 Vitaliy Pylypiv <[email protected]>
+ * Copyright 2015 Franck Villaume - TrivialDev
+ * Copyright 2016, Stéphane-Eymeric Bredtthauer - TrivialDev
+ *
+ * http://fusionforge.org
+ *
+ * This file is part of FusionForge. FusionForge is free software;
+ * you can redistribute it and/or modify it under the terms of the
+ * GNU General Public License as published by the Free Software
+ * Foundation; either version 2 of the Licence, or (at your option)
+ * any later version.
+ *
+ * FusionForge is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with FusionForge; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+//
+// SHOW LINKS TO FUNCTIONS
+//
+
+global $group, $group_id, $pluginTaskboard, $taskboard;
+
+$taskboard->header(
+ array(
+ 'title' => $taskboard->getName()._(': ')._('Administration'),
+ 'pagename' => _('Administration'),
+ 'sectionvals' => array($group->getPublicName()),
+ 'group' => $group_id
+ )
+);
+$taskboard_id = $taskboard->getID();
+
+echo html_e('p', array(),
util_make_link('/plugins/'.$pluginTaskboard->name.'/admin/?group_id='.$group_id.'&taskboard_id='.$taskboard_id.'&view=init',
+ html_e('strong', array(), _('Configure Taskboard')))
+ .html_e('br'). _('Change Taskboard name and description.'));
+
+echo html_e('p', array(),
util_make_link('/plugins/'.$pluginTaskboard->name.'/admin/?group_id='.$group_id.'&taskboard_id='.$taskboard_id.'&view=trackers',
+ html_e('strong', array(), _('Configure
Trackers used')))
+ .html_e('br'). _('Choose and configure trackers, used
with taskboard.'));
+
+echo html_e('p', array(),
util_make_link('/plugins/'.$pluginTaskboard->name.'/admin/?group_id='.$group_id.'&taskboard_id='.$taskboard_id.'&view=columns',
+ html_e('strong', array(), _('Configure
Columns')))
+ .html_e('br'). _('Configure taskboard columns.'));
+
+echo html_e('p', array(),
util_make_link('/plugins/'.$pluginTaskboard->name.'/admin/?group_id='.$group_id.'&taskboard_id='.$taskboard_id.'&view=delete_taskboard',
+ html_e('strong', array(), _('Delete taskboard')))
+ .html_e('br'). _('Permanently delete this taskboard.'));
diff --git a/src/plugins/taskboard/common/views/admin/trackers.php
b/src/plugins/taskboard/common/views/admin/trackers.php
index 9e115d3..3819794 100644
--- a/src/plugins/taskboard/common/views/admin/trackers.php
+++ b/src/plugins/taskboard/common/views/admin/trackers.php
@@ -2,6 +2,7 @@
/**
* Copyright (C) 2013 Vitaliy Pylypiv <[email protected]>
* Copyright 2015, Franck Villaume - TrivialDev
+ * Copyright 2016, Stéphane-Eymeric Bredtthauer - TrivialDev
*
* This file is part of FusionForge.
*
@@ -26,7 +27,7 @@ session_require_perm('tracker_admin', $group_id);
$taskboard->header(
array(
- 'title' => _('Taskboard for ').$group->getPublicName()._(':
')._('Administration - Trackers configuration'),
+ 'title' => $taskboard->getName()._(': ')._('Administration -
Trackers configuration'),
'pagename' => _('Trackers configuration'),
'sectionvals' => array($group->getPublicName()),
'group' => $group_id
@@ -42,17 +43,6 @@ if (!$atf || !is_object($atf) || $atf->isError()) {
echo $HTML->error_msg(_('There Are No Trackers Defined For This
Project'));
} else {
- $trackers_selected = array();
- $trackers_bgcolor = array();
- $release_field = '';
- $release_field_tracker = 1;
- $estimated_cost_field = ''; // TODO define alias by default in
configuration file
- $remaining_cost_field = ''; // TODO define alias by default in
configuration file
- $user_stories_tracker = '';
- $user_stories_reference_field = ''; // TODO define alias by
default in configuration file
- $user_stories_sort_field = ''; // TODO define alias by default
in configuration file
- $first_column_by_default = 1;
-
$trackers = array();
//select trackers, having resolution field
for ($j = 0; $j < count($at_arr); $j++) {
@@ -68,19 +58,23 @@ if (!$atf || !is_object($atf) || $atf->isError()) {
}
}
- if( $taskboard->getID() ) {
- foreach( $taskboard->getUsedTrackersData() as
$used_tracker_data ) {
- $trackers_selected[] =
$used_tracker_data['group_artifact_id'];
- $trackers_bgcolor[
$used_tracker_data['group_artifact_id'] ] =
$used_tracker_data['card_background_color'];
- $release_field = $taskboard->getReleaseField();
- $release_field_tracker =
$taskboard->getReleaseFieldTracker();
- $estimated_cost_field =
$taskboard->getEstimatedCostField();
- $remaining_cost_field =
$taskboard->getRemainingCostField();
- $user_stories_tracker =
$taskboard->getUserStoriesTrackerID();
- $user_stories_reference_field =
$taskboard->getUserStoriesReferenceField();
- $user_stories_sort_field =
$taskboard->getUserStoriesSortField();
- $first_column_by_default =
$taskboard->getFirstColumnByDefault();
- }
+ $taskboard_id = $taskboard->getID();
+ $taskboard_name = $taskboard->getName();
+ $taskboard_description = $taskboard->getDescription();
+ $release_field = $taskboard->getReleaseField();
+ $release_field_tracker = $taskboard->getReleaseFieldTracker();
+ $estimated_cost_field = $taskboard->getEstimatedCostField();
+ $remaining_cost_field = $taskboard->getRemainingCostField();
+ $user_stories_tracker = $taskboard->getUserStoriesTrackerID();
+ $user_stories_reference_field =
$taskboard->getUserStoriesReferenceField();
+ $user_stories_sort_field =
$taskboard->getUserStoriesSortField();
+ $first_column_by_default =
$taskboard->getFirstColumnByDefault();
+
+ $trackers_selected = array();
+ $trackers_bgcolor = array();
+ foreach( $taskboard->getUsedTrackersData() as
$used_tracker_data ) {
+ $trackers_selected[] =
$used_tracker_data['group_artifact_id'];
+ $trackers_bgcolor[
$used_tracker_data['group_artifact_id'] ] =
$used_tracker_data['card_background_color'];
}
if (count($trackers) > 0) {
@@ -92,11 +86,10 @@ if (!$atf || !is_object($atf) || $atf->isError()) {
} else {
echo $HTML->error_msg(_('There are no any tracker
having "resolution" field.'));
}
-
-
- echo html_e('script', array('type' => 'text/javascript', 'src'
=> '/plugins/'.$pluginTaskboard->name.'/js/agile-board.js'), '', false);
- echo $HTML->openForm(array('action' =>
'/plugins/'.$pluginTaskboard->name.'/admin/?group_id='.$group_id.'&action=trackers',
'method' => 'post'));
+ echo $HTML->openForm(array('action' =>
'/plugins/'.$pluginTaskboard->name.'/admin/?group_id='.$group_id.'&taskboard_id='.$taskboard_id.'&action=trackers',
'method' => 'post'));
echo html_e('input', array('type' => 'hidden', 'name' =>
'post_changes', 'value' => 'y'));
+ echo html_e('input', array('type' => 'hidden', 'name' =>
'taskboard_name', 'value'=>$taskboard_name));
+ echo html_e('input', array('type' => 'hidden', 'name' =>
'taskboard_description', 'value'=>$taskboard_description));
echo $HTML->listTableTop();
$cells = array();
$tablearr = array(_('Tracker'), _('Description'), _('Use'),
_('Card background color'));
@@ -210,6 +203,7 @@ jQuery(function($){
data : {
action : 'get_trackers_fields',
group_id : <?php echo $group_id ?>,
+ taskboard_id : <?php echo $taskboard_id ?>,
'trackers[]' : [
$('select[name=user_stories_tracker]').val() ]
},
async: false
@@ -264,6 +258,7 @@ jQuery(function($){
data : {
action : 'get_trackers_fields',
group_id : <?php echo $group_id ?>,
+ taskboard_id : <?php echo $taskboard_id ?>,
'trackers[]' : release_trackers
},
async: false
@@ -308,7 +303,8 @@ jQuery(function($){
dataType: 'json',
data : {
action : 'get_trackers_fields',
- group_id : <?php echo $group_id ?>,
+ group_id : <?php echo $group_id ?>,
+ taskboard_id : <?php echo $taskboard_id ?>,
'trackers[]' : trackers
},
async: false
diff --git a/src/plugins/taskboard/common/views/ind.php
b/src/plugins/taskboard/common/views/ind.php
new file mode 100644
index 0000000..4e91cdf
--- /dev/null
+++ b/src/plugins/taskboard/common/views/ind.php
@@ -0,0 +1,68 @@
+<?php
+/**
+ * Taskboard Front Page
+ *
+ * Copyright 2016, Stéphane-Eymeric Bredthauer - TrivialDev
+ *
+ * http://fusionforge.org/
+ *
+ * This file is part of FusionForge. FusionForge is free software;
+ * you can redistribute it and/or modify it under the terms of the
+ * GNU General Public License as published by the Free Software
+ * Foundation; either version 2 of the Licence, or (at your option)
+ * any later version.
+ *
+ * FusionForge is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with FusionForge; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+global $group_id, $group, $HTML, $pluginTaskboard;
+
+require_once
$gfplugins.'taskboard/common/include/TaskBoardFactoryHtml.class.php';
+
+$taskboardFactory = new TaskBoardFactoryHtml($group);
+if (!$taskboardFactory || !is_object($taskboardFactory) ||
$taskboardFactory->isError()) {
+ exit_error(_('Could Not Get TaskBoardFactory'),'taskboard');
+}
+//$group_id = $group->getID();
+$tb_arr = $taskboardFactory->getTaskboards();
+if ($tb_arr === false) {
+ exit_permission_denied('taskboard');
+}
+
+html_use_tablesorter();
+
+$taskboardFactory->header();
+if (!$tb_arr || count($tb_arr) < 1) {
+ echo $HTML->information(_('No taskboards have been set up, or you
cannot view them.'));
+ echo '<p>';
+ echo sprintf(_('The Admin for this project will have to set up data
types using the %1$s admin page %2$s'), '<a href="'.util_make_url
('/plugins/'.$pluginTaskboard->name.'/?group_id='.$group_id).'">', '</a>');
+ echo "</p>";
+} else {
+ echo '<p>'._('Choose a taskboard.').'</p>';
+ $tablearr = array(_('Taskboard'),_('Description'));
+ echo $HTML->listTableTop($tablearr, false, 'full sortable
sortable_table_taskboard', 'sortable_table_taskboard');
+
+ for ($j = 0; $j < count($tb_arr); $j++) {
+ if (is_object($tb_arr[$j])) {
+ if ($tb_arr[$j]->isError()) {
+ echo $tb_arr[$j]->getErrorMessage();
+ } else {
+ $cells = array();
+ $cells[][] =
util_make_link('/plugins/'.$pluginTaskboard->name.'/?group_id='.$group_id.'&taskboard_id='.$tb_arr[$j]->getID(),
+
html_image("ic/tracker20w.png", 20, 20).' '.$tb_arr[$j]->getName());
+ $cells[][] = $tb_arr[$j]->getDescription();
+ echo $HTML->multiTableRow(array('class' =>
$HTML->boxGetAltRowStyle($j, true)), $cells);
+ }
+ }
+ }
+ echo $HTML->listTableBottom();
+}
+$taskboardFactory->footer();
+
diff --git a/src/plugins/taskboard/common/views/releases/add_release.php
b/src/plugins/taskboard/common/views/releases/add_release.php
index 70ef9d3..d0dd9ca 100644
--- a/src/plugins/taskboard/common/views/releases/add_release.php
+++ b/src/plugins/taskboard/common/views/releases/add_release.php
@@ -2,6 +2,7 @@
/**
* Copyright (C) 2015 Vitaliy Pylypiv <[email protected]>
* Copyright 2015, Franck Villaume - TrivialDev
+ * Copyright 2016, Stéphane-Eymeric Bredtthauer - TrivialDev
*
* This file is part of FusionForge.
*
@@ -26,7 +27,7 @@ session_require_perm('tracker_admin', $group_id);
$taskboard->header(
array(
- 'title' => _('Taskboard for
').$group->getPublicName()._(': '). _('Releases')._(': ')._('Add release'),
+ 'title' => $taskboard->getName()._(': ').
_('Releases')._(': ')._('Add release'),
'pagename' => _('Releases')._(': ')._('Add release'),
'sectionvals' => array($group->getPublicName()),
'group' => $group_id
@@ -47,7 +48,7 @@ foreach ($taskboard_releases as $release ) {
}
$release_values = $taskboard->getReleaseValues();
-
+$taskboard_id = $taskboard->getID();
$release_id_arr = array();
$release_name_arr = array();
foreach ( $release_values as $release_name => $release_id ) {
@@ -59,7 +60,7 @@ foreach ( $release_values as $release_name => $release_id ) {
}
$release_box = html_build_select_box_from_arrays($release_id_arr,
$release_name_arr, '_release', false, false);
-echo $HTML->openForm(array('action' =>
'/plugins/'.$pluginTaskboard->name.'/releases/?group_id='.$group_id.'&action=add_release',
'method' => 'post'));
+echo $HTML->openForm(array('action' =>
'/plugins/'.$pluginTaskboard->name.'/releases/?group_id='.$group_id.'&taskboard_id='.$taskboard_id.'&action=add_release',
'method' => 'post'));
echo html_e('input', array('type' => 'hidden', 'name' => 'post_changes',
'value' => 'y'));
echo html_e('h2', array(), _('Add release')._(':'));
echo $HTML->listTableTop();
diff --git a/src/plugins/taskboard/common/views/releases/burndown.php
b/src/plugins/taskboard/common/views/releases/burndown.php
index 045b23c..0a6a809 100644
--- a/src/plugins/taskboard/common/views/releases/burndown.php
+++ b/src/plugins/taskboard/common/views/releases/burndown.php
@@ -1,6 +1,7 @@
<?php
/**
* Copyright (C) 2015 Vitaliy Pylypiv <[email protected]>
+ * Copyright 2016, Stéphane-Eymeric Bredtthauer - TrivialDev
*
* This file is part of FusionForge.
*
@@ -31,7 +32,7 @@ html_use_jqueryjqplotpluginhighlighter();
$taskboard->header(
array(
- 'title' => _('Taskboard for
').$group->getPublicName()._(': '). _('Releases')._(': ')._('Burndown
chart')._(': ').$release->getTitle() ,
+ 'title' => $taskboard->getName()._(': ').
_('Releases')._(': ')._('Burndown chart')._(': ').$release->getTitle() ,
'pagename' => _('Releases')._(': ')._('Burndown
chart')._(': ').$release->getTitle(),
'sectionvals' => array($group->getPublicName()),
'group' => $group_id
@@ -98,7 +99,7 @@ foreach( $release_snapshots as $snapshot ) {
jQuery( document ).ready(function( $ ) {
jQuery('#taskboard-view-btn').click( function ( e ) {
- window.location = '<?php echo util_make_url
('/plugins/'.$pluginTaskboard->name.'/?group_id='. $group_id . '&_release=' .
$release_id ); ?>';
+ window.location = '<?php echo util_make_url
('/plugins/'.$pluginTaskboard->name.'/?group_id='.$group_id.'&taskboard_id='.$taskboard->getID().'&_release='.$release_id
); ?>';
e.preventDefault();
});
diff --git a/src/plugins/taskboard/common/views/releases/delete_release.php
b/src/plugins/taskboard/common/views/releases/delete_release.php
index f8be22c..7fb6943 100644
--- a/src/plugins/taskboard/common/views/releases/delete_release.php
+++ b/src/plugins/taskboard/common/views/releases/delete_release.php
@@ -2,6 +2,7 @@
/**
* Copyright (C) 2015 Vitaliy Pylypiv <[email protected]>
* Copyright 2015, Franck Villaume - TrivialDev
+ * Copyright 2016, Stéphane-Eymeric Bredtthauer - TrivialDev
*
* This file is part of FusionForge.
*
@@ -29,8 +30,8 @@ $release = new TaskBoardRelease( $taskboard, $release_id );
$taskboard->header(
array(
- 'title'=>'Taskboard for '.$group->getPublicName().' :
'._('Release').' : '._('Delete release') ,
- 'pagename'=>_('Release').' : '._('Delete release'),
+ 'title'=> $taskboard->getName()._(': ')._('Release').' :
'._('Delete release') ,
+ 'pagename'=>_('Release')._(': ')._('Delete release'),
'sectionvals'=>array(group_getname($group_id)),
'group'=>$group_id
)
@@ -41,8 +42,9 @@ if ($taskboard->isError()) {
} else {
echo html_e('div', array('id' => 'messages', 'style' => 'display:
none;'), '', false);
}
+$taskboard_id = $taskboard->getID();
-echo $HTML->openForm(array('action' =>
'/plugins/'.$pluginTaskboard->name.'/releases/?group_id='.$group_id.'&action=delete_release',
'method' => 'post'));
+echo $HTML->openForm(array('action' =>
'/plugins/'.$pluginTaskboard->name.'/releases/?group_id='.$group_id.'&taskboard_id='.$taskboard_id.'&action=delete_release',
'method' => 'post'));
echo html_e('input', array('type' => 'hidden', 'name' => 'release_id', 'value'
=> $release_id));
echo html_e('h2', array(), _('Release') ." '".$release->getTitle() ."'");
echo html_e('div', array(), _('You are about to permanently and irretrievably
delete this release with all indicators!'));
diff --git a/src/plugins/taskboard/common/views/releases/edit_release.php
b/src/plugins/taskboard/common/views/releases/edit_release.php
index 5083eb7..f4e92c5 100644
--- a/src/plugins/taskboard/common/views/releases/edit_release.php
+++ b/src/plugins/taskboard/common/views/releases/edit_release.php
@@ -1,6 +1,7 @@
<?php
/**
* Copyright (C) 2015 Vitaliy Pylypiv <[email protected]>
+ * Copyright 2016, Stéphane-Eymeric Bredtthauer - TrivialDev
*
* This file is part of FusionForge.
*
@@ -38,7 +39,7 @@ $page_url = $release->getPageUrl();
$taskboard->header(
array(
- 'title' => _('Taskboard for
').$group->getPublicName()._(': '). _('Releases')._(': ')._('Edit release') ,
+ 'title' => $taskboard->getName()._(': ').
_('Releases')._(': ')._('Edit release') ,
'pagename' => _('Releases')._(': ')._('Edit release'),
'sectionvals' => array($group->getPublicName()),
'group' => $group_id
@@ -59,7 +60,7 @@ foreach($taskboard_releases as $release ) {
}
$release_values = $taskboard->getReleaseValues();
-
+$taskboard_id = $taskboard->getID();
$release_id_arr = array();
$release_name_arr = array();
foreach( $release_values as $release_name => $release_id ) {
@@ -71,7 +72,7 @@ foreach( $release_values as $release_name => $release_id ) {
}
$release_box = html_build_select_box_from_arrays($release_id_arr,
$release_name_arr, '_release', $element_id, false);
-echo $HTML->openForm(array('action' =>
'/plugins/taskboard/releases/?group_id='.$group_id.'&action=edit_release',
'method' => 'post'));
+echo $HTML->openForm(array('action' =>
'/plugins/taskboard/releases/?group_id='.$group_id.'&taskboard_id='.$taskboard_id.'&action=edit_release',
'method' => 'post'));
echo html_e('input', array('type' => 'hidden', 'name' => 'post_changes',
'value' => 'y'));
echo html_e('input', array('type' => 'hidden', 'name' => 'release_id', 'value'
=> $release->getID()));
echo html_e('h2', array(), _('Edit release')._(':'));
diff --git a/src/plugins/taskboard/common/views/releases/ind.php
b/src/plugins/taskboard/common/views/releases/ind.php
index 2a7d209..ad2419e 100644
--- a/src/plugins/taskboard/common/views/releases/ind.php
+++ b/src/plugins/taskboard/common/views/releases/ind.php
@@ -1,6 +1,7 @@
<?php
/**
* Copyright (C) 2015 Vitaliy Pylypiv <[email protected]>
+ * Copyright 2016, Stéphane-Eymeric Bredtthauer - TrivialDev
*
* This file is part of FusionForge.
*
@@ -23,7 +24,7 @@ global $taskboard, $group, $group_id, $pluginTaskboard, $HTML;
$taskboard->header(
array(
- 'title' => _('Taskboard for ').$group->getPublicName()._(':
')._('Releases'),
+ 'title' => $taskboard->getName()._(': ')._('Releases'),
'pagename' => "Releases",
'sectionvals' => array($group->getPublicName()),
'group' => $group_id
@@ -41,13 +42,14 @@ if (!$taskboard->getReleaseField()) {
exit_error(_('Release field is not configured'));
}
+$taskboard_id = $taskboard->getID();
$taskboardReleases = $taskboard->getReleases();
if ($taskboardReleases === false) {
exit_error($taskboard->getErrorMessage());
}
-echo html_e('p', array(),
util_make_link('/plugins/'.$pluginTaskboard->name.'/releases/?group_id='.$group_id.'&view=add_release',
html_e('strong', array(), _('Add release'))));
+echo html_e('p', array(),
util_make_link('/plugins/'.$pluginTaskboard->name.'/releases/?group_id='.$group_id.'&taskboard_id='.$taskboard_id.'&view=add_release',
html_e('strong', array(), _('Add release'))));
$tablearr = array(_('Title'),_('Start Date'),_('End Date'), _('Goals'),
_('Page'), _('Charts'));
@@ -58,7 +60,7 @@ foreach ($taskboardReleases as $release) {
$release_title = htmlspecialchars($release->getTitle());
if (session_loggedin() && forge_check_perm('tracker_admin',
$taskboard->Group->getID())) {
$release_title = util_make_link(
-
'/plugins/'.$pluginTaskboard->name.'/releases/?group_id='.$group_id.'&view=edit_release&release_id='.$release->getID(),
+
'/plugins/'.$pluginTaskboard->name.'/releases/?group_id='.$group_id.'&taskboard_id='.$taskboard_id.'&release_id='.$release->getID().'&view=edit_release',
$release_title
);
}
@@ -77,7 +79,7 @@ foreach ($taskboardReleases as $release) {
<td>'.date("Y-m-d", $release->getEndDate()).'</td>
<td>'.htmlspecialchars( $release->getGoals() ).'</td>
<td>'. ( $release->getPageUrl() ? '<a
href="'.$release->getPageUrl().'" target="_blank">'.htmlspecialchars(
$release->getPageUrl() ).'</a>' : '' ).'</td>
- <td><a
href="/plugins/'.$pluginTaskboard->name.'/releases/?group_id='.$group_id.'&view=burndown&release_id='.$release->getID().'">'._('Burndown').'</a>'.'</td>
+ <td><a
href="/plugins/'.$pluginTaskboard->name.'/releases/?group_id='.$group_id.'&taskboard_id='.$taskboard_id.'&release_id='.$release->getID().'&view=burndown">'._('Burndown').'</a>'.'</td>
</tr>
';
}
diff --git a/src/plugins/taskboard/www/index.php
b/src/plugins/taskboard/common/views/taskboard.php
similarity index 95%
copy from src/plugins/taskboard/www/index.php
copy to src/plugins/taskboard/common/views/taskboard.php
index a9cdc71..582c90c 100644
--- a/src/plugins/taskboard/www/index.php
+++ b/src/plugins/taskboard/common/views/taskboard.php
@@ -2,6 +2,7 @@
/**
* Copyright (C) 2013 Vitaliy Pylypiv <[email protected]>
* Copyright 2015, Franck Villaume - TrivialDev
+ * Copyright 2016, Stéphane-Eymeric Bredtthauer - TrivialDev
*
* This file is part of FusionForge.
*
@@ -26,7 +27,8 @@ require_once
$gfplugins.'taskboard/common/include/TaskBoardHtml.class.php';
global $HTML;
-$group_id = getStringFromRequest('group_id');
+$group_id = getIntFromRequest('group_id');
+$taskboard_id = getIntFromRequest('taskboard_id');
$pluginTaskboard = plugin_get_object('taskboard');
if (!$group_id) {
@@ -40,10 +42,10 @@ if (!$group_id) {
exit_error(sprintf(_('First activate the %s plugin through the
Project\'s Admin Interface'),$pluginTaskboard->name),'home');
}
- $taskboard = new TaskBoardHtml($group);
+ $taskboard = new TaskBoardHtml($group,$taskboard_id);
$taskboard->header(
array(
- 'title' => _('Taskboard for ').$group->getPublicName(),
+ 'title' => $taskboard->getName(),
'pagename' => 'Taskboard',
'sectionvals' => array($group->getPublicName()),
'group' => $group_id
@@ -251,6 +253,7 @@ if ($release_box) {
<script>
var gGroupId = <?php echo $group_id ?>;
+var gTaskboardId = <?php echo $taskboard_id ?>;
var gIsManager = <?php echo ( $taskboard->TrackersAdapter->isManager() ?
'true' : 'false' ) ?>;
var gIsTechnician = <?php echo ( $taskboard->TrackersAdapter->isTechnician() ?
'true' : 'false' ) ?>;
var gAjaxUrl = '<?php echo util_make_url
('/plugins/'.$pluginTaskboard->name.'/ajax.php') ; ?>';
@@ -287,7 +290,7 @@ jQuery( document ).ready(function( $ ) {
});
jQuery('#taskboard-burndown-btn').click( function ( e ) {
- window.location = '<?php echo util_make_url
('/plugins/'.$pluginTaskboard->name.'/releases/?view=burndown&group_id='.
$group_id . '&release_id=' ); ?>' + jQuery('#taskboard-release-id').val();
+ window.location = '<?php echo util_make_url
('/plugins/'.$pluginTaskboard->name.'/releases/?view=burndown&group_id='.$group_id.'&taskboard_id='.$taskboard_id.'&release_id='
); ?>' + jQuery('#taskboard-release-id').val();
e.preventDefault();
});
@@ -309,6 +312,7 @@ jQuery( document ).ready(function( $ ) {
data : {
action : 'add',
group_id : gGroupId,
+ taskboard_id :
gTaskboardId,
tracker_id :
jQuery('#tracker_id').val(),
user_story_id :
jQuery('#user_story_id').val(),
title :
jQuery('#tracker-summary').val(),
@@ -359,6 +363,7 @@ jQuery( document ).ready(function( $ ) {
data : {
action : 'save_release_snapshot',
group_id : gGroupId,
+ taskboard_id : gTaskboardId,
tracker_id : jQuery('#tracker_id').val(),
release_id :
jQuery('#taskboard-release-id').val(),
snapshot_date :
jQuery('input[name="snapshot_date"]').val()
diff --git
a/src/plugins/taskboard/db/20160708-plugin-taskboard-multi-taskboard.sql
b/src/plugins/taskboard/db/20160708-plugin-taskboard-multi-taskboard.sql
new file mode 100644
index 0000000..1bb49e6
--- /dev/null
+++ b/src/plugins/taskboard/db/20160708-plugin-taskboard-multi-taskboard.sql
@@ -0,0 +1,9 @@
+ALTER TABLE plugin_taskboard
+ ADD taskboard_name text NOT NULL DEFAULT ''::text,
+ ADD description text NOT NULL DEFAULT ''::text;
+
+UPDATE plugin_taskboard as ptb
+ SET taskboard_name = 'Default Taskboard for '|| group_name,
+ description = 'Default Taskboard for ' || group_name
+FROM plugin_taskboard
+NATURAL INNER JOIN groups;
\ No newline at end of file
diff --git a/src/plugins/taskboard/www/admin/ajax.php
b/src/plugins/taskboard/www/admin/ajax.php
index ac4eaa0..cd7b529 100644
--- a/src/plugins/taskboard/www/admin/ajax.php
+++ b/src/plugins/taskboard/www/admin/ajax.php
@@ -1,6 +1,7 @@
<?php
/**
* Copyright (C) 2013 Vitaliy Pylypiv <[email protected]>
+ * Copyright 2016, Stéphane-Eymeric Bredtthauer - TrivialDev
*
* This file is part of FusionForge.
*
@@ -32,6 +33,7 @@ require_once
$gfplugins.'taskboard/common/include/TaskBoardHtml.class.php';
$sysdebug_enable = false;
$group_id = getIntFromPost('group_id');
+$taskboard_id = getIntFromPost('taskboard_id');
$action = getStringFromPost('action');
if (!$group_id) {
@@ -44,7 +46,7 @@ if (!$group_id) {
exit();
}
- $taskboard = new TaskBoardHtml( $group ) ;
+ $taskboard = new TaskBoardHtml( $group, $taskboard_id ) ;
$allowedActions = array('get_trackers_fields');
if(in_array($action, $allowedActions)) {
diff --git a/src/plugins/taskboard/www/admin/index.php
b/src/plugins/taskboard/www/admin/index.php
index ebf16f4..7a2617a 100644
--- a/src/plugins/taskboard/www/admin/index.php
+++ b/src/plugins/taskboard/www/admin/index.php
@@ -2,6 +2,7 @@
/**
* Copyright (C) 2013 Vitaliy Pylypiv <[email protected]>
* Copyright 2015, Franck Villaume - TrivialDev
+ * Copyright 2016, Stéphane-Eymeric Bredtthauer - TrivialDev
*
* This file is part of FusionForge.
*
@@ -23,10 +24,12 @@
require_once '../../../env.inc.php';
require_once $gfcommon.'include/pre.php';
require_once $gfplugins.'taskboard/common/include/TaskBoardHtml.class.php';
+require_once
$gfplugins.'taskboard/common/include/TaskBoardFactoryHtml.class.php';
global $HTML;
$group_id = getIntFromRequest('group_id');
+$taskboard_id = getIntFromRequest('taskboard_id');
$pluginTaskboard = plugin_get_object('taskboard');
if (!$group_id) {
@@ -44,31 +47,32 @@ if (!$group_id) {
session_require_perm('tracker_admin', $group_id);
- $allowedActions = array('trackers', 'columns', 'edit_column',
'down_column', 'delete_column');
$action = getStringFromRequest('action');
- $taskboard = new TaskBoardHtml($group);
-
- if (in_array($action, $allowedActions)) {
-
include($gfplugins.$pluginTaskboard->name.'/common/actions/'.$action.'.php');
- }
-
- $allowedViews = array('trackers', 'columns', 'edit_column',
'delete_column', 'init');
$view = getStringFromRequest('view');
- if (in_array($view, $allowedViews)) {
-
include($gfplugins.$pluginTaskboard->name.'/common/views/admin/'.$view.'.php');
+ if ($taskboard_id) {
+ $taskboard = new TaskBoardHtml($group, $taskboard_id);
+ $allowedActions = array('trackers', 'columns',
'edit_column', 'down_column', 'delete_column', 'init', 'delete_taskboard');
+ $allowedViews = array('trackers', 'columns',
'edit_column', 'delete_column', 'init', 'delete_taskboard');
+ if (in_array($action, $allowedActions)) {
+
include($gfplugins.$pluginTaskboard->name.'/common/actions/'.$action.'.php');
+ } elseif (in_array($view, $allowedViews)) {
+
include($gfplugins.$pluginTaskboard->name.'/common/views/admin/'.$view.'.php');
+ } else {
+
include($gfplugins.$pluginTaskboard->name.'/common/views/admin/taskboard.php');
+ }
} else {
-
include($gfplugins.$pluginTaskboard->name.'/common/views/admin/ind.php');
+ if ($action=='init') {
+
include($gfplugins.$pluginTaskboard->name.'/common/actions/init.php');
+ } elseif ($view=='init') {
+
include($gfplugins.$pluginTaskboard->name.'/common/views/admin/init.php');
+ } else {
+
include($gfplugins.$pluginTaskboard->name.'/common/views/admin/ind.php');
+ }
}
} else {
- $HTML->header(
- array(
- 'title' => _('Taskboard for
').$group->getPublicName()._(': ')._('Administration'),
- 'pagename' => _('Administration'),
- 'sectionvals' =>
array(group_getname($group_id)),
- 'group' => $group_id
- )
- );
+ $taskboardFactory = new TaskBoardFactoryHtml($group);
+ $taskboardFactory->header();
echo $HTML->information(_('Your project does not use tracker
feature. Please contact your Administrator to turn on this feature.'));
}
}
diff --git a/src/plugins/taskboard/www/ajax.php
b/src/plugins/taskboard/www/ajax.php
index cb6eaba..12decbf 100644
--- a/src/plugins/taskboard/www/ajax.php
+++ b/src/plugins/taskboard/www/ajax.php
@@ -1,6 +1,7 @@
<?php
/**
* Copyright (C) 2013 Vitaliy Pylypiv <[email protected]>
+ * Copyright 2016, Stéphane-Eymeric Bredtthauer - TrivialDev
*
* This file is part of FusionForge.
*
@@ -26,6 +27,7 @@ require_once
$gfplugins.'taskboard/common/include/TaskBoardHtml.class.php';
$sysdebug_enable = false;
$group_id = getIntFromPost('group_id');
+$taskboard_id = getIntFromPost('taskboard_id');
$action = getStringFromPost('action');
if (!$group_id) {
@@ -41,7 +43,7 @@ if (!$group_id) {
$allowedActions =
array('load_taskboard','drop_card','update','add','save_release_snapshot');
if (in_array($action, $allowedActions)) {
- $taskboard = new TaskBoardHtml($group);
+ $taskboard = new TaskBoardHtml($group, $taskboard_id);
include($gfplugins.'taskboard/common/actions/ajax_'.$action.'.php');
} else {
echo json_encode(array('message' => _('OK')));
diff --git a/src/plugins/taskboard/www/index.php
b/src/plugins/taskboard/www/index.php
index a9cdc71..09f453c 100644
--- a/src/plugins/taskboard/www/index.php
+++ b/src/plugins/taskboard/www/index.php
@@ -2,6 +2,7 @@
/**
* Copyright (C) 2013 Vitaliy Pylypiv <[email protected]>
* Copyright 2015, Franck Villaume - TrivialDev
+ * Copyright 2016, Stéphane-Eymeric Bredtthauer - TrivialDev
*
* This file is part of FusionForge.
*
@@ -27,6 +28,8 @@ require_once
$gfplugins.'taskboard/common/include/TaskBoardHtml.class.php';
global $HTML;
$group_id = getStringFromRequest('group_id');
+$taskboard_id = getStringFromRequest('taskboard_id');
+
$pluginTaskboard = plugin_get_object('taskboard');
if (!$group_id) {
@@ -36,364 +39,22 @@ if (!$group_id) {
if ( !$group) {
exit_no_group();
}
- if ( ! ($group->usesPlugin($pluginTaskboard->name))) {//check if the
group has the plugin active
- exit_error(sprintf(_('First activate the %s plugin through the
Project\'s Admin Interface'),$pluginTaskboard->name),'home');
- }
-
- $taskboard = new TaskBoardHtml($group);
- $taskboard->header(
- array(
- 'title' => _('Taskboard for ').$group->getPublicName(),
- 'pagename' => 'Taskboard',
- 'sectionvals' => array($group->getPublicName()),
- 'group' => $group_id
- )
- );
-
- if($taskboard->isError()) {
- echo $HTML->error_msg($taskboard->getErrorMessage());
- } else {
-
- if(count($taskboard->getUsedTrackersIds()) == 0) {
- echo $HTML->warning_msg(_('Choose at least one tracker
for using with taskboard.'));
+ if ($group->isError()) {
+ if($group->isPermissionDeniedError()) {
+
exit_permission_denied($group->getErrorMessage(),'tracker');
} else {
-
- $columns = $taskboard->getColumns();
-
- if(count($columns) == 0) {
- echo $HTML->warning_msg(_('Configure columns
for the board first.'));
- } else {
-
- $messages = '';
- foreach($columns as $column) {
- if(count($column->getResolutions()) ==
0) {
- $messages .= sprintf(
_('Resolutions list is empty for "%s", column is not dropable'),
$column->getTitle() ).'<br>';
- }
- }
-
- $user_stories_tracker =
$taskboard->getUserStoriesTrackerID();
- $columns_number = count($columns) +
($user_stories_tracker ? 1 : 0);
- $column_width = intval(100 / $columns_number);
-?>
-
-<div id="messages" class="warning" <?php if (!$messages) { ?> style="display:
none;" <?php } ?>><?php echo $messages ?></div>
-<br/>
-
-<?php
-$techs = $group->getUsers();
-
-$_assigned_to = getIntFromRequest('_assigned_to', '0');
-// stolen code from tracker
-$tech_id_arr = array();
-$tech_name_arr = array();
-
-foreach ($techs as $tech) {
- $tech_id_arr[] = $tech->getID() ;
- $tech_name_arr[] = $tech->getRealName() ;
-}
-$tech_id_arr[] = '0'; //this will be the 'any' row
-$tech_name_arr[] = _('Any');
-
-if (is_array($_assigned_to)) {
- $_assigned_to='';
-}
-$tech_box = html_build_select_box_from_arrays($tech_id_arr, $tech_name_arr,
'_assigned_to', $_assigned_to, true, _('Unassigned'));
-// end of the stolen code
-
-$release_box = '';
-$release_id = getIntFromRequest('_release', '0');
-if ($taskboard->getReleaseField()) {
- $release_field_alias = $taskboard->getReleaseField();
-
- if( $release_id ) {
- // use release, specified with URL
- $current_release = new TaskBoardRelease( $taskboard,
$release_id );
- } else {
- // use current release, according to the dates
- $current_release = $taskboard->getCurrentRelease();
- }
-
- $current_release_title = '';
- if ($current_release ) {
- $current_release_title = $current_release->getTitle();
- }
-
- $releases = $taskboard->getReleaseValues();
-
- if ($releases) {
- $release_id_arr = array();
- $release_name_arr = array();
- foreach( $releases as $release_name => $release_id ) {
- $release_id_arr[] = $release_name;
- $release_name_arr[] = $release_name;
+ exit_error($group->getErrorMessage(),'tracker');
}
-
- $release_box=html_build_select_box_from_arrays
($release_id_arr,$release_name_arr,'_release',$current_release_title, false,
'none', true);
- }
-}
-
-$colspan=0;
-if ($release_box) {
- $colspan = 2;
- if ( forge_check_perm('tracker_admin', $group_id ) ) {
- $colspan = 3;
}
-}
-?>
-
-
-<div>
- <form>
- <table cellspacing="0" width="100%">
- <tr valign="middle">
- <td width="10%">
- <?php echo _('Assignee')._(': '); ?>
- </td>
- <td width="10%">
- <?php echo $tech_box ; ?>
- </td>
- <td colspan="<?php echo $colspan ?>">
- </td>
- </tr>
- <tr>
- <?php if ($release_box) { ?>
- <td>
- <?php echo _('Release'); ?>
- </td>
- <td>
- <?php echo $release_box; ?>
- </td>
- <?php if ( forge_check_perm('tracker_admin',
$group_id ) ) { ?>
- <td style="vertical-align: middle;">
- <div
id="taskboard-release-description"></div>
- <div id="taskboard-release-snapshot">
- <input type="hidden"
name="taskboard_release_id" id="taskboard-release-id" value="" />
- <input type="text"
name="snapshot_date" value="<?php echo date('Y-m-d') ?>" />
- <button
id="taskboard-save-snapshot-btn"><?php echo _('Save release snapshot');
?></button>
- </div>
- </td>
- <?php } ?>
- <td>
- <div id="taskboard-burndown-div">
- <button
id="taskboard-burndown-btn"><?php echo _('Burndown chart'); ?></button>
- </div>
- </td>
- <?php } ?>
-
- </tr>
- </table>
- </form>
-</div>
-
-<div id="agile-board-progress">
-</div>
-
-<table id="agile-board">
- <thead>
- <tr valign="top">
-
- <?php if( $user_stories_tracker ) { ?>
- <td class="agile-phase-title" style="width: <?php echo
$column_width ?>%;"><?php echo _('User stories')?></td>
- <?php } ?>
-
- <?php foreach( $columns as $column ) { ?>
- <?php
- $style='width: ' . $column_width . '%;';
- $title_bg_color = $column->getTitleBackgroundColor();
- if( $title_bg_color ) {
- $style .= 'background-color: ' .
$title_bg_color . ';';
- }
- ?>
- <td class="agile-phase-title" style="<?php echo $style
?>">
- <?php echo $column->getTitle() ?>
- <input type="checkbox"
class="agile-minimize-column" id="phase-title-<?php echo $column->getID() ?>"
phase_id="<?php echo $column->getID() ?>">
- </td>
- <?php } ?>
- </tr>
- </thead>
- <tbody>
- </tbody>
-</table>
-
-
-<div id="new-task-dialog" style="display: none;">
- <input type="hidden" name="user_story_id" id="user_story_id" value="">
- <?php
- $used_trackers = $taskboard->getUsedTrackersIds();
- if(count($used_trackers) == 1) {
- echo html_e('input', array('type' => 'hidden', 'name'
=> 'tracker_id', 'id' => 'tracker_id', 'value' => $used_trackers[0]));
- } else {
- // select target tracker if more then single trackers
are configured
- echo "<div>\n";
- echo '<select name="tracker_id" id="tracker_id">';
- foreach( $used_trackers as $tracker_id ) {
- $tracker =
$taskboard->TrackersAdapter->getTasksTracker($tracker_id);
- echo '<option value="'.$tracker->getID().'">' .
$tracker->getName() . '</option>';
- }
- echo '</select>';
- echo "</div>\n";
- }
- ?>
-
-
-
- <div>
- <strong><?php echo _('Summary')?><?php echo
utils_requiredField(); ?>:</strong><br />
- <input id="tracker-summary" title="<?php echo
util_html_secure(_('The summary text-box represents a short tracker item
summary. Useful when browsing through several tracker items.')) ?>" type="text"
name="summary" size="70" value="" maxlength="255" />
- </div>
-
- <div>
- <strong><?php echo _('Detailed description') ?><?php echo
utils_requiredField(); ?>: </strong>
- <br />
- <textarea id="tracker-description" name="description" rows="10"
cols="79" title="<?php echo
util_html_secure(html_get_tooltip_description('description')) ?>"></textarea>
- </div>
-</div>
-
-<script>
-var gGroupId = <?php echo $group_id ?>;
-var gIsManager = <?php echo ( $taskboard->TrackersAdapter->isManager() ?
'true' : 'false' ) ?>;
-var gIsTechnician = <?php echo ( $taskboard->TrackersAdapter->isTechnician() ?
'true' : 'false' ) ?>;
-var gAjaxUrl = '<?php echo util_make_url
('/plugins/'.$pluginTaskboard->name.'/ajax.php') ; ?>';
-var gMessages = {
- 'notasks' : "<?php echo _('There are no tasks found.') ?>",
- 'progressByTasks' : "<?php echo _('Progress by tasks') ?>",
- 'progressByCost' : "<?php echo _('Progress by cost') ?>",
- 'remainingCost' : "<?php echo _('Remaining m/d') ?>",
- 'completedCost' : "<?php echo _('Completed m/d') ?>"
-};
-
-<?php
- $releases = array();
- foreach( $taskboard->getReleases() as $release ) {
- $releases[ $release->getTitle() ] = array(
- 'id' => $release->getID(),
- 'startDate' => date( 'Y-m-d', $release->getStartDate()),
- 'endDate' => date( 'Y-m-d', $release->getEndDate()),
- 'goal' => htmlspecialchars( $release->getTitle() )
- );
+ if ( ! ($group->usesPlugin($pluginTaskboard->name))) {//check if the
group has the plugin active
+ exit_error(sprintf(_('First activate the %s plugin through the
Project\'s Admin Interface'),$pluginTaskboard->name),'home');
}
-?>
-var gReleases = <?php echo json_encode($releases) ;?>
-
-bShowUserStories = <?php echo $taskboard->getUserStoriesTrackerID() ? 'true' :
'false' ?>;
-aUserStories = [];
-aPhases = []
-
-jQuery( document ).ready(function( $ ) {
- loadTaskboard( <?php echo $group_id ?> );
-
- jQuery('select[name="_assigned_to"],
select[name="_release"]').change(function () {
- loadTaskboard( <?php echo $group_id ?> );
- });
-
- jQuery('#taskboard-burndown-btn').click( function ( e ) {
- window.location = '<?php echo util_make_url
('/plugins/'.$pluginTaskboard->name.'/releases/?view=burndown&group_id='.
$group_id . '&release_id=' ); ?>' + jQuery('#taskboard-release-id').val();
- e.preventDefault();
- });
-
- <?php if( user_getid()) { ?>
- jQuery('#new-task-dialog').dialog(
- {
- autoOpen: false,
- width: 350,
- modal: true,
- buttons: [
- {
- text : "<?php echo _("Create task") ?>",
- id: "new-task-dialog-submit-button",
- click : function () {
- jQuery.ajax({
- type: 'POST',
- url: '<?php echo
util_make_url('/plugins/'.$pluginTaskboard->name.'/ajax.php') ;?>',
- dataType: 'json',
- data : {
- action : 'add',
- group_id : gGroupId,
- tracker_id :
jQuery('#tracker_id').val(),
- user_story_id :
jQuery('#user_story_id').val(),
- title :
jQuery('#tracker-summary').val(),
- desc :
jQuery('#tracker-description').val(),
- release :
jQuery('select[name="_release"]').val(),
- assigned_to :
jQuery('select[name="_assigned_to"]').val()
- },
- async: true
- }).done(function( answer ) {
-
jQuery('#new-task-dialog').dialog( "close" );
-
- if(answer['alert']) {
-
showMessage(answer['alert'], 'error');
- }
-
- if(answer['action'] ==
'reload') {
- // reload whole board
- loadTaskboard( gGroupId
);
- }
- }).fail(function( jqxhr, textStatus,
error ) {
- var err = textStatus + ', ' +
error;
- alert(err);
- });
- }
- },
- {
- text : "<?php echo _("Cancel") ?>",
- click: function() {
- jQuery('#new-task-dialog').dialog(
"close" );
- }
- }
- ],
- close: function() {
- },
- open: function () {
- jQuery('#new-task-dialog-submit-button').prop(
"disabled", true );
- jQuery('#tracker-summary').val('');
- jQuery('#tracker-description').val('');
- }
- });
-
- <?php if ( forge_check_perm('tracker_admin', $group_id ) ) { ?>
- jQuery('#taskboard-save-snapshot-btn').click( function ( e ) {
- jQuery.ajax({
- type: 'POST',
- url: '<?php echo
util_make_url('/plugins/taskboard/ajax.php') ;?>',
- dataType: 'json',
- data : {
- action : 'save_release_snapshot',
- group_id : gGroupId,
- tracker_id : jQuery('#tracker_id').val(),
- release_id :
jQuery('#taskboard-release-id').val(),
- snapshot_date :
jQuery('input[name="snapshot_date"]').val()
- },
- async: true
- }).done(function( answer ) {
- if(answer['alert']) {
- alert(answer['alert']);
- }
- }).fail(function( jqxhr, textStatus, error ) {
- var err = textStatus + ', ' + error;
- alert(err);
- });
-
- e.preventDefault();
- });
- <?php }?>
-
-
- <?php } ?>
-
- jQuery('#tracker-summary, #tracker-description').keyup( function () {
- // submit button is enabled only if both, title and
descritpion, are filled
- if( jQuery('#tracker-summary').val() &&
jQuery('#tracker-description').val()) {
- jQuery('#new-task-dialog-submit-button').prop(
"disabled", false );
- } else {
- jQuery('#new-task-dialog-submit-button').prop(
"disabled", true );
- }
- });
-});
-</script>
-<?php
- }
- }
+
+ if ($taskboard_id) {
+ include $gfplugins.'taskboard/common/views/taskboard.php';
+
+ } else {
+ include $gfplugins.'taskboard/common/views/ind.php';
+
}
}
-
-site_project_footer(array());
diff --git a/src/plugins/taskboard/www/js/agile-board.js
b/src/plugins/taskboard/www/js/agile-board.js
index e76d4f6..bf55dcc 100644
--- a/src/plugins/taskboard/www/js/agile-board.js
+++ b/src/plugins/taskboard/www/js/agile-board.js
@@ -14,6 +14,7 @@ function loadTaskboard( group_id ) {
var data = {
action : 'load_taskboard',
group_id : group_id,
+ taskboard_id : gTaskboardId,
assigned_to : assigned_to,
release : release_val
};
@@ -277,6 +278,7 @@ function setPhase( nUserStoryId, nTaskId, nTargetPhaseId ) {
data : {
action
: 'drop_card',
group_id : gGroupId,
+
taskboard_id : gTaskboardId,
task_id
: nTaskId,
target_phase_id : nTargetPhaseId
},
@@ -470,6 +472,7 @@ function initEditable() {
data : {
action : 'update',
group_id : gGroupId,
+ taskboard_id :
gTaskboardId,
task_id : l_nTaskId,
title :
jQuery(this).val()
},
diff --git a/src/plugins/taskboard/www/releases/index.php
b/src/plugins/taskboard/www/releases/index.php
index ca0eec4..10b6dea 100644
--- a/src/plugins/taskboard/www/releases/index.php
+++ b/src/plugins/taskboard/www/releases/index.php
@@ -1,6 +1,7 @@
<?php
/**
* Copyright (C) 2015 Vitaliy Pylypiv <[email protected]>
+ * Copyright 2016, Stéphane-Eymeric Bredtthauer - TrivialDev
*
* This file is part of FusionForge.
*
@@ -26,6 +27,7 @@ global $gfplugins;
require_once $gfplugins.'taskboard/common/include/TaskBoardHtml.class.php';
$group_id = getIntFromRequest('group_id');
+$taskboard_id = getIntFromRequest('taskboard_id');
$pluginTaskboard = plugin_get_object('taskboard');
if (!$group_id) {
@@ -44,7 +46,7 @@ if (!$group_id) {
$allowedActions = array('add_release', 'delete_release',
'edit_release');
$action = getStringFromRequest('action');
- $taskboard = new TaskBoardHtml($group);
+ $taskboard = new TaskBoardHtml($group, $taskboard_id);
if (in_array($action, $allowedActions)) {
include($gfplugins.$pluginTaskboard->name.'/common/actions/'.$action.'.php');
@@ -61,7 +63,7 @@ if (!$group_id) {
} else {
$taskboard->header(
array(
- 'title' => _('Taskboard for
').$group->getPublicName()._(': ')._('Administration'),
+ 'title' => $taskboard->getName()._(':
')._('Administration'),
'pagename' => _('Administration'),
'sectionvals' =>
array(group_getname($group_id)),
'group' => $group_id
-----------------------------------------------------------------------
Summary of changes:
src/plugins/taskboard/common/TaskBoard.class.php | 158 ++++++---
.../taskboard/common/TaskBoardFactory.class.php} | 73 ++--
.../taskboard/common/actions/add_release.php | 3 +-
src/plugins/taskboard/common/actions/columns.php | 6 +-
.../taskboard/common/actions/delete_column.php | 5 +-
.../taskboard/common/actions/delete_release.php | 3 +-
.../{delete_column.php => delete_taskboard.php} | 11 +-
.../taskboard/common/actions/down_column.php | 4 +-
.../taskboard/common/actions/edit_column.php | 6 +-
.../taskboard/common/actions/edit_release.php | 3 +-
src/plugins/taskboard/common/actions/init.php | 59 ++++
src/plugins/taskboard/common/actions/trackers.php | 9 +-
.../common/include/TaskBoardFactoryHtml.class.php | 59 ++++
.../common/include/TaskBoardHtml.class.php | 52 ++-
.../taskboard/common/views/admin/columns.php | 10 +-
.../taskboard/common/views/admin/delete_column.php | 7 +-
.../{delete_column.php => delete_taskboard.php} | 20 +-
.../taskboard/common/views/admin/edit_column.php | 10 +-
src/plugins/taskboard/common/views/admin/ind.php | 67 ++--
src/plugins/taskboard/common/views/admin/init.php | 53 ++-
.../taskboard/common/views/admin/taskboard.php | 57 ++++
.../taskboard/common/views/admin/trackers.php | 56 ++--
src/plugins/taskboard/common/views/ind.php | 68 ++++
.../common/views/releases/add_release.php | 7 +-
.../taskboard/common/views/releases/burndown.php | 5 +-
.../common/views/releases/delete_release.php | 8 +-
.../common/views/releases/edit_release.php | 7 +-
.../taskboard/common/views/releases/ind.php | 10 +-
.../{www/index.php => common/views/taskboard.php} | 13 +-
.../20160708-plugin-taskboard-multi-taskboard.sql | 9 +
src/plugins/taskboard/www/admin/ajax.php | 4 +-
src/plugins/taskboard/www/admin/index.php | 42 +--
src/plugins/taskboard/www/ajax.php | 4 +-
src/plugins/taskboard/www/index.php | 371 +--------------------
src/plugins/taskboard/www/js/agile-board.js | 3 +
src/plugins/taskboard/www/releases/index.php | 6 +-
36 files changed, 675 insertions(+), 613 deletions(-)
copy src/{common/tracker/ArtifactTypeFactory.class.php =>
plugins/taskboard/common/TaskBoardFactory.class.php} (54%)
copy src/plugins/taskboard/common/actions/{delete_column.php =>
delete_taskboard.php} (75%)
create mode 100644 src/plugins/taskboard/common/actions/init.php
create mode 100644
src/plugins/taskboard/common/include/TaskBoardFactoryHtml.class.php
copy src/plugins/taskboard/common/views/admin/{delete_column.php =>
delete_taskboard.php} (69%)
create mode 100644 src/plugins/taskboard/common/views/admin/taskboard.php
create mode 100644 src/plugins/taskboard/common/views/ind.php
copy src/plugins/taskboard/{www/index.php => common/views/taskboard.php} (95%)
create mode 100644
src/plugins/taskboard/db/20160708-plugin-taskboard-multi-taskboard.sql
hooks/post-receive
--
FusionForge
_______________________________________________
Fusionforge-commits mailing list
[email protected]
http://lists.fusionforge.org/cgi-bin/mailman/listinfo/fusionforge-commits