/[Arh]/lib/Arh/View/Units.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/Units.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 70 - (hide annotations)
Wed Apr 9 12:28:16 2008 UTC (15 years, 11 months ago) by dpavlin
File size: 5662 byte(s)
added pager on which you can just to any page
1 dpavlin 15 package Arh::View::Units;
2    
3     use strict;
4     use warnings;
5    
6     use base 'Jifty::View::Declare::CRUD';
7     use Jifty::View::Declare -base;
8    
9 dpavlin 58 use Data::Dump qw/dump/;
10    
11 dpavlin 15 sub object_type { 'Unit' };
12    
13 dpavlin 67 sub per_page {
14     my $per_page = get('per_page') || 5;
15     warn "## Units per_page = $per_page\n";
16     return $per_page;
17     };
18 dpavlin 66
19 dpavlin 23 sub display_columns {
20     my $self = shift;
21 dpavlin 39 return ( qw/
22     unit_id
23     name
24     subcategory
25     category
26     site
27     gps
28     placement
29     context
30     discovery
31     function
32     reusage
33     ownership
34     presevation_place
35     inventory_nr
36     dimensions
37     condition
38     toplogy
39     technique
40     description
41 dpavlin 58 construction
42 dpavlin 39 iconography
43     decoration
44     motifs
45     inscription
46     language
47     font
48     author
49     chronology
50     chronostyle
51     explored
52     conservations
53     restorations
54     legal
55     links
56     sources
57     bibliography
58     copyright
59 dpavlin 63 material
60 dpavlin 39 / );
61 dpavlin 23 }
62    
63 dpavlin 15 #private template search_region => sub {};
64    
65 dpavlin 67 =for later
66    
67     template 'index.html' => page {
68     my $self = shift;
69     title is $self->object_type;
70     form {
71     render_region(
72     name => $self->object_type.'-list',
73     path => $self->fragment_base_path.'/list'
74     );
75     };
76     };
77    
78     template 'list' => sub {
79     my $self = shift;
80    
81     my ( $page ) = get('page');
82    
83     my $item_path = get('item_path') || $self->fragment_for("view");
84     my $collection = $self->_current_collection();
85    
86     if ( $self->per_page == 1 ) {
87     warn "## bulk import get to last page\n";
88     $page = $collection->pager->last_page;
89     }
90    
91     div {
92     {class is 'crud-'.$self->object_type};
93    
94     show('./search_region');
95     show( './paging_top', $collection, $page );
96     show( './paging_bottom', $collection, $page );
97     show( './list_items', $collection, $item_path );
98     show( './paging_bottom', $collection, $page );
99    
100     show( './new_item_region');
101     }
102    
103     };
104    
105     =cut
106    
107 dpavlin 66 private template 'paging_top' => sub {
108     my $self = shift;
109     my $collection = shift;
110     my $page = shift || 1;
111    
112     if ( $collection->pager->last_page > 1 ) {
113     span {
114     { class is 'page-count' };
115     outs(
116     _( "Found %1 units, showing %2-%3 on page %4/%5",
117     $collection->pager->total_entries,
118     $collection->pager->first,
119     $collection->pager->last,
120     $page,
121     $collection->pager->last_page
122     )
123     );
124 dpavlin 67 }
125 dpavlin 66 }
126 dpavlin 69 show( './paging_bottom', $collection, $page );
127 dpavlin 66 };
128    
129 dpavlin 70 private template paging_bottom => sub {
130     my $self = shift;
131     my $collection = shift;
132     my $page = shift;
133     div {
134     { class is 'paging' };
135     if ( $collection->pager->previous_page ) {
136     span {
137     hyperlink(
138     label => _("Previous Page"),
139     onclick => {
140     args => { page => $collection->pager->previous_page }
141     }
142     );
143     }
144     }
145 dpavlin 66
146 dpavlin 70 foreach my $p ( $collection->pager->first_page .. $collection->pager->last_page ) {
147     if ( $p == $page ) {
148     b { $p }
149     } else {
150     span {
151     hyperlink(
152     label => $p,
153     onclick =>
154     { args => { page => $p } }
155     );
156     }
157     }
158     }
159    
160    
161     if ( $collection->pager->next_page ) {
162     span {
163     hyperlink(
164     label => _("Next Page"),
165     onclick =>
166     { args => { page => $collection->pager->next_page } }
167     );
168     }
169     }
170     };
171     };
172    
173    
174 dpavlin 15 template 'view' => sub :CRUDView {
175     my $self = shift;
176 dpavlin 23 my $id = get('id');
177     my $record = $self->_get_record( $id );
178 dpavlin 15
179     my $update = $record->as_update_action(
180     moniker => "update-" . Jifty->web->serial,
181     );
182    
183 dpavlin 23 my $delete = $record->as_delete_action(
184     moniker => "delete-" . Jifty->web->serial,
185     );
186     my $editing = $record->current_user_can('write');
187     warn "## current_user_can('write') = $editing\n";
188     $editing = 0 unless $self->current_user->editing;
189     warn "## editing ",$editing ? 'ok' : 'DENIED';
190 dpavlin 15
191 dpavlin 28 div { { class is 'unit' }
192 dpavlin 23
193 dpavlin 67 if ( $editing ) {
194 dpavlin 23 outs_raw($delete->button(
195 dpavlin 28 label => _('Delete unit'),
196     class => 'float-crud-button button-delete',
197 dpavlin 23 onclick => {
198     submit => $delete,
199     confirm => _('Really delete?'),
200     # region => Jifty->web->current_region,
201     replace_with => '/__jifty/empty',
202     refresh_self => 1,
203     args => { id => $id },
204     },
205     ));
206     };
207    
208     foreach my $f ( $self->display_columns ) {
209 dpavlin 15 if ( $f eq 'material' ) {
210     set( search_collection => $record->material );
211     render_region(
212     name => 'unit-materials',
213     path => '/materials/list',
214     defaults => {
215     page => 1,
216     unit => $record->id,
217     }
218     );
219     } else {
220     my %opt;
221 dpavlin 58 if ( ! $editing ) {
222     $opt{render_mode} = 'read';
223     # skip fields without values
224     $opt{render_as} = 'hidden' if ! defined( $update->record->$f );
225     }
226 dpavlin 15 render_param( $update => $f, %opt );
227     }
228     };
229 dpavlin 23 if ( $editing ) {
230 dpavlin 20 div {
231     { class is 'submit_button' };
232     hyperlink(
233     label => _('Update'),
234     onclick => {
235     submit => $update,
236     refresh_self => 1,
237     },
238 dpavlin 67 );
239     }
240 dpavlin 20 }
241 dpavlin 28
242     }; # div class unit
243    
244     show('/unitpictures/fragment', $record);
245    
246 dpavlin 15 hr {};
247     };
248    
249 dpavlin 23 template 'new_item' => sub {
250     my $self = shift;
251     return unless $self->current_user->editing;
252    
253 dpavlin 66 my ( $object_type, $id ) = ( $self->object_type, get('id') );
254     my $record_class = $self->record_class;
255     my $create = $record_class->as_create_action;
256 dpavlin 23
257     h1 { _("New unit") };
258    
259 dpavlin 67 div {
260 dpavlin 23
261     foreach my $f ( $self->display_columns ) {
262 dpavlin 39 # last if $f eq 'material' && ! $id;
263 dpavlin 63 render_param( $create => $f ) unless $f eq 'material';
264 dpavlin 42 #warn "## $f";
265 dpavlin 23 }
266    
267     div {
268     { class is 'submit_button' };
269     hyperlink(
270     label => _("Add"),
271     onclick => [
272     {
273     submit => $create,
274 dpavlin 39 # args => {
275     # },
276 dpavlin 23 },
277     { refresh_self => 1 },
278     {
279     element => Jifty->web->current_region->parent->get_element( 'div.list' ),
280     append => $self->fragment_for('view'),
281     args => {
282     object_type => $object_type,
283     id => { result_of => $create, name => 'id' },
284     unit => get('unit'),
285     },
286     },
287     ],
288     as_button => 1,
289     );
290 dpavlin 67 };
291 dpavlin 23
292     };
293     };
294    
295 dpavlin 15 1;

  ViewVC Help
Powered by ViewVC 1.1.26