[tools] testbot/cgi: Replace CollectionPage with SimpleCollectionPage.
The old CollectionPage is not used anymore so replace it with the new implementation. This means CollectionBlockForPage and the CallXxx() trampolines are not needed anymore either. Signed-off-by: Francois Gouget <fgouget(a)codeweavers.com> --- Removes quite a bit of code. Yay! --- .../lib/ObjectModel/CGI/CollectionBlock.pm | 169 +++-------------- .../ObjectModel/CGI/CollectionBlockForPage.pm | 154 --------------- testbot/lib/ObjectModel/CGI/CollectionPage.pm | 179 ++++-------------- .../ObjectModel/CGI/SimpleCollectionPage.pm | 138 -------------- testbot/web/JobDetails.pl | 4 +- testbot/web/PatchesList.pl | 4 +- testbot/web/admin/BranchesList.pl | 4 +- testbot/web/admin/UsersList.pl | 4 +- testbot/web/admin/VMsList.pl | 4 +- 9 files changed, 73 insertions(+), 587 deletions(-) delete mode 100644 testbot/lib/ObjectModel/CGI/CollectionBlockForPage.pm delete mode 100644 testbot/lib/ObjectModel/CGI/SimpleCollectionPage.pm diff --git a/testbot/lib/ObjectModel/CGI/CollectionBlock.pm b/testbot/lib/ObjectModel/CGI/CollectionBlock.pm index cbe22f90f..40ad61b2b 100644 --- a/testbot/lib/ObjectModel/CGI/CollectionBlock.pm +++ b/testbot/lib/ObjectModel/CGI/CollectionBlock.pm @@ -37,32 +37,6 @@ Also, because this is only one part of a web page, some methods, such as those dealing with errors, are delegated to the EnclosingPage object which must implement the ObjectModel::CGI::Page interface. -Other methods are designed so they can be overridden by the enclosing page as -a way to allow it to modify how the collection block looks or behaves. These -methods can be identified by their CallXxx() trampoline. The override -mechanism works as follows: -- The CollectionBlock class and any subclass should never call overridable - methods directly. Instead they should call the corresponding CallXxx() - trampoline. -- The CollectionBlock class provides a default CallXxx() implementation which - simply calls the corresponding Xxx() method. This allows using the - CollectionBlock as is. -- Pages that want to customize the CollectionBlock behavior should use the - CollectionBlockForPage class instead. That class provides an alternative - implementation for each CallXxx(...) method that calls - $self->{EnclosingPage}->Xxx($CollectionBlock, ...). Note how the Xxx() - method in the enclosing page gets an extra parameter so it can both know - which collection block it received the call from, and call the collection - block methods. -- The page should in turn provide implementations for all the Xxx() methods. - The simplest way to do so is for such pages use CollectionPage as their base - class. CollectionPage provides default Xxx($CollectionBlock,...) - implementations that just reflect these calls back to - $CollectionBlock->Xxx(). - -Of course an alternative way for a page to customize the collection block -behavior is to subclass it and use that subclass instead. - =cut package ObjectModel::CGI::CollectionBlock; @@ -118,13 +92,6 @@ sub Create($$@) return ObjectModel::CGI::CollectionBlock->new(@_); } -sub CallGetDetailsPage($) -{ - my ($self) = @_; - - return $self->GetDetailsPage(); -} - sub GetDetailsPage($) { my ($self) = @_; @@ -144,14 +111,14 @@ sub escapeHTML($$) # Error handling framework # -sub CallGenerateErrorDiv($) +sub GenerateErrorDiv($) { my ($self) = @_; $self->{EnclosingPage}->GenerateErrorDiv(); } -sub CallGenerateErrorPopup($) +sub GenerateErrorPopup($) { my ($self) = @_; @@ -163,13 +130,6 @@ sub CallGenerateErrorPopup($) # Individual item property support # -sub CallDisplayProperty($$) -{ - my ($self, $PropertyDescriptor) = @_; - - return $self->DisplayProperty($PropertyDescriptor); -} - =pod =over 12 @@ -190,13 +150,6 @@ sub DisplayProperty($$) return $PropertyDescriptor->GetClass ne "Detailref"; } -sub CallSortKeys($$) -{ - my ($self, $Keys) = @_; - - return $self->SortKeys($Keys); -} - sub SortKeys($$) { my ($self, $Keys) = @_; @@ -204,13 +157,6 @@ sub SortKeys($$) return $Keys; } -sub CallGetDisplayValue($$$) -{ - my ($self, $Item, $PropertyDescriptor) = @_; - - return $self->GetDisplayValue($Item, $PropertyDescriptor); -} - sub GetDisplayValue($$$) { my ($self, $Item, $PropertyDescriptor) = @_; @@ -258,13 +204,6 @@ sub GetDisplayValue($$$) return $Value; } -sub CallGetEscapedDisplayValue($$$) -{ - my ($self, $Item, $PropertyDescriptor) = @_; - - return $self->GetEscapedDisplayValue($Item, $PropertyDescriptor); -} - sub GetEscapedDisplayValue($$$) { my ($self, $Item, $PropertyDescriptor) = @_; @@ -286,8 +225,7 @@ sub GetEscapedDisplayValue($$$) } else { - $Value = $self->escapeHTML($self->CallGetDisplayValue($Item, - $PropertyDescriptor)); + $Value = $self->escapeHTML($self->GetDisplayValue($Item, $PropertyDescriptor)); } return $Value; @@ -298,13 +236,6 @@ sub GetEscapedDisplayValue($$$) # Item cell generation # -sub CallGenerateHeaderCell($$) -{ - my ($self, $PropertyDescriptor) = @_; - - return $self->GenerateHeaderCell($PropertyDescriptor); -} - sub GenerateHeaderCell($$) { my ($self, $PropertyDescriptor) = @_; @@ -312,13 +243,6 @@ sub GenerateHeaderCell($$) "</th>\n"; } -sub CallGenerateDataCell($$$$) -{ - my ($self, $Item, $PropertyDescriptor, $DetailsPage) = @_; - - return $self->GenerateDataCell($Item, $PropertyDescriptor, $DetailsPage); -} - sub GenerateDataCell($$$$) { my ($self, $Item, $PropertyDescriptor, $DetailsPage) = @_; @@ -347,7 +271,7 @@ sub GenerateDataCell($$$$) } print "<a href='", $self->escapeHTML($Query), "'>"; } - print $self->CallGetEscapedDisplayValue($Item, $PropertyDescriptor); + print $self->GetEscapedDisplayValue($Item, $PropertyDescriptor); if ($NeedLink) { print "</a>"; @@ -360,13 +284,6 @@ sub GenerateDataCell($$$$) # Collection table generation # -sub CallGenerateFormStart($) -{ - my ($self) = @_; - - $self->GenerateFormStart(); -} - sub GenerateFormStart($) { my ($self) = @_; @@ -384,13 +301,6 @@ sub GenerateFormStart($) } } -sub CallGenerateHeaderRow($$$) -{ - my ($self, $PropertyDescriptors, $ItemActions) = @_; - - $self->GenerateHeaderRow($PropertyDescriptors, $ItemActions); -} - sub GenerateHeaderRow($$$) { my ($self, $PropertyDescriptors, $ItemActions) = @_; @@ -402,9 +312,9 @@ sub GenerateHeaderRow($$$) } foreach my $PropertyDescriptor (@$PropertyDescriptors) { - if ($self->CallDisplayProperty($PropertyDescriptor)) + if ($self->DisplayProperty($PropertyDescriptor)) { - $self->CallGenerateHeaderCell($PropertyDescriptor); + $self->GenerateHeaderCell($PropertyDescriptor); } } @@ -419,13 +329,6 @@ sub SelName($$) return "sel_" . $Key; } -sub CallGenerateDataRow($$$$$$) -{ - my ($self, $Item, $PropertyDescriptors, $DetailsPage, $Class, $ItemActions) = @_; - - $self->GenerateDataRow($Item, $PropertyDescriptors, $DetailsPage, $Class, $ItemActions); -} - sub GenerateDataRow($$$$$$) { my ($self, $Item, $PropertyDescriptors, $DetailsPage, $Class, $ItemActions) = @_; @@ -438,21 +341,14 @@ sub GenerateDataRow($$$$$$) } foreach my $PropertyDescriptor (@$PropertyDescriptors) { - if ($self->CallDisplayProperty($PropertyDescriptor)) + if ($self->DisplayProperty($PropertyDescriptor)) { - $self->CallGenerateDataCell($Item, $PropertyDescriptor, $DetailsPage); + $self->GenerateDataCell($Item, $PropertyDescriptor, $DetailsPage); } } print "</tr>\n"; } -sub CallGenerateFormEnd($) -{ - my ($self) = @_; - - $self->GenerateFormEnd(); -} - sub GenerateFormEnd($) { #my ($self) = @_; @@ -503,26 +399,26 @@ EOF } print "<div class='CollectionBlock'>\n"; - $self->CallGenerateFormStart(); - $self->CallGenerateErrorDiv(); + $self->GenerateFormStart(); + $self->GenerateErrorDiv(); print "<table border='0' cellpadding='5' cellspacing='0' summary='" . "Overview of " . $Collection->GetCollectionName() . "'>\n"; print "<thead>\n"; - my $ItemActions = $self->CallGetItemActions(); - $self->CallGenerateHeaderRow($PropertyDescriptors, $ItemActions); + my $ItemActions = $self->GetItemActions(); + $self->GenerateHeaderRow($PropertyDescriptors, $ItemActions); print "</thead>\n"; print "<tbody>\n"; - my $DetailsPage = $self->CallGetDetailsPage(); + my $DetailsPage = $self->GetDetailsPage(); my $Row = 0; - my $Keys = $self->CallSortKeys($self->{Collection}->GetKeys()); + my $Keys = $self->SortKeys($self->{Collection}->GetKeys()); foreach my $Key (@$Keys) { my $Class = ($Row % 2) == 0 ? "even" : "odd"; my $Item = $self->{Collection}->GetItem($Key); - $self->CallGenerateDataRow($Item, $PropertyDescriptors, $DetailsPage, - $Class, $ItemActions); + $self->GenerateDataRow($Item, $PropertyDescriptors, $DetailsPage, + $Class, $ItemActions); $Row++; } if (@$Keys == 0) @@ -563,7 +459,7 @@ EOF print "</div>\n"; } - my $Actions = $self->CallGetActions(); + my $Actions = $self->GetActions(); if (@$Actions != 0) { print "<div class='CollectionBlockActions'>\n"; @@ -574,8 +470,8 @@ EOF print "</div>\n"; } - $self->CallGenerateErrorPopup(undef); - $self->CallGenerateFormEnd(); + $self->GenerateErrorPopup(undef); + $self->GenerateFormEnd(); print "</div>\n"; } @@ -584,13 +480,6 @@ EOF # Per-item actions handling # -sub CallGetItemActions($) -{ - my ($self) = @_; - - return $self->GetItemActions(); -} - =pod =over 12 @@ -613,13 +502,6 @@ sub GetItemActions($) return ["Delete"]; } -sub CallOnItemAction($$$) -{ - my ($self, $Item, $Action) = @_; - - return $self->OnItemAction($Item, $Action); -} - =pod =over 12 @@ -661,13 +543,6 @@ sub OnItemAction($$$) # Actions handling # -sub CallGetActions($) -{ - my ($self) = @_; - - return $self->GetActions(); -} - =pod =over 12 @@ -685,7 +560,7 @@ sub GetActions($) { my ($self) = @_; - return $self->CallGetDetailsPage() ? + return $self->GetDetailsPage() ? ["Add ". $self->{Collection}->GetItemName()] : []; } @@ -714,7 +589,7 @@ sub OnAction($$) if ($Action eq "Add " . $self->{Collection}->GetItemName()) { - my $Target = $self->CallGetDetailsPage(); + my $Target = $self->GetDetailsPage(); my ($MasterColNames, $MasterColValues) = $self->{Collection}->GetMasterCols(); if (defined($MasterColNames)) { @@ -732,7 +607,7 @@ sub OnAction($$) if (defined $self->{EnclosingPage}->GetParam($self->SelName($Key))) { my $Item = $self->{Collection}->GetItem($Key); - return 0 if (!$self->CallOnItemAction($Item, $Action)); + return 0 if (!$self->OnItemAction($Item, $Action)); } } return 1; diff --git a/testbot/lib/ObjectModel/CGI/CollectionBlockForPage.pm b/testbot/lib/ObjectModel/CGI/CollectionBlockForPage.pm deleted file mode 100644 index 5bdc7d32e..000000000 --- a/testbot/lib/ObjectModel/CGI/CollectionBlockForPage.pm +++ /dev/null @@ -1,154 +0,0 @@ -# -*- Mode: Perl; perl-indent-level: 2; indent-tabs-mode: nil -*- -# Collection block for list pages -# -# Copyright 2009 Ge van Geldorp -# Copyright 2014, 2017-2018, 2022 Francois Gouget -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - -use strict; - -package ObjectModel::CGI::CollectionBlockForPage; - -=head1 NAME - -ObjectModel::CGI::CollectionBlockForPage - Collection block for list pages - -Allows the CollectionPage class to provide implementations for most of the -CollectionBlock methods. See CollectionBlock for details. - -=cut - -use ObjectModel::CGI::CollectionBlock; -our @ISA = qw(ObjectModel::CGI::CollectionBlock); - - -sub CallGetDetailsPage($) -{ - my ($self) = @_; - - return $self->{EnclosingPage}->GetDetailsPage($self); -} - - -# -# Item properties support -# - -sub CallDisplayProperty($$) -{ - my ($self, $PropertyDescriptor) = @_; - - return $self->{EnclosingPage}->DisplayProperty($self, $PropertyDescriptor); -} - -sub CallSortKeys($$) -{ - my ($self, $Keys) = @_; - - return $self->{EnclosingPage}->SortKeys($self, $Keys); -} - -sub CallGetDisplayValue($$$) -{ - my ($self, $Item, $PropertyDescriptor) = @_; - - return $self->{EnclosingPage}->GetDisplayValue($self, $Item, $PropertyDescriptor); -} - - -# -# Item cell generation -# - -sub CallGenerateHeaderCell($$) -{ - my ($self, $PropertyDescriptor) = @_; - - return $self->{EnclosingPage}->GenerateHeaderCell($self, $PropertyDescriptor); -} - -sub CallGenerateDataCell($$$$) -{ - my ($self, $Item, $PropertyDescriptor, $DetailsPage) = @_; - - return $self->{EnclosingPage}->GenerateDataCell($self, $Item, $PropertyDescriptor, $DetailsPage); -} - - -# -# Collection table generation -# - -sub CallGenerateFormStart($) -{ - my ($self) = @_; - - $self->{EnclosingPage}->GenerateFormStart($self); -} - -sub CallGenerateHeaderRow($$$) -{ - my ($self, $PropertyDescriptors, $ItemActions) = @_; - - $self->{EnclosingPage}->GenerateHeaderRow($self, $PropertyDescriptors, $ItemActions); -} - -sub CallGenerateDataRow($$$$$$) -{ - my ($self, $Item, $PropertyDescriptors, $DetailsPage, $Class, $ItemActions) = @_; - - $self->{EnclosingPage}->GenerateDataRow($self, $Item, $PropertyDescriptors, $DetailsPage, $Class, $ItemActions); -} - -sub CallGenerateFormEnd($) -{ - my ($self) = @_; - - $self->{EnclosingPage}->GenerateFormEnd($self); -} - - -# -# Per-item actions handling -# - -sub CallGetItemActions($) -{ - my ($self) = @_; - - return $self->{EnclosingPage}->GetItemActions($self); -} - -sub CallOnItemAction($$$) -{ - my ($self, $Item, $Action) = @_; - - return $self->{EnclosingPage}->OnItemAction($self, $Item, $Action); -} - - -# -# Actions handling -# - -sub CallGetActions($) -{ - my ($self) = @_; - - return $self->{EnclosingPage}->GetActions($self); -} - -1; diff --git a/testbot/lib/ObjectModel/CGI/CollectionPage.pm b/testbot/lib/ObjectModel/CGI/CollectionPage.pm index ddbbd663e..2de667b89 100644 --- a/testbot/lib/ObjectModel/CGI/CollectionPage.pm +++ b/testbot/lib/ObjectModel/CGI/CollectionPage.pm @@ -26,106 +26,65 @@ package ObjectModel::CGI::CollectionPage; ObjectModel::CGI::CollectionPage - Base class for list pages -Generates a page containing a single collection block. +A page containing a single collection block. -It uses the CollectionBlockForPage class which means CollectionPage implements -both the ObjectModel::CGI::Page and ObjectModel::CGI::CollectionBlock -interfaces. The latter allows it to customize the collection block without -having to define a CollectionBlock subclass. +The CollectionPage instances have the following properties: +=over +=item Collection +The collection containing the items to be shown in the CollectionBlock widget. + +=item CollectionBlock +The widget showing the items in the specified collection. + +=item ActionPerformed +Set to true if an action was specified and succeeded. +=back =cut use ObjectModel::CGI::Page; our @ISA = qw(ObjectModel::CGI::Page); -use ObjectModel::CGI::CollectionBlockForPage; - - -sub _initialize($$$$) -{ - my ($self, $Request, $RequiredRole, $Collection) = @_; - - $self->{Collection} = $Collection; - - $self->SUPER::_initialize($Request, $RequiredRole); -} - -sub CreateCollectionBlock($$) -{ - my ($self, $Collection) = @_; - - return ObjectModel::CGI::CollectionBlockForPage->new($Collection, $self); -} - -sub GetDetailsPage($$) -{ - my ($self, $CollectionBlock) = @_; - - return $CollectionBlock->GetDetailsPage(); -} - - -# -# Item properties support -# - -sub DisplayProperty($$$) -{ - my ($self, $CollectionBlock, $PropertyDescriptor) = @_; - - return $CollectionBlock->DisplayProperty($PropertyDescriptor); -} - -sub SortKeys($$$) -{ - my ($self, $CollectionBlock, $Keys) = @_; - - return $CollectionBlock->SortKeys($Keys); -} +# Use require to avoid overriding Page::new() +require ObjectModel::CGI::CollectionBlock; -sub GetDisplayValue($$$$) -{ - my ($self, $CollectionBlock, $Item, $PropertyDescriptor) = @_; - - return $CollectionBlock->GetDisplayValue($Item, $PropertyDescriptor); -} +=pod +=over 12 -# -# Item cell generation -# - -sub GenerateHeaderCell($$$) -{ - my ($self, $CollectionBlock, $PropertyDescriptor) = @_; +=item C<_initialize()> - $CollectionBlock->GenerateHeaderCell($PropertyDescriptor); -} +Sets up the new page object. -sub GenerateDataCell($$$$$) -{ - my ($self, $CollectionBlock, $Item, $PropertyDescriptor, $DetailsPage) = @_; +Parameters: +=over - $CollectionBlock->GenerateDataCell($Item, $PropertyDescriptor, $DetailsPage); -} +=item Request +=item RequiredRole +See Page::new(). +=item Collection +This is the collection of items that should be shown in the CollectionBlock +widget. -# -# Collection table generation -# +=item BlockCreator +If undefined the page will create an instance of the CollectionBlock class. +Otherwise it will use this function to create the CollectionBlock widget, thus +enabling use of a CollectionBlock subclass. -sub GenerateHeaderRow($$$$) -{ - my ($self, $CollectionBlock, $PropertyDescriptors, $ItemActions) = @_; +=back - $CollectionBlock->GenerateHeaderRow($PropertyDescriptors, $ItemActions); -} +=back +=cut -sub GenerateDataRow($$$$$$$) +sub _initialize($$$$;$) { - my ($self, $CollectionBlock, $Item, $PropertyDescriptors, $DetailsPage, $Class, $ItemActions) = @_; + my ($self, $Request, $RequiredRole, $Collection, $BlockCreator) = @_; - $CollectionBlock->GenerateDataRow($Item, $PropertyDescriptors, $DetailsPage, $Class, $ItemActions); + $self->{Collection} = $Collection; + $BlockCreator ||= \&ObjectModel::CGI::CollectionBlock::Create; + $self->{CollectionBlock} = &$BlockCreator($Collection, $self); + $self->SUPER::_initialize($Request, $RequiredRole); } @@ -153,13 +112,6 @@ sub GenerateTitle($) } } -sub GenerateFormStart($$) -{ - my ($self, $CollectionBlock) = @_; - - $CollectionBlock->GenerateFormStart(); -} - sub GenerateBody($) { my ($self) = @_; @@ -167,69 +119,20 @@ sub GenerateBody($) print "<div class='CollectionPageBody'>\n"; $self->GenerateTitle(); print "<div class='Content'>\n"; - my $CollectionBlock = $self->CreateCollectionBlock($self->{Collection}); - $CollectionBlock->GenerateList(); + $self->{CollectionBlock}->GenerateList(); print "</div>\n"; print "</div>\n"; } -sub GenerateFormEnd($$) -{ - my ($self, $CollectionBlock) = @_; - - $CollectionBlock->GenerateFormEnd(); -} - sub GeneratePage($) { my ($self) = @_; if ($self->GetParam("Action")) { - my $CollectionBlock = $self->CreateCollectionBlock($self->{Collection}); - $self->{ActionPerformed} = $self->OnAction($CollectionBlock, - $self->GetParam("Action")); + $self->{ActionPerformed} = $self->{CollectionBlock}->OnAction($self->GetParam("Action")); } - $self->SUPER::GeneratePage(); } - -# -# Per-item actions handling -# - -sub GetItemActions($$) -{ - my ($self, $CollectionBlock) = @_; - - return $CollectionBlock->GetItemActions(); -} - -sub OnItemAction($$$$) -{ - my ($self, $CollectionBlock, $Item, $Action) = @_; - - return $CollectionBlock->OnItemAction($Item, $Action); -} - - -# -# Actions handling -# - -sub GetActions($$) -{ - my ($self, $CollectionBlock) = @_; - - return $CollectionBlock->GetActions(); -} - -sub OnAction($$$) -{ - my ($self, $CollectionBlock, $Action) = @_; - - $CollectionBlock->OnAction($Action); -} - 1; diff --git a/testbot/lib/ObjectModel/CGI/SimpleCollectionPage.pm b/testbot/lib/ObjectModel/CGI/SimpleCollectionPage.pm deleted file mode 100644 index 76e4d5195..000000000 --- a/testbot/lib/ObjectModel/CGI/SimpleCollectionPage.pm +++ /dev/null @@ -1,138 +0,0 @@ -# -*- Mode: Perl; perl-indent-level: 2; indent-tabs-mode: nil -*- -# Base class for list pages -# -# Copyright 2009 Ge van Geldorp -# Copyright 2014, 2017-2018, 2022 Francois Gouget -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - -use strict; - -package ObjectModel::CGI::SimpleCollectionPage; - -=head1 NAME - -ObjectModel::CGI::SimpleCollectionPage - Base class for list pages - -A page containing a single collection block. - -The SimpleCollectionPage instances have the following properties: -=over -=item Collection -The collection containing the items to be shown in the CollectionBlock widget. - -=item CollectionBlock -The widget showing the items in the specified collection. - -=item ActionPerformed -Set to true if an action was specified and succeeded. -=back - -=cut - -use ObjectModel::CGI::Page; -our @ISA = qw(ObjectModel::CGI::Page); - -# Use require to avoid overriding Page::new() -require ObjectModel::CGI::CollectionBlock; - - -=pod -=over 12 - -=item C<_initialize()> - -Sets up the new page object. - -Parameters: -=over - -=item Request -=item RequiredRole -See Page::new(). - -=item Collection -This is the collection of items that should be shown in the CollectionBlock -widget. - -=item BlockCreator -If undefined the page will create an instance of the CollectionBlock class. -Otherwise it will use this function to create the CollectionBlock widget, thus -enabling use of a CollectionBlock subclass. - -=back - -=back -=cut - -sub _initialize($$$$;$) -{ - my ($self, $Request, $RequiredRole, $Collection, $BlockCreator) = @_; - - $self->{Collection} = $Collection; - $BlockCreator ||= \&ObjectModel::CGI::CollectionBlock::Create; - $self->{CollectionBlock} = &$BlockCreator($Collection, $self); - $self->SUPER::_initialize($Request, $RequiredRole); -} - - -# -# HTML page generation -# - -sub GetTitle($) -{ - my ($self) = @_; - - my $Title = ucfirst($self->{Collection}->GetCollectionName()); - $Title =~ s/([a-z])([A-Z])/$1 $2/g; - return $Title; -} - -sub GenerateTitle($) -{ - my ($self) = @_; - - my $Title = $self->GetTitle(); - if ($Title) - { - print "<h1 id='PageTitle'>", $self->escapeHTML($Title), "</h1>\n"; - } -} - -sub GenerateBody($) -{ - my ($self) = @_; - - print "<div class='CollectionPageBody'>\n"; - $self->GenerateTitle(); - print "<div class='Content'>\n"; - $self->{CollectionBlock}->GenerateList(); - print "</div>\n"; - print "</div>\n"; -} - -sub GeneratePage($) -{ - my ($self) = @_; - - if ($self->GetParam("Action")) - { - $self->{ActionPerformed} = $self->{CollectionBlock}->OnAction($self->GetParam("Action")); - } - $self->SUPER::GeneratePage(); -} - -1; diff --git a/testbot/web/JobDetails.pl b/testbot/web/JobDetails.pl index ccd40443a..ae99b212c 100644 --- a/testbot/web/JobDetails.pl +++ b/testbot/web/JobDetails.pl @@ -300,8 +300,8 @@ sub OnAction($$) package JobDetailsPage; -use ObjectModel::CGI::SimpleCollectionPage; -our @ISA = qw(ObjectModel::CGI::SimpleCollectionPage); +use ObjectModel::CGI::CollectionPage; +our @ISA = qw(ObjectModel::CGI::CollectionPage); use URI::Escape; diff --git a/testbot/web/PatchesList.pl b/testbot/web/PatchesList.pl index e756a76ff..49e16d8d2 100644 --- a/testbot/web/PatchesList.pl +++ b/testbot/web/PatchesList.pl @@ -79,10 +79,10 @@ sub GetActions($) package main; -use ObjectModel::CGI::SimpleCollectionPage; +use ObjectModel::CGI::CollectionPage; use WineTestBot::Patches; my $Request = shift; -my $Page = ObjectModel::CGI::SimpleCollectionPage->new($Request, "", CreatePatches(), \&PatchesBlock::Create); +my $Page = ObjectModel::CGI::CollectionPage->new($Request, "", CreatePatches(), \&PatchesBlock::Create); $Page->SetRefreshInterval(60); $Page->GeneratePage(); diff --git a/testbot/web/admin/BranchesList.pl b/testbot/web/admin/BranchesList.pl index 037023762..27d17fa57 100644 --- a/testbot/web/admin/BranchesList.pl +++ b/testbot/web/admin/BranchesList.pl @@ -22,9 +22,9 @@ use strict; package main; -use ObjectModel::CGI::SimpleCollectionPage; +use ObjectModel::CGI::CollectionPage; use WineTestBot::Branches; my $Request = shift; -my $Page = ObjectModel::CGI::SimpleCollectionPage->new($Request, "admin", CreateBranches()); +my $Page = ObjectModel::CGI::CollectionPage->new($Request, "admin", CreateBranches()); $Page->GeneratePage(); diff --git a/testbot/web/admin/UsersList.pl b/testbot/web/admin/UsersList.pl index 08ae5bffb..f54def261 100644 --- a/testbot/web/admin/UsersList.pl +++ b/testbot/web/admin/UsersList.pl @@ -126,9 +126,9 @@ sub OnItemAction($$$) package main; -use ObjectModel::CGI::SimpleCollectionPage; +use ObjectModel::CGI::CollectionPage; use WineTestBot::Users; my $Request = shift; -my $Page = ObjectModel::CGI::SimpleCollectionPage->new($Request, "admin", CreateUsers(), \&UsersBlock::Create); +my $Page = ObjectModel::CGI::CollectionPage->new($Request, "admin", CreateUsers(), \&UsersBlock::Create); $Page->GeneratePage(); diff --git a/testbot/web/admin/VMsList.pl b/testbot/web/admin/VMsList.pl index d957b4472..cfd5b91f5 100644 --- a/testbot/web/admin/VMsList.pl +++ b/testbot/web/admin/VMsList.pl @@ -73,9 +73,9 @@ sub OnItemAction($$$) package main; -use ObjectModel::CGI::SimpleCollectionPage; +use ObjectModel::CGI::CollectionPage; use WineTestBot::VMs; my $Request = shift; -my $Page = ObjectModel::CGI::SimpleCollectionPage->new($Request, "admin", CreateVMs(), \&VMsBlock::Create); +my $Page = ObjectModel::CGI::CollectionPage->new($Request, "admin", CreateVMs(), \&VMsBlock::Create); $Page->GeneratePage(); -- 2.30.2
participants (1)
-
Francois Gouget