Name

fly-list — display item in a flypage-like fashion

ATTRIBUTES

Attribute Pos. Req. Default Description
code Yes item code
onfly
prefix item list prefix
interpolate     0 interpolate input?
reparse     1 interpolate output?

DESCRIPTION

Performs the flypage lookup function and displays the item as on the flypage.

BEHAVIOR

This tag does not appear to be affected by, or affect, the rest of Interchange.

EXAMPLES

No examples are available at this time. We do consider this a problem and will try to supply some.

NOTES

AVAILABILITY

fly-list is available in Interchange versions:

4.6.0-5.9.0 (git-head)

SOURCE

Interchange 5.9.0:

Source: code/SystemTag/fly_list.coretag
Lines: 15


# Copyright 2002-2007 Interchange Development Group and others
# 
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.  See the LICENSE file for details.
# 
# $Id: fly_list.coretag,v 1.4 2007-03-30 23:40:49 pajamian Exp $

UserTag fly-list            Order        code
UserTag fly-list            addAttr
UserTag fly-list            hasEndTag
UserTag fly-list            PosNumber    2
UserTag fly-list            Version      $Revision: 1.4 $
UserTag fly-list            MapRoutine   Vend::Interpolate::fly_page

Source: lib/Vend/Interpolate.pm
Lines: 5103

sub fly_page {
my($code, $opt, $page) = @_;

my ($selector, $subname, $base, $listref);

return $page if (! $code and $Vend::Flypart eq $Vend::FinalPath);

$code = $Vend::FinalPath
  unless $code;

$Vend::Flypart = $code;

if ($subname = $Vend::Cfg->{SpecialSub}{flypage}) {
  my $sub = $Vend::Cfg->{Sub}{$subname} || $Global::GlobalSub->{$subname}; 
  $listref = $sub->($code);

  return unless defined $listref;

  if (ref $listref) {
    $base = $listref;
  }

  else {
    $code = $listref;
    $listref = { mv_results => [[$listref]] };
    $base = product_code_exists_ref($code);
  }
}
else {
  $listref = {mv_results => [[$code]]};
  $base = product_code_exists_ref($code);
}

#::logDebug("fly_page: code=$code base=$base page=" . substr($page, 0, 100));
return undef unless $base || $opt->{onfly};

$base = $Vend::Cfg->{ProductFiles}[0] unless $base;

  if($page) {
  $selector = 'passed in tag';
}
elsif(  $Vend::ForceFlypage ) {
  $selector = $Vend::ForceFlypage;
  undef $Vend::ForceFlypage;
}
elsif(  $selector = $Vend::Cfg->{PageSelectField}
    and db_column_exists($base,$selector)
  )
{
    $selector = database_field($base, $code, $selector)
}

$selector = find_special_page('flypage')
  unless $selector;
#::logDebug("fly_page: selector=$selector");

unless (defined $page) {
  unless( allowed_file($selector) ) {
    log_file_violation($selector, 'fly_page');
    return undef;
  }
  $page = readin($selector);
  if (defined $page) {
    vars_and_comments(\$page);
  } else {
    logError("attempt to display code=$code with bad flypage '$selector'");
    return undef;
  }
}

# This allows access from embedded Perl
$Tmp->{flycode} = $code;
# TRACK
$Vend::Track->view_product($code) if $Vend::Track;
# END TRACK

$opt->{prefix} ||= 'item';
# LEGACY
list_compat($opt->{prefix}, \$page) if $page;
# END LEGACY

return labeled_list( $opt, $page, $listref);
}

AUTHORS

Interchange Development Group

SEE ALSO

DocBook! Interchange!