Bivio::UI::XHTML::Widget::XLinkURI
# Copyright (c) 2011-2026 bivio Software, Inc. All Rights Reserved. package Bivio::UI::XHTML::Widget::XLinkURI; use strict; use Bivio::Base 'UI.Widget'; use Bivio::UI::ViewLanguageAUTOLOAD; use Scalar::Util (); my($_TI) = b_use('Agent.TaskId'); sub NEW_ARGS { return [qw(facade_label)]; } sub initialize { my($self) = @_; my($l) = $self->initialize_attr('facade_label'); $self->initialize_attr(_uri => $_TI->is_valid_name($l) ? URI({ task_id => $_TI->from_name($l), query => undef, path_info => undef, }) : do { # Weakly capture $self so this code_ref does not form a reference-cycle. Scalar::Util::weaken(my $w = $self); [sub { my($req) = $w->req; return URI( vs_constant( $req, $w->qualify_label( $w->render_simple_attr(facade_label => $req)), ), ); }]; }, ); return; } sub qualify_label { my(undef, $label) = @_; return "xlink_$label"; } sub render { shift->render_attr(_uri => @_); return; } 1;