[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