git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Martin Waitz <tali@admingilde.org>
To: git@vger.kernel.org
Cc: Martin Waitz <tali@admingilde.org>
Subject: [PATCH] gitweb: use action dispatcher for non-project actions, too.
Date: Thu, 17 Aug 2006 00:28:41 +0200	[thread overview]
Message-ID: <11557673281583-git-send-email-tali@admingilde.org> (raw)
In-Reply-To: <11557673262714-git-send-email-tali@admingilde.org>

Allow to use the global action dispatcher for all actions by introducing
"/actions".  If no project directory is given then a / is prepended to the
action and the normal dispatcher is called.
Project list and OPML generation are now hooked into the list as "/summary"
and "/opml".

As "/" is not an allowed character in actions accepted through the CGI
parameters, it is still ensured that no normal action can be called without
giving a valid project directory.

Signed-off-by: Martin Waitz <tali@admingilde.org>
---
 gitweb/gitweb.perl |   17 ++++++++---------
 1 files changed, 8 insertions(+), 9 deletions(-)

diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl
index 3b6333c..9a7faab 100755
--- a/gitweb/gitweb.perl
+++ b/gitweb/gitweb.perl
@@ -84,11 +84,6 @@ if (defined $action) {
 	if ($action =~ m/[^0-9a-zA-Z\.\-_]/) {
 		die_error(undef, "Invalid action parameter");
 	}
-	# action which does not check rest of parameters
-	if ($action eq "opml") {
-		git_opml();
-		exit;
-	}
 }
 
 our $order = $cgi->param('o');
@@ -113,9 +108,6 @@ if (defined $project) {
 		die_error(undef, "No such project");
 	}
 	$ENV{'GIT_DIR'} = "$projectroot/$project";
-} else {
-	git_project_list();
-	exit;
 }
 
 our $file_name = $cgi->param('f');
@@ -185,12 +177,19 @@ my %actions = (
 	"search" => \&git_search,
 	"shortlog" => \&git_shortlog,
 	"summary" => \&git_summary,
+	"/summary" => \&git_project_list,
+	"/opml" => \&git_opml,
 	"tag" => \&git_tag,
 	"tags" => \&git_tags,
 	"tree" => \&git_tree,
 );
 
-$action = 'summary' if (!defined($action));
+# default action
+$action ||= 'summary';
+
+#only allow non-/ actions if we have a project directory
+$action = "/$action" if !defined($project);
+
 if (!defined($actions{$action})) {
 	die_error(undef, "Unknown action");
 }
-- 
1.4.2.rc2.gf055

  reply	other threads:[~2006-08-16 22:29 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-08-16 22:28 [PATCH] gitweb: continue consolidation of URL generation Martin Waitz
2006-08-16 22:28 ` [PATCH] gitweb: use common parameter parsing and generation for "o", too Martin Waitz
2006-08-16 22:28   ` [PATCH] gitweb: support for "fp" parameter Martin Waitz
2006-08-16 22:28     ` [PATCH] gitweb: support for / as home_link Martin Waitz
2006-08-16 22:28       ` [PATCH] gitweb: fix project list if PATH_INFO=="/" Martin Waitz
2006-08-16 22:28         ` Martin Waitz [this message]
2006-08-17  2:06           ` [PATCH] gitweb: use action dispatcher for non-project actions, too Junio C Hamano
2006-08-17 15:00             ` Carl Worth
2006-08-18 13:16               ` Petr Baudis
2006-08-18 14:03                 ` Carl Worth
2006-08-18 14:22                   ` Jakub Narebski
2006-08-18 15:40                   ` Petr Baudis
2006-08-17 19:43             ` Martin Waitz
2006-08-17  9:41           ` Jakub Narebski
2006-08-17 19:49             ` Martin Waitz
2006-08-17 20:00               ` Jakub Narebski
2006-08-17  9:35   ` [PATCH] gitweb: use common parameter parsing and generation for "o", too Jakub Narebski
2006-08-17 19:13     ` Martin Waitz
2006-08-17 19:34       ` Jakub Narebski
2006-08-18 20:20         ` Martin Waitz
2006-08-19 10:55           ` Jakub Narebski
2006-08-19 18:33             ` Martin Waitz
2006-08-19 21:44               ` Jakub Narebski
2006-08-17  1:59 ` [PATCH] gitweb: continue consolidation of URL generation Junio C Hamano
2006-08-17 19:32   ` Martin Waitz

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=11557673281583-git-send-email-tali@admingilde.org \
    --to=tali@admingilde.org \
    --cc=git@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).