/[A3C]/lib/A3C/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

Diff of /lib/A3C/View.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 37 by dpavlin, Sun Mar 30 02:33:01 2008 UTC revision 165 by dpavlin, Sun Jun 15 22:03:02 2008 UTC
# Line 5  use warnings; Line 5  use warnings;
5    
6  use Jifty::View::Declare -base;  use Jifty::View::Declare -base;
7  use A3C::LDAP;  use A3C::LDAP;
8    use A3C::SQL;
9    
10  use Data::Dump qw/dump/;  use Data::Dump qw/dump/;
11    
12    private template 'menu' => sub {
13            div {
14                    attr { id => "navigation" };
15                    Jifty->web->navigation->render_as_classical_menu;
16            };
17    };
18    
19    
20    template '/' => page {
21    
22            h1 { _('Statistics') }
23    
24            my $orgs = A3C::Model::hrEduOrgCollection->new;
25            $orgs->unlimit;
26    
27            dt { _('Number of schools in system') }
28            dd { $orgs->count }
29    
30            my $people = A3C::Model::hrEduPersonCollection->new;
31            $people->unlimit;
32    
33            dt { _('Number of persons in system') }
34            dd { $people->count }
35    
36            my $by_towns = A3C::SQL->new({ query => qq{
37                    select count(uid),l
38                    from hr_edu_orgs
39                    inner join towns on towns.name = l
40                    group by l
41                    order by count desc
42                    limit 25
43            }});
44    
45            dt { _('Top %1 towns by schools', $by_towns->count) }
46            dd {
47                    ul {
48                            while ( my $row = $by_towns->next ) {
49                                    li { outs_raw( $row->count, ' ', $row->l ) }
50                            }
51                    }
52            }
53    
54  template '/skole' => page {          my $by_county = A3C::SQL->new({ query => qq{
55          h1 { _('Schools in system') };                  select
56          show 'skole_sve';                          count(uid) as schools,
57                            county,
58                            count(distinct municipality) as municipalities
59                    from hr_edu_orgs
60                    inner join towns on towns.name = l
61                    group by county
62                    order by schools desc
63            }});
64    
65            dt { _('Schools by counties') }
66            dd {
67                    table {
68                            th { _('Schools') }
69                            th { _('County') }
70                            th { _('Municipalities') };
71                            while ( my $row = $by_county->next ) {
72                                    row {
73                                            cell { $row->schools }
74                                            cell { $row->county }
75                                            cell { $row->municipalities }
76                                    }
77                            }
78                    }
79            }
80  };  };
81    
82  private template 'skole_sve' => sub {  
83    template 'ldap' => page {
84            h1 { _('LDAP data about Schools in system') };
85            my $ldap = A3C::LDAP->new;
86          div {          div {
87                  my $search = A3C::LDAP->search(                  $ldap->search(
88                          base    => 'dc=skole,dc=hr',                          base    => 'dc=skole,dc=hr',
89                          filter  => '(objectClass=hrEduOrg)',                          filter  => '(objectClass=hrEduOrg)',
90                          sizelimit => 10,                          sizelimit => 10,
91                  );                  );
92                  while ( my $entry = $search->shift_entry ) {                  while ( my $entry = $ldap->current_search->shift_entry ) {
93                          #warn $entry->dump;                          #warn $entry->dump;
94                          ul {                          ul {
95                                  foreach my $attr ( $entry->attributes ) {                                  foreach my $attr ( $entry->attributes ) {
96                                          li {                                          li {
97                                                  tt { $attr }                                                  tt { $attr }
98                                                  span { dump( $entry->get_value( $attr ) }                                                  span { dump( $entry->get_value( $attr ) ) }
99                                          }                                          }
100                                  }                                  }
101                          }                          }
# Line 35  private template 'skole_sve' => sub { Line 103  private template 'skole_sve' => sub {
103          }          }
104  };  };
105    
106    template 'people' => page {
107            
108            h1 { _('Find people') }
109    
110            my $action = new_action(
111                    class   => 'SearchhrEduPerson',
112                    moniker => 'search-users',
113                    sticky_on_success => 1,
114                    sticky_on_failure => 1,
115            );
116    
117    
118            form {
119                    render_action( $action => [ 'uid_contains', 'cn_contains' ] );
120                    form_submit( label => _('Search') );
121            };
122    
123    #       warn dump( $action->result->content );
124    
125            if ( my $search = $action->result->content('search') ) {
126                    div { _('Found %1 results', $search->count ) }
127                    table {
128                            while (my $user = $search->next) {
129                                    row {
130                                            cell { $user->cn }
131                                            cell { tt { $user->uid } }
132                                            cell { tt { $user->hrEduPersonUniqueID } }
133                                            cell { $user->hrEduPersonHomeOrg }
134                                    }
135                            }
136                    }
137            }
138    
139    };
140    
141    template 'sync' => page {
142    
143            h1 { _('Sync school from LDAP') }
144    
145            my $action = new_action(
146                    class   => 'SyncOrganization',
147                    moniker => 'sync-organization'
148            );
149    
150            form {
151                    render_action( $action => [ 'org_uid' ] );
152                    form_submit( label => _('Sync Organization') );
153            };
154    
155            if ( my $users = $action->result->content('synced-users') ) {
156                    ol {
157                            while (my $user = $users->next) {
158                                    li {
159                                            span { $user->cn }
160                                            tt { { class is 'email' } '<' . $user->mail . '>' }
161                                    }
162                            }
163                    }
164            }
165    
166    };
167    
168    # mount other views
169    use A3C::View::Organization;
170    
171    # we can't really use following form because Jifty would upper case first
172    # letter of model and try to find A3C::Model::HrEduOrg which doesn't exit!
173    #Jifty::View::Declare::CRUD->mount_view('hrEduOrg', 'A3C::View::Organization', '/organizations');
174    alias A3C::View::Organization under '/organizations', {
175            object_type => 'hrEduOrg',
176    };
177    
178    use A3C::View::Strix;
179    alias A3C::View::Strix under '/strix';
180    
181    1;

Legend:
Removed from v.37  
changed lines
  Added in v.165

  ViewVC Help
Powered by ViewVC 1.1.26