From b62ffdfba4f5e48c1bb398af36414a3b94a4c806 Mon Sep 17 00:00:00 2001 From: Guillaume Heurtier <guillaume.heurtier@maarch.org> Date: Fri, 27 Dec 2019 17:07:15 +0100 Subject: [PATCH] FEAT #12510 TIME 2:00 display contact list in search result list --- .../documents_list_mlb_search_adv.php | 12 ++- apps/maarch_entreprise/js/functions.js | 21 ++++++ .../template/documents_list_search_adv.html | 14 +++- rest/index.php | 1 + .../contact/controllers/ContactController.php | 73 +++++++++++++++++++ src/core/lang/lang-en.php | 4 +- src/core/lang/lang-fr.php | 2 + src/core/lang/lang-nl.php | 2 + 8 files changed, 123 insertions(+), 6 deletions(-) diff --git a/apps/maarch_entreprise/indexing_searching/documents_list_mlb_search_adv.php b/apps/maarch_entreprise/indexing_searching/documents_list_mlb_search_adv.php index 48cddef2ffb..ab3db712649 100755 --- a/apps/maarch_entreprise/indexing_searching/documents_list_mlb_search_adv.php +++ b/apps/maarch_entreprise/indexing_searching/documents_list_mlb_search_adv.php @@ -803,7 +803,11 @@ if ($mode == 'normal') { if (!empty($senderList)) { if (count($senderList) >= 2) { - $formattedSenders = count($senderList) . ' ' . _SENDERS; + $formattedSenders = count($senderList) . ' ' . _SENDERS + . ' <i class="fa fa-book fa-2x" style="cursor: pointer;" title="' + . _VIEW_CONTACTS.'"onclick="' + . "loadContactsList(".$resId.", 'sender');" + . '"></i>'; } else { $formattedSenders = implode("<br>", $senderList); } @@ -816,7 +820,11 @@ if ($mode == 'normal') { } if (!empty($recipientList)) { if (count($recipientList) >= 2) { - $formattedRecipients = count($recipientList) . ' ' . _RECIPIENTS; + $formattedRecipients = count($recipientList) . ' ' . _RECIPIENTS + . ' <i class="fa fa-book fa-2x" style="cursor: pointer;" title="' + . _VIEW_CONTACTS.'"onclick="' + . "loadContactsList(".$resId.", 'recipient');" + . '"></i>';; } else { $formattedRecipients = implode("<br>", $recipientList); } diff --git a/apps/maarch_entreprise/js/functions.js b/apps/maarch_entreprise/js/functions.js index 33db9d13588..61833b46351 100755 --- a/apps/maarch_entreprise/js/functions.js +++ b/apps/maarch_entreprise/js/functions.js @@ -2888,3 +2888,24 @@ function setSendAttachment(id) { } }); } + +function loadContactsList(id, mode) { + new Effect.toggle('contactsList_' + mode + '_' + id, 'appear', { + delay: 0.2 + }); + + var path_manage_script = '../../rest/contacts/formatV1'; + + + new Ajax.Request(path_manage_script, { + method: 'post', + parameters: { + resId: id, + mode: mode + }, + onSuccess: function (answer) { + eval("response = " + answer.responseText); + $('divContactsList_' + mode + '_' + id).innerHTML = response.toShow; + } + }); +} diff --git a/apps/maarch_entreprise/template/documents_list_search_adv.html b/apps/maarch_entreprise/template/documents_list_search_adv.html index 65927fd92de..5535048d930 100755 --- a/apps/maarch_entreprise/template/documents_list_search_adv.html +++ b/apps/maarch_entreprise/template/documents_list_search_adv.html @@ -148,14 +148,22 @@ Mods </div> </td> </tr> - <tr id="contactsList_##loadValue|res_id##" name="contactsList_##loadValue|res_id##" style="display: none; border-bottom: solid 1px black; background-color: white;" width="100%"> + <tr id="contactsList_sender_##loadValue|res_id##" name="contactsList_##loadValue|res_id##" style="display: none; border-bottom: solid 1px black; background-color: white;" width="100%"> <td colspan="6" style="background-color: #f2f2f2;"> - <div id="divContactsList_##loadValue|res_id##" align="center" style="color: grey;margin:10px;padding:10px;border: 1px dashed #135F7F;"> + <div id="divContactsList_sender_##loadValue|res_id##" align="center" style="color: grey;margin:10px;padding:10px;border: 1px dashed #135F7F;"> <i class="fa fa-spinner fa-2x"></i><br /> ##define_lang|_LOADING_INFORMATIONS## </div> </td> - </tr> + </tr> + <tr id="contactsList_recipient_##loadValue|res_id##" name="contactsList_##loadValue|res_id##" style="display: none; border-bottom: solid 1px black; background-color: white;" width="100%"> + <td colspan="6" style="background-color: #f2f2f2;"> + <div id="divContactsList_recipient_##loadValue|res_id##" align="center" style="color: grey;margin:10px;padding:10px;border: 1px dashed #135F7F;"> + <i class="fa fa-spinner fa-2x"></i><br /> + ##define_lang|_LOADING_INFORMATIONS## + </div> + </td> + </tr> <tr id="repList_##loadValue|res_id##" name="repList_##loadValue|res_id##" style="display: none; border-bottom: solid 1px black; background-color: #FFF;" width="100%"> <td colspan="2" style="background-color: #f2f2f2;"> <div id="divRepList_##loadValue|res_id##" align="center" style="color: grey;margin:10px;padding:10px;border: 1px dashed #135F7F;"> diff --git a/rest/index.php b/rest/index.php index ab3d2f7ee72..c02257d2104 100755 --- a/rest/index.php +++ b/rest/index.php @@ -120,6 +120,7 @@ $app->delete('/contacts/{id}', \Contact\controllers\ContactController::class . ' $app->put('/contacts/{id}/activation', \Contact\controllers\ContactController::class . ':updateActivation'); $app->get('/formattedContacts/{id}/types/{type}', \Contact\controllers\ContactController::class . ':getLightFormattedContact'); $app->get('/ban/availableDepartments', \Contact\controllers\ContactController::class . ':getAvailableDepartments'); +$app->post('/contacts/formatV1', \Contact\controllers\ContactController::class . ':getFormattedContactsForSearchV1'); //ContactsCustomFields $app->get('/contactsCustomFields', \Contact\controllers\ContactCustomFieldController::class . ':get'); diff --git a/src/app/contact/controllers/ContactController.php b/src/app/contact/controllers/ContactController.php index cf3c5c1013e..2197ae395d4 100755 --- a/src/app/contact/controllers/ContactController.php +++ b/src/app/contact/controllers/ContactController.php @@ -523,6 +523,79 @@ class ContactController return $response->withJson(['civilities' => $civilities]); } + public static function getFormattedContactsForSearchV1(Request $request, Response $response) + { + $data = $request->getParsedBody(); + + $return = ''; + + if (!isset($data['resId']) && !isset($data['mode'])) { + $status = 1; + $return .= '<td colspan="6" style="background-color: red;">'; + $return .= '<p style="padding: 10px; color: black;">'; + $return .= 'Erreur lors du chargement des contacts'; + $return .= '</p>'; + $return .= '</td>'; + + return $response->withJson(['status' => $status, 'toShow' => $return]); + } + + $status = 0; + $return .= '<td>'; + $return .= '<div align="center">'; + $return .= '<table width="100%">'; + + $resourceContacts = ResourceContactModel::get([ + 'where' => ['res_id = ?', 'mode = ?'], + 'data' => [$data['resId'], $data['mode']] + ]); + + $mode = ''; + if ($data['mode'] == 'sender') { + $mode = _SENDER; + } else if ($data['mode'] == 'recipient') { + $mode = _RECIPIENT; + } + + foreach ($resourceContacts as $resourceContact) { + $return .= '<tr>'; + $return .= '<td style="background: transparent; border: 0px dashed rgb(200, 200, 200);">'; + + $return .= '<div style="text-align: left; background-color: rgb(230, 230, 230); padding: 3px; margin-left: 20px; margin-top: -6px;">'; + + if ($resourceContact['type'] == 'contact') { + $contactRaw = ContactModel::getById([ + 'select' => ['*'], + 'id' => $resourceContact['item_id'] + ]); + + $contactToDisplay = ContactController::getFormattedContactWithAddress(['contact' => $contactRaw]); + + $return .= '<span style="font-size:10px;color:#135F7F;">' . $mode . '</span> - '; + $return .= $contactToDisplay['contact']['otherInfo']; + } elseif ($resourceContact['type'] == 'user') { + $return .= '<span style="font-size:10px;color:#135F7F;">' . $mode . ' (interne)</span> - '; + $return .= UserModel::getLabelledUserById(['id' => $resourceContact['item_id']]); + } elseif ($resourceContact['type'] == 'entity') { + $return .= '<span style="font-size:10px;color:#135F7F;">' . $mode . ' (interne)</span> - '; + $entity = EntityModel::getById(['id' => $resourceContact['item_id'], 'select' => ['entity_label']]); + $return .= $entity['entity_label']; + } + + $return .= '</div>'; + + $return .= '</td>'; + $return .= '</tr>'; + } + + $return .= '</table>'; + $return .= '<br />'; + $return .= '</div>'; + $return .= '</td>'; + + return $response->withJson(['status' => $status, 'toShow' => $return]); + } + public static function getFillingRate(array $aArgs) { ValidatorModel::notEmpty($aArgs, ['contactId']); diff --git a/src/core/lang/lang-en.php b/src/core/lang/lang-en.php index 7dc6345850a..1b232c9361b 100755 --- a/src/core/lang/lang-en.php +++ b/src/core/lang/lang-en.php @@ -332,7 +332,9 @@ define('_SUMMARY_SHEET', 'Summary sheet'); define('_UNDEFINED', 'Undefined'); define('_CATEGORY', 'Category'); define('_SENDERS', 'Sender(s)'); +define('_SENDER', 'Sender'); define('_RECIPIENTS', 'Recipient(s)'); +define('_RECIPIENT', 'Recipient'); define('_CHRONO_NUMBER', 'Chrono number'); define('_INITIATOR_ENTITY', 'Initiator entity'); define('_DESTINATION_ENTITY', 'Destination entity'); @@ -442,4 +444,4 @@ define("_CANNOT_SYNCHRONIZE_M2M_ANNUARY", "Contact can not be added in M2M annua define("_DATE_LOCALE", "en_US.utf8"); -define("_USER_PREFERENCE_UPDATED", "User preferences updated"); \ No newline at end of file +define("_USER_PREFERENCE_UPDATED", "User preferences updated"); diff --git a/src/core/lang/lang-fr.php b/src/core/lang/lang-fr.php index f4f807e9539..7008cb6f0fb 100755 --- a/src/core/lang/lang-fr.php +++ b/src/core/lang/lang-fr.php @@ -332,7 +332,9 @@ define('_SUMMARY_SHEET', 'Fiche de liaison'); define('_UNDEFINED', 'Non défini'); define('_CATEGORY', 'Catégorie'); define('_SENDERS', 'Expéditeur(s)'); +define('_SENDER', 'Expéditeur'); define('_RECIPIENTS', 'Destinataire(s)'); +define('_RECIPIENT', 'Destinataire'); define('_CHRONO_NUMBER', 'Numéro chrono'); define('_INITIATOR_ENTITY', 'Entité initiatrice'); define('_DESTINATION_ENTITY', 'Entité traitante'); diff --git a/src/core/lang/lang-nl.php b/src/core/lang/lang-nl.php index f620aee88fe..a24d7a0e603 100755 --- a/src/core/lang/lang-nl.php +++ b/src/core/lang/lang-nl.php @@ -332,7 +332,9 @@ define('_SUMMARY_SHEET', 'Summary sheet_TO_TRANSLATE'); define('_UNDEFINED', 'Undefined_TO_TRANSLATE'); define('_CATEGORY', 'Category_TO_TRANSLATE'); define('_SENDERS', 'Sender(s)_TO_TRANSLATE'); +define('_SENDER', 'Sender_TO_TRANSLATE'); define('_RECIPIENTS', 'Recipient(s)_TO_TRANSLATE'); +define('_RECIPIENT', 'Recipient_TO_TRANSLATE'); define('_CHRONO_NUMBER', 'Chrono number_TO_TRANSLATE'); define('_INITIATOR_ENTITY', 'Initiator entity_TO_TRANSLATE'); define('_DESTINATION_ENTITY', 'Destination entity_TO_TRANSLATE'); -- GitLab