sub ibx_url_for {
my ($ctx) = @_;
- $ctx->{ibx} and return; # just fall back to $upfx
- $ctx->{git} or return; # /$CODEREPO/$OID/s/ to (eidx|ibx)
+ $ctx->{ibx} and return; # fall back to $upfx
+ $ctx->{git} or die 'BUG: no {git}';
if (my $ALL = $ctx->{www}->{pi_cfg}->ALL) {
- $ALL->base_url // $ALL->base_url($ctx->{env});
- } elsif (my $ibxs = $ctx->{git}->{-ibxs}) {
- for my $ibx (@$ibxs) {
- if ($ibx->isrch) {
- return defined($ibx->{url}) ?
- prurl($ctx->{env}, $ibx->{url}) :
- "../../../$ibx->{name}/";
- }
+ if (defined(my $u = $ALL->base_url($ctx->{env}))) {
+ return wantarray ? ($u) : $u;
+ }
+ }
+ my @ret;
+ if (my $ibx_names = $ctx->{git}->{ibx_names}) {
+ my $by_name = $ctx->{www}->{pi_cfg}->{-by_name};
+ for my $name (@$ibx_names) {
+ my $ibx = $by_name->{$name} // do {
+ warn "inbox `$name' no longer exists\n";
+ next;
+ };
+ $ibx->isrch // next;
+ my $u = defined($ibx->{url}) ?
+ prurl($ctx->{env}, $ibx->{url}) : $name;
+ $u .= '/' if substr($u, -1) ne '/';
+ push @ret, $u;
}
- } else {
- undef;
}
+ wantarray ? (@ret) : $ret[0];
}
sub cmt_finalize {
my $ibx_url = ibx_url_for($ctx);
my $alt;
if (defined $ibx_url) {
+ $alt = " `$ibx_url'";
+ $ibx_url =~ m!://! or
+ substr($ibx_url, 0, 0, '../../../');
$ibx_url = ascii_html($ibx_url);
- $alt = ' '.$ibx_url;
} else {
$ibx_url = $upfx;
$alt = '';