global.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435
  1. /**
  2. * Created by simon on 2015/4/20.
  3. * 全局公用js
  4. */
  5. var showPopover = function () {
  6. $(this).popover('show');
  7. }
  8. , hidePopover = function () {
  9. $(this).popover('hide');
  10. };
  11. $(function(){
  12. /*ajax设置项*/
  13. $.ajaxSetup({
  14. headers: {
  15. 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
  16. }
  17. });
  18. /*禁用bootstrap全局过度效果*/
  19. $.support.transition = false;
  20. /*全局启用bootstrap tooltip*/
  21. $('[data-toggle="tooltip"]').tooltip();
  22. /*用户表单输入时删除错误提示*/
  23. $("body").delegate("form input","keydown",function(){
  24. $(this).parents(".form-group").removeClass("has-error");
  25. $(this).next(".help-block").remove();
  26. });
  27. /*验证码重新加载*/
  28. $("#reloadCaptcha").click(function(){
  29. console.log("coming");
  30. var new_src = $(this).find("img").attr("src")+'&'+Math.random();
  31. $(this).find("img").attr("src",new_src);
  32. });
  33. $(".navbar-form span").click(function(){
  34. $("#top-search-form").submit();
  35. });
  36. /*消息提示框自动隐藏*/
  37. $("#alert_message").delay(5000).hide(0);
  38. /*激活邮件发送*/
  39. $(".send-email-token").click(function(){
  40. $.get('/email/sendToken',function(msg){
  41. if( msg === 'tooFast'){
  42. alert('发送太频繁,请一分钟后再试.');
  43. }
  44. });
  45. $(".send-email-tips").show();
  46. });
  47. /*加载更多分页*/
  48. $(document).on("click",".load-more",function(){
  49. var $btn = $(this).button('loading');
  50. var loading_btn = $(this).button('loading');
  51. var source_type = $(this).data('source_type');
  52. var source_id = $(this).data('source_id');
  53. var next_page_url = $(this).data('next_page_url');
  54. $.get(next_page_url,function(html){
  55. $("#comments-"+source_type+"-"+source_id+" .widget-comment-list").append(html);
  56. loading_btn.parent().remove();
  57. });
  58. });
  59. $(document).on("click",".comment-reply",function(){
  60. var message = $(this).data('message');
  61. var source_type = $(this).data('source_type');
  62. var source_id = $(this).data('source_id');
  63. var to_user_id = $(this).data('to_user_id');
  64. $("#comment-"+source_type+"-content-"+source_id).attr('placeholder',message);
  65. $("#"+source_type+"-comment-"+source_id+"-btn").data('to_user_id',to_user_id);
  66. return false;
  67. });
  68. $(".collapse-cancel").click(function(){
  69. var collapse_id = $(this).data("collapse_id");
  70. $("#"+collapse_id).collapse('hide');
  71. return false;
  72. });
  73. /*私信模块处理*/
  74. $('#sendTo_message_model').on('show.bs.modal', function (event) {
  75. var button = $(event.relatedTarget);
  76. var to_user_id = button.data('to_user_id');
  77. var to_user_name = button.data('to_user_name');
  78. var modal = $(this);
  79. modal.find('#to_user_id').val(to_user_id);
  80. modal.find('#to_user_name').text(to_user_name);
  81. });
  82. $("#sendTo_submit").click(function(){
  83. $.ajax({
  84. type: "POST",
  85. url: "/message/store",
  86. data: $('#sendTo_message_form').serialize(),
  87. success: function(msg){
  88. alert('消息发送成功');
  89. $("#sendTo_message_model").modal('hide');
  90. },
  91. error: function(){
  92. alert("发送失败!");
  93. }
  94. });
  95. });
  96. /*关注模块处理,关注问题,用户等*/
  97. $("#follow-button,.followTopic,.followerUser").click(function(){
  98. if(!check_login()){
  99. return ;
  100. }
  101. $(this).button('loading');
  102. var follow_btn = $(this);
  103. var source_type = $(this).data('source_type');
  104. var source_id = $(this).data('source_id');
  105. var show_num = $(this).data('show_num');
  106. $.get('/follow/'+source_type+'/'+source_id,function(msg){
  107. follow_btn.removeClass('disabled');
  108. follow_btn.removeAttr('disabled');
  109. if(msg =='followed'){
  110. follow_btn.html('已关注');
  111. follow_btn.addClass('active');
  112. }else{
  113. follow_btn.html('关注');
  114. follow_btn.removeClass('active');
  115. }
  116. /*是否操作关注数*/
  117. if(Boolean(show_num)){
  118. var follower_num = $("#follower-num").html();
  119. if(msg==='followed'){
  120. $("#follower-num").html(parseInt(follower_num)+1);
  121. }else{
  122. $("#follower-num").html(parseInt(follower_num)-1);
  123. }
  124. }
  125. });
  126. });
  127. /*赞同模块公共处理*/
  128. $(".btn-support").hover(function(){
  129. var btn_support = $(this);
  130. var source_type = btn_support.data('source_type');
  131. var source_id = btn_support.data('source_id');
  132. $.get('/support/check/'+source_type+'/'+source_id,function(msg){
  133. btn_support.removeClass('btn-default');
  134. if(msg =='failed'){
  135. btn_support.addClass('btn-warning');
  136. btn_support.html('<i class="fa fa-thumbs-o-up"></i> 已赞');
  137. }else{
  138. btn_support.addClass('btn-success');
  139. btn_support.html('<i class="fa fa-thumbs-o-up"></i> 赞同');
  140. }
  141. });
  142. }, function(){
  143. var btn_support = $(this);
  144. var support_num = $(this).data('support_num');
  145. btn_support.attr('class','btn btn-default btn-sm btn-support');
  146. btn_support.html('<i class="fa fa-thumbs-o-up"></i> '+support_num);
  147. });
  148. $(".btn-support").click(function(){
  149. if(!check_login()){
  150. return ;
  151. }
  152. var btn_support = $(this);
  153. var source_type = btn_support.data('source_type');
  154. var source_id = btn_support.data('source_id');
  155. var support_num = parseInt(btn_support.data('support_num'));
  156. $.get('/support/'+source_type+'/'+source_id,function(msg){
  157. if(msg =='success'){
  158. support_num++
  159. btn_support.html('<i class="fa fa-thumbs-o-up"></i> '+support_num);
  160. btn_support.data('support_num',support_num);
  161. }
  162. });
  163. });
  164. /*通知异步加载*/
  165. $("#unread_notifications").load("/ajax/unreadNotifications");
  166. /*异步加载私信*/
  167. $("#unread_messages").load("/ajax/unreadMessages");
  168. /*标签自动选择*/
  169. if( $("#select_tags").length > 0 ){
  170. $("#select_tags").select2({
  171. theme:'bootstrap',
  172. placeholder: "选择话题",
  173. ajax: {
  174. url: '/ajax/loadTags',
  175. dataType: 'json',
  176. delay: 250,
  177. data: function (params) {
  178. return {
  179. word: params.term
  180. };
  181. },
  182. processResults: function (data) {
  183. return {
  184. results: data
  185. };
  186. },
  187. cache: true
  188. },
  189. minimumInputLength:1,
  190. tags:true
  191. });
  192. $("#select_tags").change(function(){
  193. $("#tags").val($("#select_tags").val());
  194. });
  195. }
  196. /*悬赏选择框处理*/
  197. $(".reward-price-sample .btn-default").click(function(){
  198. var button = $(this);
  199. $(".reward-price-sample .btn-default").each(function(){
  200. $(this).removeClass("active");
  201. });
  202. button.addClass("active");
  203. return false;
  204. });
  205. $(".reward-price-sample .reward-price-number").keyup(function(){
  206. var price = $.trim($(this).val());
  207. if (!/^\d+$/.test(price) || parseInt(price) <= 0 ){
  208. $(this).val('');
  209. }
  210. $(".reward-price-sample .btn-default").each(function(){
  211. $(this).removeClass("active");
  212. });
  213. return false;
  214. });
  215. /*fancybox处理*/
  216. $(".description .text-fmt img,.best-answer .text-fmt img,.widget-answers .text-fmt img,.widget-article .text-fmt img").each(function(){
  217. var image = $(this);
  218. image.wrap('<a data-fancybox="gallery" href="'+image.attr("src")+'"></a>');
  219. });
  220. // 举报相关
  221. $("#report_reason").hide();
  222. $(".reportRadioItem").change(function() {
  223. var id = $("input[name='report_type']:checked").val();
  224. if (id == 99){
  225. $("#report_reason").show();
  226. }else{
  227. $("#report_reason").hide();
  228. }
  229. });
  230. $(".report_btn").click(function () {
  231. var source_type = $(this).data('source_type');
  232. var source_id = $(this).data('source_id');
  233. $("input[name='source_type']").val(source_type);
  234. $("input[name='source_id']").val(source_id);
  235. console.log(source_type);
  236. if (source_type == 'article'){
  237. $("#reportModalLabel").text("举报此文章");
  238. }else if(source_type == 'answer') {
  239. $("#reportModalLabel").text("举报此回答");
  240. }else if(source_type == 'question')
  241. {
  242. $("#reportModalLabel").text("举报此问题");
  243. }
  244. });
  245. $(".comments").map(function(){
  246. var commentNum = $(this).text().replace(/[^0-9]/ig,"");
  247. if(commentNum == 0){
  248. return false;
  249. }
  250. var comment_id = $(this).attr('href');
  251. var source_type = $(comment_id).data('source_type');
  252. var source_id = $(comment_id).data('source_id');
  253. console.log(source_type+source_id);
  254. load_comments(source_type,source_id);
  255. $(comment_id).collapse('show');
  256. });
  257. $("#report_submit_button").click(function () {
  258. var report_type = $("input[name='report_type']:checked").val();
  259. if(typeof(report_type) == "undefined"){
  260. alert('请填写举报原因');
  261. }
  262. $("#report_form").submit();
  263. });
  264. });
  265. function add_comment(token,source_type,source_id,content,to_user_id){
  266. var postData = {_token:token,source_id:source_id,source_type:source_type,content:content};
  267. if(to_user_id>0){
  268. postData.to_user_id = to_user_id;
  269. }
  270. $.post('/comment/store',postData,function(html){
  271. $("#comments-"+source_type+"-"+source_id+" .widget-comment-list").append(html);
  272. $("#comment-"+source_type+"-content-"+source_id).val('');
  273. });
  274. }
  275. function load_comments(source_type,source_id){
  276. $.get('/'+source_type+'/'+source_id+'/comments',function(html){
  277. $("#comments-"+source_type+"-"+source_id+" .widget-comment-list").append(html);
  278. });
  279. }
  280. function clear_comments(source_type,source_id){
  281. $("#comments-"+source_type+"-"+source_id+" .widget-comment-list").empty();
  282. }
  283. /**
  284. * 编辑器图片图片文件方式上传
  285. * @param file
  286. * @param editor
  287. * @param welEditable
  288. */
  289. function upload_editor_image(file,editorId){
  290. data = new FormData();
  291. data.append("file", file);
  292. $.ajax({
  293. data: data,
  294. type: "POST",
  295. dataType : 'text',
  296. url: "/image/upload",
  297. cache: false,
  298. contentType: false,
  299. processData: false,
  300. success: function(url) {
  301. console.log(url);
  302. if(url == 'error'){
  303. alert('图片上传失败!请压缩图片大小再进行上传');
  304. return false;
  305. }
  306. $('#'+editorId).summernote('insertImage', url, function ($image) {
  307. $image.css('width', $image.width() / 2);
  308. $image.addClass('img-responsive');
  309. });
  310. },
  311. error:function(){
  312. alert('图片上传失败,请压缩图片大小再进行上传 :)');
  313. }
  314. });
  315. }
  316. /*检查用户登录情况*/
  317. function check_login(){
  318. if(!is_login){
  319. document.location = '/login';
  320. return false;
  321. }
  322. return true;
  323. }
  324. /*手机号码格式校验*/
  325. function is_mobile(mobile){
  326. var reg = /^1[3456789]\d{9}$/;
  327. var phone = $.trim(mobile);
  328. if(phone == ''){
  329. return false;
  330. }
  331. if(!reg.test(phone)){
  332. return false;
  333. }
  334. return true;
  335. }
  336. function show_form_error(element,msg){
  337. element.parent().addClass('has-error');
  338. if(element.parent().find(".help-block").size() > 0){
  339. element.parent().find(".help-block").html(msg);
  340. }else{
  341. element.after('<span class="help-block">'+msg+'</span>');
  342. }
  343. }
  344. function get_button_price(){
  345. var price = 0;
  346. $(".reward-price-sample .btn-default").each(function(){
  347. var button_price = $(this).data('price');
  348. if($(this).hasClass('active')){
  349. price = button_price;
  350. }
  351. });
  352. return price;
  353. }