CGI-Bus

 view release on metacpan or  search on metacpan

lib/CGI/Bus/tm.pm  view on Meta::CPAN

 if    (!defined($_[0])) {}
 elsif (ref($_[0]) eq 'ARRAY') {return $s->parent->qparam([map {$px .$_} @{$_[0]}], @_[1..$#_])}
 elsif (ref($_[0]) eq 'HASH')  {return $s->parent->qparam({map {$px .$_ => $_[0]->{$_}} keys %{$_[0]}}, @_[1..$#_])}
 else  {return $s->parent->qparam($px .$_[0], @_[1..$#_])}
 my $r  =[];
 foreach my $e ($s->cgi->param) {
   next if $px ne '' ? substr($e,0,length($px)) ne $px
        : grep {$s->{$_} eq substr($e,0,length($s->{$_}))} qw(-pxpv -pxsw -pxcb -pxqc);
   push @$r, $e;
 }
 $r
}

sub qloval {	# query list option value compose
		# (self, list name, param=>val,...)
	join("\t", $_[1], map {defined($_) ? $_ : ''
	} @_[2..(lc($_[$#_ -1]) eq lc(pxnme($_[0],-pxsw=>'listurm')) 
		? $#_ -2 : $#_)])
}

sub qlourl {	# query list option url
 $_[0]->qurl('' # (self, list name, param=>val,...)
	,pxnme($_[0],-pxcb=>'cmd') =>'-lst'
	,pxnme($_[0],-pxsw=>'LIST')=>$_[1]
	,pxnme($_[0],-pxsw=>'LSO') =>qloval(@_)
	,(map {	my ($n, $v) =($_,$_[0]->qparam($_));
		!defined($v) || $v eq ''
		|| substr($n,0,length($_[0]->{-pxcb})) eq $_[0]->{-pxcb}
		|| substr($n,0,length($_[0]->{-pxpv})) eq $_[0]->{-pxpv}
		|| $n eq '_login'
		|| $n eq pxnme($_[0],-pxsw=>'FRMCOUNT')
		|| $n eq pxnme($_[0],-pxsw=>'LIST')
		|| $n eq pxnme($_[0],-pxsw=>'LSO')
		|| $n eq pxnme($_[0],-pxsw=>'listurm')
		? ()
		: ($n=>$v)
		} $_[0]->cgi->param)
	,lc($_[$#_ -1]) eq lc(pxnme($_[0],-pxsw=>'listurm'))
	? (@_[($#_ -1)..$#_])
	: ())
}

sub qlowgh {	# query list option hidden widget
		# (self, ?default value)
 $_[0]->qparam(pxnme($_[0],-pxsw=>'LSO')) 
? ''
: ($_[0]->cgi->hidden(-name=>pxnme($_[0],-pxsw=>'LSO')
	, $#_ >0 
	? (-value=>$_[0]->qparam(pxnme($_[0],-pxsw=>'LSO'), qloval(@_))
		, -override=>1)
	: ()) ."\n")
}

sub qlowgl {	# query list option hyperlink widget
 my $s =shift;	# (self, ?(options), label, list name, param=>val,...)
 my $o =ref($_[0]) ? (shift @_) : undef;
 my $v =qloval($s,@_[1..$#_]);
 my $c =$v eq ($s->qparam(pxnme($s,-pxsw=>'LSO'))||'');
 $s->cgi->a({$o ? %$o : ()
	, -href=>qlourl($s,@_[1..$#_])
	, $c ? (-style=>'{ text-decoration: none; font-weight: bolder; }') : ()
			# font-style: italic;  font-weight: bolder;
#	, -onClick=>'{' .pxnme($s,-pxsw=>'LSO') .'.value="' # !!! read marking?
#		.do{	$v =~s/([\\"])/\\$1/g;
#			$v =~s/([\x00-\x1f])/sprintf("\\x%02x",ord($1))/eg;
# 			$v} .'"; ' 
#		.pxnme($s,-pxsw=>'LIST') .'.value="' .$_[1] .'"; '
#		.pxnme($s,-pxcb=>'cmdi') .'.value="-lst"; submit(); return(false)}'
	}, $_[0])
}

sub qloparse {	# query list option parse
 my $g =$_[0]->cgi;	# (self)
 my $v =$g->param(pxnme($_[0],-pxsw=>'LSO'));
 return(undef)	if !$v 
		|| $v !~/^([^\t]+)\t+(.+)$/
		|| lc($1) ne lc($g->param(pxnme($_[0],-pxsw=>'LIST')));
 local $^W=undef;
 my %p =(split /\t/, $2);
 my $w =pxnme($_[0],-pxsw=>'WHERE');
 foreach my $k (keys %p) {
	next if !defined($p{$k}) || $p{$k} eq '';
	$g->param($k
		, $k ne $w
		? $p{$k}
		: $g->param($w) && index(lc($g->param($w)||''), lc($p{$k})) <0
		? '(' .$g->param($w) .') AND (' .$p{$k} .')'
		: $p{$k});
 }
 $_[0]
}


###################################
# DECLARATIONS UTILITY METHODS
###################################


sub qlst {         # Query List Name
 my $s =shift;
 my $l =$s->qparamsw('LIST');
 return($l)    if $l && $s->{-lists} && $s->{-lists}->{$l};
 return(undef) if !$s->{-lists};
 my @a =sort keys %{$s->{-lists}};
 foreach my $v (@a) {
	return($l =$v)
	if	($v && substr($v,length($v)-1) eq '_')
	||	&{sub{$_[0] && substr($_[0],length($_[0])-1) eq '_'}}
		(ref($s->{-lists}->{$v}) eq 'HASH' && $s->{-lists}->{$v}->{-lbl})
 }
 $l =$a[0];
}


sub qlstnmes {     # Lists Names
 my $l =$_[0]->{-lists};
 my $r =[];
 if ($l) {
    foreach my $e (keys %$l) {
      next if substr($e,0,1) eq '_';
      push @$r, $e
    }



( run in 1.251 second using v1.01-cache-2.11-cpan-39bf76dae61 )