<!--- jParse --->
<tag.jparse_parse str="#so_slash_string#">
<var GLOBAL.Jp = return>
<var Jp = GLOBAL.Jp>
<if Jp.status NEQ 1>
<tag.bn_layout title="Invalid Media Address | Balloon">
<h3>Invalid Media Address</h3>
<p>
The media address you requested,
<b>#escapeMarkup(replaceNoCase(so_slash_string,"j:",""))#</b>,
is invalid. The media address must be a query
composed of well-formed
<a href="http://docs.joelie.org/Selectors">Joelie selectors</a>.
</p>
<tag.bn_btn val="Back to Balloon" slash="">
<div> </div>
</tag.bn_layout>
<elseif Jp.single NEQ 1>
<tag.bn_layout title="Unsupported Media Query | Balloon">
<h3>Unsupported Media Query</h3>
<p>
Your media query,
<b>#escapeMarkup(replaceNoCase(so_slash_string,"j:",""))#</b>,
has requested a data set that may contain zero, one or more
records. Balloon currently supports only single addresses, ex. "/photo-123".
</p>
<tag.bn_btn val="Back to Balloon" slash="">
<div> </div>
</tag.bn_layout>
<else>
<tag.bn_media_def>
<var GLOBAL.Media_Def = return>
<set j="#Jp.jStr_resolved#">
<setempty>
<tag.bn_layout title="Media Not Found | Balloon">
<h3>Media Not Found</h3>
<p>
Balloon could not find the media addressed by
<b>#escapeMarkup(replaceNoCase(so_slash_string,"j:",""))#</b>.
Please try another query.
</p>
<tag.bn_btn val="Back to Balloon" slash="">
<div> </div>
</tag.bn_layout>
</setempty>
<setcrawl>
<real_person>
<tag.bn_estate_def>
</real_person>
<var _ttl = "/#set.tbl#-#set.id#">
<if trim(set.title) NEQ "">
<var _ttl = escapeMarkup(set.title)>
<elseif trim(set.gutitle) NEQ "">
<var _ttl = "/#set.tbl#-#lcase(set.gutitle)#">
</if>
<var Owner = QueryNew('id')>
<set j="/user-#set.user_id#.balloon">
<setcrawl>
<var Owner = set>
</setcrawl>
</set>
<if Owner.recordcount EQ 0 OR Owner.balloon EQ "" OR Owner.name EQ "">
<!--- no owner, or owner is not a *real* balloon user --->
<tag.bn_layout title="Owner Not Found | Balloon">
<h3>Owner Not Found</h3>
<p>
Balloon could not find the
owner of the media addressed by
<b>#escapeMarkup(replaceNoCase(so_slash_string,"j:",""))#</b>.
Please try another query.
</p>
<tag.bn_btn val="Back to Balloon" slash="">
<div> </div>
</tag.bn_layout>
<else>
<var Txt = StructNew()>
<var Txt.name = "/user-#Owner.id#">
<if trim(Owner.name) NEQ "">
<var Txt.name = escapeMarkup(Owner.name)>
</if>
<var Txt.fname = listFirst(Owner.name,' ')>
<var Txt.has = "has">
<var Txt.is = "is">
<var Txt.fnames = listFirst(Owner.name,' ')>
<if right(Txt.fnames,1) EQ "s">
<var Txt.fnames = Txt.fnames & "'">
<else>
<var Txt.fnames = Txt.fnames & "'s">
</if>
<if Owner.id EQ client_id AND client_id GT 1>
<var Txt.fname = "You">
<var Txt.has = "have">
<var Txt.is = "are">
<var Txt.fnames = "Your">
</if>
<var _wide = 0>
<if listFindNoCase(GLOBAL.Media_Def._tbls,set.tbl) GT 0>
<var _wide = 1>
</if>
<!--- tack on a nav balloon --->
<var GLOBAL.Def.Style.layout.balloons[arrayLen(GLOBAL.Def.Style.layout.balloons)+1] = deSerializeJSON('{
"balloon": "#Owner.balloon#",
"slash": "#Owner.id#/media"
}')>
<tag.bn_layout title="#_ttl# by #Txt.name# | Balloon" ping_mode="0" wide="#_wide#">
<tag.bn_media_single>
</tag.bn_layout>
</if>
</setcrawl>
</set>
</if>