~ubuntu-branches/debian/squeeze/movabletype-opensource/squeeze

« back to all changes in this revision

Viewing changes to lib/MT/ArchiveType/Individual.pm

  • Committer: Bazaar Package Importer
  • Author(s): Dominic Hargreaves
  • Date: 2008-06-13 23:28:40 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20080613232840-ya4jfxv1jgl45a3d
Tags: 4.2~rc2-1
* New upstream release candidate
* Update Standards-Version (no changes)
* Ensure that schema upgrade message is always seen

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# Movable Type (r) Open Source (C) 2001-2008 Six Apart, Ltd.
 
2
# This program is distributed under the terms of the
 
3
# GNU General Public License, version 2.
 
4
#
 
5
# $Id$
 
6
 
 
7
package MT::ArchiveType::Individual;
 
8
 
 
9
use strict;
 
10
use base qw( MT::ArchiveType );
 
11
 
 
12
sub name {
 
13
    return 'Individual';
 
14
}
 
15
 
 
16
sub archive_label {
 
17
    return MT->translate("INDIVIDUAL_ADV");
 
18
}
 
19
 
 
20
sub template_params {
 
21
    return {
 
22
        entry_archive     => 1,
 
23
        archive_template  => 1,
 
24
        entry_template    => 1,
 
25
        feedback_template => 1,
 
26
        archive_class     => "entry-archive",
 
27
    };
 
28
}
 
29
 
 
30
sub archive_file {
 
31
    my $obj = shift;
 
32
    my ( $ctx, %param ) = @_;
 
33
    my $timestamp = $param{Timestamp};
 
34
    my $file_tmpl = $param{Template};
 
35
    my $blog      = $ctx->{__stash}{blog};
 
36
    my $entry     = $ctx->{__stash}{entry};
 
37
 
 
38
    my $file;
 
39
    Carp::confess("archive_file_for Individual archive needs an entry")
 
40
      unless $entry;
 
41
    if ($file_tmpl) {
 
42
        $ctx->{current_timestamp} = $entry->authored_on;
 
43
    }
 
44
    else {
 
45
        my $basename = $entry->basename();
 
46
        $basename ||= dirify( $entry->title() );
 
47
        $file = sprintf( "%04d/%02d/%s",
 
48
            unpack( 'A4A2', $entry->authored_on ), $basename );
 
49
    }
 
50
    $file;
 
51
}
 
52
 
 
53
sub archive_title {
 
54
    my $obj = shift;
 
55
    $_[1]->title;
 
56
}
 
57
 
 
58
sub archive_group_iter {
 
59
    my $obj = shift;
 
60
    my ( $ctx, $args ) = @_;
 
61
 
 
62
    my $order =
 
63
      ( $args->{sort_order} || '' ) eq 'ascend' ? 'ascend' : 'descend';
 
64
 
 
65
    my $blog_id = $ctx->stash('blog')->id;
 
66
    require MT::Entry;
 
67
    my $iter = MT::Entry->load_iter(
 
68
        {
 
69
            blog_id => $blog_id,
 
70
            status  => MT::Entry::RELEASE()
 
71
        },
 
72
        {
 
73
            'sort'    => 'authored_on',
 
74
            direction => $order,
 
75
            $args->{lastn} ? ( limit => $args->{lastn} ) : ()
 
76
        }
 
77
    );
 
78
    return sub {
 
79
        while ( my $entry = $iter->() ) {
 
80
            return ( 1, entries => [$entry], entry => $entry );
 
81
        }
 
82
        undef;
 
83
      }
 
84
}
 
85
 
 
86
sub dynamic_template {
 
87
    'entry/<$MTEntryID$>';
 
88
}
 
89
 
 
90
sub default_archive_templates {
 
91
    return [
 
92
        {
 
93
            label    => MT->translate('yyyy/mm/entry-basename.html'),
 
94
            template => '%y/%m/%-f',
 
95
            default  => 1
 
96
        },
 
97
        {
 
98
            label    => MT->translate('yyyy/mm/entry_basename.html'),
 
99
            template => '%y/%m/%f'
 
100
        },
 
101
        {
 
102
            label => MT->translate('yyyy/mm/entry-basename/index.html'),
 
103
            template => '%y/%m/%-b/%i'
 
104
        },
 
105
        {
 
106
            label => MT->translate('yyyy/mm/entry_basename/index.html'),
 
107
            template => '%y/%m/%b/%i'
 
108
        },
 
109
        {
 
110
            label    => MT->translate('yyyy/mm/dd/entry-basename.html'),
 
111
            template => '%y/%m/%d/%-f'
 
112
        },
 
113
        {
 
114
            label    => MT->translate('yyyy/mm/dd/entry_basename.html'),
 
115
            template => '%y/%m/%d/%f'
 
116
        },
 
117
        {
 
118
            label =>
 
119
              MT->translate('yyyy/mm/dd/entry-basename/index.html'),
 
120
            template => '%y/%m/%d/%-b/%i'
 
121
        },
 
122
        {
 
123
            label =>
 
124
              MT->translate('yyyy/mm/dd/entry_basename/index.html'),
 
125
            template => '%y/%m/%d/%b/%i'
 
126
        },
 
127
        {
 
128
            label => MT->translate(
 
129
                'category/sub-category/entry-basename.html'),
 
130
            template => '%-c/%-f'
 
131
        },
 
132
        {
 
133
            label => MT->translate(
 
134
                'category/sub-category/entry-basename/index.html'),
 
135
            template => '%-c/%-b/%i'
 
136
        },
 
137
        {
 
138
            label => MT->translate(
 
139
                'category/sub_category/entry_basename.html'),
 
140
            template => '%c/%f'
 
141
        },
 
142
        {
 
143
            label => MT->translate(
 
144
                'category/sub_category/entry_basename/index.html'),
 
145
            template => '%c/%b/%i'
 
146
        },
 
147
    ];
 
148
}
 
149
 
 
150
1;