From d70002dfed6f03365432c41f3113194e80b64127 Mon Sep 17 00:00:00 2001 From: Roy Johnson Date: Wed, 19 Apr 2006 05:31:57 +0000 Subject: [PATCH] Changed default view to display master events only. Changed default view template to control display of events in relation to one another allowing each event's template to control formating of event details. Moved all of the search functionality into it's own view method. Added template for new search method. Fixed label and hover help in add/edit event screen. --- .../wgtemplate_default_ems_search.tmpl | 214 ++++++++++++++++++ .../wgtemplate_default_ems_view.tmpl | 104 +-------- docs/upgrades/upgrade_6.8.8-6.99.0.pl | 1 + .../Asset/Wobject/EventManagementSystem.pm | 92 +++++++- .../English/Asset_EventManagementSystem.pm | 12 + 5 files changed, 316 insertions(+), 107 deletions(-) create mode 100644 docs/upgrades/templates-6.99.0/wgtemplate_default_ems_search.tmpl diff --git a/docs/upgrades/templates-6.99.0/wgtemplate_default_ems_search.tmpl b/docs/upgrades/templates-6.99.0/wgtemplate_default_ems_search.tmpl new file mode 100644 index 000000000..71825476f --- /dev/null +++ b/docs/upgrades/templates-6.99.0/wgtemplate_default_ems_search.tmpl @@ -0,0 +1,214 @@ +#EventManagerTmpl000006 +#title:Default Event Management System Search +#menuTitle:Default Event Management System Search +#url:default-ems-search-template +#namespace:EventManagementSystem_search +#create + + + +



+
+ + + + + +
style="display:none"> + +
Switch To Advanced Search
+
Search Keywords:
+ + +
+ +
style="display:none"> + +
Switch To Basic Search
+ + + + +
+ + + + + +
Add another Filter Field
+ + + +
+ +

+ + + + + + + + + + + class="oddRow" class="evenRow"> + +
+ + + + + +
+
+ + +~~~ + diff --git a/docs/upgrades/templates-6.99.0/wgtemplate_default_ems_view.tmpl b/docs/upgrades/templates-6.99.0/wgtemplate_default_ems_view.tmpl index 881d3d3b7..736d35acb 100644 --- a/docs/upgrades/templates-6.99.0/wgtemplate_default_ems_view.tmpl +++ b/docs/upgrades/templates-6.99.0/wgtemplate_default_ems_view.tmpl @@ -17,99 +17,6 @@
  • - - - -
    style="display:none"> - -
    Switch To Advanced Search
    -
    Search Keywords:
    - - -
    - -
    style="display:none"> - -
    Switch To Basic Search
    - - - - -
    - - - - - -
    Add another Filter Field
    - - - -


    @@ -122,14 +29,7 @@ - class="oddRow" class="evenRow"> - - - - - -
    - +
    @@ -211,4 +111,4 @@ tr.evenRow td { #extendedSearchLayer {display: inline;} - \ No newline at end of file + diff --git a/docs/upgrades/upgrade_6.8.8-6.99.0.pl b/docs/upgrades/upgrade_6.8.8-6.99.0.pl index 98a80f950..db901272e 100644 --- a/docs/upgrades/upgrade_6.8.8-6.99.0.pl +++ b/docs/upgrades/upgrade_6.8.8-6.99.0.pl @@ -650,6 +650,7 @@ create table EventManagementSystem ( checkoutTemplateId varchar(22) binary, managePurchasesTemplateId varchar(22) binary, viewPurchaseTemplateId varchar(22) binary, + searchTemplateId varchar(22) binary, paginateAfter int(11) default 10, groupToAddEvents varchar(22) binary, groupToApproveEvents varchar(22) binary, diff --git a/lib/WebGUI/Asset/Wobject/EventManagementSystem.pm b/lib/WebGUI/Asset/Wobject/EventManagementSystem.pm index 9c1494711..80e812ae5 100644 --- a/lib/WebGUI/Asset/Wobject/EventManagementSystem.pm +++ b/lib/WebGUI/Asset/Wobject/EventManagementSystem.pm @@ -34,7 +34,7 @@ sub _getFieldHash { my %hash; tie %hash, "Tie::IxHash"; - my $i18n = WebGUI::International->new($session,'Asset_EventManagementSystem'); + my $i18n = WebGUI::International->new($self->session,'Asset_EventManagementSystem'); %hash = ( "eventName"=>{ name=>$i18n->get('add/edit event title'), @@ -304,7 +304,6 @@ sub checkConflicts { # my $eventsInCart = $self->getEventsInCart; my $checkSingleEvent = shift; my $eventsInCart = $self->getEventsInScratchCart; - use Data::Dumper; # $self->session->errorHandler->warn(Dumper($eventsInCart)); my @schedule; @@ -424,6 +423,14 @@ sub definition { hoverHelp=>$i18n->get('view purchase template description'), label=>$i18n->get('view purchase template') }, + searchTemplateId =>{ + fieldType=>"template", + defaultValue=>'EventManagerTmpl000006', + tab=>"display", + namespace=>"EventManagementSystem_search", + hoverHelp=>$i18n->get('search template description'), + label=>$i18n->get('search template') + }, paginateAfter =>{ fieldType=>"integer", defaultValue=>10, @@ -1689,8 +1696,8 @@ sub www_editEvent { -name => "eventList", -options => $prerequisiteList, -vertical => 1, - -label => "add/edit event required events", - -hoverHelp => "add/edit event required events description", + -label => $i18n->get("add/edit event required events"), + -hoverHelp => $i18n->get("add/edit event required events description"), -sortByValue => 1 ); @@ -2409,7 +2416,7 @@ sub prepareView { } #------------------------------------------------------------------- -sub view { +sub www_search { my $self = shift; my %var; my $keywords = $self->session->form->get("searchKeywords"); @@ -2619,9 +2626,84 @@ sub view { $p->appendTemplateVars(\%var); $self->buildMenu(\%var); $var{'ems.wobject.dir'} = $self->session->config->get("extrasURL")."/wobject/EventManagementSystem"; + + return $self->session->style->process($self->processTemplate(\%var,$self->getValue("searchTemplateId")),$self->getValue("styleTemplateId")); +} + +#------------------------------------------------------------------- +sub view { + my $self = shift; + my %var; + + # If we're at the view method there is no reason we should have anything in our scratch cart + # so let's empty it to prevent strange and awful things from happening + $self->emptyScratchCart; + $self->session->scratch->delete('EMS_add_purchase_badgeId'); + $self->session->scratch->delete('EMS_add_purchase_events'); + + my $i18n = WebGUI::International->new($self->session,'Asset_EventManagementSystem'); + # Get the products available for sale for this page + my $sql = "select p.productId, p.title, p.description, p.price, p.templateId, e.approved, e.maximumAttendees + from products as p, EventManagementSystem_products as e + where + p.productId = e.productId and approved=1 + and e.assetId =".$self->session->db->quote($self->get("assetId"))." + and p.productId not in (select distinct(productId) from EventManagementSystem_prerequisites)"; + + my $p = WebGUI::Paginator->new($self->session,$self->getUrl,$self->get("paginateAfter")); + $p->setDataByQuery($sql); + my $eventData = $p->getPageData; + my @events; + + #We are getting each events information, passing it to the *events* template and processing it + #The html returned from each events template is returned to the Event Manager Display Template for arranging + #how the events are displayed in relation to one another. + foreach my $event (@$eventData) { + my %eventFields; + + $eventFields{'title'} = $event->{'title'}; + $eventFields{'description'} = $event->{'description'}; + $eventFields{'price'} = $event->{'price'}; + my ($numberRegistered) = $self->session->db->quickArray("select count(*) from EventManagementSystem_registrations as r, EventManagementSystem_purchases as p + where r.purchaseId = p.purchaseId and r.productId=".$self->session->db->quote($event->{'productId'})); + $eventFields{'numberRegistered'} = $numberRegistered; + $eventFields{'maximumAttendees'} = $event->{'maximumAttendees'}; + $eventFields{'seatsRemaining'} = $event->{'maximumAttendees'} - $numberRegistered; + $eventFields{'eventIsFull'} = ($eventFields{'seatsRemaining'} == 0); + + if ($eventFields{'eventIsFull'}) { + $eventFields{'purchase.label'} = "Sold Out";; + } + else { + $eventFields{'purchase.url'} = $self->getUrl('func=addToCart;pid='.$event->{'productId'}); + $eventFields{'purchase.label'} = $i18n->get('add to cart'); + } + push (@events, {'event' => $self->processTemplate(\%eventFields, $event->{'templateId'}) }); + } + $var{'checkout.url'} = $self->getUrl('op=viewCart'); + $var{'checkout.label'} = "Checkout"; + $var{'events_loop'} = \@events; + $var{'paginateBar'} = $p->getBarTraditional; + $var{'manageEvents.url'} = $self->getUrl('func=manageEvents'); + $var{'manageEvents.label'} = $i18n->get('manage events'); + $var{'managePurchases.url'} = $self->getUrl('func=managePurchases'); + $var{'managePurchases.label'} = $i18n->get('manage purchases'); + if ($self->session->user->isInGroup($self->get("groupToManageEvents"))) { + $var{'canManageEvents'} = 1; + } + else { + $var{'canManageEvents'} = 0; + } + $p->appendTemplateVars(\%var); + + my $templateId = $self->get("displayTemplateId"); + return $self->processTemplate(\%var, undef, $self->{_viewTemplate}); } + + + 1; diff --git a/lib/WebGUI/i18n/English/Asset_EventManagementSystem.pm b/lib/WebGUI/i18n/English/Asset_EventManagementSystem.pm index 0c0d98b44..42820e891 100644 --- a/lib/WebGUI/i18n/English/Asset_EventManagementSystem.pm +++ b/lib/WebGUI/i18n/English/Asset_EventManagementSystem.pm @@ -1,6 +1,18 @@ package WebGUI::i18n::English::Asset_EventManagementSystem; our $I18N = { ##hashref of hashes + 'search template' => { + message => q|Search Template|, + lastUpdated => 1131394070, + context => q|Field label for template selector| + }, + + 'search template description' => { + message => q|Controls the layout, look, and appearence of the Event Management System Search Page.|, + lastUpdated => 1131394072, + context => q|Describes this template field selector| + }, + 'add/edit help title' => { message => q|Add/Edit Event Management System|, lastUpdated => 1131394070,