/[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 82 by dpavlin, Sat Apr 19 23:18:06 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> or C<unit> for unit id
110    
111    =cut
112    
113    template 'single' => page {
114            my $self = shift;
115    
116            my $id = get('unit') || get('id') || warn "no unit or 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 ) {
235                  form {                          form {
236                          outs_raw($delete->button(                                  outs_raw($delete->button(
237                                  label => _('Delete unit'),                                          label => _('Delete unit'),
238                                  class => 'float-crud-button button-delete',                                          class => 'float-crud-button button-delete',
239                                  onclick => {                                          onclick => {
240                                          submit => $delete,                                                  submit => $delete,
241                                          confirm => _('Really delete?'),                                                  confirm => _('Really delete?'),
242  #                                       region => Jifty->web->current_region,          #                                       region => Jifty->web->current_region,
243                                          replace_with => '/__jifty/empty',                                                  replace_with => '/__jifty/empty',
244                                          refresh_self => 1,                                                  refresh_self => 1,
245                                          args => { id => $id },                                                  args => { id => $id },
246                                  },                                          },
247                          ));                                  ));
248                            }
249                  };                  };
         };  
250    
   
         form {  
251                  foreach my $f ( $self->display_columns ) {                  foreach my $f ( $self->display_columns ) {
252                          if ( $f eq 'material' ) {                          if ( $f eq 'material' ) {
253                                  set( search_collection => $record->material );                                  set( search_collection => $record->material );
# Line 66  template 'view' => sub :CRUDView { Line 261  template 'view' => sub :CRUDView {
261                                  );                                  );
262                          } else {                          } else {
263                                  my %opt;                                  my %opt;
264                                  $opt{render_mode} = 'read' if ! $editing;                                  if ( ! $editing ) {
265                                            $opt{render_mode} = 'read';
266                                            # skip fields without values
267                                            $opt{render_as} = 'hidden' if ! defined( $update->record->$f );
268                                    }
269                                  render_param( $update => $f, %opt );                                  render_param( $update => $f, %opt );
270                          }                          }
271                  };                  };
# Line 79  template 'view' => sub :CRUDView { Line 278  template 'view' => sub :CRUDView {
278                                                  submit => $update,                                                  submit => $update,
279                                                  refresh_self => 1,                                                  refresh_self => 1,
280                                          },                                          },
281                                  )                                  );
282                          };                          }
283                  }                  }
         };  
284    
285          }; # div class unit          }; # div class unit
286    
# Line 95  template 'new_item' => sub { Line 293  template 'new_item' => sub {
293          my $self = shift;          my $self = shift;
294          return unless $self->current_user->editing;          return unless $self->current_user->editing;
295    
296      my ( $object_type, $id ) = ( $self->object_type, get('id') );          my ( $object_type, $id ) = ( $self->object_type, get('id') );
297      my $record_class = $self->record_class;          my $record_class = $self->record_class;
298      my $create = $record_class->as_create_action;          my $create = $record_class->as_create_action;
299    
300          h1 { _("New unit") };          h1 { _("New unit") };
301    
302          form {          div {
303    
304                  foreach my $f ( $self->display_columns ) {                  foreach my $f ( $self->display_columns ) {
305                          last if $f eq 'material' && ! $id;  #                       last if $f eq 'material' && ! $id;
306                          render_param( $create => $f ); # unless $f eq 'material';                          render_param( $create => $f ) unless $f eq 'material';
307                            #warn "## $f";
308                  }                  }
309    
310                  div {                  div {
# Line 115  template 'new_item' => sub { Line 314  template 'new_item' => sub {
314                                  onclick => [                                  onclick => [
315                                          {                                          {
316                                                  submit => $create,                                                  submit => $create,
317          #                                       args => {  #                                               args => {
318          #                                       },  #                                               },
319                                          },                                          },
320                                          {       refresh_self => 1       },                                          {       refresh_self => 1       },
321                                          {                                          {
# Line 131  template 'new_item' => sub { Line 330  template 'new_item' => sub {
330                                  ],                                  ],
331                                  as_button => 1,                                  as_button => 1,
332                          );                          );
333                  }                  };
334    
335          };          };
336  };  };

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

  ViewVC Help
Powered by ViewVC 1.1.26