.. _widget-wmslayeradder-label:

========================
 WMSLayerAdder
========================

Widget that permits a user to add layers that are setted manually, removed from the workspace or from a external server.


.. note:: This widget can't be drawn with the drawWidget template.  Instead,
          it must be added to one of the toolbar widgets :

          * Toolbar
          * GeoExtToolbar


XML Sample
------------
Configuration using the cookie mode

.. code-block:: xml

   <wmslayeradder>
     <name>WLA_Sample</name>
     <options>
       <mode>cookie</mode>
       <layers>
         <layer>
           <name>Metacarta</name>
           <text>Metacarta</text>
           <url>http://labs.metacarta.com/wms/vmap0</url>
           <layer>basic</layer>
           <opacity>0.5</opacity>
         </layer>
       </layers>
     </options>
   </wmslayeradder> 


Configuration using curl mode

.. code-block:: xml

   <wmslayeradder>
     <name>WLA_Sample</name>
     <options>
       <mode>curl</mode>
       <urlmode>relative</urlmode>
       <url>userwmslist.php</url>
       <post>
         <username>$_SESSION[login_username]</username>
       </post>
       <layers>
         <layer>
           <name>Metacarta</name>
           <text>Metacarta</text>
           <url>http://labs.metacarta.com/wms/vmap0</url>
           <layer>basic</layer>
           <opacity>0.5</opacity>
         </layer>
       </layers>
     </options>
   </wmslayeradder> 


Configuration using db mode

.. code-block:: xml

   <wmslayeradder>
     <name>WLA_Sample</name>
     <options>
       <mode>db</mode>
       <dsn>mysql:localhost;port=xxxx;dbname=mydbname</dsn>
       <user>myuser</user>
       <password>mypassword</password>

       <select_query>SELECT id,user, pass, url,description FROM user_wmslist AS w INNER JOIN user AS u ON w.idUser=u.idUser WHERE u.username = :0</select_query>
       <select_list>$_SESSION[login_username]</select_list>

       <insert_query>INSERT INTO user_wmslist (id, idUser,user,pass,url,description) VALUES(NULL,(SELECT idUser FROM user WHERE username = :0 LIMIT 1),:1,:2,:3,:4)</insert_query>
       <insert_list>$_SESSION[login_username],$_REQUEST[user],$_REQUEST[pwd],$_REQUEST[url],$_REQUEST[desc]</insert_list><!-- value sent by querystring/Post or available in php $_SESSION -->

       <delete_query>DELETE FROM user_wmslist WHERE idUser = (SELECT idUser FROM user WHERE username = :0 LIMIT 1) AND id = :1 LIMIT 1</delete_query>
       <delete_list>$_SESSION[login_username],$_REQUEST[id_wms]</delete_list>

       <layers>
         <layer>
           <name>Metacarta</name>
           <text>Metacarta</text>
           <url>http://labs.metacarta.com/wms/vmap0</url>
           <layer>basic</layer>
           <opacity>0.5</opacity>
         </layer>
       </layers>
     </options>
   </wmslayeradder> 


XML Sample - widget to be added to a toolbar
---------------------------------------------
This widget must be added to a GeoExtToolbar widget

.. code-block:: xslt

  <geoexttoolbar>
    <name>W_GeoExtToolbar</name>
    <options>
      <widgets>
        <widget>WLA_Sample</widget>
      </widgets>
    </options>
  </geoexttoolbar>


XML Sample - widget needs a widget type service
------------------------------------------------

In services :

.. code-block:: xslt

   <widget>
     <name>WidgetService</name>
   </widget>


In datastore :

.. code-block:: xslt

   <datastore>
     <name>DataStoreWidget</name>
     <service>WidgetService</service>
     <params>
       <widgettype>wmslayeradder</widgettype>
       <method>methodManager</method>                        
     </params>
   </datastore> 


In resource :

.. code-block:: xslt

   <resource>
     <name>res_wmslist</name>
     <datastores>
       <datastore>DataStoreWidget</datastore>
     </datastores>
     <widgets>
       <widget>WLA_Sample</widget>
     </widgets> 
   </resource>


Mandatory Options
-------------------
N/A


Optional Options
------------------
:layers:                Contains <layer> tags.
:layers/layer:          Must be in the <layers> tag.  List of manually defined
                        layers that are not te be securised by geoprisma.
:layers/layer/name:     Must be in a <layer> tag.  Unique name for the layer,
                        only use alphanumeric characters or the underscore.
:layers/layer/text:     Must be in a <layer> tag.  Name to be shown in the list.
:layers/layer/url:      Must be in a <layer> tag.  Url of the server containing
                        the desired layer.
:layers/layer/layer:    Must be in a <layer> tag.  List of the layers to get 
                        from the server.
:layers/layer/opacity:  Must be in a <layer> tag.  Opacity of the layer. Number
                        from 0 to 1.
:mode:                  Specify the location where the favorites are stored.  
                        Can be cookie, curl or db.  Default to cookie (not 
                        safe for user/pass)

**== If mode is db (all mandatory) ==**

:dsn:          Database access informations.
:user:         The user for the wanted database
:password:     The password for the wanted database
:select_query: The query required to obtain the list from the database
:select_list:  The variable list to obtain them in php.  Seperated by commas.
:insert_query: The query required to insert a new server in the database
:insert_list:  The variable list to obtain them in php.  Seperated by commas.
:delete_query: The query required to delete a server from the database
:delete_list:  The variable list to obtain them in php.  Seperated by commas.

**== If mode is curl (all mandatory) ==**

:urlmode: The type of path that will be used.  Can be relative or absolute.
:url:     The url of the page that will insert, delete or list the saved
          servers.
:post:    Contains a list of tags that will be posted to the specified url.


Service Type
--------------
wms


Widget Action
--------------
read