Bivio::Biz::Model::RealmMailPublicForm
# Copyright (c) 2011 bivio Software, Inc. All Rights Reserved.
# $Id$
package Bivio::Biz::Model::RealmMailPublicForm;
use strict;
use Bivio::Base 'Biz.FormModel';
my($_MV) = b_use('Type.MailVisibility');
sub can_toggle_public {
my($self) = @_;
return $_MV->row_tag_get($self->req)->eq_always_is_private ? 0 : 1;
}
sub execute_empty {
my($self) = @_;
$self->get('realm_file')->toggle_is_public;
return $self->internal_redirect_next;
}
sub execute_ok {
b_die('should not get here');
# DOES NOT RETURN
}
sub internal_initialize {
my($self) = @_;
return $self->merge_initialize_info($self->SUPER::internal_initialize, {
version => 1,
require_context => 1,
other => [
$self->field_decl([
[qw(realm_mail Model.RealmMail)],
[qw(realm_file Model.RealmFile)],
]),
],
});
}
sub internal_pre_execute {
my($self) = @_;
my($rm) = $self
->new_other('RealmMail')
->set_ephemeral
->load_this_from_request;
my($rf) = $rm->get_model('RealmFile');
$self->internal_put_field(
realm_mail => $rm,
realm_file => $rf,
);
$self->throw_die('FORBIDDEN', 'Always is private')
unless $rf->get('is_public') or $self->can_toggle_public;
my(@res) = shift->SUPER::internal_pre_execute(@_);
return @res;
}
1;