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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 13 - (hide annotations)
Fri Nov 30 00:03:15 2007 UTC (11 years, 9 months ago) by dpavlin
File size: 3639 byte(s)
very crude brain dump of various changes:
- introduce command ACL in Arh::DefaultACL which allmost all modes use
- rewrite most templates and implement crude hack Arch::Web::Material
  to render special type of form to add singe material
- version bump [0.02]
1 dpavlin 6 package Arh::View;
2    
3     use strict;
4     use warnings;
5    
6     use Jifty::View::Declare -base;
7    
8     use Data::Dump qw/dump/;
9    
10     template '/pictures' => page {
11     my $fc = Arh::Model::PictureCollection->new;
12     $fc->unlimit;
13     my $present;
14     form {
15 dpavlin 12 if ( $fc->count ) {
16     h1 { _("Pictures available in system") };
17     }
18 dpavlin 6 table {
19     while ( my $f = $fc->next ) {
20     $present->{ $f->filename }++;
21     my $delete = new_action( class => 'DeletePicture' );
22 dpavlin 8 my $update = new_action( class => 'UpdatePicture', record => $f );
23 dpavlin 6 row {
24     cell {
25 dpavlin 12 attr { class => 'picture' };
26 dpavlin 6 img { attr { src => "static/pics/" . $f->filename } }
27     div { tt{ $f->filename } }
28     }
29     cell {
30 dpavlin 12 attr { class => 'picture-description' };
31 dpavlin 8 render_param( $update => 'campaign', render_mode => 'read' );
32     render_param( $update => 'type', render_mode => 'read' );
33 dpavlin 12 if ( $f->current_user_can('write') ) {
34     div {
35     $delete->button(
36     submit => $delete,
37     label => _('Delete'),
38     arguments => {
39     id => $f->id,
40     }
41     )
42     }
43 dpavlin 7 }
44 dpavlin 6 }
45     }
46     }
47 dpavlin 13 warn "current_user->id: ",current_user->id;
48     if ( current_user->id ) {
49 dpavlin 6 row {
50 dpavlin 13 cell { attr { colspan => 2 } h1 { _('Pending pictures') } }
51     };
52     warn "## present = ",dump( $present );
53     foreach my $f ( Arh::Model::Picture->all_filenames ) {
54     next if $present->{$f};
55     my $create = new_action( class => 'CreatePicture' );
56     row {
57     cell {
58     attr { class => 'picture' };
59     img { attr { src => "static/pics/$f" } }
60     div { tt{ $f } }
61     }
62     cell {
63     attr { class => 'picture-description' };
64     render_param( $create => 'campaign' );
65     render_param( $create => 'type' );
66     $create->button(
67     submit => $create,
68     label => _('Add'),
69     arguments => {
70     filename => $f,
71     }
72     );
73     }
74 dpavlin 6 }
75     }
76     }
77     }
78     }
79    
80     };
81    
82 dpavlin 8 template '/units' => page {
83     h1 { _("Units available in system") };
84    
85     my $units = Arh::Model::UnitCollection->new;
86     $units->unlimit;
87    
88     while ( my $u = $units->next ) {
89     unit( $u );
90     }
91     };
92    
93     sub unit {
94     my $unit = shift || die "no unit?";
95     my $a = new_action( class => 'UpdateUnit', record => $unit );
96     form {
97 dpavlin 9 foreach my $f ( qw/name number campaign material dimensions position description chronology location/ ) {
98 dpavlin 13 my $can_write = $unit->current_user_can('write',$f);
99     #warn "write $f ",$can_write ? 'ok' : 'DENIED';
100 dpavlin 8 if ( $f eq 'material' ) {
101 dpavlin 13 set( UnitMaterialCollection => $unit->material );
102     show( '/unit/materials' );
103 dpavlin 8 } else {
104 dpavlin 11 my %opt;
105 dpavlin 13 $opt{render_mode} = 'read' if ! $unit->current_user_can('write',$f);
106 dpavlin 11 render_param( $a => $f, %opt );
107 dpavlin 8 }
108     }
109     }
110     }
111    
112 dpavlin 13 template '/unit/materials' => sub {
113     my $materials = get('UnitMaterialCollection');
114     my $del_um = new_action( class => 'DeleteUnitMaterial', moniker => 'del_um' );
115     my $new_um = new_action( class => 'CreateUnitMaterial', moniker => 'new_um' );
116     my $can_write;
117     while ( my $um = $materials->next ) {
118     div { attr { class is 'form_field' }
119     span {
120     span { attr { class is 'label' } _("Material") };
121     span { $um->material->name };
122    
123     $can_write ||= $um->current_user_can('write');
124     if ( $can_write ) {
125     outs_raw($del_um->button(
126     submit => $del_um,
127     label => _('Delete'),
128     arguments => {
129     unit => $um->unit,
130     material => $um->material
131     },
132     ));
133     }
134     }
135     };
136    
137     if ( $can_write ) {
138     render_param(
139     $new_um => 'material', label => _("Material"),
140     render_as => 'Arh::Web::Material',
141     # cludge to transfer arguments
142     hints => {
143     unit => $um->unit,
144     },
145     );
146     }
147     }
148     };
149    
150 dpavlin 6 1;

  ViewVC Help
Powered by ViewVC 1.1.26