/[Arh]/lib/Arh/View/UnitPictures.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Annotation of /lib/Arh/View/UnitPictures.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 80 - (hide annotations)
Sat Apr 19 23:07:08 2008 UTC (16 years ago) by dpavlin
File size: 4084 byte(s)
- make each unit unique URL /unit/id so we can upload to right place
- some design
1 dpavlin 28 package Arh::View::UnitPictures;
2    
3     use strict;
4     use warnings;
5    
6     use base 'Jifty::View::Declare::CRUD';
7     use Jifty::View::Declare -base;
8    
9     use Data::Dump qw/dump/;
10    
11 dpavlin 50 sub object_type { 'Picture' };
12 dpavlin 28
13     private template search_region => sub {};
14     private template 'no_items_found' => sub {};
15    
16     sub display_columns {
17     my $self = shift;
18     return ('picture');
19     }
20    
21     sub edit_columns {
22     my $self = shift;
23     return ('picture');
24     }
25    
26     template 'list' => sub {
27     my $self = shift;
28    
29     my ( $page, $unit ) = get(qw(page unit));
30     my $item_path = $self->fragment_for("view");
31     my $fragment_for_new_picture = $self->fragment_for('new_picture');
32     my $collection = $self->_current_collection();
33     # XXX show just pictures from current unit
34 dpavlin 67 $collection->limit( column => 'unit', value => $unit );
35 dpavlin 53
36     warn "## list page: $page unit: $unit fragment_for_new_picture: $fragment_for_new_picture item_path: $item_path";
37    
38 dpavlin 28 div {
39     { class is 'pictures' };
40    
41     show('./search_region');
42     show( './paging_top', $collection, $page );
43     show( './list_items', $collection, $item_path );
44     show( './paging_bottom', $collection, $page );
45    
46     render_region(
47     name => 'new_picture',
48     path => $fragment_for_new_picture,
49     defaults => {
50     object_type => $self->object_type,
51     unit => $unit,
52     },
53     );
54     }
55    
56     };
57    
58     template 'view' => sub :CRUDView {
59     my $self = shift;
60     my ( $id, $unit ) = get(qw(id unit));
61     my $record = $self->_get_record( $id );
62    
63     my $delete = $record->as_delete_action(
64     moniker => "delete-" . Jifty->web->serial,
65     );
66    
67 dpavlin 53 warn "## view id: $id unit $unit";
68 dpavlin 28
69 dpavlin 73 form {
70 dpavlin 64 { class is 'single-picture' };
71 dpavlin 53
72 dpavlin 28 if ( $record->current_user_can('delete') && $self->current_user->editing ) {
73 dpavlin 29 outs_raw( $delete->button(
74 dpavlin 28 label => _("Delete picture"),
75     class => "float-crud-button button-delete",
76     onclick => {
77     submit => $delete,
78     confirm => _('Really delete?'),
79     replace_with => '/__jifty/empty',
80     refresh_self => 1,
81     args => { id => $id },
82     },
83 dpavlin 29 ));
84 dpavlin 28 };
85 dpavlin 64
86     img { attr { src => "/static/pics/thumb/" . $record->thumbnail } };
87     span { $record->type->name };
88     tt { $record->filename };
89    
90 dpavlin 28 };
91    
92     };
93    
94     template 'new_picture' => sub {
95     my $self = shift;
96     return unless $self->current_user->editing;
97    
98     my ( $id, $unit ) = get(qw(id unit));
99 dpavlin 50 warn "## new_picture id: $id unit: $unit";
100 dpavlin 44
101 dpavlin 50 my $record_class = $self->record_class;
102     warn "## new_picture record_class: $record_class\n";
103 dpavlin 53 # my $create = $record_class->as_create_action(
104     my $create = new_action(
105     class => 'UploadPicture',
106 dpavlin 28 moniker => "create-" . Jifty->web->serial,
107     );
108    
109     my $attach_to =
110 dpavlin 61 Jifty->web->current_region->parent ?
111     Jifty->web->current_region->parent->get_element( 'div.list' ) :
112     Jifty->web->current_region;
113 dpavlin 28
114     warn "## attach_to = $attach_to";
115    
116 dpavlin 80 form {
117     form_next_page( url => '/unit/' . $unit );
118 dpavlin 44 render_action( $create => [ 'campaign', 'content', 'type' ] );
119 dpavlin 53 outs_raw( $create->hidden( unit => $unit ) );
120 dpavlin 64 form_submit( label => _('Add picture') );
121     =for firefox-only
122 dpavlin 28 hyperlink(
123     label => _("Add picture"),
124     class => "float-crud-button button-add",
125     onclick => [
126     {
127     submit => $create,
128     },
129     { refresh_self => 1 },
130     {
131     element => $attach_to,
132     append => $self->fragment_for('view'),
133     args => {
134     object_type => $self->object_type,
135     id => { result_of => $create, name => 'id' },
136     unit => $unit,
137     },
138     },
139     ],
140     as_button => 1,
141     );
142 dpavlin 64 =cut
143 dpavlin 28 };
144     };
145    
146     template 'fragment' => sub {
147     my ( $self, $unit ) = @_;
148    
149 dpavlin 30 #warn "## unit = ", dump( $unit );
150 dpavlin 28
151 dpavlin 50 my $unitpictures = Arh::Model::PictureCollection->new;
152 dpavlin 28 $unitpictures->limit( column => 'unit', value => $unit->id );
153     warn "## ", $unitpictures->count, " pictures for unit ",$unit->id;
154    
155     div {
156     { class is 'pictures-by-unit' };
157    
158 dpavlin 33 if ( $unitpictures->count ) {
159     em { _('Pictures for unit'), ' ', $unit->name };
160 dpavlin 50
161 dpavlin 33 } else {
162     em { _('No pictures for unit'), ' ', $unit->name };
163 dpavlin 36 }
164 dpavlin 33
165 dpavlin 54 set( search_collection => $unitpictures );
166    
167     render_region(
168     name => 'unit-pictures',
169     path => '/unitpictures/list',
170     defaults => {
171     page => 1,
172     unit => $unit->id,
173     }
174     );
175    
176 dpavlin 28 }
177     };
178    
179     1;

  ViewVC Help
Powered by ViewVC 1.1.26