source: LATMOS-Accounts-Web/lib/LATMOS/Accounts/Web/Controller/Groups.pm @ 718

Last change on this file since 718 was 718, checked in by nanardon, 14 years ago
  • trap error when object does not exists instead dying
  • Property svn:keywords set to Id Rev
File size: 2.1 KB
Line 
1package LATMOS::Accounts::Web::Controller::Groups;
2
3use strict;
4use warnings;
5use base 'LATMOS::Accounts::Web::Controller';
6
7=head1 NAME
8
9LATMOS::Accounts::Web::Controller::Groups - Catalyst Controller
10
11=head1 DESCRIPTION
12
13Catalyst Controller.
14
15=head1 METHODS
16
17=cut
18
19
20=head2 index
21
22=cut
23
24sub index : Private {
25    my ( $self, $c ) = @_;
26
27    $c->stash->{ofilter} = $c->model('AttrFilter', 'group');
28    $c->stash->{groupslist} = [  map { $_->id } @{ $c->stash->{objectslist} } ];
29
30}
31
32sub default : LocalPath {
33    my ( $self, $c, undef, $groupname, $subform ) = @_;
34
35    my $base = $c->model('Accounts')->db;
36
37    $c->stash->{groupname} = $groupname;
38    $c->stash->{group} = $base->get_object('group', $groupname) or do {
39        $c->forward('/no_object');
40        return;
41    };
42
43    $c->stash->{subform} = $subform || '';
44
45    for ($subform || '') {
46        # Exceptions...
47        /^users$/ and do {
48            $c->stash->{template} = 'groups/users.tt';
49
50            my %ingroup = map { $_ => 1 } @{
51                $c->stash->{group}->get_c_field('memberUID') || [] };
52            if ($c->req->param('adduser')) {
53                $c->stash->{group}->set_c_fields('memberUID' => [ (keys %ingroup), $c->req->param('adduser') ]);
54                $c->stash->{group}->base->commit;
55                %ingroup = map { $_ => 1 } @{ $c->stash->{group}->get_c_field('memberUID') };
56            } elsif ($c->req->param('deluser')) {
57                $c->stash->{group}->set_c_fields('memberUID',
58                    [ grep { $_ ne $c->req->param('deluser') } keys %ingroup ]
59                );
60                $c->stash->{group}->base->commit;
61                %ingroup = map { $_ => 1 } @{ $c->stash->{group}->get_c_field('memberUID') };
62            }
63
64            $c->stash->{add_user_list} = [ grep { ! $ingroup{$_} } $base->list_objects('user') ];
65            last;
66        };
67
68        $c->stash->{form} = $c->model('AttrForms', 'group' . $c->stash->{subform}, $c->stash->{group});
69        $c->stash->{form}->set_attrs;
70    }
71}
72
73=head1 AUTHOR
74
75Thauvin Olivier
76
77=head1 LICENSE
78
79This library is free software, you can redistribute it and/or modify
80it under the same terms as Perl itself.
81
82=cut
83
841;
Note: See TracBrowser for help on using the repository browser.