[evolvis-commits] r18193: scmsvn-tweaks pending merges:↵ Thorsten Glaser 2012-03-14 also display a warning in browse.php; cache the SCMPlugin instance thus↵ Thorsten Glaser 2012-03-14 [#2933] do not display Browse Source link if hidden

mirabilos at evolvis.org mirabilos at evolvis.org
Wed Mar 14 19:59:26 CET 2012


Author: mirabilos
Date: 2012-03-14 19:59:25 +0100 (Wed, 14 Mar 2012)
New Revision: 18193

Modified:
   trunk/gforge_base/evolvisforge-5.1/src/www/scm/browser.php
   trunk/gforge_base/evolvisforge-5.1/src/www/scm/include/scm_utils.php
Log:
scmsvn-tweaks pending merges:
  Thorsten Glaser 2012-03-14 also display a warning in browse.php; cache the SCMPlugin instance thus
    Thorsten Glaser 2012-03-14 [#2933] do not display Browse Source link if hidden

also fixes tooltip


Modified: trunk/gforge_base/evolvisforge-5.1/src/www/scm/browser.php
===================================================================
--- trunk/gforge_base/evolvisforge-5.1/src/www/scm/browser.php	2012-03-14 18:59:19 UTC (rev 18192)
+++ trunk/gforge_base/evolvisforge-5.1/src/www/scm/browser.php	2012-03-14 18:59:25 UTC (rev 18193)
@@ -27,6 +27,18 @@
 require_once $gfwww.'scm/include/scm_utils.php';    
 
 $group_id = getIntFromRequest("group_id");
+$project = group_get_object($group_id);
+if (!$project || !is_object($project)) {
+	exit_no_group();
+} else if ($project->isError()) {
+	exit_error($project->getErrorMessage(), 'scm');
+}
+$scmplugin = scm_get_instance($project);
+if (!$scmplugin) {
+	$error_msg = _('Could not get SCM Plugin instance');
+} else if (!$scmplugin->browserDisplayable($project)) {
+	$error_msg = _('SCM Browser not displayable; possibly because it’s not anonymously accessible?');
+}
 scm_header(array('title'=>_('SCM Repository'),'group'=>$group_id));
 
 $repo_name = getStringFromRequest("repo_name", "none");
@@ -37,5 +49,3 @@
 plugin_hook ("scm_browser_page", $hook_params) ;
 
 scm_footer(); 
-
-?>

Modified: trunk/gforge_base/evolvisforge-5.1/src/www/scm/include/scm_utils.php
===================================================================
--- trunk/gforge_base/evolvisforge-5.1/src/www/scm/include/scm_utils.php	2012-03-14 18:59:19 UTC (rev 18192)
+++ trunk/gforge_base/evolvisforge-5.1/src/www/scm/include/scm_utils.php	2012-03-14 18:59:25 UTC (rev 18193)
@@ -24,8 +24,35 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
+$scm_instance_cache = false;
+function &scm_get_instance($group) {
+	global $gfcommon, $scm_instance_cache;
+	require_once $gfcommon.'scm/SCMFactory.class.php';
+
+	if ($scm_instance_cache === false) {
+		$SCMFactory = new SCMFactory();
+		$scm_plugins = $SCMFactory->getSCMs();
+		$usedplugin = false;
+		if (count($scm_plugins) >= 1) {
+			foreach ($scm_plugins as $plugin) {
+				$myPlugin = plugin_get_object($plugin);
+				if ($group->usesPlugin($myPlugin->name)) {
+					if ($usedplugin === false) {
+						$usedplugin = $myPlugin;
+					} else {
+						exit_error(_('More than one SCM plugin in use.'), 'scm');
+					}
+				}
+			}
+		}
+		$scm_instance_cache = $usedplugin;
+	}
+	return $scm_instance_cache;
+}
+
 function scm_header($params) {
 	global $HTML;
+
 	if (!forge_get_config('use_scm')) {
 		exit_disabled();
 	}
@@ -40,33 +67,32 @@
 	if (!$project->usesSCM()) {
 		exit_disabled();
 	}
-	/*
-		Show horizontal links
-	*/
-	if (session_loggedin()) {
-		if (forge_check_perm ('project_admin', $project->getID())) {
-			$params['submenu'] = array(
-				array(
-					_('Access Source Code'),
-					_('Browse Source Code'),
-					_('Reporting'),
-					_('Administration')
-					),
-				array(
-					'/scm/?group_id='.$params['group'],
-					'/scm/browser.php?group_id='.$params['group'],
-					'/scm/reporting/?group_id='.$params['group'],
-					'/scm/admin/?group_id='.$params['group']
-					),
-				array(
-					_('-tooltip:scm:view'),
-					_('-tooltip:scm:reporting'),
-					_('-tooltip:scm:admin'),
-					)
-				);
-		}
+
+	$submenu = array(array(), array(), array());
+	$submenu[0][] = _('Access Source Code');
+	$submenu[1][] = '/scm/?group_id=' . $params['group'];
+	$submenu[2][] = _('-tooltip:scm:view');
+
+	$scmplugin = scm_get_instance($project);
+	if ($scmplugin && $scmplugin->browserDisplayable($project)) {
+		$submenu[0][] = _('Browse Source Code');
+		$submenu[1][] = '/scm/browser.php?group_id=' .
+		    $params['group'];
+		$submenu[2][] = _('Look at the source code repository using your webbrowser!');
 	}
 
+	if (session_loggedin() &&
+	    forge_check_perm('project_admin', $project->getID())) {
+		$submenu[0][] = _('Reporting');
+		$submenu[1][] = '/scm/reporting/?group_id=' . $params['group'];
+		$submenu[2][] = _('-tooltip:scm:reporting');
+
+		$submenu[0][] = _('Administration');
+		$submenu[1][] = '/scm/admin/?group_id=' . $params['group'];
+		$submenu[2][] = _('-tooltip:scm:admin');
+	}
+
+	$params['submenu'] = $submenu;
 	$params['toptab'] = 'scm';
 	site_project_header($params);
 	echo '<div id="scm" class="scm">';



More information about the evolvis-commits mailing list