[Cartoweb-users] RE: customize query tool and new tool in general

karsten vennemann karsten at terragis.net
Wed Nov 28 01:33:24 EST 2007


I got only a tiny bit further towards my goal over the last several days
regarding my first message below.

 

Regarding 2.) below

I modified the tpl template and was able to reformat and place the query
results for a layer elsewhere on the page. I still could not really figure
out how to approach creating/or modifying a query tool to return the
attributes for just one selected layer and not all that are selected in the
themes tab.

>From the documentation in Chapter 2.4.2.3  it seems that I just can use
these parameters for a query:

Query plugin

o query_layer - layer to look for IDs

o query_select - IDs of objects to add to selection

o query_unselect - IDs of objects to remove from selection

o query_policy - selection policy: 'POLICY_XOR', 'POLICY_UNION' or

'POLICY_INTERSECTION', default is 'POLICY_XOR'

o query_maskmode - '0' or '1', default is '0'. If '1', will show selection
as a mask.

o query_hilight - '0' or '1', default is '1'. If '0', won't shows selection
hilighted.

o query_return_attributes - '0' or '1', default is '1'. If '0', won't return

attributes other than IDs.

o query_return_table - '0' or '1', default is '1'. If '0', won't return any
table

results.

o query_clear - '0' or '1', default is '0'. If '1',

 

How can I make a new tool and trigger such a query. Do I need to create a
modified/new plugin?

For example if I had a list of layers (in a dropdown box) all that I wanted
to be able to run a query on. How would I trigger a query on the selected
layer from a new tool button? I guess javascript calling php, but how would
I get the button from the new plugin to show up in the template .

 

By the way - Is there a way to retrieve all layers that have
"id_attribute_string" and
"query_returned_attributes". defined somehow?

Karsten

  _____  

From: karsten vennemann [mailto:karsten at terragis.net] 
Sent: Friday, November 23, 2007 00:10
To: 'cartoweb-users at lists.maptools.org'
Subject: customize query tool and new tool in general

 


Hi all,
I'm working on customizing the tools for my cartoweb3.4 project. I started
off with the CartoWeb3 Demo and added my data and metadata for the layers I
wanted to enable queries for. However, with this projects template/set-up
the queries always seem to run onto all layers - no matter whether I check
the "query all layers" checkbox. Thus I usually get an error since some of
my layers (which I didn't configure with metadata and didn't intend to use
for queries) don't have values for
"id_attribute_string" and
"query_returned_attributes".
My goal is to have a dropdown list of all queriable layers and the user can
select the layer she wants to query, then click on the map to query by
point. Only the attributes of the user selected layer should be returned and
displayed.
My questions are
1. How and where would I start doing this modification. At this point I'm
not sure whether that functionality is readily available or need some
customization of the query/and table plugin? And as well as for the smarty
template to change the location where the results are displayed?.
2. How would I include a new tool in the template - I guess that would be a
javascript calling a php function? Is there a place where the other tools
and their js code is located?
3. I found the example below in the documentation ( 2.4.2.3. Example)-
copied below. This seems like a class I could modify to suit my need and
send a request from a new tool to ?


Cheers
Karsten


The following class implements a filter which allows to recenter on an
object while hilighting it: 

class ClientFilterIdrecenter extends ClientPlugin
                             implements FilterProvider {
                       
    public function filterPostRequest(FilterRequestModifier $request) {}
    
    public function filterGetRequest(FilterRequestModifier $request) {
        
        $id = $request->getValue('id');
        if (!is_null($id)) {
            $layer = 'grid_classhilight';
            $request->setValue('query_layer', $layer);
            $request->setValue('query_maskmode', '1');
            $request->setValue('query_select', $id);
 
            $request->setValue('id_recenter_layer', $layer);        
            $request->setValue('id_recenter_ids', $id);
        }
    }
}

 

 

Karsten 

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.maptools.org/pipermail/cartoweb-users/attachments/20071127/172d3a5b/attachment.html


More information about the Cartoweb-users mailing list