Apache-App-Mercury

 view release on metacpan or  search on metacpan

Mercury/Message.pm  view on Meta::CPAN

    my $q = $messaging->{q};
    my $user = $messaging->{user_manager}->userprofile('user');

    # get custom-defined display class, if there is one
    my $dispclass = Apache::App::Mercury::Config::DISPLAY_CLASS();

    my $is_recip = ($user eq $self->{'sent_to'});
    my $is_sender = ($user eq $self->{'sender'});
    my $is_memo = ($self->{'sent_to'} eq $self->{'sender'});

    # save database hits by caching results in message object
    unless (ref $self->{'sender_info'} eq "HASH") {
	my %sender_info =
	  ($is_sender
	   ? ( 'fname' => $messaging->{user_manager}->userprofile('fname'),
	       'lname' => $messaging->{user_manager}->userprofile('lname') )
	   : %{($messaging->{user_manager}->get_userinfo($self->{'sender'}))[0]});
	$self->{'sender_info'} = { 'fname' => $sender_info{'fname'},
				   'lname' => $sender_info{'lname'} };
    }

    my $recip_desc;
    if ($self->{'recipient_desc'}) {
	$recip_desc = $self->{'recipient_desc'};
    } elsif ($is_recip) {
	$recip_desc =
	  ($user." (".$messaging->{user_manager}->userprofile('fname').
	   " ".$messaging->{user_manager}->userprofile('lname').")");
    } else {
	# save database hits by caching results in message object
	unless (ref $self->{'recip_info'} eq "ARRAY") {
	    my @recip_info = $messaging->{user_manager}->get_userinfo
	      (split(';', $self->{'sent_to'}));
	    $self->{'recip_info'} =
	      [ map { { 'user' => $_->{'user'},
			'fname' => $_->{'fname'},
			'lname' => $_->{'lname'} }; } @recip_info ];
	}

	foreach (@{$self->{'recip_info'}}) {
	    $recip_desc .=
	      (($recip_desc ? "; " : "") .
	       ($dispclass->can("USER_INFO_HREF")
		? $dispclass->USER_INFO_HREF($_->{'user'}, $q)
		: '') .
	       " (" . $_->{'fname'}." ".$_->{'lname'} . ")");
	}
    }

    # generate attachment HTML
    my @attach_html;
    if (ref $self->{'Attachments'} eq "ARRAY") {
	foreach (0..$#{$self->{'Attachments'}}) {
	    my $a = $self->{'Attachments'}->[$_];
	    next unless
	      $a->{'Filename'} and $a->{'Name'} and $a->{'AttachmentID'};
	    push(@attach_html,
		 ($q->td({-align => 'right', -nowrap},
			 $q->b("Attachment ".($_+1).":")) .
		  $q->td({-nowrap},
			 $q->a({-href => $self->uri_escape_noamp
				(Apache::App::Mercury::Config::ATTACHMENT_BASE_URI() .
				 $a->{'Filename'}),
				-class => 'attach',
				-target => 'theAttachmentWindow'},
			       $a->{'Name'}))));
	}
    }

    my $markedup_body = $self->pretty_print($self->{'body'});

    return
      ($q->table
       ($q->Tr
	([$q->td({-align => 'right', -nowrap}, $q->b("Subject:")) .
	  $q->td({-nowrap}, $q->b($self->{'subject'})),

	  # add possible additional message headers according to customization
	  ($dispclass->can("AUX_HEADERS")
	   ? $dispclass->AUX_HEADERS($self)
	   : ''),

	  ($self->{'time_formatted'}
	   ? ($q->td({-align => 'right', -nowrap}, $q->b("Date:")) .
	      $q->td({-nowrap}, $self->{'time_formatted'}))
	   : ()),
	  $q->td({-align => 'right', -nowrap},
		 $q->b(!$is_memo ? "From:" : "Memo by:")) .
	  $q->td({-nowrap},
		 ($is_sender
		  ? $user
		  : ($dispclass->can("USER_INFO_HREF")
		     ? $dispclass->USER_INFO_HREF($self->{'sender'}, $q)
		     : '')) .
		 " (".$self->{'sender_info'}->{'fname'}." ".
		 $self->{'sender_info'}->{'lname'}.")"),
	  (!$is_memo
	   ? ($q->td({-align => 'right', -valign => 'top', -nowrap},
		     $q->b("To:")) . $q->td($recip_desc))
	   : ()),
	  @attach_html,
	  ($self->{'action'}
	   ? ()
	   : ($q->td({-align => 'right', -nowrap}, $q->b("Security level:")) .
	      $q->td({-nowrap}, $q->font({-face => 'fixed'},
					 uc $self->{'security'}))))
	 ])
       ) .
       $q->hr({-width => '200', -align => 'left', -size => '1'}) .
       $q->pre($markedup_body)
      );
}

sub display_compose {
    my ($self) = @_;
    my $messaging = $self->{messaging};
    my $q = $messaging->{q};

    my $sender = $messaging->{user_manager}->userprofile('user');

    # see if there are defaults (a msg in composition, or a reply/forward...)
    my $recipient = $self->{'sent_to'};

    my $is_memo = ($sender eq $recipient);

    # generate attachment HTML
    my @attach_html;
    if (ref $self->{'Attachments'} eq "ARRAY") {
	foreach (0..$#{$self->{'Attachments'}}) {
	    my $a = $self->{'Attachments'}->[$_];
	    next unless
	      $a->{'Filename'} and $a->{'Name'} and $a->{'AttachmentID'};
	    push(@attach_html,
		 ($q->b("Attachment ".($_+1).": ") .
		  $q->a({-href => $self->uri_escape_noamp
			 (Apache::App::Mercury::Config::ATTACHMENT_BASE_URI() .
			  $a->{'Filename'}),
			 -class => 'attach',
			 -target => 'theAttachmentWindow'},
			$a->{'Name'}) .
		  " (".$q->a({-href => Apache::App::Mercury::Config::BASE_URI()."?remove_attach=".$_},
			     "remove").")"
		 ));
	}
    }

    return
      ((!$is_memo
	? ($q->b("From: ") . $sender." (".
	   $messaging->{user_manager}->userprofile('fname')." ".
	   $messaging->{user_manager}->userprofile('lname').")".$q->br.$q->br.
	   $q->b("To: ") .
	   ($recipient &&
	    ($self->{'action'} eq 'reply' || $self->{'action'} eq 'mailto')
	    ? ($self->{'recipient_desc'} . $q->br)
	    : $q->textfield(-name => 'recipient', -override => 1,
			    -default => $recipient,
			    -size => 34, -maxlength => 255)))
	: ($q->b("Memo by: ").$sender.
	   ($messaging->{user_manager}->userprofile('user_desc')
	    ? " (".$messaging->{user_manager}->userprofile('user_desc').")" : "") .
	   $q->br)) .
       $q->br .
       $q->b("Subject: ") .
       $q->textfield(-name => 'subject', -override => 1,
		     -default => $self->{'subject'},
		     -size => 40, -maxlength => 100) . $q->br .
       ($self->{'transcode'}
	? $q->br.$q->b("Trans: ").$self->{'transcode'}.$q->br.$q->br : '') .
       $q->b("Body: ") . $q->br .
       $q->textarea(-name => 'body', -override => 1,
		    -default => $self->{'body'},
		    -rows => 13, -columns => 60, -wrap => 'soft') .
       $q->br .
       join($q->br, @attach_html) .
       $q->br .
       $q->b("Attach ") .
       $q->textfield(-name => 'num_files_to_attach', -override => 1,
		     -default => ($self->{'num_to_attach'}
				  ? $self->{'num_to_attach'} : 0),
		     -size => 2, -maxlength => 2) .
       $q->b(" file(s)") . $q->br .
       $q->b("Security level of this message: ") .
       ($self->{'security_fixed'} && $self->{'security'}
	? $q->font({-face => 'fixed'}, uc($self->{'security'}))
	: $q->popup_menu(-name => 'security', -override => 1,
			 -values => ['low', 'medium', 'high'],
			 -default => ($self->{'security'}
				      ? $self->{'security'} : 'medium'),
			 -labels => { 'low' => "Low", 'medium' => "Medium",
				      'high' => "High" },
			)) .
       $q->br
      );
}



( run in 0.644 second using v1.01-cache-2.11-cpan-5b529ec07f3 )