[Fusionforge-commits] r8457 - in trunk/gforge: common/docman www/docman/admin www/docman/include

Franck VILLAUME nerville at libremir.placard.fr.eu.org
Wed Dec 2 14:05:16 CET 2009


Author: nerville
Date: 2009-12-02 14:05:16 +0100 (Wed, 02 Dec 2009)
New Revision: 8457

Modified:
   trunk/gforge/common/docman/DocumentGroup.class.php
   trunk/gforge/www/docman/admin/index.php
   trunk/gforge/www/docman/include/DocumentGroupHTML.class.php
Log:
new feature : delete document group
warning: delete a document group is permanent and recurcive.
It also delete documents inside the document group and it is recurcive too

Modified: trunk/gforge/common/docman/DocumentGroup.class.php
===================================================================
--- trunk/gforge/common/docman/DocumentGroup.class.php	2009-12-01 22:07:06 UTC (rev 8456)
+++ trunk/gforge/common/docman/DocumentGroup.class.php	2009-12-02 13:05:16 UTC (rev 8457)
@@ -237,6 +237,46 @@
 	}
 		
 	/**
+	 * delete - delete a DocumentGroup.
+	 *          delete is recursive and permanent
+	 *       TODO : use the delete status as document ?
+	 * @param integer Document Group Id, integer Project Group Id
+	 * @return boolean
+ 	 */
+	function delete($doc_groupid,$project_group_id) {
+		$perm =& $this->Group->getPermission (session_get_user());
+		if (!$perm || !$perm->isDocEditor()) {
+			$this->setPermissionDeniedError();
+			return false;
+		}
+		db_begin();
+		/* delete documents in directory */
+		$result = db_query_params ('DELETE FROM doc_data where doc_group = $1 and group_id = $2',
+					array($doc_groupid,
+						$project_group_id));
+
+		/* delete directory */
+		$result = db_query_params ('DELETE FROM doc_groups where doc_group = $1 and group_id = $2',
+					array($doc_groupid,
+						$project_group_id));
+
+		db_commit();
+		/* is there any subdir ? */
+		$result = db_query_params ('select doc_group from doc_groups where parent_doc_group = $1 and group_id = $2',
+					array($doc_groupid,
+						$project_group_id));
+		/* make a recursive call */
+		while ($arr = db_fetch_array($result)) {
+			$this->delete($arr,$project_group_id);
+		}
+
+		if (!$result) {
+			return false;
+		}
+		return true;
+	}
+
+	/**
 	* hasDocuments - Recursive function that checks if this group or any of it childs has documents associated to it
 	*
 	* A group has associated documents if and only if there are documents associated to this

Modified: trunk/gforge/www/docman/admin/index.php
===================================================================
--- trunk/gforge/www/docman/admin/index.php	2009-12-01 22:07:06 UTC (rev 8456)
+++ trunk/gforge/www/docman/admin/index.php	2009-12-02 13:05:16 UTC (rev 8457)
@@ -122,6 +122,19 @@
 		}
 		$feedback = _('Updated successfully');
 
+	} elseif (getStringFromRequest('deletegroup')) {
+		$doc_group = getIntFromRequest('doc_group');
+		
+		$dg = new DocumentGroup($g,$doc_group);
+		if ($dg->isError()) {
+			exit_error('Error',$dg->getErrorMessage());
+		}
+		if (!$dg->delete($doc_group,$group_id)) {			
+			exit_error('Error',$dg->getErrorMessage());
+		}
+		$feedback = _('Deleted successfully');
+		header('Location: index.php?group_id='.$group_id.'&feedback='.urlencode($feedback));
+		die();	// End parsing file and redirect
 
 	} elseif (getStringFromRequest('addgroup')) {
 		$groupname = getStringFromRequest('groupname');
@@ -329,11 +342,11 @@
 //	Add a document group / view existing groups list
 //
 //
-} elseif (getStringFromRequest('addgroup')) {
+} elseif (getStringFromRequest('admingroup')) {
 
-	docman_header(_('Document Manager Administration'),_('Add Document Groups'),'');
+	docman_header(_('Document Manager Administration'),_('Admin Document Groups'),'');
 
-	echo "<h1>"._('Add Document Groups')."</h1>";
+	echo "<h1>"._('Admin Document Groups')."</h1>";
 	
 	$dgf = new DocumentGroupFactory($g);
 	if ($dgf->isError()) {
@@ -351,6 +364,7 @@
 		$title_arr=array();
 		$title_arr[]=_('ID');
 		$title_arr[]=_('Group Name');
+		$title_arr[]=_('Delete Group');
 
 		echo $GLOBALS['HTML']->listTableTop ($title_arr);
 		
@@ -364,7 +378,7 @@
 	}
 	?>
 	<p><strong><?php echo _('Add a group') ?>:</strong></p>
-	<form name="addgroup" action="index.php?addgroup=1&amp;group_id=<?php echo $group_id; ?>" method="post">
+	<form name="admingroup" action="index.php?addgroup=1&amp;group_id=<?php echo $group_id; ?>" method="post">
 	<table>
 		<tr>
 			<th><?php echo _('New Group Name') ?>:</th>
@@ -439,6 +453,26 @@
 	</form>
 	<?php
 	docman_footer(array());
+} else if (getStringFromRequest('deletegroup') && getIntFromRequest('doc_group')) {
+	$doc_group = getIntFromRequest('doc_group');
+
+	$dg = new DocumentGroup($g,$doc_group);
+        if ($dg->isError()) {
+                exit_error('Error',$dg->getErrorMessage());
+        }
+
+	docman_header(_('Document Manager Administration'),_('Delete Groups'),'');
+?>
+		<p>
+		<form action="<?php echo util_make_url('/docman/admin/index.php').'?deletegroup=1&amp;doc_group='.$dg->getID().'&amp;group_id='.$dg->Group->getID() ?>" method="post">
+		<input type="hidden" name="submit" value="1" /><br />
+		<img src="/images/ic/cfolder15.png" /><?php echo $dg->getName(); ?><br />
+		<?php echo _('You are about to permanently delete this document group and his content (documents and subgroups).'); ?>
+		<p><input type="submit" name="post_changes" value="<?php echo _('Delete') ?>" /></p>
+		</form></p>
+<?php
+	docman_footer(array());
+
 } else if (getStringFromRequest('deletedoc') && $docid) {
 	$d= new Document($g,$docid);
 	if ($d->isError()) {
@@ -487,7 +521,7 @@
 	?> 
 	<h3><?php echo _('Document Manager: Administration') ?></h3>
 	<p>
-	<a href="index.php?group_id=<?php echo $group_id; ?>&amp;addgroup=1"><?php echo _('Add/Edit Document Groups') ?></a>
+	<a href="index.php?group_id=<?php echo $group_id; ?>&amp;admingroup=1"><?php echo _('Add/Edit/Delete Document Groups') ?></a>
 	</p>
 	<?php
 	

Modified: trunk/gforge/www/docman/include/DocumentGroupHTML.class.php
===================================================================
--- trunk/gforge/www/docman/include/DocumentGroupHTML.class.php	2009-12-01 22:07:06 UTC (rev 8456)
+++ trunk/gforge/www/docman/include/DocumentGroupHTML.class.php	2009-12-02 13:05:16 UTC (rev 8457)
@@ -67,7 +67,9 @@
 				'<td>'.$margin.html_image('ic/'.$img,"15","13",array("border"=>"0")).' '.
 				'<a href="index.php?editgroup=1&amp;doc_group='.
 					$doc_group->getID().'&amp;group_id='.$doc_group->Group->getID().'">'.
-					$doc_group->getName().'</a></td></tr>';
+					$doc_group->getName().'</a></td>'.
+				'<td><a href="index.php?deletegroup=1&amp;doc_group='.$doc_group->getID().'&amp;group_id='.$doc_group->Group->getID().'">'.
+				'<img src="/images/ic/trash.png"/></a></td></tr>';
 			// Show childs (if any)
 			$this->showTableNestedGroups($group_arr, $rowno, $doc_group->getID(), $level+1);
 		}




More information about the Fusionforge-commits mailing list