Bivio::UI::XHTML::Widget::SearchForm
# Copyright (c) 2008-2009 bivio Software, Inc. All Rights Reserved.
# $Id$
package Bivio::UI::XHTML::Widget::SearchForm;
use strict;
use Bivio::Base 'XHTMLWidget.Form';
use Bivio::UI::ViewLanguageAUTOLOAD;
my($_SEARCH_LIST) = b_use('Agent.TaskId')->SEARCH_LIST;
my($_GROUP_SEARCH_LIST) = b_use('Agent.TaskId')->GROUP_SEARCH_LIST;
sub initialize {
my($self) = @_;
$self->map_invoke(put_unless_exists => [
[action => [sub {
my($req) = shift->req;
return $req->format_stateless_uri({
task_id => $req->get('auth_realm')->has_owner
? $_GROUP_SEARCH_LIST : $_SEARCH_LIST,
});
}]],
[form_class => 'SearchForm'],
[want_hidden_fields => 0],
[form_method => 'GET'],
[value => sub {
return Join([
ClearOnFocus(
Text({
field => 'search',
size => $self->get_or_default(text_size => 30),
}),
b_use('Model.' . $self->get('form_class'))
->CLEAR_ON_FOCUS_HINT,
),
$self->get_or_default(image_form_button =>
ImageFormButton(qw(ok_button magnifier go))),
DIV_b_realm_only(
Checkbox({
field => 'b_realm_only',
label => Prose(vs_text(qw(SearchForm b_realm_only))),
control => [[qw(->req auth_realm)], '->has_owner'],
}),
{control => $self->get_or_default(
'show_b_realm_only',
[qw(auth_realm type ->is_group)],
)},
),
]);
}],
[class => 'search'],
]);
return shift->SUPER::initialize(@_);
}
sub internal_new_args {
# Implements positional argument parsing for L<new|"new">.
return shift->internal_compute_new_args([qw(value href ?class)], \@_);
}
1;