Beagle

 view release on metacpan or  search on metacpan

lib/Beagle/Web.pm  view on Meta::CPAN

    return Beagle::I18N->get_handle(@lang);
}

sub change_handle {
    shift @_ if @_ && $_[0] eq 'Beagle::Web';
    my %vars = @_;
    if ( $vars{handle} ) {
        $bh        = $vars{handle};
        $name      = $bh->name;
        $bh{$name} = $bh;
    }
    elsif ( $vars{name} ) {
        my $n = $vars{name};
        $bh   = $bh{$n};
        $name = $n;
    }
    else {
        return;
    }

    return $Beagle::Util::ROOT = $bh->root;
}

sub process_fields {
    shift @_ if @_ && $_[0] eq 'Beagle::Web';
    my ( $entry, $params ) = @_;

    my %fields = Beagle::Web->field_list($entry);
    for my $field ( keys %$params ) {
        next unless $entry->can($field) && $fields{$field};
        my $new = $params->{$field};
        if ( $field eq 'body' ) {
            $new = $entry->parse_body($new);
        }

        my $old = $entry->serialize_field($field);

        if ( "$new" ne "$old" ) {
            $entry->$field( $entry->parse_field( $field, $new ) );
        }
    }
    return 1;
}

sub delete_attachments {
    shift @_ if @_ && $_[0] eq 'Beagle::Web';
    my ( $entry, @names ) = @_;
    for my $name (@names) {
        next unless defined $name;
        my $att = Beagle::Model::Attachment->new(
            name      => $name,
            parent_id => $entry->id,
        );
        $bh->delete_attachment($att);
    }
}

sub add_attachments {
    shift @_ if @_ && $_[0] eq 'Beagle::Web';
    my ( $entry, @attachments ) = @_;
    for my $upload (@attachments) {
        next unless $upload;

        my $basename = decode_utf8 $upload->filename;
        $basename =~ s!\\!/!g;
        $basename =~ s!.*/!!;

        my $att = Beagle::Model::Attachment->new(
            name         => $basename,
            content_file => $upload->tempname,
            parent_id    => $entry->id,
        );
        $bh->create_attachment( $att,
                message => 'added attachment '
              . $basename
              . ' for entry '
              . $entry->id );
    }
}

sub handle  { $bh }
sub request { $req }

sub set_prefix {
    shift @_ if @_ && $_[0] eq 'Beagle::Web';
    $prefix = shift;
}

sub set_static {
    shift @_ if @_ && $_[0] eq 'Beagle::Web';
    $static = shift;
}

sub default_options {
    my $bh = handle();

    return (
        $bh->list,
        handle      => $bh,
        name        => $name,
        admin       => web_admin(),
        feed        => Beagle::Web->feed($bh),
        archives    => Beagle::Web->archives($bh),
        tags        => Beagle::Web->tags($bh),
        entry_types => entry_types(),
        prefix      => $prefix,
        static      => $static,
        css =>
          [ @{ $css{base} || [] }, @{ $css{ $bh->info->layout } || [] } ],
        js => [ @{ $js{base} || [] }, @{ $js{ $bh->info->layout } || [] } ],
        ( $req->env->{'BEAGLE_NAME'} || $req->header('X-Beagle-Name') )
        ? ()
        : ( names => $names ),
        current_user => current_user(),
    );
}

sub _fill_page_info {
    my $vars  = shift;
    my $field = shift;
    my $limit =
         $vars->{page_limit}
      || $ENV{BEAGLE_PAGE_LIMIT}
      || $bh->info->page_limit
      || 10;
    if ( $vars->{$field} ) {
        $vars->{page} = request()->param('p') || 1;
        my $page =
          Data::Page->new( scalar @{ $vars->{$field} }, $limit, $vars->{page} );
        $vars->{$field} = [ $page->splice( $vars->{$field} ) ];



( run in 1.552 second using v1.01-cache-2.11-cpan-b16cb0d3907 )