[Fusionforge-commits] r13989 - in trunk/src: common/docman common/docman/actions common/docman/views www www/docman www/themes/funky/css www/themes/funky/images/docman www/themes/gforge/images/docman

Franck VILLAUME nerville at fusionforge.org
Thu Jul 28 17:16:55 CEST 2011


Author: nerville
Date: 2011-07-28 17:16:55 +0200 (Thu, 28 Jul 2011)
New Revision: 13989

Added:
   trunk/src/www/themes/funky/images/docman/directory-with-documents.png
   trunk/src/www/themes/gforge/images/docman/directory-with-documents.png
Removed:
   trunk/src/www/jscook/
Modified:
   trunk/src/common/docman/DocumentGroup.class.php
   trunk/src/common/docman/DocumentManager.class.php
   trunk/src/common/docman/actions/addsubdocgroup.php
   trunk/src/common/docman/actions/editdocgroup.php
   trunk/src/common/docman/views/editdocgroup.php
   trunk/src/common/docman/views/listfile.php
   trunk/src/common/docman/views/tree.php
   trunk/src/www/docman/index.php
   trunk/src/www/themes/funky/css/theme-pages.css
Log:
* first landing of projects_hierarchy in docman
* jscook dies today. fusionforge is using jquery only


Modified: trunk/src/common/docman/DocumentGroup.class.php
===================================================================
--- trunk/src/common/docman/DocumentGroup.class.php	2011-07-28 13:41:20 UTC (rev 13988)
+++ trunk/src/common/docman/DocumentGroup.class.php	2011-07-28 15:16:55 UTC (rev 13989)
@@ -50,7 +50,7 @@
 	 *
 	 * @param	object	Group object.
 	 * @param	array	(all fields from doc_groups) OR doc_group id from database.
-	 * @return	boolean	success.
+	 * @return	boolean	True on success.
 	 * @access	public
 	 */
 	function DocumentGroup(&$Group, $data = false) {
@@ -71,9 +71,11 @@
 		if ($data) {
 			if (is_array($data)) {
 				$this->data_array =& $data;
-//
-//	should verify group_id
-//
+				if ($this->data_array['group_id'] != $this->Group->getID()) {
+					$this->setError('DocumentGroup:: '. _('Group_id in db result does not match Group Object'));
+					$this->data_array = null;
+					return false;
+				}
 				return true;
 			} else {
 				if (!$this->fetchData($data)) {
@@ -237,8 +239,8 @@
 	 * @access	public
 	 */
 	function fetchData($id) {
-		$res = db_query_params('SELECT * FROM doc_groups WHERE doc_group = $1',
-					array($id));
+		$res = db_query_params('SELECT * FROM doc_groups WHERE doc_group = $1 and group_id = $2',
+					array($id, $this->Group->getID()));
 		if (!$res || db_numrows($res) < 1) {
 			$this->setError(_('Invalid Document Folder ID'));
 			return false;

Modified: trunk/src/common/docman/DocumentManager.class.php
===================================================================
--- trunk/src/common/docman/DocumentManager.class.php	2011-07-28 13:41:20 UTC (rev 13988)
+++ trunk/src/common/docman/DocumentManager.class.php	2011-07-28 15:16:55 UTC (rev 13989)
@@ -126,10 +126,12 @@
 	/**
 	 *  getTree - display recursively the content of the doc_group. Only doc_groups within doc_groups.
 	 *
+	 * @param	integer	the selected directory
 	 * @param	string	the type of link in the menu
-	 * @param	int	the doc_group to start: default 0
+	 * @param	integer	the doc_group to start: default 0
 	 */
-	function getTree($linkmenu, $docGroupId = 0) {
+	function getTree($selecteddir, $linkmenu, $docGroupId = 0) {
+		global $g; // the master group of all the groups .... anyway.
 		$dg = new DocumentGroup($this->Group);
 		switch ($linkmenu) {
 			case "listtrashfile": {
@@ -142,67 +144,23 @@
 			}
 		}
 		$subGroupIdArr = $dg->getSubgroup($docGroupId, $stateId);
-		echo '<ul>';
-		foreach ($subGroupIdArr as $subGroupIdValue) {
-			$localDg = new DocumentGroup($this->Group, $subGroupIdValue);
-			echo '<li><a href="?group_id='.$this->Group->getID().'&view='.$linkmenu.'&dirid='.$localDg->getID().'">'.$localDg->getName().'</a></il>';
-			$this->getTree($linkmenu, $subGroupIdValue);
-		}
-		echo '</ul>';
-	}
-
-	function getJSTree($linkmenu, $displayProjectName) {
-		global $idExposeTreeIndex;
-		$label = '/';
-		if ($displayProjectName)
-			$label = $this->Group->getPublicName()
-		?>
-		<script language="JavaScript" type="text/javascript">/* <![CDATA[ */
-			var myThemeXPBase = "<?php echo util_make_uri('/jscook/ThemeXP/'); ?>";
-		/* ]]> */</script>
-		<script type="text/javascript" src="<?php echo util_make_uri('/jscook/JSCookTree.js'); ?>"></script>
-		<script src="<?php echo util_make_uri('/jscook/ThemeXP/theme.js'); ?>" type="text/javascript"></script>
-
-		<div id="menu<?php echo $this->Group->getID() ?>" style="overflow:auto;"></div>
-
-		<script language="JavaScript" type="text/javascript">/* <![CDATA[ */
-			var myMenu =
-				[
-					['<span class="JSCookTreeFolderClosed"><i><img alt="" src="' + myThemeXPBase + 'folder1.gif" /></i></span><span id="<?php echo $this->Group->getID().'ctItemID0' ?>" class="JSCookTreeFolderOpen"><i><img alt="" src="' + myThemeXPBase + 'folderopen1.gif" /></i></span>', '<?php echo $label ?>', '<?php echo '?group_id='.$this->Group->getID().'&view='.$linkmenu ?>', '', '', <?php $this->getJSTreeEntry(0, $linkmenu); ?>
-					]
-				];
-
-			var treeIndex = ctDraw('<?php echo 'menu'.$this->Group->getID() ?>', myMenu, ctThemeXP1, 'ThemeXP', 0, 1);
-			ctExposeTreeIndex(treeIndex, <?php echo $idExposeTreeIndex ?>);
-			var openItem = ctGetSelectedItem(treeIndex);
-			ctOpenFolder(openItem);
-		/* ]]> */</script>
-		<?php
-	}
-
-	/**
-	 * getJSTreeEntry - Recursive function to show the documents inside the groups tree : javascript enabled function
-	 *
-	 * @param	int	doc_group_id
-	 * @param	string	the type of link in the menu
-	 */
-	function getJSTreeEntry($docgroup, $linkmenu) {
-		global $nested_groups;
-		global $idExposeTreeIndex, $dirid, $idhtml;
-
-		if (is_array(@$nested_groups[$docgroup])) {
-			foreach ($nested_groups[$docgroup] as $dg) {
-				$idhtml++;
-
-				if ($dirid == $dg->getID())
-					$idExposeTreeIndex = $idhtml;
-
-				echo "
-					['".'<span class="JSCookTreeFolderClosed"><i><img alt="" src="\' + ctThemeXPBase + \'folder1.gif" /></i></span><span class="JSCookTreeFolderOpen"><i><img alt="" src="\' + ctThemeXPBase + \'folderopen1.gif" /></i></span>'."', '".addslashes($dg->getName())."', '?group_id=".$this->Group->getID()."&view=".$linkmenu."&dirid=".$dg->getID()."', '', '',";
-						$this->getJSTreeEntry($dg->getID(), $linkmenu);
-				echo ",
-					],";
+		if (sizeof($subGroupIdArr)) {
+			echo '<ul>';
+			foreach ($subGroupIdArr as $subGroupIdValue) {
+				$localDg = new DocumentGroup($this->Group, $subGroupIdValue);
+				$liclass = 'docman_li_treecontent';
+				if ($selecteddir == $localDg->getID()) {
+					$liclass = 'docman_li_treecontent_selected';
+				}
+				if ($this->Group->getID() != $g->getID()) {
+					$link = '/docman/?group_id='.$g->getID().'&view='.$linkmenu.'&dirid='.$localDg->getID().'&childgroup_id='.$this->Group->getID();
+				} else {
+					$link = '/docman/?group_id='.$this->Group->getID().'&view='.$linkmenu.'&dirid='.$localDg->getID();
+				}
+				echo '<li class="'.$liclass.'">'.util_make_link($link, $localDg->getName()).'</li>';
+				$this->getTree($selecteddir, $linkmenu, $subGroupIdValue);
 			}
+			echo '</ul>';
 		}
 	}
 }

Modified: trunk/src/common/docman/actions/addsubdocgroup.php
===================================================================
--- trunk/src/common/docman/actions/addsubdocgroup.php	2011-07-28 13:41:20 UTC (rev 13988)
+++ trunk/src/common/docman/actions/addsubdocgroup.php	2011-07-28 15:16:55 UTC (rev 13989)
@@ -31,6 +31,13 @@
 global $dirid; // id of doc_group
 global $group_id; // id of group
 
+$childgroup_id = getIntFromRequest('childgroup_id');
+if ($childgroup_id) {
+	$origin_group_id = $group_id;
+	$group_id = $childgroup_id;
+	$g = group_get_object($group_id);
+}
+
 if (!forge_check_perm('docman', $group_id, 'approve')) {
 	$return_msg = _('Document Manager Action Denied.');
 	if ($dirid) {

Modified: trunk/src/common/docman/actions/editdocgroup.php
===================================================================
--- trunk/src/common/docman/actions/editdocgroup.php	2011-07-28 13:41:20 UTC (rev 13988)
+++ trunk/src/common/docman/actions/editdocgroup.php	2011-07-28 15:16:55 UTC (rev 13989)
@@ -28,20 +28,30 @@
 global $g; //group object
 global $dirid; //id of doc_group
 global $group_id; // id of group
+global $childgroup_id; // plugin projects hierarchy handler
 
+
 if (!forge_check_perm('docman', $group_id, 'approve')) {
 	$return_msg = _('Document Manager Action Denied.');
 	session_redirect('/docman/?group_id='.$group_id.'&view=listfile&dirid='.$dirid.'&warning_msg='.urlencode($return_msg));
 }
 
+$urlredirect = '/docman/?group_id='.$group_id.'&view=listfile&dirid='.$dirid;
+
+// plugin projects_hierarchy handler
+if ($childgroup_id) {
+	$g = group_get_object($childgroup_id);
+	$urlredirect = '/docman/?group_id='.$group_id.'&view=listfile&dirid='.$dirid.'&childgroup_id='.$childgroup_id;
+}
+
 $groupname = getStringFromRequest('groupname');
 $parent_dirid = getIntFromRequest('parent_dirid');
 $dg = new DocumentGroup($g, $dirid);
 if ($dg->isError())
-	session_redirect('/docman/?group_id='.$group_id.'&view=listfile&dirid='.$dirid.'&error_msg='.urlencode($dg->getErrorMessage()));
+	session_redirect($urlredirect.'&error_msg='.urlencode($dg->getErrorMessage()));
 
 if (!$dg->update($groupname, $parent_dirid))
-	session_redirect('/docman/?group_id='.$group_id.'&view=listfile&dirid='.$dirid.'&error_msg='.urlencode($dg->getErrorMessage()));
+	session_redirect($urlredirect.'&error_msg='.urlencode($dg->getErrorMessage()));
 
 if ($dg->getState() == 2) {
 	/**
@@ -72,8 +82,11 @@
 }
 
 if (!$dg->setStateID('1'))
-	session_redirect('/docman/?group_id='.$group_id.'&view=listfile&dirid='.$dirid.'&error_msg='.urlencode($dg->getErrorMessage()));
+	session_redirect($urlredirect.'&error_msg='.urlencode($dg->getErrorMessage()));
 
-$return_msg = sprintf(_('Documents folder %s updated successfully.', $dg->getName()));
-session_redirect('/docman/?group_id='.$group_id.'&view=listfile&dirid='.$dirid.'&feedback='.urlencode($return_msg));
+$return_msg = sprintf(_('Documents folder %s updated successfully'), $dg->getName());
+if ($childgroup_id)
+	$return_msg .= ' '.sprintf(_('on project %s'), $g->getPublicName());
+
+session_redirect($urlredirect.'&feedback='.urlencode($return_msg));
 ?>

Modified: trunk/src/common/docman/views/editdocgroup.php
===================================================================
--- trunk/src/common/docman/views/editdocgroup.php	2011-07-28 13:41:20 UTC (rev 13988)
+++ trunk/src/common/docman/views/editdocgroup.php	2011-07-28 15:16:55 UTC (rev 13989)
@@ -38,13 +38,20 @@
 	session_redirect('/docman/?group_id='.$group_id.'&warning_msg='.urlencode($return_msg));
 }
 
+// plugin projects_hierarchy
+$actionurl = '?group_id='.$group_id.'&action=editdocgroup';
+if ($childgroup_id) {
+	$g = group_get_object($childgroup_id);
+	$actionurl = '?group_id='.$group_id.'&action=editdocgroup&childgroup_id='.$childgroup_id;
+}
+
 $dg = new DocumentGroup($g, $dirid);
 if ($dg->isError())
 	session_redirect('/docman/?group_id='.$group_id.'&error_msg='.urlencode($dg->getErrorMessage()));
 
 ?>
 <div class="docmanDivIncluded">
-	<form name="editgroup" action="?group_id=<?php echo $group_id; ?>&action=editdocgroup" method="post">
+	<form name="editgroup" action="<?php echo $actionurl; ?>" method="post">
 		<input type="hidden" name="dirid" value="<?php echo $dirid; ?>" />
 		<table>
 			<tr>

Modified: trunk/src/common/docman/views/listfile.php
===================================================================
--- trunk/src/common/docman/views/listfile.php	2011-07-28 13:41:20 UTC (rev 13988)
+++ trunk/src/common/docman/views/listfile.php	2011-07-28 15:16:55 UTC (rev 13989)
@@ -36,11 +36,30 @@
 global $g; // the Group object
 global $df;
 
+$childgroup_id = getIntFromRequest('childgroup_id');
+
 if (!forge_check_perm('docman', $group_id, 'read')) {
 	$return_msg= _('Document Manager Access Denied');
 	session_redirect('/docman/?group_id='.$group_id.'&warning_msg='.urlencode($return_msg));
 }
 
+// plugin projects_hierarchy
+if ($childgroup_id) {
+	$g = group_get_object($childgroup_id);
+}
+
+$df = new DocumentFactory($g);
+if ($df->isError())
+	exit_error($df->getErrorMessage(), 'docman');
+
+$dgf = new DocumentGroupFactory($g);
+if ($dgf->isError())
+	exit_error($dgf->getErrorMessage(), 'docman');
+
+$dgh = new DocumentGroupHTML($g);
+if ($dgh->isError())
+	exit_error($dgh->getErrorMessage(), 'docman');
+
 $df->setDocGroupID($dirid);
 
 /**
@@ -115,7 +134,7 @@
 /* ]]> */</script>
 
 <?php
-echo '<div id="left" style="float:left; width:17%; min-width: 50px;">';
+echo '<div id="left" style="float:left; width:17%; min-width: 50px; overflow: auto;">';
 include ($gfcommon.'docman/views/tree.php');
 echo '</div>';
 echo '<div id="handle" style="float:left; height:100px; margin:3px; width:3px; background: #000; cursor:e-resize;"></div>';

Modified: trunk/src/common/docman/views/tree.php
===================================================================
--- trunk/src/common/docman/views/tree.php	2011-07-28 13:41:20 UTC (rev 13988)
+++ trunk/src/common/docman/views/tree.php	2011-07-28 15:16:55 UTC (rev 13989)
@@ -27,62 +27,36 @@
 /* please do not add require here : use www/docman/index.php to add require */
 /* global variables used */
 global $group_id; // id of the group
-global $nested_docs;
 global $linkmenu;
 global $g; // the group object
+global $dirid; // the selected directory
 
 if (!forge_check_perm('docman', $group_id, 'read')) {
 	$return_msg= _('Document Manager Access Denied');
 	session_redirect('/docman/?group_id='.$group_id.'&warning_msg='.urlencode($return_msg));
 }
 
-/**
- * needed for docman_recursive_display function call
- * see utils.php for more information
- */
-$idExposeTreeIndex = 0;
-$idhtml = 0;
-$displayProjectName = 0;
+// plugin hierarchy : since tree is loaded from listfile.php, you need to be sure that
+if ($childgroup_id) {
+	$g = group_get_object($group_id);
+}
 
 echo '<div id="documenttree" style="height:100%">';
 $dm = new DocumentManager($g);
-$dm->getJSTree($linkmenu, $displayProjectName);
-echo '<noscript>';
-echo '<ul>';
-echo '<li><a href="?group_id='.$g->getID().'&view='.$linkmenu.'">/</a></il>';
-$dm->getTree($linkmenu);
-echo '</ul>';
-echo '</noscript>';
-
+$dm->getTree($dirid, $linkmenu);
 if ($g->usesPlugin('projects_hierarchy')) {
 	$projectsHierarchy = plugin_get_object('projects_hierarchy');
 	$projectIDsArray = $projectsHierarchy->getFamilyID($group_id, 'child', false, 'validated');
-	if (sizeof($projectIDsArray))
-		$displayProjectName = 1;
 }
 if (isset($projectIDsArray) && is_array($projectIDsArray)) {
-	if (sizeof($projectIDsArray))
-		echo '<h5>'._('Child projects').'</h5>';
 	foreach ($projectIDsArray as $key=>$projectID) {
 		$groupObject = group_get_object($projectID);
 		if ($groupObject->usesDocman() && $projectsHierarchy->getDocmanStatus($groupObject->getID())
 			&& forge_check_perm('docman', $groupObject->getID(), 'read')) {
-
 			echo '<hr>';
-			if ($displayProjectName)
-				$label = $g->getPublicName();
+			echo '<h5>'._('Child project:').$groupObject->getPublicName().'</h5>';
 			$dm = new DocumentManager($groupObject);
-			$dm->getJSTree($linkmenu, $displayProjectName);
-			echo '<noscript>';
-			echo '<ul>';
-			$label = '/';
-			if ($displayProjectName)
-				$label = $groupObject->getPublicName();
-
-			echo '<li><a href="?group_id='.$groupObject->getID().'&view='.$linkmenu.'">'.$label.'</a></il>';
-			$dm->getTree($linkmenu);
-			echo '</ul>';
-			echo '</noscript>';
+			$dm->getTree($dirid, $linkmenu);
 		}
 	}
 }

Modified: trunk/src/www/docman/index.php
===================================================================
--- trunk/src/www/docman/index.php	2011-07-28 13:41:20 UTC (rev 13988)
+++ trunk/src/www/docman/index.php	2011-07-28 15:16:55 UTC (rev 13989)
@@ -63,6 +63,8 @@
 if (empty($dirid))
 	$dirid = 0;
 
+$childgroup_id = getIntFromRequest('childgroup_id');
+
 /* everything sounds ok, now let do the job */
 $action = getStringFromRequest('action');
 switch ($action) {
@@ -100,22 +102,9 @@
 	}
 }
 
-$df = new DocumentFactory($g);
-if ($df->isError())
-	exit_error($df->getErrorMessage(), 'docman');
-
-$dgf = new DocumentGroupFactory($g);
-if ($dgf->isError())
-	exit_error($dgf->getErrorMessage(), 'docman');
-
-$dgh = new DocumentGroupHTML($g);
-if ($dgh->isError())
-	exit_error($dgh->getErrorMessage(), 'docman');
-
 html_use_storage();
 use_javascript('scripts/DocManController.js');
 use_javascript('/js/sortable.js');
-use_stylesheet('/jscook/ThemeXP/theme.css');
 
 $title = _('Documents for ').$g->getPublicName();
 

Modified: trunk/src/www/themes/funky/css/theme-pages.css
===================================================================
--- trunk/src/www/themes/funky/css/theme-pages.css	2011-07-28 13:41:20 UTC (rev 13988)
+++ trunk/src/www/themes/funky/css/theme-pages.css	2011-07-28 15:16:55 UTC (rev 13989)
@@ -227,6 +227,16 @@
 	padding: 3px;
 }
 
+.docman_li_treecontent {
+	list-style-image: url('/themes/funky/images/docman/directory.png');
+	margin: 2px;
+}
+
+.docman_li_treecontent_selected {
+	list-style-image: url('/themes/funky/images/docman/directory-with-documents.png');
+	margin: 2px;
+}
+
 /*
     tracker
 */

Added: trunk/src/www/themes/funky/images/docman/directory-with-documents.png
===================================================================
(Binary files differ)


Property changes on: trunk/src/www/themes/funky/images/docman/directory-with-documents.png
___________________________________________________________________
Added: svn:mime-type
   + image/png

Added: trunk/src/www/themes/gforge/images/docman/directory-with-documents.png
===================================================================
(Binary files differ)


Property changes on: trunk/src/www/themes/gforge/images/docman/directory-with-documents.png
___________________________________________________________________
Added: svn:mime-type
   + image/png




More information about the Fusionforge-commits mailing list