diff --git a/docs/upgrades/upgrade_6.8.5-6.9.0.pl b/docs/upgrades/upgrade_6.8.5-6.9.0.pl index c01357b67..d37dd6c53 100644 --- a/docs/upgrades/upgrade_6.8.5-6.9.0.pl +++ b/docs/upgrades/upgrade_6.8.5-6.9.0.pl @@ -197,6 +197,14 @@ SQL6 #------------------------------------------------- sub addSearchEngine { print "\tUpgrading search engine.\n" unless ($quiet); + $session->db->write("create table search ( + assetId varchar(22) binary not null, + revisionDate bigint not null default 0, + classLimiter text, + searchRoot varchar(22) binary not null default 'PBasset000000000000001', + templateId varchar(22) binary not null default 'PBtmpl0000000000000200', + primary key (assetId,revisionDate) + )"); $session->db->write("create table assetIndex ( assetId varchar(22) binary not null primary key, title varchar(255), diff --git a/etc/WebGUI.conf.original b/etc/WebGUI.conf.original index 7214aacbc..846a61838 100644 --- a/etc/WebGUI.conf.original +++ b/etc/WebGUI.conf.original @@ -145,6 +145,7 @@ assets = WebGUI::Asset::Snippet, \ WebGUI::Asset::Wobject::Poll, \ WebGUI::Asset::Wobject::Product, \ WebGUI::Asset::Wobject::SQLReport, \ + WebGUI::Asset::Wobject::Search, \ WebGUI::Asset::Wobject::Survey, \ WebGUI::Asset::Wobject::WeatherData, \ WebGUI::Asset::Wobject::MultiSearch, \ diff --git a/lib/WebGUI/Asset/Wobject/Search.pm b/lib/WebGUI/Asset/Wobject/Search.pm index aed74265a..fb35a3a8c 100644 --- a/lib/WebGUI/Asset/Wobject/Search.pm +++ b/lib/WebGUI/Asset/Wobject/Search.pm @@ -71,14 +71,16 @@ sub definition { tab=>"properties", hoverHelp=>$i18n->get("search root description"), label=>$i18n->get('search root') - } + }, classLimiter => { fieldType => "checkList", - defaultValue => [], + defaultValue => undef, + vertical=>1, tab=>"properties", hoverHelp=>$i18n->get("class limiter description"), label=>$i18n->get("class limiter"), options=>$session->db->buildHashRef("select distinct(className) from asset") + } ); push(@{$definition}, { assetName=>$i18n->get('assetName'), @@ -126,7 +128,30 @@ sub view { $var{'form_footer'} = WebGUI::Form::formFooter($self->session); $var{'form_submit'} = WebGUI::Form::submit($self->session, {value=>$i18n->get("search")}); $var{'form_keywords'} = WebGUI::Form::text($self->session, {name=>"keywords", value=>$self->session->form->get("keywords")}); - + if ($self->session->form->get("doit")) { + my $search = WebGUI::Search->new($self->session); + my %rules = ( + keywords=>$self->session->form->get("keywords"), +# lineage=>[$self->getValue("searchRoot")] + ); + my @classes = split("\n",$self->get("classLimiter")); +# $rules{classes} = \@classes if (scalar(@classes)); + $search->search(\%rules); + my @results = (); + my $rs = $search->getResultSet; + while (my $data = $rs->hashRef) { + next unless ($self->session->user->userId eq $data->{ownerUserId} || $self->session->user->isInGroup($data->{groupIdView}) || $self->session->user->isInGroup($data->{groupIdEdit})); + push(@results, { + url=>$data->{url}, + title=>$data->{title}, + synposis=>$data->{synopsis}, + }); + } + my $p = WebGUI::Paginator->new($self->session,$self->getUrl); + $p->setDataByArrayRef(\@results); + $p->appendTemplateVars(\%var); + $var{result_set} = $p->getPageData; + } return $self->processTemplate(\%var, undef, $self->{_viewTemplate}); }