detail.blade.php 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613
  1. @extends('theme::layout.public')
  2. @section('seo_title'){{ parse_seo_template('seo_question_title',$question) }}@endsection
  3. @section('seo_keyword'){{ parse_seo_template('seo_question_keyword',$question) }}@endsection
  4. @section('seo_description'){{ parse_seo_template('seo_question_description',$question) }}@endsection
  5. @section('css')
  6. <link href="{{ asset('/static/js/fancybox/jquery.fancybox.min.css')}}" rel="stylesheet">
  7. <link href="{{ asset('/static/js/summernote/summernote.css')}}" rel="stylesheet">
  8. @endsection
  9. @section('content')
  10. <div class="row mt-10">
  11. <div class="col-xs-12 col-md-9 main">
  12. <div class="widget-question">
  13. <h4 class="title">
  14. @if($question->price>0)
  15. <span class="text-gold" data-toggle="tooltip" data-placement="left" title="Tooltip on left">
  16. <i class="fa fa-database"></i> {{ $question->price }}
  17. </span>
  18. @endif
  19. {{ $question->title }}
  20. </h4>
  21. @if($question->tags)
  22. <ul class="taglist-inline">
  23. @foreach($question->tags as $tag)
  24. <li class="tagPopup"><a class="tag" href="{{ route('ask.tag.index',['id'=>$tag->id]) }}">{{ $tag->name }}</a></li>
  25. @endforeach
  26. </ul>
  27. @endif
  28. <div class="description mt-10">
  29. @if( $question->price > 0 && $question->status == 1 )
  30. <div class="alert alert-question" role="alert">回答问题即可获得 <b>{{ Setting()->get('credits_answer',0) }}</b> 经验值,回答被采纳后即可获得 <b class="text-gold">{{ (intval(Setting()->get('coins_adopted')) + $question->price) }} </b>金币。</div>
  31. @endif
  32. <div class="text-fmt ">
  33. {!! $question->description !!}
  34. </div>
  35. <div class="post-opt mt-20">
  36. <ul class="list-inline text-muted">
  37. <li><a class="comments" data-toggle="collapse" href="#comments-question-{{ $question->id }}" aria-expanded="false" aria-controls="comment-{{ $question->id }}"><i class="fa fa-comment-o"></i> {{ $question->comments }} 条评论</a></li>
  38. @if($question->category)
  39. <li>分类:<a href="{{ route('website.ask',['category_slug'=>$question->category->slug]) }}" target="_blank">{{ $question->category->name }}</a>
  40. @endif
  41. @if(Auth()->check())
  42. @if( $question->status !== 2 )
  43. <li><a href="#" data-toggle="modal" data-target="#appendReward" ><i class="fa fa-database"></i> 追加悬赏</a></li>
  44. @endif
  45. @if( $question->status !== 2 )
  46. <li><a href="#" data-toggle="modal" data-target="#inviteAnswer"><i class="fa fa-paper-plane-o" aria-hidden="true"></i> 邀请回答</a></li>
  47. @endif
  48. @if(($question->status !== 2 && Auth()->user()->id === $question->user_id) || Auth()->user()->can('admin.login') )
  49. <li><a href="{{ route('ask.question.edit',['id'=>$question->id]) }}" class="edit" data-toggle="tooltip" data-placement="right" title="" data-original-title="补充细节,以得到更准确的答案"><i class="fa fa-edit"></i> 编辑</a></li>
  50. @endif
  51. @endif
  52. @if(Auth()->check())
  53. <li><a href="#" id="report_btn" class="report_btn" data-source_type="question" data-source_id="{{ $question->id }}" data-toggle="modal" data-target="#send_report_model" ><i class="fa fa-flag-o"></i> 举报</a></li>
  54. @endif
  55. </ul>
  56. </div>
  57. @include('theme::comment.collapse',['comment_source_type'=>'question','comment_source_id'=>$question->id,'hide_cancel'=>false])
  58. @if(Setting()->get('website_share_code')!='')
  59. <div class="mb-10">
  60. {!! Setting()->get('website_share_code') !!}
  61. </div>
  62. @endif
  63. </div>
  64. {{--最佳答案--}}
  65. @if($question->status===2 && $bestAnswer)
  66. <div class="best-answer mt-15">
  67. <div class="trophy-title">
  68. <h3>
  69. <i class="fa fa-trophy"></i> 最佳答案
  70. <span class="pull-right text-muted adopt_time">{{ timestamp_format($bestAnswer->adopted_at) }}</span>
  71. </h3>
  72. </div>
  73. <div class="text-fmt">
  74. {!! $bestAnswer->content !!}
  75. </div>
  76. <div class="options clearfix mt-10">
  77. <ul class="list-inline pull-right">
  78. <li class="pull-right">
  79. <a class="comments mr-10" data-toggle="collapse" href="#comments-answer-{{ $bestAnswer->id }}" aria-expanded="false" aria-controls="comment-{{ $bestAnswer->id }}"><i class="fa fa-comment-o"></i> {{ $bestAnswer->comments }} 条评论</a>
  80. <button class="btn btn-default btn-sm btn-support" data-source_id="{{ $bestAnswer->id }}" data-source_type="answer" data-support_num="{{ $bestAnswer->supports }}"><i class="fa fa-thumbs-o-up"></i> {{ $bestAnswer->supports }}</button>
  81. @if($bestAnswer->user->qrcode)
  82. <button class="btn btn-warning btn-sm" data-toggle="modal" data-target="#payment-qrcode-modal-answer-{{ $bestAnswer->id }}" ><i class="fa fa-heart-o" aria-hidden="true"></i> 打赏</button>
  83. @endif
  84. </li>
  85. </ul>
  86. </div>
  87. @include('theme::comment.collapse',['comment_source_type'=>'answer','comment_source_id'=>$bestAnswer->id,'hide_cancel'=>false])
  88. @if($bestAnswer->user->qrcode)
  89. @include('theme::layout.qrcode_pament',['source_id'=>'answer-'.$bestAnswer->id,'paymentUser'=>$bestAnswer->user,'message'=>'如果觉得我的回答对您有用,请随意打赏。你的支持将鼓励我继续创作!'])
  90. @endif
  91. <div class="media user-info border-top">
  92. <div class="media-left">
  93. <a href="{{ route('auth.space.index',['user_id'=>$bestAnswer->user_id]) }}" target="_blank">
  94. <img class="avatar-40 hidden-xs" src="{{ get_user_avatar($bestAnswer->user_id) }}" alt="{{ $bestAnswer->user->name }}"></a>
  95. </a>
  96. </div>
  97. <div class="media-body">
  98. <div class="media-heading">
  99. <strong><a href="{{ route('auth.space.index',['user_id'=>$bestAnswer->user_id]) }}" class="mr5">{{ $bestAnswer->user->name }}</a> <span class="text-gold">@if($bestAnswer->user->authentication && $bestAnswer->user->authentication->status === 1)<i class="fa fa-graduation-cap" aria-hidden="true" data-toggle="tooltip" data-placement="right" title="" data-original-title="已通过行家认证"></i>@endif</span></strong>
  100. @if($bestAnswer->user->title)
  101. <span class="text-muted"> - {{ $bestAnswer->user->title }}</span>
  102. @endif
  103. </div>
  104. <div class="content">
  105. <span class="answer-time text-muted hidden-xs">@if($bestAnswer->user->authentication && $bestAnswer->user->authentication->status === 1) 擅长:{{ $bestAnswer->user->authentication->skill }} | @endif 采纳率 {{ $bestAnswer->user->userData->adoptPercent() }}% | 回答于 {{ timestamp_format($bestAnswer->created_at) }}</span>
  106. </div>
  107. </div>
  108. </div>
  109. </div>
  110. @endif
  111. </div>
  112. <div class="widget-answers mt-60">
  113. <div class="btn-group pull-right" role="group">
  114. <a href="{{ route('ask.question.detail',['question_id'=>$question->id]) }}" class="btn btn-default btn-xs @if(request()->input('sort','default')=='default') active @endif">默认排序</a>
  115. <a href="{{ route('ask.question.detail',['question_id'=>$question->id,'sort'=>'created_at']) }}" id="sortby-created" class="btn btn-default btn-xs @if(request()->input('sort','default')=='created_at') active @endif">时间排序</a>
  116. </div>
  117. <h2 class="h4 post-title">@if($question->status===2) 其它 @endif {{ $answers->total() }} 个回答</h2>
  118. @foreach( $answers as $answer )
  119. <div class="media">
  120. <div class="media-left">
  121. <a href="{{ route('auth.space.index',['user_id'=>$answer->user_id]) }}" class="avatar-link user-card" target="_blank">
  122. <img class="avatar-40 hidden-xs" src="{{ get_user_avatar($answer->user_id) }}" alt="{{ $answer->user['name'] }}"></a>
  123. </a>
  124. </div>
  125. <div class="media-body">
  126. <div class="media-heading">
  127. <strong>
  128. <a href="{{ route('auth.space.index',['user_id'=>$answer->user_id]) }}" class="mr-5 user-card">{{ $answer->user['name'] }}</a><span class="text-gold">@if($answer->user->authentication && $answer->user->authentication->status === 1)<i class="fa fa-graduation-cap" aria-hidden="true" data-toggle="tooltip" data-placement="right" title="" data-original-title="已通过行家认证"></i>@endif
  129. </span>
  130. </strong>
  131. @if($answer->user->title)
  132. <span class="text-muted"> - {{ $answer->user->title }}</span>
  133. @endif
  134. <span class="answer-time text-muted hidden-xs">{{ timestamp_format($answer->created_at) }}</span>
  135. </div>
  136. <div class="content">
  137. @if($answer->user->authentication && $answer->user->authentication->status === 1)
  138. <span class="text-muted">擅长:{{ $answer->user->authentication->skill }}</span>
  139. @endif
  140. <div class="text-fmt mt-10 mb-10">{!! $answer->content !!}</div>
  141. </div>
  142. <div class="media-footer">
  143. <ul class="list-inline mb-20">
  144. <li><a class="comments" data-toggle="collapse" href="#comments-answer-{{ $answer->id }}" aria-expanded="false" aria-controls="comment-{{ $answer->id }}"><i class="fa fa-comment-o"></i> {{ $answer->comments }} 条评论</a></li>
  145. @if(Auth()->check())
  146. @if($question->status!==2 && (Auth()->user()->id === $answer->user_id || Auth()->user()->can('admin.login')) )
  147. <li><a href="{{ route('ask.answer.edit',['id'=>$answer->id]) }}" data-toggle="tooltip" data-placement="right" title="" data-original-title="继续完善回答内容"><i class="fa fa-edit"></i> 编辑</a></li>
  148. @endif
  149. @if($question->status!==2 && ( Auth()->user()->id === $question->user_id || Auth()->user()->can('admin.login') ))
  150. <li><a href="#" class="adopt-answer" data-toggle="modal" data-target="#adoptAnswer" data-answer_id="{{ $answer->id }}" title="采纳该回答" data-answer_content="{{ str_limit($answer->content,200) }}"><i class="fa fa-check-square-o"></i> 采纳</a></li>
  151. @endif
  152. @if($answer->user->qrcode)
  153. <li><a href="#" data-toggle="modal" data-target="#payment-qrcode-modal-answer-{{ $answer->id }}" ><i class="fa fa-heart-o" aria-hidden="true"></i> 打赏</a></li>
  154. @endif
  155. @endif
  156. @if(Auth()->check())
  157. <li><a href="#" class="report_btn" data-source_type="answer" data-source_id="{{ $answer->id }}" data-toggle="modal" data-target="#send_report_model"><i class="fa fa-flag-o"></i> 举报</a></li>
  158. @endif
  159. <li class="pull-right">
  160. <button class="btn btn-default btn-sm btn-support" data-source_id="{{ $answer->id }}" data-source_type="answer" data-support_num="{{ $answer->supports }}"><i class="fa fa-thumbs-o-up"></i> {{ $answer->supports }}</button>
  161. </li>
  162. </ul>
  163. </div>
  164. @include('theme::comment.collapse',['comment_source_type'=>'answer','comment_source_id'=>$answer->id,'hide_cancel'=>false])
  165. @if($answer->user->qrcode)
  166. @include('theme::layout.qrcode_pament',['source_id'=>'answer-'.$answer->id,'paymentUser'=>$answer->user,'message'=>'如果觉得我的回答对您有用,请随意打赏。你的支持将鼓励我继续创作!'])
  167. @endif
  168. </div>
  169. </div>
  170. @endforeach
  171. <div class="text-center">
  172. {!! str_replace('/?', '?', $answers->render()) !!}
  173. </div>
  174. </div>
  175. @if( $question->status!=2 || (Setting()->get('open_question_discuss') == 1))
  176. <div class="widget-answer-form mt-15">
  177. @if(Auth()->guest())
  178. <div class="answer_login_tips mb-20">
  179. 您需要登录后才可以回答问题,<a href="{{ route('auth.user.login') }}" rel="nofollow">登录</a>&nbsp;或者&nbsp;<a rel="nofollow" href="{{ route('auth.user.register') }}">注册</a>
  180. </div>
  181. @elseif( Auth()->check() && ( (Setting()->get('open_self_answer') == 1 || $question->user_id !== Auth()->user()->id ) && !Auth()->user()->isAnswered($question->id)) )
  182. <form name="answerForm" id="answer_form" action="{{ route('ask.answer.store') }}" method="post" class="editor-wrap">
  183. <input type="hidden" id="answer_token" name="_token" value="{{ csrf_token() }}">
  184. <input type="hidden" value="{{ $question->id }}" id="question_id" name="question_id" />
  185. <div class="form-group @if($errors->has('content')) has-error @endif">
  186. <div id="answer_editor">{!! old('content',$formData['content']) !!}</div>
  187. @if($errors->has('content')) <p class="help-block">{{ $errors->first('content') }}</p> @endif
  188. </div>
  189. <div class="row mt-20">
  190. <div class="col-xs-12 col-md-9">
  191. <ul class="list-inline">
  192. <li class="checkbox"> <label><input type="checkbox" id="attendTo" name="followed" value="1" checked />关注该问题</label></li>
  193. @if( Setting()->get('code_create_answer') )
  194. <li class="pull-right">
  195. @include('theme::layout.auth_captcha')
  196. </li>
  197. @endif
  198. </ul>
  199. </div>
  200. <div class="col-xs-12 col-md-3">
  201. <input type="hidden" id="answer_editor_content" name="content" value="{{ old('content',$formData['content']) }}" />
  202. <span class="text-muted" id="draftStatus"></span>
  203. <button type="submit" class="btn btn-primary pull-right">提交回答</button>
  204. </div>
  205. </div>
  206. </form>
  207. @endif
  208. </div>
  209. @endif
  210. </div>
  211. <div class="col-xs-12 col-md-3 side">
  212. <div class="widget-first-box">
  213. <ul class="widget-action list-unstyled">
  214. <li>
  215. @if(Auth()->check() && Auth()->user()->isFollowed(get_class($question),$question->id))
  216. <button type="button" id="follow-button" class="btn btn-success btn-sm active" data-source_type = "question" data-source_id = "{{ $question->id }}" data-show_num="true" data-toggle="tooltip" data-placement="right" title="" data-original-title="关注后将获得更新提醒">已关注</button>
  217. @else
  218. <button type="button" id="follow-button" class="btn btn-success btn-sm" data-source_type = "question" data-source_id = "{{ $question->id }}" data-show_num="true" data-toggle="tooltip" data-placement="right" title="" data-original-title="关注后将获得更新提醒">关注</button>
  219. @endif
  220. <strong id="follower-num">{{ $question->followers }}</strong> 关注
  221. </li>
  222. <li>
  223. @if(Auth()->check() && Auth()->user()->isCollected(get_class($question),$question->id))
  224. <button id="collect-button" class="btn btn-default btn-sm" data-loading-text="加载中..." data-source_type = "question" data-source_id = "{{ $question->id }}" > 已收藏</button>
  225. @else
  226. <button id="collect-button" class="btn btn-default btn-sm" data-source_type = "question" data-source_id = "{{ $question->id }}" > 收藏</button>
  227. @endif
  228. <strong id="collection-num">{{ $question->collections }}</strong> 收藏,<strong class="no-stress">{{ $question->views }}</strong> 浏览
  229. </li>
  230. <li>
  231. <i class="fa fa-clock-o"></i>
  232. @if($question->hide==0)
  233. <a href="{{ route('auth.space.index',['user_id'=>$question->user_id]) }}" target="_blank">{{ $question->user->name }}</a>
  234. @endif
  235. 提出于 {{ timestamp_format($question->created_at) }}</li>
  236. </ul>
  237. </div>
  238. <div class="widget-box">
  239. <h2 class="h4 widget-box__title">相似问题</h2>
  240. <ul class="widget-links list-unstyled list-text">
  241. @foreach($relatedQuestions as $relatedQuestion)
  242. @if($relatedQuestion->id != $question->id)
  243. <li class="widget-links-item">
  244. <a title="{{ $relatedQuestion->title }}" href="{{ route('ask.question.detail',['question_id'=>$relatedQuestion->id]) }}">{{ $relatedQuestion->title }}</a>
  245. <small class="text-muted">{{ $relatedQuestion->answers }} 回答</small>
  246. </li>
  247. @endif
  248. @endforeach
  249. </ul>
  250. </div>
  251. </div>
  252. </div>
  253. @if(Auth()->check())
  254. <div class="modal" id="appendReward" tabindex="-1" role="dialog" aria-labelledby="appendRewardLabel">
  255. <div class="modal-dialog" role="document">
  256. <div class="modal-content">
  257. <div class="modal-header">
  258. <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
  259. <h4 class="modal-title" id="appendModalLabel">追加悬赏</h4>
  260. </div>
  261. <div class="modal-body">
  262. <div class="alert alert-success" role="alert" id="rewardAlert">
  263. <i class="fa fa-exclamation-circle"></i> 提高悬赏,以提高问题的关注度!
  264. </div>
  265. <form class="form-inline" id="rewardForm" action="{{ route('ask.question.appendReward',['id'=>$question->id]) }}" method="post">
  266. <input type="hidden" name="_token" value="{{ csrf_token() }}">
  267. <div class="form-group">
  268. <label for="reward">追加</label>
  269. <select class="form-control" name="coins" id="question_coins">
  270. <option value="3" selected>3</option><option value="5">5</option><option value="10">10</option><option value="15">15</option><option value="30">30</option><option value="50">50</option><option value="80">80</option><option value="100">100</option>
  271. </select> 个金币
  272. </div>
  273. <div class="form-group">
  274. (您目前共有 <span class="text-gold">{{ Auth()->user()->userData->coins }}</span> 个金币)
  275. </div>
  276. </form>
  277. </div>
  278. <div class="modal-footer">
  279. <button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
  280. <button type="button" class="btn btn-primary" id="appendRewardSubmit">确认追加</button>
  281. </div>
  282. </div>
  283. </div>
  284. </div>
  285. <div class="modal" id="adoptAnswer" tabindex="-1" role="dialog" aria-labelledby="adoptAnswerLabel">
  286. <div class="modal-dialog" role="document">
  287. <div class="modal-content">
  288. <div class="modal-header">
  289. <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
  290. <h4 class="modal-title" id="adoptModalLabel">采纳回答</h4>
  291. </div>
  292. <div class="modal-body">
  293. <div class="alert alert-warning" role="alert" id="adoptAnswerAlert">
  294. <i class="fa fa-exclamation-circle"></i> 确认采纳该回答为最佳答案?
  295. </div>
  296. <blockquote id="answer_quote"></blockquote>
  297. </div>
  298. <div class="modal-footer">
  299. <button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
  300. <button type="button" class="btn btn-primary" id="adoptAnswerSubmit">采纳该回答</button>
  301. </div>
  302. </div>
  303. </div>
  304. </div>
  305. <div class="modal" id="inviteAnswer" tabindex="-1" role="dialog" aria-labelledby="inviteAnswerLabel">
  306. <div class="modal-dialog" role="document">
  307. <div class="modal-content">
  308. <div class="modal-header">
  309. <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
  310. <h4 class="modal-title" id="appendModalLabel">邀请回答</h4>
  311. </div>
  312. <div class="modal-body">
  313. <div class="alert alert-success" role="alert" id="rewardAlert">
  314. <i class="fa fa-exclamation-circle"></i> 不知道答案?你还可以邀请他人进行解答,每天可以邀请{{ config('tipask.user_invite_limit') }}次。
  315. </div>
  316. <form class="invite-popup" id="inviteEmailForm" action="{{ route('ask.question.inviteEmail',['question_id'=>$question->id]) }}" method="get">
  317. <div style="position: relative;">
  318. <ul class="nav nav-tabs">
  319. <li class="active"><a data-by="username" href="#by-username" data-toggle="tab">站内邀请</a></li>
  320. <li><a data-by="email" href="#by-email" data-toggle="tab">Email 邀请</a></li>
  321. </ul>
  322. <div class="tab-content invite-tab-content mt-10">
  323. <div class="tab-pane active" id="by-username" data-type="username">
  324. <div class="search-user" id="questionSlug">
  325. <input id="invite_word" class="text-28 form-control" type="text" name="word" autocomplete="off" placeholder="搜索你要邀请的人">
  326. </div>
  327. <p class="help-block" id="questionInviteUsers"></p>
  328. <div class="invite-question-modal">
  329. <div class="row invite-question-list" id="invite_user_list">
  330. <div class="text-center" id="invite_loading">
  331. <i class="fa fa-spinner fa-spin"></i>
  332. </div>
  333. </div>
  334. </div>
  335. </div>
  336. <div class="tab-pane" id="by-email" data-type="email">
  337. <div class="mb-10">
  338. <input class="text-28 form-control" type="email" name="sendTo" placeholder="Email 地址">
  339. </div>
  340. <p><textarea class="textarea-13 form-control" name="message" rows="5">我在 {{ Setting()->get('website_name') }} 上遇到了问题「{{ $question->title }}」 → {{ route('ask.question.detail',['question_id'=>$question->id]) }},希望您能帮我解答 </textarea></p>
  341. </div>
  342. </div>
  343. </div>
  344. </form>
  345. </div>
  346. <div class="modal-footer" style="display:none;">
  347. <button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
  348. <button type="button" class="btn btn-primary invite-email-btn">确认</button>
  349. </div>
  350. </div>
  351. </div>
  352. </div>
  353. @endif
  354. @endsection
  355. @section('script')
  356. @include('theme::layout.report_modal')
  357. <script src="{{ asset('/static/js/summernote/summernote.min.js') }}"></script>
  358. <script src="{{ asset('/static/js/summernote/lang/summernote-zh-CN.min.js') }}"></script>
  359. <script type="text/javascript" src="{{ asset('/static/js/tipask/summernote-ext-attach.js') }}"></script>
  360. <script type="text/javascript" src="{{ asset('/static/js/fancybox/jquery.fancybox.min.js') }}"></script>
  361. <script type="text/javascript">
  362. var invitation_timer = null;
  363. var question_id = "{{ $question->id }}";
  364. $(document).ready(function() {
  365. @if(Auth()->check())
  366. /*问题悬赏*/
  367. $("#appendRewardSubmit").click(function(){
  368. var user_total_conis = '{{ Auth()->user()->userData->coins }}';
  369. var reward = $("#question_coins").val();
  370. if(reward>parseInt(user_total_conis)){
  371. $("#rewardAlert").attr('class','alert alert-warning');
  372. $("#rewardAlert").html('金币数不能大于'+user_total_conis);
  373. }else{
  374. $("#rewardAlert").empty();
  375. $("#rewardAlert").attr('class','');
  376. $("#rewardForm").submit();
  377. }
  378. });
  379. @endif
  380. /*回答编辑器初始化*/
  381. $('#answer_editor').summernote({
  382. lang: 'zh-CN',
  383. height: 160,
  384. placeholder:'撰写答案',
  385. toolbar: [ {!! config('tipask.summernote.ask') !!} ],
  386. callbacks: {
  387. onChange:function (contents, $editable) {
  388. var code = $(this).summernote("code");
  389. $("#answer_editor_content").val(code);
  390. $("#draftStatus").html('保存中...');
  391. $.post("{{ route('auth.draft.create',['type'=>'answer']) }}",$("#answer_form").serialize(),function(msg){
  392. $("#draftStatus").html('已保存草稿');
  393. });
  394. },
  395. onImageUpload:function(files) {
  396. upload_editor_image(files[0],'answer_editor');
  397. }
  398. }
  399. });
  400. /*评论提交*/
  401. $(".comment-btn").click(function(){
  402. var source_id = $(this).data('source_id');
  403. var source_type = $(this).data('source_type');
  404. var to_user_id = $(this).data('to_user_id');
  405. var token = $(this).data('token');
  406. var content = $("#comment-"+source_type+"-content-"+source_id).val();
  407. add_comment(token,source_type,source_id,content,to_user_id);
  408. $("#comment-content-"+source_id+"").val('');
  409. });
  410. $(".widget-comments").on('show.bs.collapse', function () {
  411. load_comments($(this).data('source_type'),$(this).data('source_id'));
  412. });
  413. $(".widget-comments").on('hide.bs.collapse', function () {
  414. clear_comments($(this).data('source_type'),$(this).data('source_id'));
  415. });
  416. /*收藏问题或文章*/
  417. $("#collect-button").click(function(){
  418. $("#collect-button").button('loading');
  419. var source_type = $(this).data('source_type');
  420. var source_id = $(this).data('source_id');
  421. var collection_num = $("#collection-num").html();
  422. $.get('/collect/'+source_type+'/'+source_id,function(msg){
  423. $("#collect-button").removeClass('disabled');
  424. $("#collect-button").removeAttr('disabled');
  425. if(msg=='collected'){
  426. $("#collect-button").html('已收藏');
  427. $("#collection-num").html(parseInt(collection_num)+1);
  428. }else{
  429. $("#collect-button").html('收藏');
  430. $("#collection-num").html(parseInt(collection_num)-1);
  431. }
  432. });
  433. });
  434. /*采纳回答为最佳答案*/
  435. $(".adopt-answer").click(function(){
  436. var answer_id = $(this).data('answer_id');
  437. $("#adoptAnswerSubmit").attr('data-answer_id',answer_id);
  438. $("#answer_quote").html($(this).data('answer_content'));
  439. });
  440. $("#adoptAnswerSubmit").click(function(){
  441. document.location = "/answer/adopt/"+$(this).data('answer_id');
  442. });
  443. /*邀请回答模块逻辑处理*/
  444. /*私信模块处理*/
  445. $('#inviteAnswer').on('show.bs.modal', function (event) {
  446. var button = $(event.relatedTarget);
  447. var modal = $(this);
  448. loadInviteUsers(question_id,'');
  449. loadQuestionInvitedUsers(question_id,'part');
  450. });
  451. $("#invite_word").on("keydown",function(){
  452. if(invitation_timer){
  453. clearTimeout(invitation_timer);
  454. }
  455. invitation_timer = setTimeout(function() {
  456. var word = $("#invite_word").val();
  457. console.log(word);
  458. loadInviteUsers(question_id,word);
  459. }, 500);
  460. });
  461. $(".invite-question-list").on("click",".invite-question-item-btn",function(){
  462. var invite_btn = $(this);
  463. var question_id = invite_btn.data('question_id');
  464. var user_id = invite_btn.data('user_id');
  465. $.ajax({
  466. type: "get",
  467. url:"/question/invite/"+question_id+"/"+user_id,
  468. success: function(data){
  469. if(data.code > 0){
  470. alert(data.message);
  471. return false;
  472. }
  473. invite_btn.html('已邀请');
  474. invite_btn.attr("class","btn btn-default btn-xs invite-question-item-btn disabled");
  475. loadQuestionInvitedUsers(question_id,'part');
  476. },
  477. error: function(data){
  478. console.log(data);
  479. }
  480. });
  481. });
  482. $("#inviteAnswer").on("click","#showAllInvitedUsers",function(){
  483. loadQuestionInvitedUsers({{ $question->id }},'all');
  484. });
  485. /*tag切换*/
  486. $('#inviteAnswer a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
  487. var tabBy = $(this).data("by");
  488. if( tabBy == 'email' ){
  489. $("#inviteAnswer .modal-footer").show();
  490. }else{
  491. $("#inviteAnswer .modal-footer").hide();
  492. }
  493. });
  494. /*邀请邮箱回答*/
  495. $("#inviteAnswer .invite-email-btn").click(function(){
  496. var formData = $("#inviteEmailForm").serialize();
  497. $.ajax({
  498. type: "post",
  499. url: "/question/inviteEmail/{{ $question->id }}",
  500. data:formData,
  501. success: function(data){
  502. if(data.code>0){
  503. alert(data.message);
  504. }else{
  505. alert("邀请成功,邀请邮件已发送!");
  506. }
  507. $("#inviteAnswer").modal("hide");
  508. },
  509. error: function(data){
  510. console.log(data);
  511. alert("操作出错,请稍后再试");
  512. $("#inviteAnswer").modal("hide");
  513. }
  514. });
  515. });
  516. });
  517. /**
  518. * @param questionId
  519. * @param word
  520. */
  521. function loadInviteUsers(questionId,word){
  522. $.ajax({
  523. type: "get",
  524. url: "/ajax/loadInviteUsers",
  525. data:{question_id:questionId,word:word},
  526. success: function(data){
  527. console.log(data);
  528. var inviteItemHtml = '';
  529. if(data.code > 0){
  530. inviteItemHtml = '<div class="text-center" id="invite_loading"><p>暂无数据</p></div>';
  531. }else{
  532. $.each(data.message,function(i,item){
  533. inviteItemHtml+= '<div class="col-md-12 invite-question-item">' +
  534. '<img src="'+item.avatar+'" />'+
  535. '<div class="invite-question-user-info">'+
  536. '<a class="invite-question-user-name" target="_blank" href="'+item.url+'">'+item.name+'</a>'+
  537. '<span class="invite-question-user-desc">'+item.tag_name+' 标签下有 '+item.tag_answers+' 个回答</span>'+
  538. '</div>';
  539. if(item.isInvited>0){
  540. inviteItemHtml += '<button type="button" class="btn btn-default btn-xs invite-question-item-btn disabled" data-question_id="{{ $question->id }}" data-user_id="'+item.id+'">已邀请</button>';
  541. }else{
  542. inviteItemHtml += '<button type="button" class="btn btn-default btn-xs invite-question-item-btn" data-question_id="{{ $question->id }}" data-user_id="'+item.id+'">邀请回答</button>';
  543. }
  544. inviteItemHtml += '</div>';
  545. });
  546. }
  547. $("#invite_user_list").html(inviteItemHtml);
  548. },
  549. error: function(data){
  550. console.log(data);
  551. $("#invite_user_list").html('<div class="text-center" id="invite_loading"><p>操作出错</p></div>');
  552. }
  553. });
  554. }
  555. /*加载已被邀请的用户信息*/
  556. function loadQuestionInvitedUsers(questionId,type){
  557. $("#questionInviteUsers").load('/question/'+questionId+'/invitations/'+type);
  558. }
  559. </script>
  560. @endsection