add preview of group members
This commit is contained in:
parent
59d3e28489
commit
f9e64aee65
|
@ -471,6 +471,16 @@ footer img
|
||||||
color: #9b2420;
|
color: #9b2420;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* PREVIEW CONTACT */
|
||||||
|
.preview-contact-name
|
||||||
|
{
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.preview-contact-number
|
||||||
|
{
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
/* PHONE */
|
/* PHONE */
|
||||||
#adapter-data-container
|
#adapter-data-container
|
||||||
|
|
|
@ -185,6 +185,45 @@ namespace controllers\publics;
|
||||||
return $this->redirect(\descartes\Router::url('ConditionalGroup', 'list'));
|
return $this->redirect(\descartes\Router::url('ConditionalGroup', 'list'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return contacts of a group as json array
|
||||||
|
* @param int $id_group = Group id
|
||||||
|
*
|
||||||
|
* @return json
|
||||||
|
*/
|
||||||
|
public function preview (int $id_group)
|
||||||
|
{
|
||||||
|
$return = [
|
||||||
|
'success' => false,
|
||||||
|
'result' => 'Une erreur inconnue est survenue.',
|
||||||
|
];
|
||||||
|
|
||||||
|
$group = $this->internal_conditional_group->get_for_user($_SESSION['user']['id'], $id_group);
|
||||||
|
|
||||||
|
if (!$group)
|
||||||
|
{
|
||||||
|
$return['result'] = 'Ce groupe n\'existe pas.';
|
||||||
|
echo json_encode($return);
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$contacts = $this->internal_conditional_group->get_contacts_for_condition_and_user($_SESSION['user']['id'], $group['condition']);
|
||||||
|
if (!$contacts)
|
||||||
|
{
|
||||||
|
$return['result'] = 'Aucun contact dans le groupe.';
|
||||||
|
echo json_encode($return);
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$return['success'] = true;
|
||||||
|
$return['result'] = $contacts;
|
||||||
|
echo json_encode($return);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Try to get the preview of contacts for a conditionnal group.
|
* Try to get the preview of contacts for a conditionnal group.
|
||||||
*
|
*
|
||||||
|
|
|
@ -191,6 +191,45 @@ namespace controllers\publics;
|
||||||
return $this->redirect(\descartes\Router::url('Group', 'list'));
|
return $this->redirect(\descartes\Router::url('Group', 'list'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return contacts of a group as json array
|
||||||
|
* @param int $id_group = Group id
|
||||||
|
*
|
||||||
|
* @return json
|
||||||
|
*/
|
||||||
|
public function preview (int $id_group)
|
||||||
|
{
|
||||||
|
$return = [
|
||||||
|
'success' => false,
|
||||||
|
'result' => 'Une erreur inconnue est survenue.',
|
||||||
|
];
|
||||||
|
|
||||||
|
$group = $this->internal_group->get_for_user($_SESSION['user']['id'], $id_group);
|
||||||
|
|
||||||
|
if (!$group)
|
||||||
|
{
|
||||||
|
$return['result'] = 'Ce groupe n\'existe pas.';
|
||||||
|
echo json_encode($return);
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$contacts = $this->internal_group->get_contacts($id_group);
|
||||||
|
if (!$contacts)
|
||||||
|
{
|
||||||
|
$return['result'] = 'Aucun contact dans le groupe.';
|
||||||
|
echo json_encode($return);
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$return['success'] = true;
|
||||||
|
$return['result'] = $contacts;
|
||||||
|
echo json_encode($return);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cette fonction retourne la liste des groups sous forme JSON.
|
* Cette fonction retourne la liste des groups sous forme JSON.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -76,6 +76,7 @@
|
||||||
'delete' => '/group/delete/{csrf}/',
|
'delete' => '/group/delete/{csrf}/',
|
||||||
'edit' => '/group/edit/',
|
'edit' => '/group/edit/',
|
||||||
'update' => '/group/update/{csrf}/',
|
'update' => '/group/update/{csrf}/',
|
||||||
|
'preview' => '/group/preview/{id_group}/',
|
||||||
'json_list' => '/groups.json/',
|
'json_list' => '/groups.json/',
|
||||||
],
|
],
|
||||||
|
|
||||||
|
@ -88,6 +89,7 @@
|
||||||
'edit' => '/conditional_group/edit/',
|
'edit' => '/conditional_group/edit/',
|
||||||
'update' => '/conditional_group/update/{csrf}/',
|
'update' => '/conditional_group/update/{csrf}/',
|
||||||
'contacts_preview' => '/conditional_group/preview/',
|
'contacts_preview' => '/conditional_group/preview/',
|
||||||
|
'preview' => '/conditional_group/preview/{id_group}/',
|
||||||
'json_list' => '/conditional_groups.json/',
|
'json_list' => '/conditional_groups.json/',
|
||||||
],
|
],
|
||||||
|
|
||||||
|
|
|
@ -43,6 +43,7 @@
|
||||||
<th>Condition</th>
|
<th>Condition</th>
|
||||||
<th>Date de création</th>
|
<th>Date de création</th>
|
||||||
<th>Dernière modification</th>
|
<th>Dernière modification</th>
|
||||||
|
<th>Preview</th>
|
||||||
<th class="checkcolumn"><input type="checkbox" id="check-all"/></th>
|
<th class="checkcolumn"><input type="checkbox" id="check-all"/></th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
|
@ -69,9 +70,56 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="modal fade" tabindex="-1" id="preview-text-modal">
|
||||||
|
<div class="modal-dialog modal-lg">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
||||||
|
<h4 class="modal-title">Prévisualisation des contacts</h4>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<script>
|
<script>
|
||||||
jQuery(document).ready(function ()
|
jQuery(document).ready(function ()
|
||||||
{
|
{
|
||||||
|
jQuery('body').on('click', '.preview-button', function (e)
|
||||||
|
{
|
||||||
|
e.preventDefault();
|
||||||
|
var group_id = jQuery(this).attr('data-id-group');
|
||||||
|
|
||||||
|
jQuery.ajax({
|
||||||
|
type: "GET",
|
||||||
|
url: HTTP_PWD + '/conditional_group/preview/' + group_id + '/',
|
||||||
|
success: function (data) {
|
||||||
|
if (!data.success) {
|
||||||
|
jQuery('#preview-text-modal').find('.modal-body').text(data.result);
|
||||||
|
} else {
|
||||||
|
html = '';
|
||||||
|
|
||||||
|
for (contact of data.result)
|
||||||
|
{
|
||||||
|
html += '<div class="preview-contact well">';
|
||||||
|
html += ' <div class="preview-contact-name">' + jQuery.fn.dataTable.render.text().display(contact.name) + '</div>'
|
||||||
|
html += ' <div class="preview-contact-number">' + jQuery.fn.dataTable.render.text().display(contact.number) + '</div>'
|
||||||
|
html += ' <code class="preview-contact-data">' + jQuery.fn.dataTable.render.text().display(contact.data) + '</code>'
|
||||||
|
html += '</div>';
|
||||||
|
console.log(contact);
|
||||||
|
}
|
||||||
|
|
||||||
|
jQuery('#preview-text-modal').find('.modal-body').html(html);
|
||||||
|
}
|
||||||
|
jQuery('#preview-text-modal').modal({'keyboard': true});
|
||||||
|
},
|
||||||
|
dataType: 'json'
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
jQuery('.datatable').DataTable({
|
jQuery('.datatable').DataTable({
|
||||||
"pageLength": 25,
|
"pageLength": 25,
|
||||||
"lengthMenu": [[25, 50, 100, 1000, 10000, -1], [25, 50, 100, 1000, 10000, "All"]],
|
"lengthMenu": [[25, 50, 100, 1000, 10000, -1], [25, 50, 100, 1000, 10000, "All"]],
|
||||||
|
@ -97,6 +145,12 @@ jQuery(document).ready(function ()
|
||||||
},
|
},
|
||||||
{data: 'created_at'},
|
{data: 'created_at'},
|
||||||
{data: 'updated_at'},
|
{data: 'updated_at'},
|
||||||
|
{
|
||||||
|
data: '_',
|
||||||
|
render: function (data, type, row, meta) {
|
||||||
|
return '<a class="btn btn-info preview-button" href="#" data-id-group="' + jQuery.fn.dataTable.render.text().display(row.id) + '"><span class="fa fa-eye"></span></a>';
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
data: 'id',
|
data: 'id',
|
||||||
render: function (data, type, row, meta) {
|
render: function (data, type, row, meta) {
|
||||||
|
@ -106,7 +160,6 @@ jQuery(document).ready(function ()
|
||||||
],
|
],
|
||||||
"deferRender": true
|
"deferRender": true
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
<?php
|
<?php
|
||||||
|
|
|
@ -43,6 +43,7 @@
|
||||||
<th>Nombre de contacts</th>
|
<th>Nombre de contacts</th>
|
||||||
<th>Date de création</th>
|
<th>Date de création</th>
|
||||||
<th>Dernière modification</th>
|
<th>Dernière modification</th>
|
||||||
|
<th>Preview</th>
|
||||||
<th class="checkcolumn"><input type="checkbox" id="check-all"/></th>
|
<th class="checkcolumn"><input type="checkbox" id="check-all"/></th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
|
@ -69,6 +70,21 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="modal fade" tabindex="-1" id="preview-text-modal">
|
||||||
|
<div class="modal-dialog modal-lg">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
||||||
|
<h4 class="modal-title">Prévisualisation des contacts</h4>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<script>
|
<script>
|
||||||
jQuery(document).ready(function ()
|
jQuery(document).ready(function ()
|
||||||
{
|
{
|
||||||
|
@ -92,6 +108,12 @@ jQuery(document).ready(function ()
|
||||||
{data: 'nb_contact', render: jQuery.fn.dataTable.render.text()},
|
{data: 'nb_contact', render: jQuery.fn.dataTable.render.text()},
|
||||||
{data: 'created_at'},
|
{data: 'created_at'},
|
||||||
{data: 'updated_at'},
|
{data: 'updated_at'},
|
||||||
|
{
|
||||||
|
data: '_',
|
||||||
|
render: function (data, type, row, meta) {
|
||||||
|
return '<a class="btn btn-info preview-button" href="#" data-id-group="' + jQuery.fn.dataTable.render.text().display(row.id) + '"><span class="fa fa-eye"></span></a>';
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
data: 'id',
|
data: 'id',
|
||||||
render: function (data, type, row, meta) {
|
render: function (data, type, row, meta) {
|
||||||
|
@ -102,6 +124,38 @@ jQuery(document).ready(function ()
|
||||||
"deferRender": true
|
"deferRender": true
|
||||||
});
|
});
|
||||||
|
|
||||||
|
jQuery('body').on('click', '.preview-button', function (e)
|
||||||
|
{
|
||||||
|
e.preventDefault();
|
||||||
|
var group_id = jQuery(this).attr('data-id-group');
|
||||||
|
|
||||||
|
jQuery.ajax({
|
||||||
|
type: "GET",
|
||||||
|
url: HTTP_PWD + '/group/preview/' + group_id + '/',
|
||||||
|
success: function (data) {
|
||||||
|
if (!data.success) {
|
||||||
|
jQuery('#preview-text-modal').find('.modal-body').text(data.result);
|
||||||
|
} else {
|
||||||
|
html = '';
|
||||||
|
|
||||||
|
for (contact of data.result)
|
||||||
|
{
|
||||||
|
html += '<div class="preview-contact well">';
|
||||||
|
html += ' <div class="preview-contact-name">' + jQuery.fn.dataTable.render.text().display(contact.name) + '</div>'
|
||||||
|
html += ' <div class="preview-contact-number">' + jQuery.fn.dataTable.render.text().display(contact.number) + '</div>'
|
||||||
|
html += ' <code class="preview-contact-data">' + jQuery.fn.dataTable.render.text().display(contact.data) + '</code>'
|
||||||
|
html += '</div>';
|
||||||
|
console.log(contact);
|
||||||
|
}
|
||||||
|
|
||||||
|
jQuery('#preview-text-modal').find('.modal-body').html(html);
|
||||||
|
}
|
||||||
|
jQuery('#preview-text-modal').modal({'keyboard': true});
|
||||||
|
},
|
||||||
|
dataType: 'json'
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
<?php
|
<?php
|
||||||
|
|
Loading…
Reference in New Issue