From 18140e6a3e5b801b08fa15f6cba15c118e385b9a Mon Sep 17 00:00:00 2001 From: Pasqualino Ferrentino Date: Tue, 4 Sep 2007 11:49:01 +0200 Subject: [PATCH] I can view the list of ads for a particular activity --- src/lib/Bcd/Commands/GetAdsCommand.pm | 14 +++-- .../lib/breadcrumbs/Controller/AnPages.pm | 63 +++++++++++++++++++--- .../breadcrumbs/lib/breadcrumbs/Model/BcdModel.pm | 7 +++ .../breadcrumbs/root/src/an_pages_summary_tree.tt | 2 +- .../breadcrumbs/root/src/an_pages_view_ads_list.tt | 2 + 5 files changed, 78 insertions(+), 10 deletions(-) create mode 100644 web-site/breadcrumbs/root/src/an_pages_view_ads_list.tt diff --git a/src/lib/Bcd/Commands/GetAdsCommand.pm b/src/lib/Bcd/Commands/GetAdsCommand.pm index f4e1978..d6f3de6 100644 --- a/src/lib/Bcd/Commands/GetAdsCommand.pm +++ b/src/lib/Bcd/Commands/GetAdsCommand.pm @@ -65,7 +65,7 @@ sub _exec{ #ok, now I should make a cycle... my @dataset; - my @fields = ('id_ad', 'id_user', 'created_on', 'ad_text', 'id_site', + my @fields = ('id_ad', 'id_user', 'nick', 'created_on', 'ad_text', 'id_site', 'id_special_site', 'site_name', 'on_request', 'presence', 'p_min', 'p_max', 'pay_credit'); @@ -78,13 +78,21 @@ sub _exec{ #I should get all the presences of this ad... my $locs = Bcd::Data::Ads->get_all_localities_for_ad_arr($stash, $_->[0]); my $current_user = $_->[1]; + my $nick = Bcd::Data::Users->get_nick_from_id($stash, $_->[1]); my $current_ad = $_; + + my $my_own_ad = 0; + if ($my_id == $current_user){ + $my_own_ad = 1; + } + foreach(@{$locs}){ #ok, I have this locality... is the user able to see it? my $incoming_trust = $net->{$current_user}->[1]; - if ($incoming_trust < $_->[3]){ + #of course I can see my own ads. + if ($incoming_trust < $_->[3] and !$my_own_ad){ #nope, next please next; } @@ -101,7 +109,7 @@ sub _exec{ } #and I can fill the record!!!! - my @record = ($current_ad->[0], $current_user, $current_ad->[2], $current_ad->[3], + my @record = ($current_ad->[0], $current_user, $nick, $current_ad->[2], $current_ad->[3], $presence->[1], $presence->[2], $site_name, $presence->[4], $presence->[5], $_->[1], $_->[2], $incoming_trust < $_->[4] ? 0 : 1); diff --git a/web-site/breadcrumbs/lib/breadcrumbs/Controller/AnPages.pm b/web-site/breadcrumbs/lib/breadcrumbs/Controller/AnPages.pm index f4e6c9b..b0a2126 100644 --- a/web-site/breadcrumbs/lib/breadcrumbs/Controller/AnPages.pm +++ b/web-site/breadcrumbs/lib/breadcrumbs/Controller/AnPages.pm @@ -63,8 +63,12 @@ sub view_services : Local { $c->stash->{act_summary_tree} = $res->{act_summary_tree}; $c->stash->{page_title} = "Vista di tutti i servizi per il formicaio"; - $c->stash->{template} = "an_pages_summary_tree.tt"; + $c->session->{sack}->{ads_branch} = "services"; + $c->session->{hold_the_sack} = 1; + delete $c->session->{sack}->{act_to_serve}; + $self->_add_trails($c); + $c->stash->{template} = "an_pages_summary_tree.tt"; } sub view_homemade_products : Local { @@ -74,6 +78,10 @@ sub view_homemade_products : Local { $c->stash->{act_summary_tree} = $res->{act_summary_tree}; $c->stash->{page_title} = "Vista di tutti gli oggetti prodotti dal formicaio"; + $c->session->{sack}->{ads_branch} = "homemade"; + $c->session->{hold_the_sack} = 1; + delete $c->session->{sack}->{act_to_serve}; + $self->_add_trails($c); $c->stash->{template} = "an_pages_summary_tree.tt"; } @@ -84,17 +92,60 @@ sub view_used_products : Local { $c->stash->{act_summary_tree} = $res->{act_summary_tree}; $c->stash->{page_title} = "Vista di tutti gli oggetti usati venduti nel formicaio"; + $c->session->{sack}->{ads_branch} = "objects"; + $c->session->{hold_the_sack} = 1; + delete $c->session->{sack}->{act_to_serve}; + $self->_add_trails($c); $c->stash->{template} = "an_pages_summary_tree.tt"; } -sub auto : Private { - my ( $self, $c) = @_; +sub _add_trails{ + my ($self, $c) = @_; - my $id = $c->request->captures->[0]; + my $trails = $c->stash->{"trails"}; + if ($c->session->{sack}->{ads_branch} eq "services"){ + breadcrumbs::util::MenuUtils->add_trail("/anpages/view_services", "Servizi", $trails, $c); + } elsif ($c->session->{sack}->{ads_branch} eq "homemade"){ + breadcrumbs::util::MenuUtils->add_trail("/anpages/view_homemade_products", "Artigianato", $trails, $c); + } else { + breadcrumbs::util::MenuUtils->add_trail("/anpages/view_used_products", "Commercio", $trails, $c); + } - if (!defined($id) or $id eq "") { - $id = $c->session->{current_ant_nest_id}; + if (defined($c->session->{sack}->{act_to_serve})){ + my $id = $c->session->{sack}->{act_to_serve}; + my $name = $c->session->{sack}->{act_name}; + breadcrumbs::util::MenuUtils->add_trail("/anpages/view_act_ads_${id}_${name}", "$name", $trails, $c); } +} + +sub view_act_ads : LocalRegex('^view_act_ads_(\d+)$') { + my ( $self, $c) = @_; + + $c->session->{hold_the_sack} = 1; + + my $act_to_serve = $c->req->captures->[0]; + my $act_name = $c->req->param("act_name"); + + $c->session->{sack}->{act_name} = $act_name; + $c->session->{sack}->{act_to_serve} = $act_to_serve; + + $self->_add_trails($c); + + #ok, now let's ask to the model the ads for this activity + my $res = $c->model("BcdModel")->get_ads_for_this_activity($c, $act_to_serve); + + #ok, now I put the ads in the stash + $c->stash->{ads} = $res->{ads}; + + $c->stash->{template} = "an_pages_view_ads_list.tt"; + +} + +sub auto : Private { + my ( $self, $c) = @_; + + + my $id = $c->session->{current_ant_nest_id}; my $trails = $c->stash->{"trails"}; breadcrumbs::util::MenuUtils->add_trail("/antnestscontroller", "I Formicai", $trails, $c); diff --git a/web-site/breadcrumbs/lib/breadcrumbs/Model/BcdModel.pm b/web-site/breadcrumbs/lib/breadcrumbs/Model/BcdModel.pm index 176fe48..5a3afc9 100644 --- a/web-site/breadcrumbs/lib/breadcrumbs/Model/BcdModel.pm +++ b/web-site/breadcrumbs/lib/breadcrumbs/Model/BcdModel.pm @@ -649,6 +649,13 @@ sub get_homemade_tree_with_summary{ Bcd::Constants::ActivitiesConstants::PARENT_HOMEMADE); } +sub get_ads_for_this_activity{ + my ($self, $c, $act_id) = @_; + + my $session = $c->user->{server_session}; + return $self->_issue_command_to_daemon("ws.get_ads", $session, $act_id); +} + sub _dead_socket{ my $self = shift; diff --git a/web-site/breadcrumbs/root/src/an_pages_summary_tree.tt b/web-site/breadcrumbs/root/src/an_pages_summary_tree.tt index aa3431e..a48ee82 100644 --- a/web-site/breadcrumbs/root/src/an_pages_summary_tree.tt +++ b/web-site/breadcrumbs/root/src/an_pages_summary_tree.tt @@ -20,7 +20,7 @@ categoria:

[% END %]

[% sec.0 %]

[% FOREACH act IN sec.1 %] -

[% act.0 _ ' (' _ act.2 _ ')' %]

+

[% act.0 _ ' (' _ act.2 _ ')' %]

[% END %] [% END %] diff --git a/web-site/breadcrumbs/root/src/an_pages_view_ads_list.tt b/web-site/breadcrumbs/root/src/an_pages_view_ads_list.tt new file mode 100644 index 0000000..f4a25dd --- /dev/null +++ b/web-site/breadcrumbs/root/src/an_pages_view_ads_list.tt @@ -0,0 +1,2 @@ + +bene ecco qui la lista degli annunci per questa attività. \ No newline at end of file -- 2.11.4.GIT