1var ARTICLE_REACTION = function(){ 2 var $btn,$num; 3 var target_type, target_code; 4 var like_token, like_token_key; 5 var like_token_loading = false; 6 var like_token_callbacks = []; 7 var like_token_request_id = 0; 8 var like_token_request_timeout = null; 9 var post_position; //ê¸ëª©ë¡ìì ì¢ìì í´ë¦ì í´ë¦í ê¸ì´ 무ìì¸ì§ ì기 ìí ë³ì 10 var recommend_token, recommend_token_key; 11 var init = function(type,code,$b,$n){ 12 $btn = $b; 13 $num = $n; 14 target_type = type; 15 target_code = code; 16 }; 17 18 //ê¸ ëª©ë¡ìì ì¢ìì í´ë¦êµ¬ë¶ 19 var checkLikeToken = function(key,token,current_position){ 20 if((typeof like_token === "undefined") || (typeof like_token_key === "undefined") || (post_position !== current_position)){ 21 like_token = token; 22 like_token_key = key; 23 24 } 25 }; 26 27 var setLikeToken = function(){ 28 if(isEdgeStatelessPage()) return; 29 requestLikeToken(); 30 }; 31 32 var requestLikeToken = function(callback){ 33 if(typeof callback === 'function'){ 34 like_token_callbacks.push(callback); 35 } 36 if(like_token_loading) return; 37 like_token_loading = true; 38 // í í° ìì² ì¬ìë í ë¦ê² ëì°©í ì´ì ìëµì 무ìíë¤. 39 like_token_request_id++; 40 var current_request_id = like_token_request_id; 41 if(like_token_request_timeout !== null) clearTimeout(like_token_request_timeout); 42 like_token_request_timeout = setTimeout(function(){ 43 if(current_request_id !== like_token_request_id) return; 44 like_token_loading = false; 45 like_token_callbacks = []; 46 like_token_request_timeout = null; 47 }, 10000); 48 TOKEN.makeToken(86400,'article_reaction_set_like',function(token,token_key){ 49 if(current_request_id !== like_token_request_id) return; 50 if(like_token_request_timeout !== null){ 51 clearTimeout(like_token_request_timeout); 52 like_token_request_timeout = null; 53 } 54 like_token = token; 55 like_token_key = token_key; 56 like_token_loading = false; 57 runLikeTokenCallbacks(); 58 }); 59 }; 60 61 var runLikeTokenCallbacks = function(){ 62 var callbacks = like_token_callbacks.slice(0); 63 like_token_callbacks = []; 64 for(var i = 0; i < callbacks.length; i++){ 65 if(typeof callbacks[i] === 'function') callbacks[i](); 66 } 67 }; 68 69 var ensureLikeToken = function(callback){ 70 if((typeof like_token !== "undefined") && (typeof like_token_key !== "undefined")){ 71 callback(); 72 return; 73 } 74 requestLikeToken(callback); 75 }; 76 77 var isEdgeStatelessPage = function(){ 78 return typeof window !== 'undefined' && !!window.IMWEB_EDGE_STATELESS_TOKEN; 79 }; 80 81 var setRecommendToken = function(){ 82 TOKEN.makeToken(86400,'article_reaction_set_recommend',function(token,token_key){ 83 recommend_token = token; 84 recommend_token_key = token_key; 85 }); 86 }; 87 88 var toggleLike = function(){ 89 ensureLikeToken(function(){ 90 toggleReaction('like'); 91 }); 92 }; 93 94 var toggleReaction = function(type){ 95 $.ajax({ 96 type : 'POST', 97 data : {'target_type':target_type, 'target_code' : target_code,'token':like_token, 'key' : like_token_key, 'type' : type}, 98 url : ('/ajax/article_reaction.cm'), 99 dataType : 'json', 100 async : true, 101 cache : false, 102 success : function (result) { 103 if(result.msg == 'SUCCESS'){ 104 105 106 //ìµì ê¸ ìì ¯ì ì¢ìì ë²í¼, ì¹´ì´í¸ 107 var newest_like_btn = $("[name='newest_like_btn_" + target_code + "']"); 108 var newest_like_count = $("[name='newest_like_count_" + target_code + "']"); 109 110 if(result.mode == 'add'){ 111 112 //ìµì ê¸ ìì ¯ ê°±ì 113 $.each(newest_like_btn, function(){ 114 newest_like_btn.toggleClass('on', true); 115 }); 116 117 $.each(newest_like_count, function(index){ 118 newest_like_count.eq(index).text(parseInt(newest_like_count.eq(index).text()) + 1); 119 }); 120 121 $btn.toggleClass('on', true); 122 $num.text(parseInt($num.text()) + 1); 123 }else if(result.mode == 'delete'){ 124 125 //ìµì ê¸ ìì ¯ ê°±ì 126 $.each(newest_like_btn, function(){ 127 newest_like_btn.toggleClass('on',false); 128 }); 129 130 $.each(newest_like_count, function(index){ 131 newest_like_count.eq(index).text(parseInt(newest_like_count.eq(index).text())-1); 132 }); 133 134 $btn.toggleClass('on',false); 135 $num.text(parseInt($num.text())-1);
136 $('#like_token_key_' + target_code).val(result.key); 137 $('#like_token_' + target_code).val(result.token); 138 like_token = result.token; 139 like_token_key = result.key; 140 } 141 post_position = target_code; //ê¸ ëª©ë¡ìì ì¢ìì í´ë¦í ê¸ì ìì¹ë¥¼ íì í기ìí´ ì ì¥ 142 } 143 } 144 }); 145 }; 146 147 var mapToggleLike = function(idx,list_type){ 148 ensureLikeToken(function(){ 149 mapToggleReaction('like',idx,list_type); 150 }); 151 }; 152 153 var mapToggleReaction = function(type,idx,list_type){ 154 155 $.ajax({ 156 type : 'POST', 157 data : {'target_type':target_type, 'target_code' : target_code,'token':like_token, 'key' : like_token_key, 'type' : type}, 158 url : ('/ajax/article_reaction.cm'), 159 dataType : 'json', 160 async : true, 161 cache : false, 162 success : function (result) { 163 if(result.msg == 'SUCCESS'){ 164 if(list_type == 'map'){ 165 if(result.mode == 'add'){ 166 $btn.toggleClass('on', true); 167 $('#list_pop_'+idx).find('#like_btn_' + target_code).toggleClass('on', true); 168 $num.text(parseInt($num.text()) + 1); 169 $('#list_'+idx).find('#like_count_' + target_code).text(parseInt($num.text())); 170 $('#list_pop_'+idx).find('#like_count_' + target_code).text(parseInt($num.text())); 171 }else if(result.mode == 'delete'){ 172 $btn.toggleClass('on',false); 173 $('#list_pop_'+idx).find('#like_btn_' + target_code).toggleClass('on', false); 174 $num.text(parseInt($num.text())-1); 175 $('#list_'+idx).find('#like_count_' + target_code).text(parseInt($num.text())); 176 $('#list_'+idx).find('#like_token_key_' + target_code).val(result.key); 177 $('#list_'+idx).find('#like_token_' + target_code).val(result.token); 178 $('#list_pop_'+idx).find('#like_count_' + target_code).text(parseInt($num.text())); 179 like_token = result.token; 180 like_token_key = result.key; 181 } 182 }else{ 183 if(result.mode == 'add'){ 184 $btn.toggleClass('on', true); 185 $num.text(parseInt($num.text()) + 1); 186 }else if(result.mode == 'delete'){ 187 $btn.toggleClass('on',false); 188 $num.text(parseInt($num.text())-1); 189 like_token = result.token; 190 like_token_key = result.key; 191 } 192 } 193 post_position = target_code; //ê¸ ëª©ë¡ìì ì¢ìì í´ë¦í ê¸ì ìì¹ë¥¼ íì í기ìí´ ì ì¥ 194 } 195 } 196 }); 197 }; 198 199 return { 200 'init' : function(type,code,$btn,$num){ 201 init(type,code,$btn,$num); 202 }, 203 'checkLikeToken' : function(key,token, current_position){ 204 checkLikeToken(key,token, current_position); 205 }, 206 'setLikeToken' : function(){ 207 setLikeToken(); 208 }, 209 'setRecommendToken' : function(){ 210 setRecommendToken(); 211 }, 212 'toggleLike' : function(){ 213 toggleLike(); 214 }, 215 'mapToggleLike' : function(idx,list_type){ 216 mapToggleLike(idx,list_type); 217 } 218 } 219};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.