diff --git a/htdocs/adherents/canvas/actions_adherentcard_common.class.php b/htdocs/adherents/canvas/actions_adherentcard_common.class.php
new file mode 100644
index 0000000000000000000000000000000000000000..a17cad48f1f9251e10880b58d9ff19bf5e72bb43
--- /dev/null
+++ b/htdocs/adherents/canvas/actions_adherentcard_common.class.php
@@ -0,0 +1,435 @@
+<?php
+/* Copyright (C) 2010-2012 Regis Houssin  <regis@dolibarr.fr>
+ * Copyright (C) 2012      Philippe Grand <philippe.grand@atoo-net.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/**
+ *	\file       htdocs/contact/canvas/actions_adherentcard_common.class.php
+ *	\ingroup    thirdparty
+ *	\brief      Fichier de la classe Adherent card controller (common)
+ */
+
+/**
+ *	\class      ActionsAdherentCardCommon
+ *	\brief      Classe permettant la gestion des adherents par defaut
+ */
+abstract class ActionsAdherentCardCommon
+{
+    var $db;
+    var $dirmodule;
+    var $targetmodule;
+    var $canvas;
+    var $card;
+
+	//! Template container
+	var $tpl = array();
+	//! Object container
+	var $object;
+	//! Error string
+	var $error;
+	//! Error array
+	var $errors=array();
+
+
+	/**
+	 * 	Instantiation of DAO class
+	 *
+	 * 	@return	void
+	 */
+	private function getInstanceDao()
+	{
+		if (! is_object($this->object))
+		{
+			$modelclassfile = dol_buildpath('/'.$this->dirmodule.'/canvas/'.$this->canvas.'/dao_'.$this->targetmodule.'_'.$this->canvas.'.class.php');
+	        if (file_exists($modelclassfile))
+	        {
+	            // Include dataservice class (model)
+	            $ret = require_once $modelclassfile;
+	            if ($ret)
+	            {
+	            	// Instantiate dataservice class (model)
+	            	$modelclassname = 'Dao'.ucfirst($this->targetmodule).ucfirst($this->canvas);
+	            	$this->object = new $modelclassname($this->db);
+	            }
+	        }
+		}
+	}
+
+	/**
+     *  Get object
+	 *
+     *  @param	int		$id		Object id
+     *  @return	object			Object loaded
+     */
+    function getObject($id)
+    {
+    	$ret = $this->getInstanceDao();
+
+    	if (is_object($this->object) && method_exists($this->object,'fetch'))
+    	{
+    		if (! empty($id)) $this->object->fetch($id);
+    	}
+    	else
+    	{
+    		$object = new Adherent($this->db);
+    		if (! empty($id)) $object->fetch($id);
+            $this->object = $object;
+    	}
+    }
+
+    /**
+     *  Load data control
+     *
+	 *  @param	string	&$action    Type of action
+	 *  @param	int		$id			Id of object
+     *	@return	void
+     */
+    function doActions(&$action, $id)
+    {
+        global $conf, $user, $langs;
+
+        // Creation utilisateur depuis Adherent
+        if ($action == 'confirm_create_user' && GETPOST("confirm") == 'yes')
+        {
+            // Recuperation adherent actuel
+            $result = $this->object->fetch($id);
+
+            if ($result > 0)
+            {
+                $this->db->begin();
+
+                // Creation user
+                $nuser = new User($this->db);
+                $result=$nuser->create_from_member($this->object,$_POST["login"]);
+
+                if ($result > 0)
+                {
+                    $result2=$nuser->setPassword($user,$_POST["password"],0,1,1);
+                    if ($result2)
+                    {
+                        $this->db->commit();
+                    }
+                    else
+                    {
+                        $this->db->rollback();
+                    }
+                }
+                else
+                {
+                    $this->errors=$nuser->error;
+
+                    $this->db->rollback();
+                }
+            }
+            else
+            {
+                $this->errors=$this->object->errors;
+            }
+        }
+
+        // Creation adherent
+        if ($action == 'add')
+        {
+            $this->assign_post();
+
+            if (! $_POST["name"])
+            {
+                array_push($this->errors,$langs->trans("ErrorFieldRequired",$langs->transnoentities("Lastname").' / '.$langs->transnoentities("Label")));
+                $action = 'create';
+            }
+
+            if ($_POST["name"])
+            {
+                $id =  $this->object->create($user);
+                if ($id > 0)
+                {
+                    header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id);
+                    exit;
+                }
+                else
+                {
+                    $this->errors=$this->object->errors;
+                    $action = 'create';
+                }
+            }
+        }
+
+        if ($action == 'confirm_delete' && GETPOST("confirm") == 'yes')
+        {
+            $result=$this->object->fetch($id);
+
+            $this->object->old_name = $_POST["old_name"];
+            $this->object->old_firstname = $_POST["old_firstname"];
+
+            $result = $this->object->delete();
+            if ($result > 0)
+            {
+                header("Location: list.php");
+                exit;
+            }
+            else
+            {
+                $this->errors=$this->object->errors;
+            }
+        }
+
+        if ($action == 'update')
+        {
+        	if ($_POST["cancel"])
+        	{
+        		header("Location: ".$_SERVER["PHP_SELF"]."?id=".$this->object->id);
+        		exit;
+        	}
+
+            if (empty($_POST["name"]))
+            {
+                $this->error=array($langs->trans("ErrorFieldRequired",$langs->transnoentities("Name").' / '.$langs->transnoentities("Label")));
+                $action = 'edit';
+            }
+
+            if (empty($this->error))
+            {
+                $this->object->fetch($_POST["adherentid"]);
+
+                $this->object->oldcopy=dol_clone($this->object);
+
+                $this->assign_post();
+
+                $result = $this->object->update($_POST["adherentid"], $user);
+
+                if ($result > 0)
+                {
+                    header("Location: ".$_SERVER["PHP_SELF"]."?id=".$this->object->id);
+                    exit;
+                }
+                else
+                {
+                    $this->errors=$this->object->errors;
+                    $action = 'edit';
+                }
+            }
+        }
+    }
+
+	/**
+     *  Set content of ->tpl array, to use into template
+     *
+     *  @param	string		&$action    Type of action
+     *  @param	int			$id			Id
+     *  @return	string					HTML output
+     */
+    function assign_values(&$action, $id)
+    {
+        global $conf, $langs, $user, $canvas;
+        global $form, $formcompany, $objsoc;
+
+        if ($action == 'add' || $action == 'update') $this->assign_post();
+
+        foreach($this->object as $key => $value)
+        {
+            $this->tpl[$key] = $value;
+        }
+
+        $this->tpl['error']=$this->error;
+        $this->tpl['errors']=$this->errors;
+
+        if ($action == 'create' || $action == 'edit')
+        {
+        	if ($conf->use_javascript_ajax)
+			{
+				$this->tpl['ajax_selectcountry'] = "\n".'<script type="text/javascript" language="javascript">
+				jQuery(document).ready(function () {
+						jQuery("#selectcountry_id").change(function() {
+							document.formsoc.action.value="'.$action.'";
+							document.formsoc.canvas.value="'.$canvas.'";
+							document.formsoc.submit();
+						});
+					})
+				</script>'."\n";
+			}
+
+        	if (is_object($objsoc) && $objsoc->id > 0)
+        	{
+        		$this->tpl['company'] = $objsoc->getNomUrl(1);
+        		$this->tpl['company_id'] = $objsoc->id;
+        	}
+        	else
+        	{
+        		$this->tpl['company'] = $form->select_company($this->object->socid,'socid','',1);
+        	}
+
+        	// Civility
+        	$this->tpl['select_civility'] = $formcompany->select_civility($this->object->civilite_id);
+
+        	// Predefined with third party
+        	if ((isset($objsoc->typent_code) && $objsoc->typent_code == 'TE_PRIVATE'))
+        	{
+        		if (dol_strlen(trim($this->object->address)) == 0) $this->tpl['address'] = $objsoc->address;
+        		if (dol_strlen(trim($this->object->zip)) == 0) $this->object->zip = $objsoc->zip;
+        		if (dol_strlen(trim($this->object->town)) == 0) $this->object->town = $objsoc->town;
+        		if (dol_strlen(trim($this->object->phone_perso)) == 0) $this->object->phone_perso = $objsoc->phone;
+        		if (dol_strlen(trim($this->object->phone_mobile)) == 0) $this->object->phone_mobile = $objsoc->phone_mobile;
+        		if (dol_strlen(trim($this->object->email)) == 0) $this->object->email = $objsoc->email;
+        	}
+
+            // Zip
+            $this->tpl['select_zip'] = $formcompany->select_ziptown($this->object->zip,'zipcode',array('town','selectcountry_id','departement_id'),6);
+
+            // Town
+            $this->tpl['select_town'] = $formcompany->select_ziptown($this->object->town,'town',array('zipcode','selectcountry_id','departement_id'));
+
+            if (dol_strlen(trim($this->object->country_id)) == 0) $this->object->country_id = $objsoc->country_id;
+
+            // Country
+            $this->tpl['select_country'] = $form->select_country($this->object->country_id,'country_id');
+            $countrynotdefined = $langs->trans("ErrorSetACountryFirst").' ('.$langs->trans("SeeAbove").')';
+
+            if ($user->admin) $this->tpl['info_admin'] = info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionnarySetup"),1);
+
+            // State
+            if ($this->object->country_id) $this->tpl['select_state'] = $formcompany->select_state($this->object->fk_departement,$this->object->country_code);
+            else $this->tpl['select_state'] = $countrynotdefined;
+
+            // Physical or Moral
+            $selectarray=array('0'=>$langs->trans("Physical"),'1'=>$langs->trans("Moral"));
+            $this->tpl['select_morphy'] = $form->selectarray('morphy',$selectarray,$this->object->morphy,0);
+        }
+
+        if ($action == 'view' || $action == 'edit' || $action == 'delete')
+        {
+        	// Emailing
+        	if (! empty($conf->mailing->enabled))
+			{
+				$langs->load("mails");
+				$this->tpl['nb_emailing'] = $this->object->getNbOfEMailings();
+			}
+
+
+        	// Dolibarr user
+        	if ($this->object->user_id)
+			{
+				$dolibarr_user=new User($this->db);
+				$result=$dolibarr_user->fetch($this->object->user_id);
+				$this->tpl['dolibarr_user'] = $dolibarr_user->getLoginUrl(1);
+			}
+			else $this->tpl['dolibarr_user'] = $langs->trans("NoDolibarrAccess");
+        }
+
+        if ($action == 'view' || $action == 'delete')
+        {
+        	$this->tpl['showrefnav'] = $form->showrefnav($this->object,'id');
+
+        	if ($this->object->socid > 0)
+        	{
+        		$objsoc = new Societe($this->db);
+
+        		$objsoc->fetch($this->object->socid);
+        		$this->tpl['company'] = $objsoc->getNomUrl(1);
+        	}
+        	else
+        	{
+        		$this->tpl['company'] = $langs->trans("AdherentNotLinkedToThirdParty");
+        	}
+
+        	$this->tpl['civility'] = $this->object->getCivilityLabel();
+
+            $this->tpl['address'] = dol_nl2br($this->object->address);
+
+            $this->tpl['zip'] = ($this->object->zip?$this->object->zip.'&nbsp;':'');
+
+            $img=picto_from_langcode($this->object->country_code);
+            $this->tpl['country'] = ($img?$img.' ':'').$this->object->country;
+
+            $this->tpl['phone_perso'] 	= dol_print_phone($this->object->phone_perso,$this->object->country_code,0,$this->object->id,'AC_TEL');
+            $this->tpl['phone_mobile'] 	= dol_print_phone($this->object->phone_mobile,$this->object->country_code,0,$this->object->id,'AC_TEL');
+            $this->tpl['email'] 		= dol_print_email($this->object->email,0,$this->object->id,'AC_EMAIL');
+
+            $this->tpl['visibility'] = $this->object->getmorphylib($this->object->morphy);
+
+            $this->tpl['note'] = nl2br($this->object->note);
+        }
+
+        if ($action == 'create_user')
+        {
+        	// Full firstname and name separated with a dot : firstname.name
+        	include_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php';
+            require_once DOL_DOCUMENT_ROOT.'/core/lib/security2.lib.php';
+        	$login=dol_buildlogin($this->object->nom, $this->object->prenom);
+
+       		$generated_password=getRandomPassword('');
+        	$password=$generated_password;
+
+        	// Create a form array
+        	$formquestion=array(
+        	array('label' => $langs->trans("LoginToCreate"), 'type' => 'text', 'name' => 'login', 'value' => $login),
+        	array('label' => $langs->trans("Password"), 'type' => 'text', 'name' => 'password', 'value' => $password));
+
+        	$this->tpl['action_create_user'] = $form->formconfirm($_SERVER["PHP_SELF"]."?id=".$this->object->id,$langs->trans("CreateDolibarrLogin"),$langs->trans("ConfirmCreateAdherent"),"confirm_create_user",$formquestion,'no');
+        }
+    }
+
+    /**
+     *  Assign POST values into object
+     *
+     *  @return		string					HTML output
+     */
+    private function assign_post()
+    {
+        global $langs, $mysoc;
+
+        $this->object->old_name 			= 	$_POST["old_name"];
+        $this->object->old_firstname 		= 	$_POST["old_firstname"];
+
+        $this->object->fk_soc				=	$_POST["fk_soc"];
+        $this->object->name					=	$_POST["name"];
+        $this->object->firstname			= 	$_POST["firstname"];
+        $this->object->civilite_id			= 	$_POST["civilite_id"];
+        $this->object->address				=	$_POST["address"];
+        $this->object->zip					=	$_POST["zipcode"];
+        $this->object->town					=	$_POST["town"];
+        $this->object->fk_pays				=	$_POST["country_id"]?$_POST["country_id"]:$mysoc->country_id;
+        $this->object->fk_departement		=	$_POST["departement_id"];
+        $this->object->country_id			=	$_POST["country_id"]?$_POST["country_id"]:$mysoc->country_id;
+        $this->object->state_id        		=	$_POST["departement_id"];
+        $this->object->phone_perso			= 	$_POST["phone_perso"];
+        $this->object->phone_mobile			= 	$_POST["phone_mobile"];
+        $this->object->email				=	$_POST["email"];
+        $this->object->note					=	$_POST["note"];
+        $this->object->canvas				=	$_POST["canvas"];
+
+        // We set country_id, and country_code label of the chosen country
+        if ($this->object->country_id)
+        {
+            $sql = "SELECT code, libelle FROM ".MAIN_DB_PREFIX."c_pays WHERE rowid = ".$this->object->country_id;
+            $resql=$this->db->query($sql);
+            if ($resql)
+            {
+                $obj = $this->db->fetch_object($resql);
+            }
+            else
+            {
+                dol_print_error($this->db);
+            }
+            $this->object->pays_code	=	$obj->code;
+            $this->object->pays			=	$langs->trans("Country".$obj->code)?$langs->trans("Country".$obj->code):$obj->libelle;
+            $this->object->country_code	=	$obj->code;
+            $this->object->country		=	$langs->trans("Country".$obj->code)?$langs->trans("Country".$obj->code):$obj->libelle;
+        }
+    }
+
+}
+
+?>
diff --git a/htdocs/adherents/canvas/default/actions_adherentcard_default.class.php b/htdocs/adherents/canvas/default/actions_adherentcard_default.class.php
new file mode 100644
index 0000000000000000000000000000000000000000..c3e7af66677303df6e90583cc1573e4784b78baa
--- /dev/null
+++ b/htdocs/adherents/canvas/default/actions_adherentcard_default.class.php
@@ -0,0 +1,148 @@
+<?php
+/* Copyright (C) 2010-2012	Regis Houssin		<regis@dolibarr.fr>
+ * Copyright (C) 2011		Laurent Destailleur	<eldy@users.sourceforge.net>
+ * Copyright (C) 2012       Philippe Grand      <philippe.grand@atoo-net.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/**
+ *	\file       htdocs/contact/canvas/default/actions_adherentcard_default.class.php
+ *	\ingroup    thirdparty
+ *	\brief      Fichier de la classe Thirdparty adherent card controller (default canvas)
+ */
+include_once DOL_DOCUMENT_ROOT.'/adherent/canvas/actions_adherentcard_common.class.php';
+
+/**
+ *	\class      ActionsAdherentCardDefault
+ *	\brief      Classe permettant la gestion des adherents par defaut
+ */
+class ActionsAdherentCardDefault extends ActionsAdherentCardCommon
+{
+	var $db;
+	var $dirmodule;
+    var $targetmodule;
+    var $canvas;
+    var $card;
+
+	/**
+     *	Constructor
+     *
+     *	@param	DoliDB	$db				Handler acces base de donnees
+     *	@param	string	$dirmodule		Name of directory of module
+     *	@param	string	$targetmodule	Name of directory of module where canvas is stored
+     *	@param	string	$canvas			Name of canvas
+     *	@param	string	$card			Name of tab (sub-canvas)
+	 */
+	function __construct($db, $dirmodule, $targetmodule, $canvas, $card)
+	{
+        $this->db               = $db;
+        $this->dirmodule		= $dirmodule;
+        $this->targetmodule     = $targetmodule;
+        $this->canvas           = $canvas;
+        $this->card             = $card;
+	}
+
+	/**
+	 * 	Return the title of card
+	 *
+	 * 	@param	string	$action		Code action
+	 * 	@return	string				Title
+	 */
+	private function getTitle($action)
+	{
+		global $langs;
+
+		$out='';
+
+		if ($action == 'view') 		$out.= (! empty($conf->global->ADHERENT_ADDRESSES_MANAGEMENT) ? $langs->trans("Adherent") : $langs->trans("ContactAddress"));
+		if ($action == 'edit') 		$out.= (! empty($conf->global->ADHERENT_ADDRESSES_MANAGEMENT) ? $langs->trans("EditAdherent") : $langs->trans("EditAdherentAddress"));
+		if ($action == 'create')	$out.= (! empty($conf->global->ADHERENT_ADDRESSES_MANAGEMENT) ? $langs->trans("NewAdherent") : $langs->trans("NewAdherentAddress"));
+
+		return $out;
+	}
+
+	/**
+	 *  Assign custom values for canvas
+	 *
+	 *  @param	string		&$action    	Type of action
+	 *  @param	int			$id				Id
+	 *  @return	void
+	 */
+	function assign_values(&$action, $id)
+	{
+		global $conf, $db, $langs, $user;
+		global $form;
+
+		$ret = $this->getObject($id);
+
+        parent::assign_values($action, $id);
+
+        $this->tpl['title'] = $this->getTitle($action);
+        $this->tpl['error'] = $this->error;
+        $this->tpl['errors']= $this->errors;
+
+		if ($action == 'view')
+		{
+            // Card header
+            $head = member_prepare_head($this->object);
+            $title = $this->getTitle($action);
+
+		    $this->tpl['showhead']=dol_get_fiche_head($head, 'card', $title, 0, 'adherent');
+		    $this->tpl['showend']=dol_get_fiche_end();
+
+        	$objsoc = new Societe($db);
+            $objsoc->fetch($this->object->socid);
+
+            $this->tpl['actionstodo']=show_actions_todo($conf,$langs,$db,$objsoc,$this->object,1);
+
+            $this->tpl['actionsdone']=show_actions_done($conf,$langs,$db,$objsoc,$this->object,1);
+		}
+		else
+		{
+			// Confirm delete contact
+        	if ($action == 'delete' && $user->rights->adherent->supprimer)
+        	{
+        		$this->tpl['action_delete'] = $form->formconfirm($_SERVER["PHP_SELF"]."?id=".$this->object->id,$langs->trans("DeleteAdherent"),$langs->trans("ConfirmDeleteAdherent"),"confirm_delete",'',0,1);
+        	}
+		}
+
+		if ($action == 'list')
+		{
+	        $this->LoadListDatas($GLOBALS['limit'], $GLOBALS['offset'], $GLOBALS['sortfield'], $GLOBALS['sortorder']);
+		}
+
+	}
+
+
+	/**
+	 * 	Fetch datas list
+	 *
+	 *  @param	int		$limit		Limit number of responses
+	 *  @param	int		$offset		Offset for first response
+	 *  @param	string	$sortfield	Sort field
+	 *  @param	string	$sortorder	Sort order ('ASC' or 'DESC')
+	 *  @return	void
+	 */
+	function LoadListDatas($limit, $offset, $sortfield, $sortorder)
+	{
+		global $conf, $langs;
+
+        //$this->getFieldList();
+
+        $this->list_datas = array();
+	}
+}
+
+?>
\ No newline at end of file
diff --git a/htdocs/adherents/canvas/default/index.php b/htdocs/adherents/canvas/default/index.php
new file mode 100644
index 0000000000000000000000000000000000000000..7db0dd9ebf92f2ddad5a82d32d38ab764846107a
--- /dev/null
+++ b/htdocs/adherents/canvas/default/index.php
@@ -0,0 +1 @@
+Url not available
\ No newline at end of file
diff --git a/htdocs/adherents/canvas/default/tpl/adherentcard_create.tpl.php b/htdocs/adherents/canvas/default/tpl/adherentcard_create.tpl.php
new file mode 100644
index 0000000000000000000000000000000000000000..10e258aad10a360c3626bac040426fb759fc5405
--- /dev/null
+++ b/htdocs/adherents/canvas/default/tpl/adherentcard_create.tpl.php
@@ -0,0 +1,123 @@
+<?php
+/* Copyright (C) 2010 Regis Houssin  <regis@dolibarr.fr>
+ * Copyright (C) 2012 Philippe Grand <philippe.grand@atoo-net.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+?>
+
+<!-- BEGIN PHP TEMPLATE ADHERENTCARD_CREATE.TPL.PHP DEFAULT -->
+
+<?php
+print_fiche_titre($this->control->tpl['title']);
+
+dol_htmloutput_errors((is_numeric($object->error)?'':$object->error),$object->errors);
+
+dol_htmloutput_errors((is_numeric($GLOBALS['error'])?'':$GLOBALS['error']),$GLOBALS['errors']);
+
+dol_htmloutput_errors($this->control->tpl['error'],$this->control->tpl['errors']);
+
+echo $this->control->tpl['ajax_selectcountry']; ?>
+
+<br>
+
+<form method="post" name="formmember" action="<?php echo $_SERVER["PHP_SELF"]; ?>">
+<input type="hidden" name="token" value="<?php echo $_SESSION['newtoken']; ?>">
+<input type="hidden" name="canvas" value="<?php echo $canvas ?>">
+<input type="hidden" name="action" value="add">
+<?php if ($this->control->tpl['company_id']) { ?>
+<input type="hidden" name="socid" value="<?php echo $this->control->tpl['company_id']; ?>">
+<?php } ?>
+
+<table class="border allwidth">
+
+<tr>
+	<td width="15%" class="fieldrequired"><?php echo $langs->trans("Lastname").' / '.$langs->trans("Label"); ?></td>
+	<td><input name="lastname" type="text" size="30" maxlength="80" value="<?php echo $this->control->tpl['name']; ?>"></td>
+	<td width="20%"><?php echo $langs->trans("Firstname"); ?></td>
+	<td width="25%"><input name="firstname" type="text" size="30" maxlength="80" value="<?php echo $this->control->tpl['firstname']; ?>"></td>
+</tr>
+
+<tr>
+	<td><?php echo $langs->trans("Company"); ?></td>
+	<td colspan="3"><?php echo $this->control->tpl['company']; ?></td>
+</tr>
+
+<tr>
+	<td width="15%"><?php echo $langs->trans("UserTitle"); ?></td>
+	<td colspan="3"><?php echo $this->control->tpl['select_civility']; ?></td>
+</tr>
+
+<tr>
+	<td><?php echo $langs->trans("Morphy"); ?></td>
+	<td colspan="3"><input name="morphy" type="text" size="50" maxlength="80" value="<?php echo $this->control->tpl['select_morphy']; ?>"></td>
+</tr>
+
+<tr>
+	<td><?php echo $langs->trans("Address"); ?></td>
+	<td colspan="3"><textarea class="flat" name="address" cols="70"><?php echo $this->control->tpl['address']; ?></textarea></td>
+</tr>
+
+<tr>
+	<td><?php echo $langs->trans("Zip").' / '.$langs->trans("Town"); ?></td>
+	<td colspan="3"><?php echo $this->control->tpl['select_zip'].'&nbsp;'.$this->control->tpl['select_town']; ?></td>
+</tr>
+
+<tr>
+	<td><?php echo $langs->trans("Country"); ?></td>
+	<td colspan="3"><?php echo $this->control->tpl['select_country'].$this->control->tpl['info_admin']; ?></td>
+</tr>
+
+<tr>
+	<td><?php echo $langs->trans('State'); ?></td>
+	<td colspan="3"><?php echo $this->control->tpl['select_state']; ?></td>
+</tr>
+
+<tr>
+	<td><?php echo $langs->trans("PhonePro"); ?></td>
+	<td><input name="phone_pro" type="text" size="18" maxlength="80" value="<?php echo $this->control->tpl['phone_pro']; ?>"></td>
+	<td><?php echo $langs->trans("PhonePerso"); ?></td>
+	<td><input name="phone_perso" type="text" size="18" maxlength="80" value="<?php echo $this->control->tpl['phone_perso']; ?>"></td>
+</tr>
+
+<tr>
+	<td><?php echo $langs->trans("PhoneMobile"); ?></td>
+	<td><input name="phone_mobile" type="text" size="18" maxlength="80" value="<?php echo $this->control->tpl['phone_mobile']; ?>"></td>
+</tr>
+
+<tr>
+	<td><?php echo $langs->trans("Email"); ?></td>
+	<td colspan="3"><input name="email" type="text" size="50" maxlength="80" value="<?php echo $this->control->tpl['email']; ?>"></td>
+</tr>
+
+<tr>
+	<td><?php echo $langs->trans("ContactVisibility"); ?></td>
+	<td colspan="3"><?php echo $this->control->tpl['select_visibility']; ?></td>
+</tr>
+
+<tr>
+	<td valign="top"><?php echo $langs->trans("Note"); ?></td>
+	<td colspan="3" valign="top"><textarea name="note" cols="70" rows="<?php echo ROWS_3; ?>"><?php echo $this->control->tpl['note']; ?></textarea></td>
+</tr>
+
+<tr>
+	<td align="center" colspan="4"><input type="submit" class="button" value="<?php echo $langs->trans("Add"); ?>"></td>
+</tr>
+
+</table><br>
+
+</form>
+
+<!-- END PHP TEMPLATE -->
\ No newline at end of file
diff --git a/htdocs/adherents/canvas/default/tpl/adherentcard_edit.tpl.php b/htdocs/adherents/canvas/default/tpl/adherentcard_edit.tpl.php
new file mode 100644
index 0000000000000000000000000000000000000000..d825e14d681ed5ccbb884dfc0f738681a7e3ca12
--- /dev/null
+++ b/htdocs/adherents/canvas/default/tpl/adherentcard_edit.tpl.php
@@ -0,0 +1,140 @@
+<?php
+/* Copyright (C) 2010 Regis Houssin  <regis@dolibarr.fr>
+ * Copyright (C) 2012 Philippe Grand <philippe.grand@atoo-net.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+$contact = $GLOBALS['objcanvas']->control->object;
+
+?>
+
+<!-- BEGIN PHP TEMPLATE ADHERENTCARD_EDIT.TPL.PHP DEFAULT -->
+
+<?php
+print_fiche_titre($this->control->tpl['title']);
+
+dol_htmloutput_errors($this->control->tpl['error'],$this->control->tpl['errors']);
+
+echo $this->control->tpl['ajax_selectcountry'];
+?>
+
+<br>
+
+<form method="post" name="formmember" action="<?php echo $_SERVER["PHP_SELF"].'?id='.GETPOST('id','int'); ?>">
+<input type="hidden" name="token" value="<?php echo $_SESSION['newtoken']; ?>">
+<input type="hidden" name="canvas" value="<?php echo $canvas ?>">
+<input type="hidden" name="id" value="<?php echo GETPOST('id','int'); ?>">
+<input type="hidden" name="action" value="update">
+<input type="hidden" name="adherentid" value="<?php echo $this->control->tpl['id']; ?>">
+<input type="hidden" name="old_name" value="<?php echo $this->control->tpl['name']; ?>">
+<input type="hidden" name="old_firstname" value="<?php echo $this->control->tpl['firstname']; ?>">
+<?php if (! empty($this->control->tpl['company_id'])) { ?>
+<input type="hidden" name="socid" value="<?php echo $this->control->tpl['company_id']; ?>">
+<?php } ?>
+
+<table class="border allwidth">
+
+<tr>
+	<td><?php echo $langs->trans("Ref"); ?></td>
+	<td colspan="3"><?php echo $this->control->tpl['ref']; ?></td>
+</tr>
+
+<tr>
+	<td width="15%" class="fieldrequired"><?php echo $langs->trans("Lastname").' / '.$langs->trans("Label"); ?></td>
+	<td><input name="lastname" type="text" size="30" maxlength="80" value="<?php echo $this->control->tpl['name']; ?>"></td>
+	<td width="20%"><?php echo $langs->trans("Firstname"); ?></td>
+	<td width="25%"><input name="firstname" type="text" size="30" maxlength="80" value="<?php echo $this->control->tpl['firstname']; ?>"></td>
+</tr>
+
+<tr>
+	<td><?php echo $langs->trans("Company"); ?></td>
+	<td colspan="3"><?php echo $this->control->tpl['company']; ?></td>
+</tr>
+
+<tr>
+	<td width="15%"><?php echo $langs->trans("UserTitle"); ?></td>
+	<td colspan="3"><?php echo $this->control->tpl['select_civility']; ?></td>
+</tr>
+
+<tr>
+	<td><?php echo $langs->trans("Morphy"); ?></td>
+	<td colspan="3"><input name="poste" type="text" size="50" maxlength="80" value="<?php echo $this->control->tpl['select_morphy']; ?>"></td>
+</tr>
+
+<tr>
+	<td><?php echo $langs->trans("Address"); ?></td>
+	<td colspan="3"><textarea class="flat" name="address" cols="70"><?php echo $this->control->tpl['address']; ?></textarea></td>
+</tr>
+
+<tr>
+	<td><?php echo $langs->trans("Zip").' / '.$langs->trans("Town"); ?></td>
+	<td colspan="3"><?php echo $this->control->tpl['select_zip'].'&nbsp;'.$this->control->tpl['select_town']; ?></td>
+</tr>
+
+<tr>
+	<td><?php echo $langs->trans("Country"); ?></td>
+	<td colspan="3"><?php echo $this->control->tpl['select_country'].$this->control->tpl['info_admin']; ?></td>
+</tr>
+
+<tr>
+	<td><?php echo $langs->trans('State'); ?></td>
+	<td colspan="3"><?php echo $this->control->tpl['select_state']; ?></td>
+</tr>
+
+<tr>
+	<td><?php echo $langs->trans("PhonePro"); ?></td>
+	<td><input name="phone_pro" type="text" size="18" maxlength="80" value="<?php echo $this->control->tpl['phone_pro']; ?>"></td>
+	<td><?php echo $langs->trans("PhonePerso"); ?></td>
+	<td><input name="phone_perso" type="text" size="18" maxlength="80" value="<?php echo $this->control->tpl['phone_perso']; ?>"></td>
+</tr>
+
+<tr>
+	<td><?php echo $langs->trans("PhoneMobile"); ?></td>
+	<td><input name="phone_mobile" type="text" size="18" maxlength="80" value="<?php echo $this->control->tpl['phone_mobile']; ?>"></td>
+</tr>
+
+<tr>
+	<td><?php echo $langs->trans("Email"); ?></td>
+	<td><input name="email" type="text" size="50" maxlength="80" value="<?php echo $this->control->tpl['email']; ?>"></td>
+</tr>
+
+<tr>
+	<td><?php echo $langs->trans("ContactVisibility"); ?></td>
+	<td colspan="3"><?php echo $this->control->tpl['select_visibility']; ?></td>
+</tr>
+
+<tr>
+	<td valign="top"><?php echo $langs->trans("Note"); ?></td>
+	<td colspan="3" valign="top"><textarea name="note" cols="70" rows="<?php echo ROWS_3; ?>"><?php echo $this->control->tpl['note']; ?></textarea></td>
+</tr>
+
+<tr>
+	<td><?php echo $langs->trans("DolibarrLogin"); ?></td>
+	<td colspan="3"><?php echo $this->control->tpl['dolibarr_user']; ?></td>
+</tr>
+
+<tr>
+	<td colspan="4" align="center">
+	<input type="submit" class="button" name="save" value="<?php echo $langs->trans("Save"); ?>">&nbsp;
+	<input type="submit" class="button" name="cancel" value="<?php echo $langs->trans("Cancel"); ?>">
+	</td>
+</tr>
+
+</table><br>
+
+</form>
+
+<!-- END PHP TEMPLATE -->
\ No newline at end of file
diff --git a/htdocs/adherents/canvas/default/tpl/adherentcard_view.tpl.php b/htdocs/adherents/canvas/default/tpl/adherentcard_view.tpl.php
new file mode 100644
index 0000000000000000000000000000000000000000..7ffd10cb1491c45810c2d2a1c9d5979eff435bc6
--- /dev/null
+++ b/htdocs/adherents/canvas/default/tpl/adherentcard_view.tpl.php
@@ -0,0 +1,141 @@
+<?php
+/* Copyright (C) 2010-2012 Regis Houssin  <regis@dolibarr.fr>
+ * Copyright (C) 2012      Philippe Grand <philippe.grand@atoo-net.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+$contact = $GLOBALS['objcanvas']->control->object;
+?>
+
+<!-- BEGIN PHP TEMPLATE ADHERENTCARD_VIEW.TPL.PHP DEFAULT -->
+<?php echo $this->control->tpl['showhead']; ?>
+
+<?php
+dol_htmloutput_errors($this->control->tpl['error'],$this->control->tpl['errors']);
+?>
+
+<?php if (! empty($this->control->tpl['action_create_user'])) echo $this->control->tpl['action_create_user']; ?>
+<?php if (! empty($this->control->tpl['action_delete'])) echo $this->control->tpl['action_delete']; ?>
+
+<table class="border allwidth">
+
+<tr>
+	<td width="20%"><?php echo $langs->trans("Ref"); ?></td>
+	<td colspan="3"><?php echo $this->control->tpl['showrefnav']; ?></td>
+</tr>
+
+<tr>
+	<td width="20%"><?php echo $langs->trans("Lastname"); ?></td>
+	<td width="30%"><?php echo $this->control->tpl['name']; ?></td>
+	<td width="25%"><?php echo $langs->trans("Firstname"); ?></td>
+	<td width="25%"><?php echo $this->control->tpl['firstname']; ?></td>
+</tr>
+
+<tr>
+	<td><?php echo $langs->trans("Company"); ?></td>
+	<td colspan="3"><?php echo $this->control->tpl['company']; ?></td>
+</tr>
+
+<tr>
+	<td width="15%"><?php echo $langs->trans("UserTitle"); ?></td>
+	<td colspan="3"><?php echo $this->control->tpl['civility']; ?></td>
+</tr>
+
+<tr>
+	<td><?php echo $langs->trans("Morphy"); ?></td>
+	<td colspan="3"><?php echo $this->control->tpl['select_morphy']; ?></td>
+</tr>
+
+<tr>
+	<td><?php echo $langs->trans("Address"); ?></td>
+	<td colspan="3"><?php echo $this->control->tpl['address']; ?></td>
+</tr>
+
+<tr>
+	<td><?php echo $langs->trans("Zip").' / '.$langs->trans("Town"); ?></td>
+	<td colspan="3"><?php echo $this->control->tpl['zip'].$this->control->tpl['ville']; ?></td>
+</tr>
+
+<tr>
+	<td><?php echo $langs->trans("Country"); ?></td>
+	<td colspan="3"><?php echo $this->control->tpl['country']; ?></td>
+</tr>
+
+<tr>
+	<td><?php echo $langs->trans('State'); ?></td>
+	<td colspan="3"><?php echo $this->control->tpl['departement']; ?></td>
+</tr>
+
+<tr>
+	<td><?php echo $langs->trans("PhonePro"); ?></td>
+	<td><?php echo $this->control->tpl['phone_pro']; ?></td>
+	<td><?php echo $langs->trans("PhonePerso"); ?></td>
+	<td><?php echo $this->control->tpl['phone_perso']; ?></td>
+</tr>
+
+<tr>
+	<td><?php echo $langs->trans("PhoneMobile"); ?></td>
+	<td><?php echo $this->control->tpl['phone_mobile']; ?></td>
+</tr>
+
+<tr>
+	<td><?php echo $langs->trans("EMail"); ?></td>
+	<td><?php echo $this->control->tpl['email']; ?></td>
+</tr>
+
+<tr>
+	<td><?php echo $langs->trans("ContactVisibility"); ?></td>
+	<td colspan="3"><?php echo $this->control->tpl['visibility']; ?></td>
+</tr>
+
+<tr>
+	<td valign="top"><?php echo $langs->trans("Note"); ?></td>
+	<td colspan="3"><?php echo $this->control->tpl['note']; ?></td>
+</tr>
+
+<tr>
+	<td><?php echo $langs->trans("DolibarrLogin"); ?></td>
+	<td colspan="3"><?php echo $this->control->tpl['dolibarr_user']; ?></td>
+</tr>
+
+</table>
+
+<?php echo $this->control->tpl['showend']; ?>
+
+<?php if (! $user->societe_id) { ?>
+<div class="tabsAction">
+
+<?php if ($user->rights->adherent->creer) { ?>
+<a class="butAction" href="<?php echo $_SERVER["PHP_SELF"].'?id='.$this->control->tpl['id'].'&amp;action=edit&amp;canvas='.$canvas; ?>"><?php echo $langs->trans('Modify'); ?></a>
+<?php } ?>
+
+<?php if (! $this->control->tpl['user_id'] && $user->rights->user->user->creer) { ?>
+<a class="butAction" href="<?php echo $_SERVER["PHP_SELF"].'?id='.$this->control->tpl['id'].'&amp;action=create_user&amp;canvas='.$canvas; ?>"><?php echo $langs->trans("CreateDolibarrLogin"); ?></a>
+<?php } ?>
+
+<?php if ($user->rights->adherent->supprimer) { ?>
+<a class="butActionDelete" href="<?php echo $_SERVER["PHP_SELF"].'?id='.$this->control->tpl['id'].'&amp;action=delete&amp;canvas='.$canvas; ?>"><?php echo $langs->trans('Delete'); ?></a>
+<?php } ?>
+
+</div><br>
+<?php }
+
+echo $this->control->tpl['actionstodo'];
+
+echo $this->control->tpl['actionsdone'];
+?>
+
+<!-- END PHP TEMPLATE -->
\ No newline at end of file
diff --git a/htdocs/adherents/canvas/default/tpl/index.php b/htdocs/adherents/canvas/default/tpl/index.php
new file mode 100644
index 0000000000000000000000000000000000000000..7db0dd9ebf92f2ddad5a82d32d38ab764846107a
--- /dev/null
+++ b/htdocs/adherents/canvas/default/tpl/index.php
@@ -0,0 +1 @@
+Url not available
\ No newline at end of file
diff --git a/htdocs/adherents/canvas/index.php b/htdocs/adherents/canvas/index.php
new file mode 100644
index 0000000000000000000000000000000000000000..7db0dd9ebf92f2ddad5a82d32d38ab764846107a
--- /dev/null
+++ b/htdocs/adherents/canvas/index.php
@@ -0,0 +1 @@
+Url not available
\ No newline at end of file