[Cartoweb-users] Plugin search not working

Oliver Christen oliver.christen at camptocamp.com
Tue Apr 17 09:00:11 EDT 2007


I forgot to say the most important:
be sure the value of that input is not empty

regards
Oliver
  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



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


  _______________________________________________
  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/62a85b8a/attachment-0001.html


More information about the Cartoweb-users mailing list