<HTML><HEAD></HEAD>
<BODY dir=ltr>
<DIV dir=ltr>
<DIV style="FONT-FAMILY: 'Arial'; COLOR: #000000; FONT-SIZE: 10pt">
<DIV>Unless you have some crazy old version of Geoserver, you do NOT need to 
create a template on the server side. Just make the infoformat parameter “JSON” 
to get back GeoJSON rather than text/html.</DIV>
<DIV>I’ve accomplished what you are trying to do on several projects. Keep in 
mind that the GeoExt popup inherits from Ext.Window so you should configure the 
contents just as you would for that.</DIV>
<DIV>&nbsp;</DIV>
<DIV>What I do is:</DIV>
<DIV>1. create XTemplates, either in hidden markup or in a separate js 
file</DIV>
<DIV>2. key the templates by the featureType (either as the div id or as a 
javascript object key) </DIV>
<DIV>3. apply the appropriate template for each feature returned</DIV>
<DIV>4. create a GeoExt popup with the HTML created in step 3 inserted in the 
correct place</DIV>
<DIV>&nbsp;</DIV>
<DIV>So your GFI handler would be something like this:</DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT style="FONT-SIZE: 9.8pt">&gt; getfeatureinfo: function(e) 
{<BR>if(e.features &amp;&amp; e.features.length){</FONT></DIV>
<DIV>var results = {};</DIV>
<DIV>//Loop through the different features, apply templates, and store results 
in a featureType keyed object</DIV>
<DIV>Ext.each(e.features,function(feat){</DIV>
<DIV>&nbsp;&nbsp; var type = feat.fid.split(‘.’)[0];</DIV>
<DIV>&nbsp;&nbsp; if(!results[type]){results[type]=[]}</DIV>
<DIV>&nbsp;&nbsp; 
results[type].push(MyTemplates[type].apply(feat.attributes));</DIV>
<DIV>});</DIV>
<DIV>var popItems = [];</DIV>
<DIV>//Loop through returned featureTypes and create a panel for each one to put 
into the </DIV>
<DIV>//popup’s accordion layout</DIV>
<DIV>Ext.iterate(results,function(ftype,vals){</DIV>
<DIV>&nbsp;&nbsp; var panel = {</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; title:ftype,</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
html:’&lt;div&gt;’+vals.join(‘&lt;/div&gt;&lt;div&gt;’)+’&lt;/div&gt;’,</DIV>
<DIV>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; width:400}</DIV>
<DIV>&nbsp;&nbsp; popItems.push(panel)</DIV>
<DIV>});</DIV>
<DIV><FONT style="FONT-SIZE: 9.8pt">&gt; new GeoExt.Popup({<BR>&gt; title: 
"Position:<BR>&gt; "+mappanel.map.getLonLatFromPixel(e.xy).transform(epsg900913, 
epsg4326),<BR>&gt; width: 400,<BR>&gt; autoHeight: true,<BR>&gt; layout: 
'accordion',<BR>&gt; bodyStyle: 
'background-color:#FFF;,font-size:14px;',<BR>&gt; autoScroll: true,<BR>&gt; 
maximizable: true,<BR>&gt; map: mappanel.map,<BR>&gt; lonlat: 
mappanel.map.getLonLatFromPixel(e.xy),<BR>&gt; unpinnable:true,<BR>&gt; 
anchored: true,<BR>&gt; shadow: true,<BR><FONT 
size=2>items:popItems,</FONT></FONT></DIV>
<DIV><FONT style="FONT-SIZE: 9.8pt">&gt; listeners: {<BR>&gt; close: function() 
{<BR>&gt; // closing a popup destroys it, but our reference<BR>&gt; is<BR>&gt; 
truthy<BR>&gt; popup = null;<BR>&gt; }<BR>&gt; }<BR>&gt; }).show();<BR>&gt; 
}</FONT><BR></DIV>
<DIV>I wrote this on the fly, so beware of typos and not quite complete logic, 
but that should at least get you started on the right path</DIV>
<DIV>&nbsp;</DIV>
<DIV>Matt Priour</DIV>
<DIV>Kestrel Computer Consulting</DIV>
<DIV 
style="FONT-STYLE: normal; DISPLAY: inline; FONT-FAMILY: 'Calibri'; COLOR: #000000; FONT-SIZE: small; FONT-WEIGHT: normal; TEXT-DECORATION: none">
<DIV style="FONT: 10pt tahoma">
<DIV><FONT face=Arial></FONT>&nbsp;</DIV>
<DIV style="BACKGROUND: #f5f5f5">
<DIV style="font-color: black"><B>From:</B> <A title=hfpmartins@gmail.com 
href="mailto:hfpmartins@gmail.com">Hugo</A> </DIV>
<DIV><B>Sent:</B> Thursday, July 21, 2011 6:19 AM</DIV>
<DIV><B>To:</B> <A title=robertdbuckley@yahoo.com 
href="mailto:robertdbuckley@yahoo.com">Robert Buckley</A> </DIV>
<DIV><B>Cc:</B> <A title=users@geoext.org 
href="mailto:users@geoext.org">users@geoext.org</A> </DIV>
<DIV><B>Subject:</B> Re: [Users] control which fields are displayed in my Geoext 
popups</DIV></DIV></DIV>
<DIV><FONT size=2 face=Arial></FONT>&nbsp;</DIV></DIV>
<DIV 
style="FONT-STYLE: normal; DISPLAY: inline; FONT-FAMILY: 'Calibri'; COLOR: #000000; FONT-SIZE: small; FONT-WEIGHT: normal; TEXT-DECORATION: none">Hi 
Robert, 
<DIV><FONT size=2 face=Arial></FONT>&nbsp;</DIV>
<DIV>What you can do in fact is:</DIV>
<DIV><FONT size=2 face=Arial></FONT>&nbsp;</DIV>
<DIV>- Make a geoserver template that will return your data in JSON format</DIV>
<DIV>- Then, process the data as you wish on the client side (this is, using 
GeoExt)</DIV>
<DIV><FONT size=2 face=Arial></FONT>&nbsp;</DIV>
<DIV>Below you can find an example of content.ftl that is returning the data in 
JSON format.</DIV>
<DIV><FONT size=2 face=Arial></FONT>&nbsp;</DIV>
<DIV>
<DIV>[{</DIV>
<DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span></SPAN>&lt;#assign i = 
0 /&gt;</DIV>
<DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span></SPAN>&lt;#list 
type.attributes as attribute&gt;</DIV>
<DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span></SPAN>&lt;#if (i &gt;= 
0) &amp;&amp; (!attribute.isGeometry)&gt;</DIV>
<DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span></SPAN>"${<A 
href="http://attribute.name">attribute.name</A>}":</DIV>
<DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span></SPAN>&lt;#list 
features as feature&gt;</DIV>
<DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span></SPAN>&lt;#assign k = 
0 /&gt;</DIV>
<DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span></SPAN>&lt;#list 
feature.attributes as attribute&gt;</DIV>
<DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span></SPAN>&lt;#if (k = i) 
&amp;&amp; (!attribute.isGeometry)&gt;</DIV>
<DIV><SPAN style="WHITE-SPACE: pre" 
class=Apple-tab-span></SPAN>"${attribute.value}"</DIV>
<DIV><SPAN style="WHITE-SPACE: pre" 
class=Apple-tab-span></SPAN>&lt;/#if&gt;</DIV>
<DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span></SPAN>&lt;#assign k = 
k+1 /&gt;</DIV>
<DIV><SPAN style="WHITE-SPACE: pre" 
class=Apple-tab-span></SPAN>&lt;/#list&gt;</DIV>
<DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span></SPAN>&lt;#if 
attribute_has_next&gt;</DIV>
<DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span></SPAN>,</DIV>
<DIV><SPAN style="WHITE-SPACE: pre" 
class=Apple-tab-span></SPAN>&lt;/#if&gt;</DIV>
<DIV><SPAN style="WHITE-SPACE: pre" 
class=Apple-tab-span></SPAN>&lt;/#list&gt;</DIV>
<DIV><SPAN style="WHITE-SPACE: pre" 
class=Apple-tab-span></SPAN>&lt;/#if&gt;</DIV>
<DIV><SPAN style="WHITE-SPACE: pre" class=Apple-tab-span></SPAN>&lt;#assign i = 
i+1 /&gt;</DIV>
<DIV><SPAN style="WHITE-SPACE: pre" 
class=Apple-tab-span></SPAN>&lt;/#list&gt;</DIV>
<DIV>}]</DIV>
<DIV><FONT size=2 face=Arial></FONT>&nbsp;</DIV>
<DIV>hope this helps.</DIV>
<DIV>Cheers,</DIV>
<DIV><FONT size=2 face=Arial></FONT>&nbsp;</DIV>
<DIV>Hugo</DIV>
<DIV><FONT size=2 face=Arial></FONT>&nbsp;</DIV>
<DIV class=gmail_quote>On Thu, Jul 21, 2011 at 12:15 PM, Robert Buckley <SPAN 
dir=ltr>&lt;<A 
href="mailto:robertdbuckley@yahoo.com">robertdbuckley@yahoo.com</A>&gt;</SPAN> 
wrote:<BR>
<BLOCKQUOTE 
style="BORDER-LEFT: #ccc 1px solid; MARGIN: 0px 0px 0px 0.8ex; PADDING-LEFT: 1ex" 
class=gmail_quote>
  <DIV>
  <DIV style="FONT-FAMILY: arial, helvetica, sans-serif; FONT-SIZE: 10pt">
  <DIV style="FONT-FAMILY: arial, helvetica, sans-serif"><CODE>Hi,</CODE></DIV>
  <DIV style="FONT-FAMILY: arial, helvetica, sans-serif"><CODE><BR></CODE></DIV>
  <DIV style="FONT-FAMILY: arial, helvetica, sans-serif"><CODE>Standard 
  format... </CODE><SPAN style="FONT-FAMILY: monospace">text/html as defined in 
  the Parameter tab in Firebug.</SPAN></DIV>
  <DIV style="FONT-FAMILY: arial, helvetica, sans-serif"><SPAN 
  style="FONT-FAMILY: monospace"><BR></SPAN></DIV>
  <DIV style="FONT-FAMILY: arial, helvetica, sans-serif"><SPAN 
  style="FONT-FAMILY: monospace">I have read that if the format is changed, then 
  the attributes can be manipulated ie fields can be left out. I haven´t seen 
  any code fór it though.</SPAN></DIV>
  <DIV style="FONT-FAMILY: arial, helvetica, sans-serif"><SPAN 
  style="FONT-FAMILY: monospace"><BR></SPAN></DIV>
  <DIV style="FONT-FAMILY: arial, helvetica, sans-serif"><SPAN 
  style="FONT-FAMILY: monospace">I have tried with the content.ftl file in the 
  geoserver workspaces, but the results are pretty grim! I would rather do it in 
  javascript so that everything is kept in my app and not spread around 
  different applications.</SPAN></DIV>
  <DIV style="FONT-FAMILY: arial, helvetica, sans-serif"><SPAN 
  style="FONT-FAMILY: monospace"><BR></SPAN></DIV>
  <DIV style="FONT-FAMILY: arial, helvetica, sans-serif"><SPAN 
  style="FONT-FAMILY: monospace">yours,</SPAN></DIV>
  <DIV style="FONT-FAMILY: arial, helvetica, sans-serif"><SPAN 
  style="FONT-FAMILY: monospace"><BR></SPAN></DIV>
  <DIV style="FONT-FAMILY: arial, helvetica, sans-serif"><SPAN 
  style="FONT-FAMILY: monospace">Rob</SPAN></DIV>
  <DIV style="FONT-FAMILY: arial, helvetica, sans-serif"><SPAN 
  style="FONT-FAMILY: monospace"><BR></SPAN></DIV>
  <DIV class=hm>
  <DIV style="FONT-FAMILY: arial, helvetica, sans-serif"><SPAN 
  style="FONT-FAMILY: monospace"><BR></SPAN></DIV></DIV>
  <DIV style="FONT-FAMILY: arial, helvetica, sans-serif; FONT-SIZE: 10pt">
  <DIV class=hm>&nbsp;</DIV>
  <DIV style="FONT-FAMILY: arial, helvetica, sans-serif; FONT-SIZE: 13px">
  <DIV class=hm><FONT size=2 face=Tahoma>
  <HR SIZE=1>
  <B><SPAN style="FONT-WEIGHT: bold">Von:</SPAN></B> "<A 
  href="mailto:dan@inlet.geol.sc.edu" target=_blank>dan@inlet.geol.sc.edu</A>" 
  &lt;<A href="mailto:dan@inlet.geol.sc.edu" 
  target=_blank>dan@inlet.geol.sc.edu</A>&gt;<BR><B><SPAN 
  style="FONT-WEIGHT: bold">An:</SPAN></B> Robert Buckley &lt;<A 
  href="mailto:robertdbuckley@yahoo.com" 
  target=_blank>robertdbuckley@yahoo.com</A>&gt;<BR><B><SPAN 
  style="FONT-WEIGHT: bold">CC:</SPAN></B> <A href="mailto:users@geoext.org" 
  target=_blank>users@geoext.org</A><BR><B><SPAN 
  style="FONT-WEIGHT: bold">Gesendet:</SPAN></B> Donnerstag, den 21. Juli 2011, 
  12:24:24 Uhr<BR><B><SPAN style="FONT-WEIGHT: bold">Betreff:</SPAN></B> Re: 
  [Users] control which fields are displayed in my Geoext 
popups<BR></FONT></DIV>
  <DIV>
  <DIV></DIV>
  <DIV class=h5><FONT size=2></FONT><BR>What is the format of the data coming 
  back from the WMSGetFeatureInfo?<BR><BR>&gt; Hi,<BR>&gt;<BR>&gt; I would like 
  to do the following and after several hours of trying and<BR>&gt; 
  googling<BR>&gt; will have to admit that I haven´t got far.<BR>&gt;<BR>&gt; I 
  want to ...<BR>&gt;<BR>&gt; 1. Restrict the fields displayed in my popup 
  window so that I can control<BR>&gt; which<BR>&gt; fields are displayed. I 
  don´t want to show fid, objectid etc<BR>&gt;<BR>&gt; 2. Ideally I would like 
  to use the accordion layout for when there is more<BR>&gt; than<BR>&gt; one 
  queryable layer, but I can´t find any code to implement this. I have<BR>&gt; 
  seen it<BR>&gt; on Bryan Mcbrides explorer, but apart from that can´t find 
  any<BR>&gt; documentation.<BR>&gt;<BR>&gt; currently I have a popup designed 
  like this...<BR>&gt;<BR>&gt;<BR>&gt; // create the popup<BR>&gt; var 
  featureInfo = new OpenLayers.Control.WMSGetFeatureInfo({<BR>&gt; queryVisible: 
  true,<BR>&gt; highlightOnly: true,<BR>&gt; maxFeatures: 5,<BR>&gt; layers: 
  [layer_wea_wms,EnMap_SG_WEA_f]<BR>&gt; });<BR>&gt;<BR>&gt; 
  featureInfo.events.on({<BR>&gt;&nbsp;&nbsp;&nbsp; getfeatureinfo: function(e) 
  {<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new 
  GeoExt.Popup({<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  title: "Position:<BR>&gt; 
  "+mappanel.map.getLonLatFromPixel(e.xy).transform(epsg900913, 
  epsg4326),<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  width: 400,<BR>&gt; autoHeight: true,<BR>&gt; layout: 'accordion',<BR>&gt; 
  bodyStyle: 
  'background-color:#FFF;,font-size:14px;',<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  autoScroll: 
  true,<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  maximizable: 
  true,<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  map: 
  mappanel.map,<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  lonlat: 
  mappanel.map.getLonLatFromPixel(e.xy),<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  html:'&lt;p 
  style="font-size:10px;"&gt;Attributen&lt;/p&gt;&lt;br&gt;'+e.text,<BR>&gt; 
  unpinnable:true,<BR>&gt; anchored: true,<BR>&gt; shadow: true,<BR>&gt; 
  listeners: 
  {<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  close: function() 
  {<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  // closing a popup destroys it, but our reference<BR>&gt; is<BR>&gt; 
  truthy<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  popup = 
  null;<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  }<BR>&gt; }<BR>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
  }).show();<BR>&gt;&nbsp;&nbsp;&nbsp; }<BR>&gt; });<BR>&gt;<BR>&gt; 
  map.addControl(featureInfo);<BR>&gt; 
  featureInfo.activate();<BR>&gt;<BR>&gt;<BR>&gt;<BR>&gt;<BR>&gt; thanks for any 
  help_______________________________________________<BR>&gt; Users mailing 
  list<BR>&gt; <A href="mailto:Users@geoext.org" 
  target=_blank>Users@geoext.org</A><BR>&gt; <A 
  href="http://www.geoext.org/cgi-bin/mailman/listinfo/users" 
  target=_blank>http://www.geoext.org/cgi-bin/mailman/listinfo/users</A><BR>&gt;<BR><BR><BR></DIV></DIV></DIV></DIV>
  <DIV 
  style="FONT-FAMILY: arial, helvetica, sans-serif"></DIV></DIV></DIV><BR>_______________________________________________<BR>Users 
  mailing list<BR><A href="mailto:Users@geoext.org">Users@geoext.org</A><BR><A 
  href="http://www.geoext.org/cgi-bin/mailman/listinfo/users" 
  target=_blank>http://www.geoext.org/cgi-bin/mailman/listinfo/users</A><BR><BR></BLOCKQUOTE></DIV><BR><BR 
clear=all><BR>-- <BR>Hugo Martins<BR>LabNT - ISEGI UNL<BR>Campus de 
Campolide<BR>1070-312 Lisboa<BR>N 38°43'56.84", W 9°9'35.74"<BR></DIV>
<P>
<HR>
_______________________________________________<BR>Users mailing 
list<BR>Users@geoext.org<BR>http://www.geoext.org/cgi-bin/mailman/listinfo/users<BR></DIV></DIV></DIV></BODY></HTML>