< Views

Security Configuration >

## 14. Editing

The `edit` plugin allows users to edit geographical data from their web browser.

## 14.1. Client-side Configuration

### 14.1.1. edit.ini

Here are the options that can be set on the client:

- general.allowedRoles: comma separated list of the roles that are allowed to use the edit plugin
- insertedFeaturesMaxNumber: integer, number of new features that user is allowed to draw for insertion in the database Set it to 0 if user is only allowed to update or delete features.
- editLayers: comma separated list of layers that are editable
- editResultNbCol: number of columns to use to display the attributes table
- editDisplayAction: this string parameter is used to tell if the "validate" and "cancel" buttons have to be displayed also under the attributes table. If empty or `both`, buttons will be displayed both in the folder and under the attributes table. If `folder`, buttons will be displayed only in the folder.

## 14.2. Related Elements in Mapfile

### 14.2.1. Metadatas

Specific metadatas must be set in the mapfile for the editable layers

    METADATA
        ...
        'edit_table' 'edit_poly' # PostGIS table
        'edit_geometry_column' 'the_geom' # PostGIS geometry column
        'edit_geometry_type' 'polygon' # PostGIS geometry type
        'edit_srid' '-1'
        'edit_attributes' 'parc_id,name|string,culture|string,surf,parc_type|integer' # list of the editable fields
    END

- edit_table: string, name of the postGIS table to edit
- edit_geometry_column: string, name of the geometry field in the table
- edit_geometry_type: string, type of the geometry of the features for the layerpossible values are point, line, polygonMay differ from the msLayer type (rendering)
- edit_srid: integer (optional), id of the SRID
- edit_attributes: string, comma separated list of attributes used for edition.Each value represents the attribute name and type separated by a pipe symbol. Only attributes with type set are editable.

  ### Warning

  Attribute types available values are 'string' and 'integer'.

## 14.3. How To

In this section are described the steps to get the edit plugin working on a cartoweb project.

- First, you need a PostgreSQL database with postGIS enabled. Let's say, it is named "edit_db" for the following explanations.

- At that point, you may launch demoEdit_schema.sql and demoEdit_data.sql. located in the

  `<CARTOWEB_HOME>/projects/demoEdit/` directory. This will create 3 sample geometry tables, one for each type of geometry.

- In CartoWeb, you'll have to load the edit plugin in your project on both client and server sides.

      loadPlugins = [...], edit

- Then, you'll need to configure the plugin by setting the layer_ids in the editLayers parameter in the edit.ini file.

      editLayers = edit_poly, edit_line, edit_point

- In your mapfile, in the corresponding LAYER, you'll have to set the specific metadatas as following :

      LAYER
        NAME "edit_poly"
        STATUS ON
        TYPE POLYGON
        CONNECTIONTYPE POSTGIS
        CONNECTION 'dbname=edit_db user=www-data password=www-data host=localhost'
        DATA 'the_geom from (select the_geom, oid, parc_id, name, culture, surf, parc_type  from edit_poly) as foo'
        TEMPLATE 'ttt'
      [...]
        LABELITEM "name"
        CLASS
          NAME "class"
          STYLE
            COLOR 50 50 255
            OUTLINECOLOR 255 50 50
          END
          LABEL
      [...]
          END
        END
        METADATA
          'id_attribute_string' 'parc_id' # query
          'query_returned_attributes' 'parc_id name culture surf parc_type'
          'edit_table' 'edit_poly' # PostGIS table
          'edit_geometry_column' 'the_geom' # PostGIS geometry column
          'edit_geometry_type' 'polygon' # PostGIS geometry type
          'edit_srid' '-1'
          'edit_attributes' 'parc_id,name|string,culture|string,surf,parc_type|integer' # list of the editable fields
          'edit_filter' '' # mapserver filter
        END
      END

  ### Warning

  Make sure that your `edit_attributes` list does not include spaces between attributes.