index.blade.php 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. @extends('theme::layout.public')
  2. @section('seo_title')我的私信 - {{ Setting()->get('website_name') }}@endsection
  3. @section('css')
  4. <link href="{{ asset('/static/js/select2/css/select2.min.css')}}" rel="stylesheet">
  5. <link href="{{ asset('/static/js/select2/css/select2-bootstrap.min.css')}}" rel="stylesheet">
  6. <style>
  7. .select2-result-repository { padding-top: 4px; padding-bottom: 3px; }
  8. .select2-result-repository__avatar { float: left; width: 60px; margin-right: 10px; }
  9. .select2-result-repository__avatar img { width: 100%; height: auto; border-radius: 2px; }
  10. .select2-result-repository__meta { margin-left: 70px; }
  11. .select2-result-repository__title { color: black; font-weight: bold; word-wrap: break-word; line-height: 1.1; margin-bottom: 4px; }
  12. .select2-result-repository__forks, .select2-result-repository__stargazers { margin-right: 1em; }
  13. .select2-result-repository__forks, .select2-result-repository__stargazers, .select2-result-repository__watchers { display: inline-block; color: #aaa; font-size: 11px; }
  14. .select2-result-repository__description { font-size: 13px; color: #777; margin-top: 4px; }
  15. .select2-results__option--highlighted .select2-result-repository__title { color: white; }
  16. .select2-results__option--highlighted .select2-result-repository__forks, .select2-results__option--highlighted .select2-result-repository__stargazers, .select2-results__option--highlighted .select2-result-repository__description, .select2-results__option--highlighted .select2-result-repository__watchers { color: #c6dcef; }
  17. </style>
  18. @endsection
  19. @section('content')
  20. <div class="row">
  21. <div class="col-xs-12 col-md-9 main">
  22. <h2 class="h4 mt-10">
  23. 我的私信
  24. <button type="button" class="btn btn-primary btn-xs pull-right" data-toggle="modal" data-target="#send_message_model" >写消息</button>
  25. </h2>
  26. <div class="widget-streams messages border-top">
  27. @foreach($messages as $message)
  28. <section id="session_{{ $message->from_user_id }}" class="hover-show streams-item @if($message->is_read===0) not_read @endif ">
  29. <div class="stream-wrap media">
  30. <div class="pull-left">
  31. <a href="{{ route('auth.space.index',['id'=>$message->from_user_id]) }}" >
  32. <img class="media-object avatar-40" src="{{ get_user_avatar($message->from_user_id) }}" alt="{{ $message->fromUser->name }}">
  33. </a>
  34. </div>
  35. <div class="media-body">
  36. <a href="{{ route('auth.space.index',['id'=>$message->from_user_id]) }}"> {{ $message->fromUser->name }}</a> :
  37. <div class="full-text fmt">{{ $message->content }}</div>
  38. <div class="meta mt-10">
  39. <span class="text-muted">{{ timestamp_format($message->created_at) }}</span>
  40. <span class="pull-right">
  41. <a href="{{ route('auth.message.show',['use_id'=>$message->from_user_id]) }}">查看对话详情</a> <span class="span-line">|</span>
  42. <a href="javascript:void(0)" class="text-muted" onclick="delete_session({{ $message->from_user_id }})">删除</a>
  43. </span>
  44. </div>
  45. </div>
  46. </div>
  47. </section>
  48. @endforeach
  49. </div>
  50. <div class="text-center">
  51. {!! str_replace('/?', '?', $messages->render()) !!}
  52. </div>
  53. </div>
  54. @include('theme::layout.right_menu')
  55. </div>
  56. @endsection
  57. @section('script')
  58. <div class="modal fade" id="send_message_model" role="dialog" aria-labelledby="exampleModalLabel">
  59. <div class="modal-dialog" role="document">
  60. <div class="modal-content">
  61. <div class="modal-header">
  62. <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
  63. <h4 class="modal-title" id="exampleModalLabel">发送私信</h4>
  64. </div>
  65. <div class="modal-body">
  66. <form name="messageForm" id="message_form">
  67. <input type="hidden" name="_token" value="{{ csrf_token() }}">
  68. <div class="form-group">
  69. <label for="to_user_id" class="control-label">发给:</label>
  70. <select id="select_message_user" name="to_user_id"></select>
  71. </div>
  72. <div class="form-group">
  73. <label for="message-text" class="control-label">内容:</label>
  74. <textarea class="form-control" id="message-text" name="content"></textarea>
  75. </div>
  76. </form>
  77. </div>
  78. <div class="modal-footer">
  79. <button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
  80. <button type="button" class="btn btn-primary" id="message_submit_button">发送</button>
  81. </div>
  82. </div>
  83. </div>
  84. </div>
  85. <script src="{{ asset('/static/js/select2/js/select2.min.js')}}"></script>
  86. <script type="text/javascript">
  87. function formatRepo (repo) {
  88. if (repo.loading) return repo.name;
  89. var markup = "<div class='select2-result-repository clearfix'>" +
  90. "<div class='select2-result-repository__avatar'><img src='"+repo.avatar+"' /></div>" +
  91. "<div class='select2-result-repository__meta'>" +
  92. "<div class='select2-result-repository__title'>" + repo.name + "</div>";
  93. if (repo.title) {
  94. markup += "<div class='select2-result-repository__description'>" + repo.title + "</div>";
  95. }
  96. markup += "<div class='select2-result-repository__statistics'>" +
  97. "<div class='select2-result-repository__forks'>"+ repo.coins +" 金币</div>" +
  98. "<div class='select2-result-repository__stargazers'>"+ repo.followers +" 粉丝</div>" +
  99. "<div class='select2-result-repository__watchers'>"+ repo.answers +" 回答</div>" +
  100. "</div>" +
  101. "</div></div>";
  102. return markup;
  103. }
  104. function formatRepoSelection (repo) {
  105. return repo.name || repo.name;
  106. }
  107. $(function(){
  108. $("#select_message_user").select2({
  109. theme:'bootstrap',
  110. placeholder: "搜索用户",
  111. ajax: {
  112. url: "/ajax/loadUsers",
  113. dataType: 'json',
  114. delay: 250,
  115. data: function (params) {
  116. return {
  117. word: params.term
  118. };
  119. },
  120. processResults: function (data, params) {
  121. return {
  122. results: data
  123. };
  124. },
  125. cache: true
  126. },
  127. escapeMarkup: function (markup) { return markup; }, // let our custom formatter work
  128. minimumInputLength: 1,
  129. templateResult: formatRepo, // omitted for brevity, see the source of this page
  130. templateSelection: formatRepoSelection // omitted for brevity, see the source of this page
  131. });
  132. $("#message_submit_button").click(function(){
  133. $.ajax({
  134. type: "POST",
  135. url: "{{ route('auth.message.store') }}",
  136. data: $('#message_form').serialize(),
  137. success: function(msg){
  138. alert('消息发送成功');
  139. $("#send_message_model").modal('hide');
  140. },
  141. error: function(){
  142. alert("发送失败!");
  143. }
  144. });
  145. });
  146. });
  147. function delete_session(from_user_id)
  148. {
  149. if(!confirm('确认删除该信息?')){
  150. return false;
  151. }
  152. $.get('/message/destroySession/'+from_user_id,function(msg){
  153. if(msg === 'ok'){
  154. $("#session_"+from_user_id).remove();
  155. }else{
  156. alert('操作失败,请稍后再试!');
  157. }
  158. });
  159. }
  160. </script>
  161. @endsection