/[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 39 by dpavlin, Sun Apr 6 11:12:58 2008 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/          return ( qw/
# Line 30  sub display_columns { Line 38  sub display_columns {
38                  toplogy                  toplogy
39                  technique                  technique
40                  description                  description
41                  contstruction                  construction
42                  iconography                  iconography
43                  decoration                  decoration
44                  motifs                  motifs
# Line 48  sub display_columns { Line 56  sub display_columns {
56                  sources                  sources
57                  bibliography                  bibliography
58                  copyright                  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 72  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 87  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 104  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 117  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 133  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";                          #warn "## $f";
306                  }                  }
307    
308                  div {                  div {
# Line 170  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.39  
changed lines
  Added in v.78

  ViewVC Help
Powered by ViewVC 1.1.26