[Cartoweb-users] Plugin search not working

Oliver Christen oliver.christen at camptocamp.com
Tue Apr 17 09:45:15 EDT 2007


as far as i know there is no need for a server side config file

and the syntax for the database connection seems ok

the error seems now to come from the encoding/decoding
did you set an encodingContext = xxxx in your search.ini?
and also you must have a corresponding EncoderClass.xxxx = EncoderISO

the encodingContext is simply a name attributed to the search plugin so all
encoding/decoding of string are done in the same type of encoding (utf-8,
ISO-8859-1, ASCII, ...)

the name reffer to the encoding set in client.ini, for exemple:
EncoderClass.xxxx = EncoderISO <- this mean the database encoding is
ISO-8859-1

This is only needed if, for exemple, your database data is in
ISO-8859-1 and specials characters are not displayed correctly in the page
(which usually is in UTF-8)

see
http://www.cartoweb.org/doc/cw3.3/xhtml/user.i18n.html#user.i18n.encoding
for more info


regards
Oliver

----- Original Message ----- 
From: <veroh at bluewin.ch>
To: <oliver.christen at camptocamp.com>
Cc: <cartoweb-users at lists.maptools.org>
Sent: Tuesday, April 17, 2007 3:31 PM
Subject: Re: [Cartoweb-users] Plugin search not working


Hello,

So basically, if I introduce the value POSTGIS_MAJ, I do get a bit
further on... I got a failure which say that it can not connect to
the dsn or db.

I decided then to try to follow the chapter 24 which says that no
file should be under the serverside ini file but on the client side.
This is not what I did the first time as I followed the advices you
gave in March to another contributor.

So I got now

dbType = pgsql
dsn = pgsql://postgres:afgan6@localhost:5432/demo_n16 in my search.
ini on the client side and on the server side (same search.ini
files).

Here is the message of the failure

Failure

CartoWeb version: 3.3.0 [$Revision: 1.2 $]
class:   CartocommonException
message:   Error [8, Undefined index:  , C:
\wamp\www\cartoweb3\common\Encoding.php, 79]
Backtrace:

file: 79 - C:\wamp\www\cartoweb3\common\Encoding.php
call: Common::cartowebErrorHandler(8, "Undefined index:  ", "C:
\wamp\www\cartoweb3\common\Encoding.php", 79, Array(1))

file: 117 - C:\wamp\www\cartoweb3\common\Encoding.php
call: Encoder::getEncoder(Null)

file: 272 - C:\wamp\www\cartoweb3\plugins\search\common\Search.php
call: Encoder::decode("", Null)

file: 269 - C:
\wamp\www\cartoweb3\plugins\search\client\ClientSearch.php
call: DbResultProvider->getResult(Object(SearchRequest))

file: 265 - C:\wamp\www\cartoweb3\client\ClientPluginHelper.php
call: ClientSearch->initializeResult(Null)

file: UNKNOWN - UNKNOWN
call: ServerCallerHelper->initializeResultHelper(Object
(ClientSearch), Object(MapResult))

file: 267 - C:\wamp\www\cartoweb3\common\PluginManager.php
call: call_user_func_array(Array(2), Array(2))

file: 320 - C:\wamp\www\cartoweb3\common\PluginManager.php
call: PluginManager->callPluginImplementing(Object(ClientSearch),
"ServerCaller", "initializeResult", Array(1))

file: 685 - C:\wamp\www\cartoweb3\client\Cartoclient.php
call: PluginManager->callEnabledPluginsImplementing(2,
"ServerCaller", "initializeResult", Array(1))

file: 1057 - C:\wamp\www\cartoweb3\client\Cartoclient.php
call: Cartoclient->callEnabledPluginsImplementing(2,
"ServerCaller", "initializeResult", Object(MapResult))

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")


Is it a step backward or forward ???

Véronique

----Message d'origine----
De: oliver.christen at camptocamp.com
Date: 17.04.2007 15:07
À: "Véro Herzl - Bluewin"<veroh at bluewin.ch>, <cartoweb-users at lists.
maptools.org>
Objet: Re: [Cartoweb-users] Plugin search not working

i think POSTGIS_MAJ
Well yes, you got it right, it is empty. So to fill it, what do I
have to put in ?

Véronique


Oliver Christen a écrit: I forgot to say the most important:be sure
the value of that input is not emptyregardsOliverHithere are no
search_config parameter set in the post request. I think the main
search input name must be search_configdo you have a <input type="
hidden" id="search_config" name="search_config" element in your
search template ?regardsOliver----- Original Message ----- From: Véro
Herzl - Bluewin 'mailto:veroh at bluewin.ch'To: Damien Corpataux 'mailto:
damien.corpataux at camptocamp.com' ; cartoweb-users at lists.maptools.org
'mailto:cartoweb-users at lists.maptools.org' Sent: Tuesday, April 17,
2007 2:21 PMSubject: 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 'mailto: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 'mailto:Cartoweb-users at lists.
maptools.org'http://lists.maptools.org/mailman/listinfo/cartoweb-
users '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 'mailto:Cartoweb-users at lists.
maptools.org'
http://lists.maptools.org/mailman/listinfo/cartoweb-users 'http:
//lists.maptools.org/mailman/listinfo/cartoweb-users'

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



More information about the Cartoweb-users mailing list