Changeset 1392
- Timestamp:
- 02/21/08 19:58:16 (21 months ago)
- Location:
- branches/release-30/lib/MT
- Files:
-
- 3 modified
-
App/CMS.pm (modified) (1 diff)
-
CMS/Blog.pm (modified) (1 diff)
-
CMS/Template.pm (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/release-30/lib/MT/App/CMS.pm
r1389 r1392 2997 2997 } 2998 2998 2999 sub _generate_map_table {3000 my $app = shift;3001 my ( $blog_id, $template_id ) = @_;3002 3003 require MT::Template;3004 require MT::Blog;3005 my $blog = MT::Blog->load($blog_id);3006 my $template = MT::Template->load($template_id);3007 my $tmpl = $app->load_tmpl('include/archive_maps.tmpl');3008 my $maps = $app->_populate_archive_loop( $blog, $template );3009 $tmpl->param( { object_type => 'templatemap' } );3010 $tmpl->param( { object_loop => $maps } ) if @$maps;3011 my $html = $tmpl->output();3012 3013 if ( $html =~ m/<__trans / ) {3014 $html = $app->translate_templatized($html);3015 }3016 $html;3017 }3018 3019 2999 # rebuild_set is a hash whose keys are entry IDs 3020 3000 # the value can be the entry itself, for efficiency, -
branches/release-30/lib/MT/CMS/Blog.pm
r1387 r1392 1108 1108 } 1109 1109 1110 sub _populate_archive_loop {1111 my $app = shift;1112 my ( $blog, $obj ) = @_;1113 1114 my $index = $app->config('IndexBasename');1115 my $ext = $blog->file_extension || '';1116 $ext = '.' . $ext if $ext ne '';1117 1118 require MT::TemplateMap;1119 my @tmpl_maps = MT::TemplateMap->load( { template_id => $obj->id } );1120 my @maps;1121 my %types;1122 foreach my $map_obj (@tmpl_maps) {1123 my $map = {};1124 $map->{map_id} = $map_obj->id;1125 $map->{map_is_preferred} = $map_obj->is_preferred;1126 my $at = $map->{archive_type} = $map_obj->archive_type;1127 $types{$at}++;1128 $map->{ 'archive_type_preferred_' . $blog->archive_type_preferred } = 11129 if $blog->archive_type_preferred;1130 $map->{file_template} = $map_obj->file_template1131 if $map_obj->file_template;1132 1133 my $archiver = $app->publisher->archiver($at);1134 next unless $archiver;1135 $map->{archive_label} = $archiver->archive_label;1136 my $tmpls = $archiver->default_archive_templates;1137 my $tmpl_loop = [];1138 foreach (@$tmpls) {1139 my $name = $_->{label};1140 $name =~ s/\.html$/$ext/;1141 $name =~ s/index$ext$/$index$ext/;1142 push @$tmpl_loop,1143 {1144 name => $name,1145 value => $_->{template},1146 default => ( $_->{default} || 0 )1147 };1148 }1149 1150 my $custom = 1;1151 1152 foreach (@$tmpl_loop) {1153 if ( ( !$map->{file_template} && $_->{default} )1154 || ( $map->{file_template} eq $_->{value} ) )1155 {1156 $_->{selected} = 1;1157 $custom = 0;1158 $map->{file_template} = $_->{value}1159 if !$map->{file_template};1160 }1161 }1162 if ($custom) {1163 unshift @$tmpl_loop,1164 {1165 name => $map->{file_template},1166 value => $map->{file_template},1167 selected => 1,1168 };1169 }1170 1171 $map->{archive_tmpl_loop} = $tmpl_loop;1172 if (1173 1 < MT::TemplateMap->count(1174 { archive_type => $at, blog_id => $obj->blog_id }1175 )1176 )1177 {1178 $map->{has_multiple_archives} = 1;1179 }1180 1181 push @maps, $map;1182 }1183 @maps = sort { MT::App::CMS::archive_type_sorter( $a, $b ) } @maps;1184 return \@maps;1185 }1186 1187 1110 sub can_view { 1188 1111 my ( $eh, $app, $id ) = @_; -
branches/release-30/lib/MT/CMS/Template.pm
r1385 r1392 226 226 227 227 # Populate template maps for this template 228 require MT::CMS::Blog; 229 my $maps = MT::CMS::Blog::_populate_archive_loop( $app, $blog, $obj ); 228 my $maps = _populate_archive_loop( $app, $blog, $obj ); 230 229 $param->{object_loop} = $param->{template_map_loop} = $maps 231 230 if @$maps; … … 614 613 } 615 614 615 sub _generate_map_table { 616 my $app = shift; 617 my ( $blog_id, $template_id ) = @_; 618 619 require MT::Template; 620 require MT::Blog; 621 my $blog = MT::Blog->load($blog_id); 622 my $template = MT::Template->load($template_id); 623 my $tmpl = $app->load_tmpl('include/archive_maps.tmpl'); 624 my $maps = _populate_archive_loop( $app, $blog, $template ); 625 $tmpl->param( { object_type => 'templatemap' } ); 626 $tmpl->param( { object_loop => $maps } ) if @$maps; 627 my $html = $tmpl->output(); 628 629 if ( $html =~ m/<__trans / ) { 630 $html = $app->translate_templatized($html); 631 } 632 $html; 633 } 634 635 sub _populate_archive_loop { 636 my $app = shift; 637 my ( $blog, $obj ) = @_; 638 639 my $index = $app->config('IndexBasename'); 640 my $ext = $blog->file_extension || ''; 641 $ext = '.' . $ext if $ext ne ''; 642 643 require MT::TemplateMap; 644 my @tmpl_maps = MT::TemplateMap->load( { template_id => $obj->id } ); 645 my @maps; 646 my %types; 647 foreach my $map_obj (@tmpl_maps) { 648 my $map = {}; 649 $map->{map_id} = $map_obj->id; 650 $map->{map_is_preferred} = $map_obj->is_preferred; 651 my $at = $map->{archive_type} = $map_obj->archive_type; 652 $types{$at}++; 653 $map->{ 'archive_type_preferred_' . $blog->archive_type_preferred } = 1 654 if $blog->archive_type_preferred; 655 $map->{file_template} = $map_obj->file_template 656 if $map_obj->file_template; 657 658 my $archiver = $app->publisher->archiver($at); 659 next unless $archiver; 660 $map->{archive_label} = $archiver->archive_label; 661 my $tmpls = $archiver->default_archive_templates; 662 my $tmpl_loop = []; 663 foreach (@$tmpls) { 664 my $name = $_->{label}; 665 $name =~ s/\.html$/$ext/; 666 $name =~ s/index$ext$/$index$ext/; 667 push @$tmpl_loop, 668 { 669 name => $name, 670 value => $_->{template}, 671 default => ( $_->{default} || 0 ) 672 }; 673 } 674 675 my $custom = 1; 676 677 foreach (@$tmpl_loop) { 678 if ( ( !$map->{file_template} && $_->{default} ) 679 || ( $map->{file_template} eq $_->{value} ) ) 680 { 681 $_->{selected} = 1; 682 $custom = 0; 683 $map->{file_template} = $_->{value} 684 if !$map->{file_template}; 685 } 686 } 687 if ($custom) { 688 unshift @$tmpl_loop, 689 { 690 name => $map->{file_template}, 691 value => $map->{file_template}, 692 selected => 1, 693 }; 694 } 695 696 $map->{archive_tmpl_loop} = $tmpl_loop; 697 if ( 698 1 < MT::TemplateMap->count( 699 { archive_type => $at, blog_id => $obj->blog_id } 700 ) 701 ) 702 { 703 $map->{has_multiple_archives} = 1; 704 } 705 706 push @maps, $map; 707 } 708 @maps = sort { MT::App::CMS::archive_type_sorter( $a, $b ) } @maps; 709 return \@maps; 710 } 711 616 712 sub delete_map { 617 713 my $app = shift; … … 625 721 MT::TemplateMap->remove( { id => $id } ); 626 722 my $html = 627 $app->_generate_map_table($q->param('blog_id'),723 _generate_map_table( $app, $q->param('blog_id'), 628 724 $q->param('template_id') ); 629 725 $app->{no_print_body} = 1; … … 658 754 $app->translate( "Saving map failed: [_1]", $map->errstr ) ); 659 755 my $html = 660 $app->_generate_map_table($blog_id, scalar $q->param('template_id') );756 _generate_map_table( $app, $blog_id, scalar $q->param('template_id') ); 661 757 $app->rebuild( 662 758 BlogID => $blog_id, … … 682 778 MT::TemplateMap->remove( { id => $id } ); 683 779 my $html = 684 $app->_generate_map_table($q->param('blog_id'),780 _generate_map_table( $app, $q->param('blog_id'), 685 781 $q->param('template_id') ); 686 782 $app->{no_print_body} = 1; … … 715 811 $app->translate( "Saving map failed: [_1]", $map->errstr ) ); 716 812 my $html = 717 $app->_generate_map_table($blog_id, scalar $q->param('template_id') );813 _generate_map_table( $app, $blog_id, scalar $q->param('template_id') ); 718 814 $app->rebuild( 719 815 BlogID => $blog_id,
