Apache-App-Mercury

 view release on metacpan or  search on metacpan

Mercury.pm  view on Meta::CPAN

    my $q = $self->{q};
    my $controller = $self->{controller};
    my %args = $self->{r}->args;

    # set up and preparation - independent of page

    $self->get_mailboxes;

    my $box = $self->{'current_box'} = $self->get_current_mailbox;

    my $need_sort;
    if ($args{$box.'_sortby'} and
	$args{$box.'_sortby'} ne ($self->{$box}->{'sortby'} .
				  ($self->{$box}->{'sortdir'}
				   ? '__'.$self->{$box}->{'sortdir'} : ''))) {
	my ($sort, $updown) = split('__', $args{$box.'_sortby'});
	$need_sort = $self->set_sortby(undef, $sort, $updown);
    } elsif (!$self->{$box}->{'sortby'}) {
	$need_sort = $self->set_sortby;
    }

    # hit database if user wants or if more than 10 minutes has past since last
    if ($q->param('check_mail') or !$self->{'last_mail_check'} or
	$controller->get_time > $self->{'last_mail_check'}+600) {
	$self->check_mail;
	$need_sort = 0; # since mail checking automtically sorts
    }

    # cannot sort until boxes are made (by checkmail)
    # but only sort if sortby was changed and mail was not checked
    $self->sort_mailbox if $need_sort;

    # actions, non-displaying

    if ($q->param('delete')) {
	$self->delete_messages;
    } elsif ($q->param('transfer')) {
	$self->transfer_messages;
    }

    # change state if we're now trying to view messages in an empty mailbox
    $self->{'state'} = 'message_center'
      if ($self->{'state'} eq 'view_messages' and
	  $#{$self->{$box}->{'index'}} < 0);

    # outputting and page creation

    if ($q->param('cancel')) {
	$self->cancel_operation;

	$self->{'state'} = 'message_center';
	$self->show_mail_center;
	$controller->sitemark('/messaging');

    } elsif ($q->param('message_center')) {

	$self->{'state'} = 'message_center';
	$self->show_mail_center;
	$controller->sitemark('/messaging');

    } elsif ($self->{'state'} eq 'edit_settings' or $args{'edit_mail_prefs'}) {

	if ($q->param('add_box')) {
	    if ($self->verify_new_mailbox($q->param('new_box'))) {
		$self->add_new_mailbox($q->param('new_box'));
		$self->checkmail;
		$q->delete('new_box');
	    }
	} elsif ($q->param('delete_box')) {
	    $self->delete_mailbox($q->param('custom_box'),
				  $q->param('delete_mail_in_box'));
	    $self->checkmail;
	    $q->delete('custom_box');
	    $q->delete('delete_mail_in_box');
	} elsif ($q->param('commit_filter')) {
	    $self->edit_filters;
	    $self->checkmail;
#	    $q->delete('trans_filter');
	} elsif ($q->param('update_auto_forward')) {
	    $self->update_auto_forward;
	    $self->checkmail;
	}
	$self->{'state'} = 'edit_settings';
	$self->show_mail_settings;
	$controller->sitemark('/messaging.settings');

    } elsif ($self->{'state'} eq 'compose_message') {

	$self->save_compose_message_fields;
	$controller->sitemark('/messaging.compose');

	$controller->infomsg("You must take action on your existing composition before creating a transaction-related message.")
	  if ($q->param('reply_trans') or $q->param('compose_trans'));

	if ($q->param('preview')) {
	    my ($fail, $recip, $recip_desc) =
	      $self->verify_recipient($self->{compose_msg}->{'sent_to'}, 1);
	    unless ($fail) {
		$self->{compose_msg}->{'sent_to'} = $recip;
		$self->{compose_msg}->{'recipient_desc'} = $recip_desc;

		$self->{'state'} = 'preview_message';
		$self->show_mail_preview;
		$controller->sitemark('/messaging.preview');
		return;
	    }
	} elsif ($q->param('return')) {
	    $controller->infomsg("Your composition has been saved in memory.  It will be removed when you log out.");
	    $self->{'state'} = 'message_center';
	    $self->show_mail_center;
	    $controller->sitemark('/messaging');
	    return;
	} elsif ($q->param('reset')) {
	    $self->reset_compose_message;
	} elsif ($q->param('change_recip')) {
	    $self->{compose_msg}->{'action'} .= "-changed_recip";
	} elsif ($q->param('memo')) {
	    $self->{compose_msg}->{'sent_to'} = $self->{user_manager}->userprofile('user');
	    $self->{compose_msg}->{'recipient_desc'} = $self->{user_manager}->userprofile('user_desc');
	} elsif ($q->param('nonmemo')) {
	    $self->{compose_msg}->{'sent_to'} = '';



( run in 1.002 second using v1.01-cache-2.11-cpan-5a3173703d6 )