/[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

Diff of /lib/Arh/View/Units.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 28 by dpavlin, Mon Dec 10 14:56:12 2007 UTC revision 78 by dpavlin, Sat Apr 19 21:36:07 2008 UTC
# Line 6  use warnings; Line 6  use warnings;
6  use base 'Jifty::View::Declare::CRUD';  use base 'Jifty::View::Declare::CRUD';
7  use Jifty::View::Declare -base;  use Jifty::View::Declare -base;
8    
9    use Data::Dump qw/dump/;
10    
11  sub object_type { 'Unit' };  sub object_type { 'Unit' };
12    
13    sub per_page {
14            my $per_page = get('per_page') || 3;
15            warn "## Units per_page = $per_page\n";
16            return $per_page;
17    };
18    
19  sub display_columns {  sub display_columns {
20          my $self = shift;          my $self = shift;
21          return ( qw/name inv_id campaign material dimensions discovered_at description chronology location/ );          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                    construction
42                    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                    material
60            / );
61  }  }
62    
63  #private template search_region => sub {};  #private template search_region => sub {};
64    
65    =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    =head2 single
108    
109    display singe unit on page, using C<id>
110    
111    =cut
112    
113    template 'single' => page {
114            my $self = shift;
115    
116            my $id = get('id') || die "no id?";
117    
118            my $item = Arh::Model::Unit->new;
119            $item->load( $id );
120            die _("Can't find item %1", $id) unless $item->id;
121    
122            title is $item->name;
123    
124            render_region(
125                    name => 'item-' . $item->id,
126                    path => $self->fragment_for('view'),
127                    defaults => { id => $item->id, object_type => $self->object_type }
128            );
129    
130    };
131    
132    private template 'paging_top' => sub {
133            my $self           = shift;
134            my $collection = shift;
135            my $page           = shift || 1;
136                                              
137            if ( $collection->pager->last_page > 1 ) {
138                    span {
139                            { class is 'page-count' };
140                            outs(
141                                    _( "Found %1 units, showing %2-%3 on page %4/%5",
142                                            $collection->pager->total_entries,
143                                            $collection->pager->first,
144                                            $collection->pager->last,
145                                            $page,
146                                            $collection->pager->last_page
147                                    )
148                            );
149                    }
150            }
151            show( './paging_bottom', $collection, $page );
152    };
153    
154    private template paging_bottom => sub {
155            my $self           = shift;
156            my $collection = shift;
157            my $page           = shift || 0;
158            div {
159                    { class is 'paging' };
160                    if ( $collection->pager->previous_page ) {
161                            span {
162                                    hyperlink(
163                                            label   => _("Previous Page"),
164                                            onclick => {
165                                                    args => { page => $collection->pager->previous_page }
166                                            }
167                                    );
168                            }
169                    }
170    
171                    my ( $f_p, $t_p ) = ( '...', '...' );
172    
173                    my $from = $page - 15;
174                    if ( $from < 0 ) {
175                            $from = $collection->pager->first_page;
176                            $f_p = '';
177                    }
178                    my $to = $page + 15;
179                    if ( $to > $collection->pager->last_page ) {
180                            $to = $collection->pager->last_page;
181                            $t_p = '';
182                    }
183    
184                    outs $f_p;
185    
186                    foreach my $p ( $from .. $to ) {
187                            if ( $p == $page ) {
188                                    b { $p }
189                            } else {
190                                    span {
191                                            hyperlink(
192                                                    label   => $p,
193                                                    onclick =>
194                                                            { args => { page => $p } }
195                                            );
196                                    }
197                            }
198                    }
199    
200                    outs $t_p;
201    
202                    if ( $collection->pager->next_page ) {
203                            span {
204                                    hyperlink(
205                                            label   => _("Next Page"),
206                                            onclick =>
207                                                    { args => { page => $collection->pager->next_page } }
208                                    );
209                            }
210                    }
211            };
212    };
213    
214    
215  template 'view' => sub :CRUDView {  template 'view' => sub :CRUDView {
216          my $self   = shift;          my $self   = shift;
217          my $id = get('id');          my $id = get('id');
# Line 34  template 'view' => sub :CRUDView { Line 231  template 'view' => sub :CRUDView {
231    
232          div { { class is 'unit' }          div { { class is 'unit' }
233    
234          if ( $editing ) {                  if ( $editing ) {
                 form {  
235                          outs_raw($delete->button(                          outs_raw($delete->button(
236                                  label => _('Delete unit'),                                  label => _('Delete unit'),
237                                  class => 'float-crud-button button-delete',                                  class => 'float-crud-button button-delete',
# Line 49  template 'view' => sub :CRUDView { Line 245  template 'view' => sub :CRUDView {
245                                  },                                  },
246                          ));                          ));
247                  };                  };
         };  
   
248    
         form {  
249                  foreach my $f ( $self->display_columns ) {                  foreach my $f ( $self->display_columns ) {
250                          if ( $f eq 'material' ) {                          if ( $f eq 'material' ) {
251                                  set( search_collection => $record->material );                                  set( search_collection => $record->material );
# Line 66  template 'view' => sub :CRUDView { Line 259  template 'view' => sub :CRUDView {
259                                  );                                  );
260                          } else {                          } else {
261                                  my %opt;                                  my %opt;
262                                  $opt{render_mode} = 'read' if ! $editing;                                  if ( ! $editing ) {
263                                            $opt{render_mode} = 'read';
264                                            # skip fields without values
265                                            $opt{render_as} = 'hidden' if ! defined( $update->record->$f );
266                                    }
267                                  render_param( $update => $f, %opt );                                  render_param( $update => $f, %opt );
268                          }                          }
269                  };                  };
# Line 79  template 'view' => sub :CRUDView { Line 276  template 'view' => sub :CRUDView {
276                                                  submit => $update,                                                  submit => $update,
277                                                  refresh_self => 1,                                                  refresh_self => 1,
278                                          },                                          },
279                                  )                                  );
280                          };                          }
281                  }                  }
         };  
282    
283          }; # div class unit          }; # div class unit
284    
# Line 95  template 'new_item' => sub { Line 291  template 'new_item' => sub {
291          my $self = shift;          my $self = shift;
292          return unless $self->current_user->editing;          return unless $self->current_user->editing;
293    
294      my ( $object_type, $id ) = ( $self->object_type, get('id') );          my ( $object_type, $id ) = ( $self->object_type, get('id') );
295      my $record_class = $self->record_class;          my $record_class = $self->record_class;
296      my $create = $record_class->as_create_action;          my $create = $record_class->as_create_action;
297    
298          h1 { _("New unit") };          h1 { _("New unit") };
299    
300          form {          div {
301    
302                  foreach my $f ( $self->display_columns ) {                  foreach my $f ( $self->display_columns ) {
303                          last if $f eq 'material' && ! $id;  #                       last if $f eq 'material' && ! $id;
304                          render_param( $create => $f ); # unless $f eq 'material';                          render_param( $create => $f ) unless $f eq 'material';
305                            #warn "## $f";
306                  }                  }
307    
308                  div {                  div {
# Line 115  template 'new_item' => sub { Line 312  template 'new_item' => sub {
312                                  onclick => [                                  onclick => [
313                                          {                                          {
314                                                  submit => $create,                                                  submit => $create,
315          #                                       args => {  #                                               args => {
316          #                                       },  #                                               },
317                                          },                                          },
318                                          {       refresh_self => 1       },                                          {       refresh_self => 1       },
319                                          {                                          {
# Line 131  template 'new_item' => sub { Line 328  template 'new_item' => sub {
328                                  ],                                  ],
329                                  as_button => 1,                                  as_button => 1,
330                          );                          );
331                  }                  };
332    
333          };          };
334  };  };

Legend:
Removed from v.28  
changed lines
  Added in v.78

  ViewVC Help
Powered by ViewVC 1.1.26