X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=scpubgit%2FApp-EzPz.git;a=blobdiff_plain;f=lib%2FApp%2FEzPz%2FWeb.pm;fp=lib%2FApp%2FEzPz%2FWeb.pm;h=2463657a0db1d59b572ff7930da388bf297e2f9d;hp=3b0f4a21f994e832f915164625cbdb815489f30e;hb=0a0e9549e16b04188b7763226208c69f53d78149;hpb=fb960e0eb2ad6ad19c2c695b6aa87716ae299a23 diff --git a/lib/App/EzPz/Web.pm b/lib/App/EzPz/Web.pm index 3b0f4a2..2463657 100644 --- a/lib/App/EzPz/Web.pm +++ b/lib/App/EzPz/Web.pm @@ -52,29 +52,32 @@ sub dispatch_request { sub (/list/*/...) { my $list = $current_user->get_list($_[1]); return unless $list; + my $error; sub (/) { - $self->_list_dispatchers($list), - sub () { $self->_render_list_page($list) }; + $self->_list_dispatchers($list, \$error), + sub () { $self->_render_list_page($list, $error) }; }, sub (/deny/|/allow/|/mod/|/digest/) { sub (/*/) { my $sublist = $list->${\$_[1]}; - $self->_list_dispatchers($sublist), - sub () { $self->_render_sublist_page($sublist) }; + $self->_list_dispatchers($sublist, \$error), + sub () { $self->_render_sublist_page($sublist, $error) }; }, }, } } sub _list_dispatchers { - my ($self, $list) = @_; + my ($self, $list, $error_ref) = @_; sub (POST) { sub (%add=) { - $list->add_member($_[1]); + eval { $list->add_member($_[1]); 1 } + or ${$error_ref} = $@; return; }, sub (%remove=) { - $list->remove_member($_[1]); + eval { $list->remove_member($_[1]); 1 } + or ${$error_ref} = $@; return; }, } @@ -114,25 +117,24 @@ sub _render_front_page { } sub _render_list_page { - my ($self, $list) = @_; - $self->_render_listcore_page( - $list, [ + shift->_render_listcore_page( + @_, [ map [ ucfirst($_)." list", "${_}/" ], qw(allow deny mod digest) ] ); } sub _render_sublist_page { - my ($self, $list) = @_; - $self->_render_listcore_page( - $list, [ [ "Back to list", "../" ] ], + shift->_render_listcore_page( + @_, [ [ "Back to list", "../" ] ], ); } sub _render_listcore_page { - my ($self, $list, $links) = @_; + my ($self, $list, $error, $links) = @_; $self->_render_page(list => sub { $_->replace_content('.list-name', $list->name) + ->replace_content('.error', $error||'') ->repeat('.list-link', [ map { my ($name, $href) = @$_;