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

Contents of /lib/Arh/View.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 13 - (show annotations)
Fri Nov 30 00:03:15 2007 UTC (16 years, 4 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 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 if ( $fc->count ) {
16 h1 { _("Pictures available in system") };
17 }
18 table {
19 while ( my $f = $fc->next ) {
20 $present->{ $f->filename }++;
21 my $delete = new_action( class => 'DeletePicture' );
22 my $update = new_action( class => 'UpdatePicture', record => $f );
23 row {
24 cell {
25 attr { class => 'picture' };
26 img { attr { src => "static/pics/" . $f->filename } }
27 div { tt{ $f->filename } }
28 }
29 cell {
30 attr { class => 'picture-description' };
31 render_param( $update => 'campaign', render_mode => 'read' );
32 render_param( $update => 'type', render_mode => 'read' );
33 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 }
44 }
45 }
46 }
47 warn "current_user->id: ",current_user->id;
48 if ( current_user->id ) {
49 row {
50 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 }
75 }
76 }
77 }
78 }
79
80 };
81
82 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 foreach my $f ( qw/name number campaign material dimensions position description chronology location/ ) {
98 my $can_write = $unit->current_user_can('write',$f);
99 #warn "write $f ",$can_write ? 'ok' : 'DENIED';
100 if ( $f eq 'material' ) {
101 set( UnitMaterialCollection => $unit->material );
102 show( '/unit/materials' );
103 } else {
104 my %opt;
105 $opt{render_mode} = 'read' if ! $unit->current_user_can('write',$f);
106 render_param( $a => $f, %opt );
107 }
108 }
109 }
110 }
111
112 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 1;

  ViewVC Help
Powered by ViewVC 1.1.26