©Sergey Emelyanov 2025 | Alle Rechte vorbehalten
Standardmäßig erlaubt Vtiger CRM das Hinzufügen, Bearbeiten und Antworten auf Kommentare, jedoch nicht das Löschen von Kommentaren. In diesem Artikel zeige ich Ihnen, wie Sie den Löschen-Button in den entsprechenden Templates einfügen und den Löschvorgang sowohl per JavaScript als auch serverseitig realisieren können. Damit können Sie Nutzern erlauben, Kommentare zu entfernen – selbstverständlich abhängig von den Zugriffsrechten, sodass Administratoren oder entsprechende Rollen diese Funktion bei Bedarf aktivieren oder deaktivieren können.
Diese Anleitung erfordert, dass Sie direkten Zugriff auf die CRM-Dateien haben. Es sind keine Änderungen an der Datenbank notwendig. Da die vorgenommenen Änderungen systemweit wirken, sollten Sie unbedingt vorher ein vollständiges Backup Ihrer Dateien erstellen.
a) Datei: layouts/v7/modules/Vtiger/Comment.tpl
Finden Sie in dieser Datei etwa die Zeile 76 bzw. den Block, der so aussieht:
{if $COMMENTS_MODULE_MODEL->isPermitted('EditView')}
{if $CHILDS_ROOT_PARENT_MODEL}
{assign var=CHILDS_ROOT_PARENT_ID value=$CHILDS_ROOT_PARENT_MODEL->getId()}
{/if}
<a href="javascript:void(0);" class="cursorPointer replyComment feedback" style="color: blue;">
{vtranslate('LBL_REPLY',$MODULE_NAME)}
</a>
{if $CURRENTUSER->getId() eq $COMMENT->get('userid')}
<a href="javascript:void(0);" class="cursorPointer editComment feedback" style="color: blue;">
{vtranslate('LBL_EDIT',$MODULE_NAME)}
</a>
{/if}
{/if}
Direkt nach diesem Block fügen Sie folgenden HTML-Code ein:
{if $COMMENTS_MODULE_MODEL->isPermitted('Delete')}
{if $CHILDS_ROOT_PARENT_MODEL}
{assign var=CHILDS_ROOT_PARENT_ID value=$CHILDS_ROOT_PARENT_MODEL->getId()}
{/if}
<a href="javascript:void(0);" class="cursorPointer deleteComment feedback" style="color: blue;">
{vtranslate('LBL_DELETE',$MODULE_NAME)}
</a>
{/if}
b) Datei: layouts/v7/modules/Vtiger/RecentComments.tpl
Suchen Sie dort etwa ab Zeile 163 den Block:
{if $CURRENTUSER->getId() eq $COMMENT->get('userid') && $IS_EDITABLE}
{if $IS_CREATABLE} {/if}
<a href="javascript:void(0);" class="cursorPointer editComment feedback" style="color: blue;">
{vtranslate('LBL_EDIT',$MODULE_NAME)}
</a>
{/if}
Fügen Sie direkt danach folgenden Code ein:
{if $COMMENTS_MODULE_MODEL->isPermitted('Delete')}
{if $CHILDS_ROOT_PARENT_MODEL}
{assign var=CHILDS_ROOT_PARENT_ID value=$CHILDS_ROOT_PARENT_MODEL->getId()}
{/if}
<a href="javascript:void(0);" class="cursorPointer deleteComment feedback" style="color: blue;">
{vtranslate('LBL_DELETE',$MODULE_NAME)}
</a>
{/if}
Mit diesen Änderungen wird in den entsprechenden Kommentarvorlagen der Löschen-Button angezeigt, sofern der Benutzer über die Berechtigung „Delete“ verfügt.
layouts/v7/modules/Vtiger/resources/Detail.js
detailContentsHolder.on('click','.editComment', function(e){
// bestehender Code zum Bearbeiten
});
Nach diesem Block fügen Sie folgenden neuen Code ein, der den Löschvorgang steuert:
detailContentsHolder.on('click','.deleteComment', function(e){
var currentTarget = jQuery(e.currentTarget);
var commentInfoBlock = currentTarget.closest('.singleComment');
var commentInfoHeader = commentInfoBlock.find('.commentInfoHeader');
var commentId = commentInfoHeader.data('commentid');
// Parameter für die Löschaktion
var params = {
'module': 'ModComments',
'action': 'Delete',
'crmid': commentId
};
app.helper.showProgress();
app.request.post({data: params}).then(
function(err, data) {
if (err === null) {
commentInfoBlock.remove();
app.helper.showSuccessNotification({message:'Comment Deleted Successfully'});
} else {
app.helper.showErrorNotification({message: err.message});
}
app.helper.hideProgress();
}
);
});
Dieser JavaScript-Code löst beim Klick auf den Löschen-Button eine Anfrage an den Server aus, um den entsprechenden Kommentar zu löschen.
modules/ModComments/actions/Delete.php
Ersetzen Sie den gesamten Inhalt der Datei durch den folgenden Code:
<?php
class ModComments_Delete_Action extends Vtiger_Delete_Action {
function checkPermission(Vtiger_Request $request) {
// Optionale Berechtigungsprüfung – bei Bedarf aktivieren
parent::checkPermission($request);
}
public function process(Vtiger_Request $request) {
$moduleName = $request->getModule();
$recordId = $request->get('crmid');
$recordModel = Vtiger_Record_Model::getInstanceById($recordId, $moduleName);
$moduleModel = $recordModel->getModule();
$recordModel->delete();
$response = new Vtiger_Response();
$response->setResult(array('success' => true));
return $response;
}
}
Mit dieser Änderung wird bei Aufruf der Aktion „Delete“ der entsprechende Kommentar aus dem System entfernt. Die Berechtigungsprüfung erfolgt über die bestehende Logik von Vtiger.
Mit diesen Anpassungen in den Template-Dateien, JavaScript- und PHP-Code können Sie in Vtiger CRM ganz einfach die Funktionalität zum Löschen von Kommentaren implementieren. Der Löschen-Button erscheint ausschließlich, wenn der Benutzer über die nötigen Berechtigungen verfügt. Durch die Kombination der Frontend- und Backend-Anpassungen wird sichergestellt, dass Kommentare korrekt entfernt werden.
©Sergey Emelyanov 2025 | Alle Rechte vorbehalten