/[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 20 by dpavlin, Fri Nov 30 17:50:34 2007 UTC revision 70 by dpavlin, Wed Apr 9 12:28:16 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') || 5;
15            warn "## Units per_page = $per_page\n";
16            return $per_page;
17    };
18    
19    sub display_columns {
20            my $self = shift;
21            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    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                    }
125            }
126            show( './paging_bottom', $collection, $page );
127    };
128    
129    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    
146                    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  template 'view' => sub :CRUDView {  template 'view' => sub :CRUDView {
175          my $self   = shift;          my $self   = shift;
176          my $record = $self->_get_record( get('id') );          my $id = get('id');
177            my $record = $self->_get_record( $id );
178    
179          my $update = $record->as_update_action(          my $update = $record->as_update_action(
180                  moniker => "update-" . Jifty->web->serial,                  moniker => "update-" . Jifty->web->serial,
181          );          );
182    
183          my $can_write = $record->current_user_can('write');          my $delete = $record->as_delete_action(
184          #warn "write ",$can_write ? 'ok' : 'DENIED';                  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    
191          form {          div { { class is 'unit' }
192                  foreach my $f ( qw/name number campaign material dimensions position description chronology location/ ) {  
193                    if ( $editing ) {
194                            outs_raw($delete->button(
195                                    label => _('Delete unit'),
196                                    class => 'float-crud-button button-delete',
197                                    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                          if ( $f eq 'material' ) {                          if ( $f eq 'material' ) {
210                                  set( search_collection => $record->material );                                  set( search_collection => $record->material );
211                                  render_region(                                  render_region(
# Line 35  template 'view' => sub :CRUDView { Line 218  template 'view' => sub :CRUDView {
218                                  );                                  );
219                          } else {                          } else {
220                                  my %opt;                                  my %opt;
221                                  $opt{render_mode} = 'read' if ! $can_write;                                  if ( ! $editing ) {
222                                            $opt{render_mode} = 'read';
223                                            # skip fields without values
224                                            $opt{render_as} = 'hidden' if ! defined( $update->record->$f );
225                                    }
226                                  render_param( $update => $f, %opt );                                  render_param( $update => $f, %opt );
227                          }                          }
228                  };                  };
229                  if ( $can_write ) {                  if ( $editing ) {
230                          div {                          div {
231                                  { class is 'submit_button' };                                  { class is 'submit_button' };
232                                  hyperlink(                                  hyperlink(
# Line 48  template 'view' => sub :CRUDView { Line 235  template 'view' => sub :CRUDView {
235                                                  submit => $update,                                                  submit => $update,
236                                                  refresh_self => 1,                                                  refresh_self => 1,
237                                          },                                          },
238                                  )                                  );
239                          };                          }
240                  }                  }
241          };  
242            }; # div class unit
243    
244            show('/unitpictures/fragment', $record);
245    
246          hr {};          hr {};
247  };  };
248    
249    template 'new_item' => sub {
250            my $self = shift;
251            return unless $self->current_user->editing;
252    
253            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    
257            h1 { _("New unit") };
258    
259            div {
260    
261                    foreach my $f ( $self->display_columns ) {
262    #                       last if $f eq 'material' && ! $id;
263                            render_param( $create => $f ) unless $f eq 'material';
264                            #warn "## $f";
265                    }
266    
267                    div {
268                            { class is 'submit_button' };
269                            hyperlink(
270                                    label   => _("Add"),
271                                    onclick => [
272                                            {
273                                                    submit => $create,
274    #                                               args => {
275    #                                               },
276                                            },
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                    };
291    
292            };
293    };
294    
295  1;  1;

Legend:
Removed from v.20  
changed lines
  Added in v.70

  ViewVC Help
Powered by ViewVC 1.1.26