possibilité de masquer les messages du chat (ref #155)

This commit is contained in:
afornerot 2020-06-09 17:28:47 +02:00
parent 2a1179ae9a
commit c49461aa58
6 changed files with 75 additions and 12 deletions

View File

@ -286,7 +286,7 @@
} }
if($curentuser!="anon.") { if($curentuser!="anon.") {
$visitedate=$curentuser->getVisitedate(); $visitedate=clone $curentuser->getVisitedate();
if($visitedate) $visitedate->add(new \DateInterval("PT1H")); if($visitedate) $visitedate->add(new \DateInterval("PT1H"));
$now=new \DateTime(); $now=new \DateTime();
if($visitedate<$now) { if($visitedate<$now) {

View File

@ -378,7 +378,7 @@ class UserType extends AbstractType
$builder->add('visitedate', DateTimeType::class, [ $builder->add('visitedate', DateTimeType::class, [
"label" => 'Date de dernière visite', "label" => 'Date de dernière visite',
"disabled" => true, "disabled" => true,
"required" => ($fields["visite"]["perm"]==2), "required" => ($fields["visite"]["perm"]==2),
"widget" => 'single_text', "widget" => 'single_text',
]); ]);

View File

@ -19,7 +19,7 @@
{%if user.job %}<b>Métier</b> = {{ user.job }}<br>{%endif%} {%if user.job %}<b>Métier</b> = {{ user.job }}<br>{%endif%}
{%if user.position %}<b>Fonction</b> = {{ user.position }}<br>{%endif%} {%if user.position %}<b>Fonction</b> = {{ user.position }}<br>{%endif%}
{%if user.postaladress %}<b>Adresse</b> = {{ user.postaladress }}<br>{%endif%} {%if user.postaladress %}<b>Adresse</b> = {{ user.postaladress }}<br>{%endif%}
{%if user.visitedate %}<b>Date de dernière visite</b> = {{ user.visitedate|date("d/m/Y H:i") }}<br>{%endif%} {%if user.visitedate %}<b>Date de dernière visite</b> = {{ user.visitedate|date('d/m/Y H:i') }}<br>{%endif%}
{%if user.visitecpt %}<b>Nombre de visites</b> = {{ user.visitecpt }}<br>{%endif%} {%if user.visitecpt %}<b>Nombre de visites</b> = {{ user.visitecpt }}<br>{%endif%}
<br> <br>
{% set fgtitle=false %} {% set fgtitle=false %}

View File

@ -59,8 +59,11 @@ class ChatController extends Controller
$messages=$em->getRepository("CadolesWebsocketBundle:Message")->findBy(["group"=>$group],["submitdate"=>"DESC"],30); $messages=$em->getRepository("CadolesWebsocketBundle:Message")->findBy(["group"=>$group],["submitdate"=>"DESC"],30);
foreach($messages as $message) { foreach($messages as $message) {
$haveread = ($message->getReaders()->contains($user)); $haveread = ($message->getReaders()->contains($user));
$message->setHaveread($haveread); $havesee = ($message->getSees()->contains($user));
$message->setHaveread($haveread);
$message->setHavesee($havesee);
if(!$haveread) { if(!$haveread) {
$message->addReader($this->getUser()); $message->addReader($this->getUser());
$em->persist($message); $em->persist($message);

View File

@ -70,7 +70,18 @@ class Message
return $this; return $this;
} }
private $havesee;
public function getHavesee()
{
return $this->havesee;
}
public function setHavesee($havesee) {
$this->havesee = $havesee;
return $this;
}
/** /**
* Constructor * Constructor
*/ */

View File

@ -30,6 +30,9 @@
.message-toread { .message-toread {
font-weight:bold; font-weight:bold;
} }
.message-see {
display:none;
}
.msgavatar { .msgavatar {
float:left; float:left;
@ -63,10 +66,12 @@
{{ form_start(form) }} {{ form_start(form) }}
<div id="topchat" class='row'> <div id="topchat" class='row'>
{{ form_widget(form.message) }} {{ form_widget(form.message) }}
<input id="sendbymail" type="checkbox" id="item_essential" name="item[essential]" style="float:right" class='switch' ></input> <input id="sendbymail" type="checkbox" style="float:right" class='switch' ></input>
<label class="custom-control-label" for="sendbymail">Envoyer par Mail ?</label> <label class="custom-control-label" for="sendbymail" style="color:#{{ colorbodyback }}">Envoyer par Mail ?</label>
<a id="sendbtn" class="btn btn-success" style="margin-top:5px; width:100%; margin-bottom:15px">Envoyer</a> <a id="sendbtn" class="btn btn-success" style="margin-top:5px; width:100%; margin-bottom:15px">Envoyer</a>
<div id="useronline" style="margin-bottom:10px"></div> <div id="useronline" style="margin-bottom:10px"></div>
<input id="unsee" type="checkbox" style="float:right" class='switch' onChange="switchsee()"></input>
<label class="custom-control-label" for="unsee" style="color:#{{ colorbodyback }}">Afficher les message masquer ?</label>
</div> </div>
@ -77,11 +82,20 @@
{% if not message.haveread %} {% if not message.haveread %}
{% set classread="message-toread" %} {% set classread="message-toread" %}
{% endif %} {% endif %}
<div id='message-{{message.id}}' class='message row {{classread}}'>
{% set classsee="" %}
{% if message.havesee %}
{% set classsee="message-see" %}
{% endif %}
<div id='message-{{message.id}}' class='message row {{classread}} {{classsee}}'>
<div class='msgavatar'> <div class='msgavatar'>
<img style='cursor:pointer' onclick='seeUser({{message.user.id}})' id='user_avatar_img' src='/{{ alias }}/uploads/avatar/{{message.user.avatar}}' class='avatar'><br> <img style='cursor:pointer' onclick='seeUser({{message.user.id}})' id='user_avatar_img' src='/{{ alias }}/uploads/avatar/{{message.user.avatar}}' class='avatar'><br>
{% if fgmanager or message.user == app.user %} {% if fgmanager or message.user == app.user %}
<i class='delmessage fa fa-trash fa-fw' data-id='{{message.id}}' style='cursor: pointer;'></i> <i class='delmessage fa fa-trash fa-fw' data-id='{{message.id}}' title='Supprimer' style='cursor: pointer;'></i>
{% endif %}
{% if not message.havesee %}
<i id="hidemessage-{{message.id}}" class='hidemessage fa fa-eye-slash fa-fw' title='Ne plus afficher' data-id='{{message.id}}' style='cursor: pointer;'></i>
{% endif %} {% endif %}
</div> </div>
<div class='msgdiv'> <div class='msgdiv'>
@ -294,8 +308,10 @@
html+="<div class='msgavatar'>"; html+="<div class='msgavatar'>";
html+="<img style='pointer:cursor' onclick='seeUser("+payload.msg.userid+")' id='user_avatar_img' src='/{{ alias }}/uploads/avatar/"+payload.msg.avatar+"' class='avatar'><br>"; html+="<img style='pointer:cursor' onclick='seeUser("+payload.msg.userid+")' id='user_avatar_img' src='/{{ alias }}/uploads/avatar/"+payload.msg.avatar+"' class='avatar'><br>";
if(payload.msg.userid=={{app.user.id}} || '{{ fgmanager }}'=='1') { if(payload.msg.userid=={{app.user.id}} || '{{ fgmanager }}'=='1') {
html+="<i class='delmessage fa fa-trash fa-fw' data-id='"+payload.msg.id+"' style='cursor: pointer;'></i>"; html+="<i class='delmessage fa fa-trash fa-fw' data-id='"+payload.msg.id+"' title='Supprimer' style='cursor: pointer;'></i>";
} }
html+="<i id='hidemessage-"+payload.msg.id+"' class='hidemessage fa fa-eye-slash fa-fw' data-id='"+payload.msg.id+"' title='Ne plus afficher' style='cursor: pointer;'></i>";
html+="</div>"; html+="</div>";
html+="<div class='msgdiv'>" html+="<div class='msgdiv'>"
html+="<div class='msgtitle'>"+payload.msg.lastname+"<br><small>"+new Date(payload.msg.submitdate.date).toLocaleDateString("fr-FR", dateoptions)+"</small></div>"; html+="<div class='msgtitle'>"+payload.msg.lastname+"<br><small>"+new Date(payload.msg.submitdate.date).toLocaleDateString("fr-FR", dateoptions)+"</small></div>";
@ -350,6 +366,13 @@
isdeco=true; isdeco=true;
}); });
} }
function switchsee() {
$(".message-see").hide();
if($("#unsee").bootstrapSwitch('state')) {
$(".message-see").show();
}
}
$( "#sendbtn" ).click(function() { $( "#sendbtn" ).click(function() {
sendbtn(); sendbtn();
@ -469,6 +492,31 @@
} }
} }
$(document).on('click', '.hidemessage', function(){
hidemessage($(this).data("id"));
});
function hidemessage(id) {
$.ajax({
method: "POST",
url: "{{ path('cadoles_websocket_message_see') }}",
data: {
id:id
},
success: function() {
$("#message-"+id).addClass ("message-see");
$("#hidemessage-"+id).remove();
if(!$("#unsee").bootstrapSwitch('state')) {
$("#message-"+id).hide();
}
else {
$("#message-"+id).show();
}
}
});
}
$(document).on('click', '#listtoavatar img', function(){ $(document).on('click', '#listtoavatar img', function(){
var mail = ";"+$(this).data("mail"); var mail = ";"+$(this).data("mail");
$("#mailto").val($("#mailto").val().replace(mail, "")); $("#mailto").val($("#mailto").val().replace(mail, ""));
@ -521,8 +569,9 @@
function addOnline(userid, useravatar, userlastname, userfirstname) { function addOnline(userid, useravatar, userlastname, userfirstname) {
if(!$("#online"+userid).length) { if(!$("#online"+userid).length) {
html = "<span id='online"+userid+"'>"; html = "<span id='online"+userid+"' style='width:70px; height:105px; display:inline-block; text-align: center; font-size: 10px; color:#{{ colorbodyback }}; text-transform: uppercase; line-height:11px;overflow-wrap: break-word;vertical-align:top;'>";
html+= "<img style='cursor:pointer; width:30px; height:30px; margin-right:5px;' onclick='seeUser("+userid+")' title='"+userlastname+" "+userfirstname+"' id='user_avatar_img' src='/{{ alias }}/uploads/avatar/"+useravatar+"' class='avatar'>"; html+= "<img style='cursor:pointer; width:40px; height:40px; margin-bottom:5px;' onclick='seeUser("+userid+")' title='"+userlastname+" "+userfirstname+"' id='user_avatar_img' src='/{{ alias }}/uploads/avatar/"+useravatar+"' class='avatar'>";
html+= userlastname+" "+userfirstname;
html+= "</span>"; html+= "</span>";
$("#useronline").append(html); $("#useronline").append(html);
} }