Both solution are possible, but the 2nd is probably the easiest.
Simply define some initialMapStates bbox in the "your_project_name".ini
file
in server_conf
mapInfo.initialMapStates.default.location.bbox =
"531800,149000,547000,163600"
mapInfo.initialMapStates.place1.location.bbox =
"431800,139000,547000,153600"
mapInfo.initialMapStates.place2.location.bbox =
"331800,129000,527000,143600"
...
and call it via url with parameter ?initialState=place1 or place2 or ...
http://www.cartoweb.org/doc_head/docbook/xhtml/user.config.html#user.config.
client
http://www.cartoweb.org/doc_head/docbook/xhtml/user.config.html#user.config.
server.maps_config.initial
you can also define a list of shortcuts to locations of your choices, see
http://www.cartoweb.org/doc_head/docbook/xhtml/user.location.html
Oliver
Thank you very much Oliver,
I'll try your suggestions for new plugin.
As another way for solving this problem do you think possible one of
these
solutions ?
1)
I save several views with view plugin and I call cartoweb project with a
combo box changing the url with javascript
2)
is it possible to run via url a cartoweb project directly with
coordinates
values?
(i.e. .../htdocs/italy.php?bbox=x1,y1,x2,y2)
This would be the best solutions for me....
Thanks again
Valerio
----- Original Message -----
From: "oliver.christen" <[EMAIL PROTECTED]>
To: "Valerio Noti" <[EMAIL PROTECTED]>;
<[email protected]>
Sent: Thursday, January 26, 2006 7:55 PM
Subject: Re: [Cartoweb-users] several shortcuts..
>I forgot to say:
>
> the filename of the php file depend of the name of the plugin, hence
> the
> class you want to use. I my exemple, the class was
> 'ClientMyProjectLocation', the plugin name will be 'myProjectLocation',
> and the filename will be 'ClientMyProjectLocation.php'
> Create a folder named 'myProjectLocation' in the coreplugin folder OF
YOUR
> PROJECT ( not in the main coreplugin folder of cartoweb)(in coreplugin
> because you extend 'location' which is a coreplugin). In that folder,
> create a folder named 'client', put the 'ClientMyProjectLocation.php'
> inside.
>
> Let me know if that was usefull to you.
>
> Regards,
> Oliver
>
>> Hi Valerio,
>>
>> you cant do that directly in the location plugin, but it is quite easy
to
>> extend that plugin to do what you want.
>>
>> basically, you create a new plugin, lets call it MyProjectLocation
>>
>> the template would look like this:
>>
>>
>> <?php
>> /**
>> * @package CorePlugins
>> * @version $Id: ClientMyProjectLocation.php,v 1.8 2005/02/23 11:52:43
>> Exp $
>> */
>>
>> class ClientMyProjectLocation extends ClientLocation {
>>
>> public function replacePlugin() {
>> return 'location';
>> }
>>
>> // here redefine the function you need, most probably
drawShortcuts()
>> /** * Draws shortcuts form * @return string */
>> protected
>> function drawShortcuts() { $this->smarty = new
>> Smarty_Plugin($this->getCartoclient(), $this); $shortcutValues
>> =
>> array(-1); $shortcutLabels = array(''); $shortcuts =
>> $this->shortcuts; if (!is_array($shortcuts)) $shortcuts =
array();
>> /* do what you want with the array containing the shortcuts, list
>> spliting, sorting, etc.... below is the original function
>> code, allowing to treat the shortcuts values and labels */
foreach
>> ($shortcuts as $key => $shortcut) { $shortcutValues[] =
$key;
>> $shortcutLabels[] = I18n::gt($shortcut->label); }
>> /*
>> now let say you cuted your shortcuts in 3 arrays (hence 3 for values
and
>> 3 for labels), you assign them to your template vis smarty */
/*
>> below the original code */
$this->smarty->assign(array('shortcut_values'
>> => $shortcutValues, 'shortcut_labels' => $shortcutLabels)); /*
you
>> would have to do something like this */
>> $this->smarty->assign(array('shortcut_values_1' => $shortcutValues_1,
>> 'shortcut_labels_1' => $shortcutLabels_1, 'shortcut_values_2' =>
>> $shortcutValues_2, 'shortcut_labels_2' => $shortcutLabels_2,
>> 'shortcut_values_3' => $shortcutValues_3, 'shortcut_labels_3' =>
>> $shortcutLabels_3)); return
>> >smarty->fetch('shortcuts.tpl'); } /* you will also have to
>> redefine the function handleShortcuts, because only one input (select)
>> can have one id, so you need to tell the plugin to treat the value
>> returned by these inputs too */ protected function
>> handleShortcuts($request, $useDoit = true, $check = false) { if
>> (isset($this->getHttpValue($request, 'shortcut_id')) {
>> $shortcut_id = isset($this->getHttpValue($request,
>> ut_id'); } else if (isset($this->getHttpValue($request,
>> 'shortcut_id1')){ $shortcut_id = isset($this->getHttpValue($request,
>> ut_id1'); } else if (isset($this->getHttpValue($request,
>> 'shortcut_id2')){ $shortcut_id = isset($this->getHttpValue($request,
>> ut_id2'); } else if (isset($this->getHttpValue($request,
>> 'shortcut_id3')){ $shortcut_id =
>> isset($this->getHttpValue($request, 'shortcut_id3'); }
>> $shortcutDoit = $this->getHttpValue($request, 'shortcut_doit'); if
>> (is_null($shortcut_id) || ($shortcutDoit != '1' && $useDoit))
>> { return NULL; } if ($check) { if
>> (!$this->checkInt($shortcut_id, 'shortcut_id')) return
>> NULL; if (!array_key_exists($shortcut_id,
>> $this->shortcuts)) { $this->cartoclient->addMessage('Shortcut ID not
>> found'); return NULL; } } $bboxRequest = new
>> BboxLocationRequest(); $bboxRequest->bbox =
>> $this->shortcuts[$request['shortcut_id']]->bbox;
$locationRequest
>> = new LocationRequest(); $locationRequest->locationType =
>> LocationRequest::LOC_REQ_BBOX; $locationRequest->bboxLocationRequest =
>> $bboxRequest; return $locationRequest; }}?>
>>
>> and in your shortcuts.tpl simply put the smarty variable
>> $shortcut_values_1
>> $shortcut_labels_1 $shortcut_values_2 $shortcut_labels_2
>> $shortcut_values_3
>> $shortcut_labels_3 as needed
>>
>> <select name="shortcut_id1" id="shortcut_id1"
>>
onchange="javascript:document.carto_form.shortcut_doit.value=1;FormItemSelec
ted();">
>> {html_options values=$shortcut_values_1 output=$shortcut_labels_1}
>> </select>
>> <select name="shortcut_id2" id="shortcut_id2"
>>
onchange="javascript:document.carto_form.shortcut_doit.value=1;FormItemSelec
ted();">
>> {html_options values=$shortcut_values_2 output=$shortcut_labels_2}
>> </select>
>> <select name="shortcut_id3" id="shortcut_id3"
>>
onchange="javascript:document.carto_form.shortcut_doit.value=1;FormItemSelec
ted();">
>> {html_options values=$shortcut_values_3 output=$shortcut_labels_3}
>> </select>
>>
>> Finally, dont forget tp load your new plugin. In the file
>> client_conf/client.ini add it to the loadPlugins list
>>
>> That should cover most of it.
>>
>> All references are there:
>>
http://www.cartoweb.org/doc_head/docbook/xhtml/dev.newplugin.html#dev.newplu
gin.adapting.extending
>>
>> Regards,
>>
>> Oliver Christen
>> Camptocamp SA
>>
>>> Hi,
>>> is it possible to split shortcuts in two or more combo boxes (i.e.
tows
>>> shortcuts and lakes shortcuts)?
>>> Do I have to modify php files or can I configure this in location.ini
or
>>> similar?
>>>
>>>
>>> Thanks
>>>
>>> Valerio
>>> _______________________________________________
>>> Cartoweb-users mailing list
>>> [email protected]
>>> http://lists.maptools.org/mailman/listinfo/cartoweb-users
>>>
>>
>> _______________________________________________
>> Cartoweb-users mailing list
>> [email protected]
>> http://lists.maptools.org/mailman/listinfo/cartoweb-users
>>
>
--
No virus found in this incoming message.
Checked by AVG Free Edition.
Version: 7.1.375 / Virus Database: 267.14.23/240 - Release Date:
25/01/2006