Changeset 2119

Show
Ignore:
Timestamp:
04/26/08 16:19:19 (22 months ago)
Author:
bchoate
Message:

Support for category, date-based archive template previews. BugId:79519

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • branches/release-36/lib/MT/CMS/Template.pm

    r2115 r2119  
    269269                $param->{object_loop} = $param->{template_map_loop} = $maps 
    270270                  if @$maps; 
    271                 my %archive_types = map { $_->{archive_label} => () } @$maps; 
     271                my %archive_types = map { $_->{archive_label} => 1 } @$maps; 
    272272                $param->{enabled_archive_types} = join(", ", sort keys %archive_types); 
    273273            } 
     
    519519 
    520520    $param->{can_preview} = 1 
    521         if (!$param->{is_special}) && (!$obj || ($obj && $obj->outfile !~ m/\.(css|xml|rss|js)$/)); 
     521        if (!$param->{is_special}) && (!$obj || ($obj && ($obj->outfile || '') !~ m/\.(css|xml|rss|js)$/)); 
    522522 
    523523    1; 
     
    781781        my $ctx = $preview_tmpl->context; 
    782782        my $entry_type = $type eq 'individual' ? 'entry' : 'page'; 
    783         my $entry_class = $app->model($entry_type); 
    784         my $obj = $entry_class->load({ 
    785             blog_id => $blog_id, 
    786             status => MT::Entry::RELEASE() 
    787         }, { 
    788             limit => 1, 
    789             direction => 'descend', 
    790             'sort' => 'authored_on' 
    791         }); 
    792         unless ( $obj ) { 
    793             # create a dummy object 
    794             $obj = $entry_class->new; 
    795             $obj->blog_id($blog_id); 
    796             $obj->id(-1); 
    797             $obj->author_id( $app->user->id ); 
    798             $obj->authored_on( $blog->current_timestamp ); 
    799             $obj->status( MT::Entry::RELEASE() ); 
    800             $obj->basename( $preview_basename ); 
    801             $obj->title($app->translate("Lorem ipsum")); 
    802             my $preview_text = $app->translate('LOREM_IPSUM_TEXT'); 
    803             if ($preview_text eq 'LOREM_IPSUM_TEXT') { 
    804                 $preview_text = q{Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut diam quam, accumsan eu, aliquam vel, ultrices a, augue. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Fusce hendrerit, lacus eget bibendum sollicitudin, mi tellus interdum neque, sit amet pretium tortor tellus id erat. Duis placerat justo ac erat. Duis posuere, risus eu elementum viverra, nisl lacus sagittis lorem, ac fermentum neque pede vitae arcu. Phasellus arcu elit, placerat eu, luctus posuere, tristique non, augue. In hac habitasse platea dictumst. Nunc non dolor et ipsum mattis malesuada. Praesent porta orci eu ligula. Ut dui augue, dapibus vitae, sodales in, lobortis non, felis. Aliquam feugiat mollis ipsum.}; 
    805             } 
    806             my $preview_more = $app->translate('LORE_IPSUM_TEXT_MORE'); 
    807             if ($preview_text eq 'LOREM_IPSUM_TEXT_MORE') { 
    808                 $preview_more = q{Integer nunc nulla, vulputate sit amet, varius ac, faucibus ac, lectus. Nulla semper bibendum justo. In hac habitasse platea dictumst. Aliquam auctor pretium ante. Etiam porta consectetuer erat. Phasellus consequat, nisi eu suscipit elementum, metus leo malesuada pede, vel scelerisque lorem ligula in augue. Sed aliquet. Donec malesuada metus sit amet sapien. Integer non libero. Morbi egestas, mauris posuere consequat sodales, augue lectus suscipit velit, eu commodo lacus dolor congue justo. Suspendisse justo. Curabitur sagittis, lorem tincidunt elementum rhoncus, odio dolor mattis odio, quis ultrices ligula ipsum ac lacus. Nam et sapien ac lacus ultrices sollicitudin. Vestibulum ut dolor nec dui malesuada imperdiet. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; 
    809  
    810                 Quisque pharetra libero quis nibh. Cras lacus orci, commodo et, fringilla non, lobortis non, mauris. Curabitur dui sapien, tristique imperdiet, ultrices vitae, gravida varius, ante. Maecenas ac arcu nec nibh euismod feugiat. Pellentesque sed orci eget enim egestas faucibus. Aenean laoreet leo ornare velit. Nunc fermentum dolor eget massa. Fusce fringilla, tellus in pellentesque sodales, urna mi hendrerit leo, vel adipiscing ligula odio sit amet risus. Cras rhoncus, mi et posuere gravida, purus sem porttitor nisl, auctor laoreet nisl turpis quis ligula. Aliquam in nisi tristique augue egestas lacinia. Aenean ante magna, facilisis a, faucibus at, aliquam laoreet, dui. Ut tellus leo, tristique a, pellentesque ac, bibendum non, ipsum. Curabitur eu neque pretium arcu accumsan tincidunt. Ut ipsum. Quisque congue accumsan elit. Nulla ligula felis, aliquam ultricies, vestibulum vestibulum, semper vel, sapien. Aenean sodales ligula venenatis tellus. Vestibulum leo. Morbi viverra convallis eros. 
    811  
    812                 Phasellus rhoncus pulvinar enim. Ut gravida ante nec lectus. Nam luctus gravida odio. Morbi vitae lorem vitae justo fermentum porttitor. Suspendisse vestibulum magna at purus. Cras nec sem. Duis id felis. Mauris hendrerit dapibus est. Donec semper. Praesent vehicula interdum velit. Ut sed tellus et diam venenatis pulvinar.}; 
    813             } 
    814             $obj->text($preview_text); 
    815             $obj->text_more($preview_more); 
    816             $obj->keywords(MT->translate("sample, entry, preview")); 
    817             $obj->tags(qw( lorem ipsum sample preview )); 
    818         } 
     783        my ($obj) = create_preview_content($app, $blog, $entry_type, 1); 
     784        $obj->basename( $preview_basename ); 
    819785        $ctx->stash('entry', $obj); 
    820786        $ctx->{current_archive_type} = $type eq 'individual' ? 'Individual' : 'Page'; 
     
    827793    } elsif ($type eq 'archive') { 
    828794        # some variety of archive template 
     795        my $ctx = $preview_tmpl->context; 
     796        require MT::TemplateMap; 
     797        my $map = MT::TemplateMap->load( { template_id => $id, is_preferred => 1 }); 
     798        if (! $map) { 
     799            return $app->error("Cannot preview without a template map!"); 
     800        } 
     801        $ctx->{current_archive_type} = $map->archive_type; 
     802        my $archiver = MT->publisher->archiver( $map->archive_type ); 
     803        my @entries = create_preview_content($app, $blog, $archiver->entry_class, 10); 
     804        if ($archiver->date_based) { 
     805            $ctx->{current_timestamp} = $entries[0]->authored_on; 
     806            $ctx->{current_timestamp_end} = $entries[$#entries]->authored_on; 
     807        } 
     808        if ($archiver->author_based) { 
     809            $ctx->stash('author', $app->user); 
     810        } 
     811        my $cat; 
     812        if ($archiver->category_based) { 
     813            $cat = new MT::Category; 
     814            $cat->label($app->translate("Preview")); 
     815            $cat->basename("preview"); 
     816            $cat->parent(0); 
     817            $ctx->stash('archive_category', $cat); 
     818        } 
     819        $ctx->stash('entries', \@entries); 
     820 
     821        my $file = MT->publisher->archive_file_for( $entries[0], $blog, $map->archive_type, $cat, $map, $ctx->{current_timestamp}, $app->user); 
     822        $archive_file = File::Spec->catfile( $blog_path, $file ); 
     823        $archive_url = MT::Util::caturl( $blog_url, $file ); 
    829824    } elsif ($type eq 'index') { 
    830825    } else { 
     
    946941    $param{object_type}  = $type; 
    947942    return $app->load_tmpl( 'preview_template_strip.tmpl', \%param ); 
     943} 
     944 
     945sub create_preview_content { 
     946    my ($app, $blog, $type, $number) = @_; 
     947 
     948    my $blog_id = $blog->id; 
     949    my $entry_class = $app->model($type); 
     950    my @obj = $entry_class->load({ 
     951        blog_id => $blog_id, 
     952        status => MT::Entry::RELEASE() 
     953    }, { 
     954        limit => $number || 1, 
     955        direction => 'descend', 
     956        'sort' => 'authored_on' 
     957    }); 
     958    unless ( @obj ) { 
     959        # create a dummy object 
     960        my $obj = $entry_class->new; 
     961        $obj->blog_id($blog_id); 
     962        $obj->id(-1); 
     963        $obj->author_id( $app->user->id ); 
     964        $obj->authored_on( $blog->current_timestamp ); 
     965        $obj->status( MT::Entry::RELEASE() ); 
     966        $obj->title($app->translate("Lorem ipsum")); 
     967        my $preview_text = $app->translate('LOREM_IPSUM_TEXT'); 
     968        if ($preview_text eq 'LOREM_IPSUM_TEXT') { 
     969            $preview_text = q{Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut diam quam, accumsan eu, aliquam vel, ultrices a, augue. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Fusce hendrerit, lacus eget bibendum sollicitudin, mi tellus interdum neque, sit amet pretium tortor tellus id erat. Duis placerat justo ac erat. Duis posuere, risus eu elementum viverra, nisl lacus sagittis lorem, ac fermentum neque pede vitae arcu. Phasellus arcu elit, placerat eu, luctus posuere, tristique non, augue. In hac habitasse platea dictumst. Nunc non dolor et ipsum mattis malesuada. Praesent porta orci eu ligula. Ut dui augue, dapibus vitae, sodales in, lobortis non, felis. Aliquam feugiat mollis ipsum.}; 
     970        } 
     971        my $preview_more = $app->translate('LORE_IPSUM_TEXT_MORE'); 
     972        if ($preview_text eq 'LOREM_IPSUM_TEXT_MORE') { 
     973            $preview_more = q{Integer nunc nulla, vulputate sit amet, varius ac, faucibus ac, lectus. Nulla semper bibendum justo. In hac habitasse platea dictumst. Aliquam auctor pretium ante. Etiam porta consectetuer erat. Phasellus consequat, nisi eu suscipit elementum, metus leo malesuada pede, vel scelerisque lorem ligula in augue. Sed aliquet. Donec malesuada metus sit amet sapien. Integer non libero. Morbi egestas, mauris posuere consequat sodales, augue lectus suscipit velit, eu commodo lacus dolor congue justo. Suspendisse justo. Curabitur sagittis, lorem tincidunt elementum rhoncus, odio dolor mattis odio, quis ultrices ligula ipsum ac lacus. Nam et sapien ac lacus ultrices sollicitudin. Vestibulum ut dolor nec dui malesuada imperdiet. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; 
     974 
     975            Quisque pharetra libero quis nibh. Cras lacus orci, commodo et, fringilla non, lobortis non, mauris. Curabitur dui sapien, tristique imperdiet, ultrices vitae, gravida varius, ante. Maecenas ac arcu nec nibh euismod feugiat. Pellentesque sed orci eget enim egestas faucibus. Aenean laoreet leo ornare velit. Nunc fermentum dolor eget massa. Fusce fringilla, tellus in pellentesque sodales, urna mi hendrerit leo, vel adipiscing ligula odio sit amet risus. Cras rhoncus, mi et posuere gravida, purus sem porttitor nisl, auctor laoreet nisl turpis quis ligula. Aliquam in nisi tristique augue egestas lacinia. Aenean ante magna, facilisis a, faucibus at, aliquam laoreet, dui. Ut tellus leo, tristique a, pellentesque ac, bibendum non, ipsum. Curabitur eu neque pretium arcu accumsan tincidunt. Ut ipsum. Quisque congue accumsan elit. Nulla ligula felis, aliquam ultricies, vestibulum vestibulum, semper vel, sapien. Aenean sodales ligula venenatis tellus. Vestibulum leo. Morbi viverra convallis eros. 
     976 
     977            Phasellus rhoncus pulvinar enim. Ut gravida ante nec lectus. Nam luctus gravida odio. Morbi vitae lorem vitae justo fermentum porttitor. Suspendisse vestibulum magna at purus. Cras nec sem. Duis id felis. Mauris hendrerit dapibus est. Donec semper. Praesent vehicula interdum velit. Ut sed tellus et diam venenatis pulvinar.}; 
     978        } 
     979        $obj->text($preview_text); 
     980        $obj->text_more($preview_more); 
     981        $obj->keywords(MT->translate("sample, entry, preview")); 
     982        $obj->tags(qw( lorem ipsum sample preview )); 
     983        @obj = ($obj); 
     984    } 
     985    return @obj; 
    948986} 
    949987