Fix : KM articles in public/ticket/create_ticket.php

This commit is contained in:
lmarcouiller
2021-09-21 11:26:49 +02:00
parent e3f3e01c21
commit a7ff9d4889
2 changed files with 25 additions and 55 deletions

View File

@@ -54,7 +54,6 @@ $action = GETPOST('action', 'aZ09');
$idticketgroup = GETPOST('idticketgroup', 'aZ09'); $idticketgroup = GETPOST('idticketgroup', 'aZ09');
$idticketgroup = GETPOST('idticketgroup', 'aZ09'); $idticketgroup = GETPOST('idticketgroup', 'aZ09');
$lang = GETPOST('lang', 'aZ09'); $lang = GETPOST('lang', 'aZ09');
$popupurl = GETPOST('popupurl', 'bool');
/* /*
* Actions * Actions
@@ -69,13 +68,12 @@ $popupurl = GETPOST('popupurl', 'bool');
if ($action == "getKnowledgeRecord") { if ($action == "getKnowledgeRecord") {
$response = ''; $response = '';
$sql = "SELECT kr.rowid, kr.ref, kr.question, kr.answer,l.url,ctc.code"; $sql = "SELECT kr.rowid, kr.ref, kr.question, kr.answer,kr.url,ctc.code";
$sql .= " FROM ".MAIN_DB_PREFIX."links as l"; $sql .= " FROM ".MAIN_DB_PREFIX."knowledgemanagement_knowledgerecord as kr ";
$sql .= " INNER JOIN ".MAIN_DB_PREFIX."knowledgemanagement_knowledgerecord as kr ON kr.rowid = l.objectid"; $sql .= " JOIN ".MAIN_DB_PREFIX."c_ticket_category as ctc ON ctc.rowid = kr.fk_c_ticket_category";
$sql .= " INNER JOIN ".MAIN_DB_PREFIX."c_ticket_category as ctc ON ctc.rowid = kr.fk_c_ticket_category";
$sql .= " WHERE ctc.code = '".$db->escape($idticketgroup)."'"; $sql .= " WHERE ctc.code = '".$db->escape($idticketgroup)."'";
$sql .= " AND ctc.active = 1 AND ctc.public = 1 AND (kr.lang = '".$db->escape($lang)."' OR kr.lang = 0)"; $sql .= " AND ctc.active = 1 AND ctc.public = 1 AND (kr.lang = '".$db->escape($lang)."' OR kr.lang = 0 OR kr.lang = NULL)";
$sql .= " AND kr.status = 1"; $sql .= " AND kr.status = 1 AND (kr.answer != 0 OR kr.answer != NULL OR kr.answer != \"\")";
$resql = $db->query($sql); $resql = $db->query($sql);
if ($resql) { if ($resql) {
$num = $db->num_rows($resql); $num = $db->num_rows($resql);
@@ -83,33 +81,7 @@ if ($action == "getKnowledgeRecord") {
$response = array(); $response = array();
while ($i < $num) { while ($i < $num) {
$obj = $db->fetch_object($resql); $obj = $db->fetch_object($resql);
if ($popupurl == "false") { $response[] = array('title'=>$obj->question,'ref'=>$obj->ref,'answer'=>dol_escape_htmltag(preg_replace('/\\r|\\r\\n|\\n/', "", $obj->answer)),'url'=>$obj->url);
$url = "<a href=\"".$obj->url. "\" target=\"_blank\">".$obj->url."</a></li>";
$response[] = array('title'=>$obj->question,'ref'=>$obj->url,'answer'=>$obj->answer,'url'=>$url);
} else {
$name = $obj->ref;
$buttonstring = $obj->url;
$url = $obj->url;
$urltoprint = '<a class="button_'.$name.'" style="cursor:pointer">'.$buttonstring.'</a>';
$urltoprint .= '<!-- Add js code to open dialog popup on dialog -->';
$urltoprint .= '<script language="javascript">
jQuery(document).ready(function () {
jQuery(".button_'.$name.'").click(function () {
console.log("Open popup with jQuery(...).dialog() on URL '.dol_escape_js($url).'")
var $dialog = $(\'<div></div>\').html(\'<iframe class="iframedialog" style="border: 0px;" src="'.$url.'" width="100%" height="98%"></iframe>\')
.dialog({
autoOpen: false,
modal: true,
height: (window.innerHeight - 150),
width: \'80%\',
title: "'.dol_escape_js($label).'"
});
$dialog.dialog(\'open\');
});
});
</script>';
$response[] = array('title'=>$obj->question,'ref'=>$obj->url,'answer'=>$obj->answer,'url'=>$urltoprint);
}
$i++; $i++;
} }
} else { } else {

View File

@@ -258,43 +258,41 @@ class FormTicket
if (idgroupticket != "") { if (idgroupticket != "") {
$.ajax({ url: \''.DOL_URL_ROOT.'/core/ajax/fetchKnowledgeRecord.php\', $.ajax({ url: \''.DOL_URL_ROOT.'/core/ajax/fetchKnowledgeRecord.php\',
data: { action: \'getKnowledgeRecord\', idticketgroup: idgroupticket, token: \''.newToken().'\', lang:\''.$langs->defaultlang.'\', popupurl:false}, data: { action: \'getKnowledgeRecord\', idticketgroup: idgroupticket, token: \''.newToken().'\', lang:\''.$langs->defaultlang.'\'},
type: \'GET\', type: \'GET\',
success: function(response) { success: function(response) {
var urllist = \'\'; var urllist = \'\';
console.log("We received response "+response); console.log("We received response "+response);
response = JSON.parse(response) response = JSON.parse(response)
for (key in response) { for (key in response) {
console.log(response[key]) answer = response[key].answer;
urllist += "<li>" + response[key].title + ": " +response[key].url+"</li>"; urllist += \'<li><a href="#" title="\'+response[key].title+\'" class="button_KMpopup" data-html="\'+answer+\'">\' +response[key].title+\'</a></li>\';
} }
if (urllist != "") { if (urllist != "") {
console.log(urllist) $("#KWwithajax").html(\'<td>'.$langs->trans("KMFoundForTicketGroup").'</td><td><ul>\'+urllist+\'</ul></td>\');
$("#KWwithajax").html(\'<td>'.$langs->trans("KMFoundForTicketGroup").'</td><td><ul style="list-style:none;padding-left: 0;">\'+urllist+\'</ul></td>\');
$("#KWwithajax").show(); $("#KWwithajax").show();
$(".button_KMpopup").on("click",function(){
console.log("Open popup with jQuery(...).dialog() with KM article")
var $dialog = $("<div></div>").html($(this).attr("data-html"))
.dialog({
autoOpen: false,
modal: true,
height: (window.innerHeight - 150),
width: "80%",
title: $(this).attr("title"),
});
$dialog.dialog("open");
console.log($dialog);
})
} }
}, },
error : function(output) { error : function(output) {
console.log("error"); console.error("Error on Fetch of KM articles");
}, },
}); });
} }
}; };
$("#selectcategory_code").bind("change",function() { groupticketchange(); }); $("#selectcategory_code").on("change",function() { groupticketchange(); });
MutationObserver = window.MutationObserver || window.WebKitMutationObserver;
var trackChange = function(element) {
var observer = new MutationObserver(function(mutations, observer) {
if (mutations[0].attributeName == "value") {
$(element).trigger("change");
}
});
observer.observe(element, {
attributes: true
});
}
trackChange($("#selectcategory_code")[0]);
if ($("#selectcategory_code").val() != "") { if ($("#selectcategory_code").val() != "") {
groupticketchange(); groupticketchange();
} }