Business-Cart-Generic

 view release on metacpan or  search on metacpan

lib/Business/Cart/Generic/View/Base.pm  view on Meta::CPAN

package Business::Cart::Generic::View::Base;

use strict;
use warnings;

use Moose;

use Text::Xslate 'mark_raw';

extends 'Business::Cart::Generic::Database::Base';

has config =>
(
 is       => 'ro',
 isa      => 'HashRef',
 required => 1,
);

has templater =>
(
 is       => 'ro',
 isa      => 'Text::Xslate',
 required => 1,
);

use namespace::autoclean;

our $VERSION = '0.85';

# -----------------------------------------------

sub build_select
{
	my($self, $class_name, $default, $id_name, $column_list, $onchange) = @_;

	$self -> db -> logger -> log(debug => "build_select($class_name, $default)");

	$default     ||= 1;
	$id_name     ||= lc "${class_name}_id";
	$onchange    = $onchange ? qq|onchange="$onchange"| : '';
	$column_list ||= ['name'];
	my($option)  = $self -> db -> get_id2name_map($class_name, $column_list);

	return $self -> templater -> render
	(
	 'select.tx',
	 {
		 name     => $id_name,
		 onchange => mark_raw($onchange),
		 loop     =>
			 [map
				  {
					  {
						  default => $_ == $default ? 1 : 0,
						  name    => $$option{$_},
						  value   => $_,
					  };
				  } sort{$$option{$a} cmp $$option{$b} } keys %$option
			 ],
	 }
	);

} # End of build_select.

# -----------------------------------------------

sub build_special_select
{
	my($self, $map, $default, $id_name) = @_;

	$self -> db -> logger -> log(debug => 'build_special_select()');

	return $self -> templater -> render
	(
	 'select.tx',
	 {
		 name => $id_name,
		 loop =>
			 [map
				  {
					  {
						  default => $_ == $default ? 1 : 0,
						  name    => mark_raw($$map{$_}),
						  value   => $_,
					  };
				  } sort{$$map{$a} cmp $$map{$b} } keys %$map



( run in 2.571 seconds using v1.01-cache-2.11-cpan-0d23b851a93 )