[Cartoweb-users] Plugin search not working

Oliver Christen oliver.christen at camptocamp.com
Tue Apr 17 08:58:04 EDT 2007


Hi

there are no search_config parameter set in the post request. I think the main search input name must be search_config
do you have a <input type="hidden" id="search_config" name="search_config"  element in your search template ?

regards
Oliver
 
  ----- Original Message ----- 
  From: Véro Herzl - Bluewin 
  To: Damien Corpataux ; cartoweb-users at lists.maptools.org 
  Sent: Tuesday, April 17, 2007 2:21 PM
  Subject: Re: [Cartoweb-users] Plugin search not working


  OK, well, I am in the development mode but with Ajax on and cartoclient.Ajaxheader,tpl, so the error message is for the Ajay part


--- Action Search.DoIt triggered ---

Calling Search.DoIt onBeforeAjaxCall()

Calling AjaxPlugins.Common.onBeforeAjaxCall()
Initiating AJAX request
Pending actions: 1
GET params:
ajaxActionRequest=Search.DoIt&
POST params:

posted=1&js_folder_idx=5&js_toolbar_idx=&selection_type=&selection_coords=&features=&js_accounting=version=0;
hasJava=true;winInnerWidth=1024;winInnerHeight=578;screenWidth=1024;
screenHeight=768;screenColorDepth=32&outline_label_text=votre 
titre&tool=zoomin&project=n16&recenter_x=&recenter_y=&recenter_doit=0&shortcut_doit=0&openNodes=&layers
[]=OPA&layers[]=OPB&layers[]=OPC&layers[]=OPD&layers[]=OPE&layers[]
=OPF&layers[]=OPG&layers[]=OPH&layers[]=N16&layers[]
=POSTGIS_MAJ&layers[]=EDITPOINT&layers[]=EDITPOLY&layers[]
=EDITLINE&pdfMarginX=20&pdfMarginY=20&pdfA4x=210&pdfA4y=297&pdfA3x=297&pdfA3y=420&pdfOrientation=portrait&pdfMapAngle=&pdfMapCenterX=&pdfMapCenterY=&pdfTitle=&pdfNote=&pdfScalebar=&pdfLegend=0&viewTitle=&author=&handleView=0&locate_MAJ=&locate_MAJ2=&id_recenter_ids=&search_mandat_n16=N2354&search_travaux=&search_date_txt=&search_en_cours=&search_config=&search_sort_column=&search_sort_direction=asc&search_number=&outline_mask=no&outline_point_symbol=circle&outline_point_size=10&outline_line_size=3&outline_line_transparency=100&outline_polygon_transparency=60&edit_validate_all=0&recenter_scale=0&shortcut_id=-
1&mapsize=1&pdfFormat=A4&pdfResolution=96&pdfScale=2500&id_recenter_layer=MAJ&edit_layer=0&
Waiting for response...
Response received!
Error: AjaxHandler.actionRequest(): received response is 
malformed!

And below it, I got the following failure :

  Failure



  CartoWeb version: 3.3.0 [$Revision: 1.2 $]

  class:   CartoclientException

  message:   Empty config or config not found

  Backtrace:



  file: UNKNOWN - UNKNOWN

  call: ClientSearch->handleHttpPostRequest(Array(62))



  file: 270 - C:\wamp\www\cartoweb3\common\PluginManager.php

  call: call_user_func_array(Array(2), Array(1))



  file: 320 - C:\wamp\www\cartoweb3\common\PluginManager.php

  call: PluginManager->callPluginImplementing(Object(ClientSearch), "GuiProvider", "handleHttpPostRequest", Array(1))



  file: 685 - C:\wamp\www\cartoweb3\client\Cartoclient.php

  call: PluginManager->callEnabledPluginsImplementing(1, "GuiProvider", "handleHttpPostRequest", Array(1))



  file: 995 - C:\wamp\www\cartoweb3\client\Cartoclient.php

  call: Cartoclient->callEnabledPluginsImplementing(1, "GuiProvider", "handleHttpPostRequest", Array(62))



  file: 1220 - C:\wamp\www\cartoweb3\client\Cartoclient.php

  call: Cartoclient->doMain()



  file: 38 - C:\wamp\www\cartoweb3\htdocs\client.php

  call: Cartoclient->main()



  file: 3 - C:\wamp\www\cartoweb3\htdocs\n16.php

  call: require_once("C:\wamp\www\cartoweb3\htdocs\client.php")








  Damien Corpataux a écrit : 
    Hello,

    if you are in development mode, when an error occurs, an alert box is displayed and allows you to print the cartoweb error message. Can you post this error message?

    Regards,
    Damien


    veroh at bluewin.ch wrote: 
Hello,

I am trying to implement the plugin search in my project but I got 
the following error

--- Action Search.DoIt triggered ---

Calling Search.DoIt onBeforeAjaxCall()

Calling AjaxPlugins.Common.onBeforeAjaxCall()
Initiating AJAX request
Pending actions: 1
GET params:
ajaxActionRequest=Search.DoIt&
POST params:

posted=1&js_folder_idx=5&js_toolbar_idx=&selection_type=&selection_coords=&features=&js_accounting=version=0;
hasJava=true;winInnerWidth=1024;winInnerHeight=578;screenWidth=1024;
screenHeight=768;screenColorDepth=32&outline_label_text=votre 
titre&tool=zoomin&project=n16&recenter_x=&recenter_y=&recenter_doit=0&shortcut_doit=0&openNodes=&layers
[]=OPA&layers[]=OPB&layers[]=OPC&layers[]=OPD&layers[]=OPE&layers[]
=OPF&layers[]=OPG&layers[]=OPH&layers[]=N16&layers[]
=POSTGIS_MAJ&layers[]=EDITPOINT&layers[]=EDITPOLY&layers[]
=EDITLINE&pdfMarginX=20&pdfMarginY=20&pdfA4x=210&pdfA4y=297&pdfA3x=297&pdfA3y=420&pdfOrientation=portrait&pdfMapAngle=&pdfMapCenterX=&pdfMapCenterY=&pdfTitle=&pdfNote=&pdfScalebar=&pdfLegend=0&viewTitle=&author=&handleView=0&locate_MAJ=&locate_MAJ2=&id_recenter_ids=&search_mandat_n16=N2354&search_travaux=&search_date_txt=&search_en_cours=&search_config=&search_sort_column=&search_sort_direction=asc&search_number=&outline_mask=no&outline_point_symbol=circle&outline_point_size=10&outline_line_size=3&outline_line_transparency=100&outline_polygon_transparency=60&edit_validate_all=0&recenter_scale=0&shortcut_id=-
1&mapsize=1&pdfFormat=A4&pdfResolution=96&pdfScale=2500&id_recenter_layer=MAJ&edit_layer=0&
Waiting for response...
Response received!
Error: AjaxHandler.actionRequest(): received response is 
malformed!

I have a search.ini file in my client_conf :

config.POSTGIS_MAJ.provider.type = fulltextTable
config.POSTGIS_MAJ.provider.table = maj2
config.POSTGIS_MAJ.provider.id = gid
config.POSTGIS_MAJ.provider.columns = mandat_n16, travaux, 
date_txt, en_cours
config.POSTGIS_MAJ.provider.fulltextColumns = mandat_n16, travaux, 
date_txt, en_cours
config.POSTGIS_MAJ.provider.sortColumn = date_txt
config.POSTGIS_MAJ.provider.sortDirection = asc
config.POSTGIS_MAJ.provider.sortPriorities = date_txt, mandat_n16, 
travaux, en_cours
config.POSTGIS_MAJ.provider.labels = mandat_n16, travaux, date_txt, 
en_cours

config.POSTGIS_MAJ.formatter.type = smarty
config.POSTGIS_MAJ.formatter.template = search_results

Where POSTGIS is the layer I declared in my MAP file which is a 
POSTGRESQL/POSTGIS table (maj2) and gid is the 'id_attribute_string'

I have also one in the server_side :

dbType = pgsql
dsn = pgsql://postgres:afgan6@localhost:5432/demo_n16

config.POSTGIS_MAJ.provider.type = fulltextTable
config.POSTGIS_MAJ.provider.table = maj2
config.POSTGIS_MAJ.provider.id = gid
config.POSTGIS_MAJ.provider.columns = mandat_n16, travaux, 
date_txt, en_cours
config.POSTGIS_MAJ.provider.fulltextColumns = mandat_n16, travaux, 
date_txt, en_cours
config.POSTGIS_MAJ.provider.sortColumn = date_txt
config.POSTGIS_MAJ.provider.sortDirection = asc
config.POSTGIS_MAJ.provider.sortPriorities = date_txt, mandat_n16, 
travaux, en_cours
config.POSTGIS_MAJ.provider.labels = mandat_n16, travaux, date_txt, 
en_cours

config.POSTGIS_MAJ.formatter.type = smarty
config.POSTGIS_MAJ.formatter.template = search_results

I modified my cartoclient.tpl by adding two lines

{if $search_active|default:''}<script type="text/javascript" src="
{r type=js plugin=search}Search.ajax.js{/r}"></script>{/if}
which is just after the one for the Ajax ({if $ajaxOn|default:''} 
etc..)
and in the div="container", I added in one of my div=folder : 
{if $search_active|default:''} {$search} {/if}

I got in templates, two files :

search.tpl:

<div id="search_div">
	<fieldset>
		<legend>{t}Search{/t}
		</legend>
		<br/>
		<table width="100%">
			<tr>
			<td>
				{t}Mandat: {/t}
			</td>
			
			<td>
				<input type="text" id="search_mandat_n16" name="
search_mandat_n16" size="13"/>
			</td>
			</tr>
			
			<tr>
			<td>
				{t}Type de travaux: {/t}
			</td>
			
			<td>
				<input type="text" id="search_travaux" name="search_travaux" 
size="13"/>
			</td>
			</tr>

			<tr>
			<td>
				{t}Date: {/t}
			</td>
			
			<td>
				<input type="text" id="search_date_txt" name="search_date_txt" 
size="13"/>
			</td>
			</tr>			
			
			<tr>
			<td>
				{t}En cours ou non: {/t}
			</td>
			
			<td>
				<input type="text" id="search_en_cours" name="search_en_cours" 
size="13"/>
			</td>
			</tr>
		</table>
		
		<p>
			<input type="submit" value="{t}Search{/t}" class="form_button" 
onclick="Javascript: CartoWeb.trigger('Search.DoIt'); return false;" 
/>
			<input type="hidden" id="search_config" name="search_config" />
			<input type="hidden" id="search_sort_column" name="
search_sort_column" />
			<input type="hidden" id="search_sort_direction" name="
search_sort_direction" value="asc" />
			<input type="hidden" id="search_number" name="search_number" />
					
			<div id="search_results_div">
			</div>
		</p>
	</fieldset>
</div>

and search_results.tpl

{if $table->numRows > 0}
	<table class="n16table">
		<tr>
			<th>
				{t}Id{/t}
			</th>
			{foreach from=$table->columnIds item=column}
				<th>
					<a href="Javascript: order('{$column}');">{t}{$column}{/t}
</a>
				</th>
			{/foreach}
		</tr>
		
		{foreach from=$table->rows item=row}
		<tr>
		{foreach from=$row->cells item=value}
		<td>
			<a href="Javascript: recenter('{$row->rowId}');">{$value}</a>
		</td>
		{/foreach}
		</tr>
		{/foreach}
	</table>
{else}
{t}No results{/t}
{/if}


Last but not least, I got the js ! Namely Search.ajax.js

AjaxPlugins.Search = {
  
    handleResponse: function(pluginOutput) {
        
        if (pluginOutput.htmlCode.POSTGIS_MAJ)
            $('search_results').innerHTML = pluginOutput.htmlCode.
POSTGIS_MAJ;
			}
			};


/*
 * Search plugin's Actions
 */
 
AjaxPlugins.Search.Actions = {};

AjaxPlugins.Search.Actions.DoIt = {

    buildPostRequest: function(argObject) {
        return AjaxHandler.buildPostRequest();
    }
};

function order(column) {
    
    if (column != $('search_sort_column').value){
	$('search_sort_column').value = column;
	$('search_sort_direction').value = 'asc';
	} else {
	if ($('search_sort_direction').value == 'asc') {
	$('search_sort_direction').value = 'desc';
	} else {
	$('search_sort_direction').value = 'asc';
	}
	}
    
    CartoWeb.trigger('Search.DoIt');
}

function recenter(id) {
	if ($('search_config').value == 'POSTGIS_MAJ') {
    $('id_recenter_ids').value = gid; //id to recenter
	$('recenter_scale').value = 1000; //scale for recentering
	$('recenter_doit').value = '1';
    
    CartoWeb.trigger('Location.Recenter');
}

I guess you now know all I did. Could someone please tell me what 
is wrong.

Apparently, someone else asked the same thing last month but no 
final answer was given on the mail list.

PS : Yes, I did clean all the file before trying

Véronique

_______________________________________________
Cartoweb-users mailing list
Cartoweb-users at lists.maptools.org
http://lists.maptools.org/mailman/listinfo/cartoweb-users
  


    -- 
    Camptocamp SA
    Damien Corpataux
    PSE A
    CH-1015 Lausanne

    +41 21 619 10 22 (Direct)
    +41 21 619 10 10 (Centrale)
    +41 21 619 10 00 (Fax)

    P Please consider the environment 
    Do you really need to print this email? 




------------------------------------------------------------------------------


  _______________________________________________
  Cartoweb-users mailing list
  Cartoweb-users at lists.maptools.org
  http://lists.maptools.org/mailman/listinfo/cartoweb-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.maptools.org/pipermail/cartoweb-users/attachments/20070417/0dac5145/attachment-0001.html


More information about the Cartoweb-users mailing list