diff --git a/htdocs/langs/en_US/resource.lang b/htdocs/langs/en_US/resource.lang index b0d125b2b60..f5927388193 100755 --- a/htdocs/langs/en_US/resource.lang +++ b/htdocs/langs/en_US/resource.lang @@ -4,8 +4,7 @@ MenuResourceAdd=New resource MenuResourcePlanning=Resource planning DeleteResource=Delete resource ConfirmDeleteResourceElement=Confirm delete the resource for this element - -NoResourceLinked=No resource linked +NoResourceInDatabase=No resource in database. NoResourceLinked=No resource linked ResourcePageIndex=Resources list @@ -29,5 +28,6 @@ RessourceLineSuccessfullyDeleted=Resource line successfully deleted RessourceLineSuccessfullyUpdated=Resource line successfully updated TitleResourceCard=Resource card - +ConfirmDeleteResource=Confirm to delete this resource +RessourceSuccessfullyDeleted=Resource successfully deleted DictionaryResourceType=Type of resources \ No newline at end of file diff --git a/htdocs/langs/fr_FR/resource.lang b/htdocs/langs/fr_FR/resource.lang index 31c27c6cdf9..7d896e27f5f 100755 --- a/htdocs/langs/fr_FR/resource.lang +++ b/htdocs/langs/fr_FR/resource.lang @@ -4,7 +4,6 @@ MenuResourceAdd=Nouvelle ressource MenuResourcePlanning=Planning des Ressources DeleteResource=Effacer resource ConfirmDeleteResourceElement=Confirmer la suppression de la ressource pour cet élément - NoResourceInDatabase=Aucune ressource en base de données. NoResourceLinked=Aucune ressource liée @@ -29,5 +28,6 @@ RessourceLineSuccessfullyDeleted=Ressource supprimée avec succès RessourceLineSuccessfullyUpdated=Ressource mise à jour TitleResourceCard=Fiche resource - +ConfirmDeleteResource=Confirmer la suppression de cette ressource? +RessourceSuccessfullyDeleted=Ressource effacée avec succès DictionaryResourceType=Type de ressources \ No newline at end of file diff --git a/htdocs/resource/card.php b/htdocs/resource/card.php index c8047650ba3..76ea7f99900 100755 --- a/htdocs/resource/card.php +++ b/htdocs/resource/card.php @@ -58,6 +58,9 @@ if( ! $user->rights->resource->read) $object = new Resource($db); $hookmanager->initHooks(array('resource_card')); +$parameters=array('resource_id'=>$id); +$reshook=$hookmanager->executeHooks('doActions',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks + /******************************************************************* * ACTIONS @@ -115,7 +118,7 @@ if ($action == 'update' && ! $_POST["cancel"] && $user->rights->resource->write * * Put here all code to build page ****************************************************/ -$pagetitle = $langs->trans('Card'); +$pagetitle = $langs->trans('ResourceCard'); llxHeader('',$pagetitle,''); $form = new Form($db); @@ -167,6 +170,11 @@ if ( $object->fetch($id) > 0 ) } else { + // Confirmation suppression resource line + if ($action == 'delete') + { + print $form->formconfirm("card.php?&id=".$id,$langs->trans("DeleteResource"),$langs->trans("ConfirmDeleteResource"),"confirm_delete_resource",'','',1); + } /*--------------------------------------- * View object @@ -219,6 +227,16 @@ if ( $object->fetch($id) > 0 ) print ''; } } + if ($action != "delete" ) + { + // Edit resource + if($user->rights->resource->delete) + { + print '
'; + print ''.$langs->trans('Delete').''; + print '
'; + } + } } print ''; } diff --git a/htdocs/resource/class/actions_resource.class.php b/htdocs/resource/class/actions_resource.class.php index d4f7050972d..59531e162dc 100644 --- a/htdocs/resource/class/actions_resource.class.php +++ b/htdocs/resource/class/actions_resource.class.php @@ -53,6 +53,32 @@ class ActionsResource global $langs,$user; $langs->load('resource'); + if (in_array('resource_card',explode(':',$parameters['context']))) + { + if($action == 'confirm_delete_resource' && !GETPOST('cancel')) + { + $res = $object->fetch(GETPOST('id')); + if($res) + { + + $result = $object->delete(GETPOST('id')); + + if ($result >= 0) + { + setEventMessage($langs->trans('RessourceSuccessfullyDeleted')); + Header("Location: ".$_SERVER['PHP_SELF']."?element=".GETPOST('element')."&element_id=".GETPOST('element_id')); + exit; + } + else { + setEventMessage($object->error,'errors'); + } + } + else + { + setEventMessage($object->error,'errors'); + } + } + } if (in_array('element_resource',explode(':',$parameters['context']))) { diff --git a/htdocs/resource/class/resource.class.php b/htdocs/resource/class/resource.class.php index 09e4886779d..49491580ce8 100644 --- a/htdocs/resource/class/resource.class.php +++ b/htdocs/resource/class/resource.class.php @@ -320,6 +320,57 @@ class Resource extends CommonObject } } + /** + * Delete a resource object + * + * @param int $rowid Id of resource line to delete + * @param int $notrigger Disable all triggers + * @return int >0 if OK, <0 if KO + */ + function delete($rowid, $notrigger=0) + { + global $user,$langs,$conf; + + $error=0; + + $sql = "DELETE FROM ".MAIN_DB_PREFIX."resource"; + $sql.= " WHERE rowid =".$rowid; + + dol_syslog(get_class($this)."::delete sql=".$sql); + if ($this->db->query($sql)) + { + $sql = "DELETE FROM ".MAIN_DB_PREFIX."element_resources"; + $sql.= " WHERE element_type='resource' AND resource_id ='".$this->db->escape($rowid)."'"; + dol_syslog(get_class($this)."::delete sql=".$sql); + if ($this->db->query($sql)) + { + if (! $notrigger) + { + // Call triggers + include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; + $interface=new Interfaces($this->db); + $result=$interface->run_triggers('RESOURCE_DELETE',$this,$user,$langs,$conf); + if ($result < 0) { + $error++; $this->errors=$interface->errors; + } + // End call triggers + } + + return 1; + } + else { + $this->error=$this->db->lasterror(); + dol_syslog(get_class($this)."::delete_resource error=".$this->error, LOG_ERR); + return -1; + } + } + else + { + $this->error=$this->db->lasterror(); + dol_syslog(get_class($this)."::delete_resource error=".$this->error, LOG_ERR); + return -1; + } + } /** * Load resource objects into $this->lines * @@ -769,48 +820,6 @@ class Resource extends CommonObject } - /** - * Delete a link to resource line - * TODO: move into commonobject class - * - * @param int $rowid Id of resource line to delete - * @param int $element element name (for trigger) TODO: use $this->element into commonobject class - * @param int $notrigger Disable all triggers - * @return int >0 if OK, <0 if KO - */ - function delete_resource($rowid, $element, $notrigger=0) - { - global $user,$langs,$conf; - - $error=0; - - $sql = "DELETE FROM ".MAIN_DB_PREFIX."element_resources"; - $sql.= " WHERE rowid =".$rowid; - - dol_syslog(get_class($this)."::delete_resource sql=".$sql); - if ($this->db->query($sql)) - { - if (! $notrigger) - { - // Call triggers - include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; - $interface=new Interfaces($this->db); - $result=$interface->run_triggers(strtoupper($element).'_DELETE_RESOURCE',$this,$user,$langs,$conf); - if ($result < 0) { - $error++; $this->errors=$interface->errors; - } - // End call triggers - } - - return 1; - } - else - { - $this->error=$this->db->lasterror(); - dol_syslog(get_class($this)."::delete_resource error=".$this->error, LOG_ERR); - return -1; - } - } /** * Load in cache resource type code (setup in dictionary)