strformat.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287
  1. var touchobj=false;
  2. var strformat = {
  3. sendcodearr:{},
  4. sendcuxo:0,
  5. emotsstr:',[微笑],[撇嘴],[色],[发呆],[得意],[流泪],[害羞],[闭嘴],[睡],[大哭],[尴尬],[发怒],[调皮],[呲牙],[惊讶],[难过],[酷],[冷汗],[抓狂],[吐],[偷笑],[愉快],[白眼],[傲慢],[饥饿],[困],[恐惧],[流汗],[憨笑],[悠闲],[奋斗],[咒骂],[疑问],[嘘],[晕],[疯了],[衰],[骷髅],[敲打],[再见],[擦汗],[抠鼻],[鼓掌],[糗大了],[坏笑],[左哼哼],[右哼哼],[哈欠],[鄙视],[委屈],[快哭了],[阴险],[亲亲],[吓],[可怜],[菜刀],[西瓜],[啤酒],[篮球],[乒乓],[咖啡],[饭],[猪头],[玫瑰],[凋谢],[嘴唇],[爱心],[心碎],[蛋糕],[闪电],[炸弹],[刀],[足球],[瓢虫],[便便],[月亮],[太阳],[礼物],[拥抱],[强],[弱],[握手],[胜利],[抱拳],[勾引],[拳头],[差劲],[爱你],[NO],[OK],[爱情],[飞吻],[跳跳],[发抖],[怄火],[转圈],[磕头],[回头],[跳绳],[投降],[激动],[街舞],[献吻],[左太极],[右太极]',
  6. addcode:function(key, val){
  7. this.sendcuxo++;
  8. key = key+','+this.sendcuxo;
  9. this.sendcodearr[key] = val;
  10. return '[C]'+key+'[/C]'
  11. },
  12. geturl:function(d){
  13. if(!d)d={'url':''};
  14. var url = d.url;
  15. if(!url&&d.table&&d.mid)url='?m=flow&a=view&d=taskrun&table='+d.table+'&mid='+d.mid+'&uid='+adminid+'';
  16. return url;
  17. },
  18. emotspath:'',
  19. strcont:function(nr){
  20. var str = unescape(nr),patt1,emu,i,st1,oi;
  21. if(str.indexOf('<img')==-1){
  22. var strRegex = "((https|http)?://){1}"
  23. + "?(([0-9a-z_!~*'().&=+$%-]+: )?[0-9a-z_!~*'().&=+$%-]+@)?" //ftp的user@
  24. + "(([0-9]{1,3}\.){3}[0-9]{1,3}" // IP形式的URL- 199.194.52.184
  25. + "|" // 允许IP和DOMAIN(域名)
  26. + "([0-9a-z_!~*'()-]+\.)*" // 域名- www.
  27. + "([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\." // 二级域名
  28. + "[a-z]{2,6})" // first level domain- .com or .museum
  29. + "(:[0-9]{1,4})?" // 端口- :80
  30. + "((/?)|" // a slash isn't required if there is no file name
  31. + "(/[0-9a-z_!~*'().;?:@&=+$,%#-]+)+/?)";
  32. patt1 = new RegExp(strRegex, 'gi');
  33. emu = str.match(patt1);
  34. if(emu!=null){
  35. for(i=0;i<emu.length; i++){
  36. st1 = emu[i];
  37. if(st1.indexOf('http')==0){
  38. str = str.replace(st1, '{URL'+i+'}');
  39. }
  40. }
  41. for(i=0;i<emu.length; i++){
  42. st1 = emu[i];
  43. if(st1.indexOf('http')==0){
  44. str = str.replace('{URL'+i+'}', '<a onclick="return strformat.openurl(\''+st1+'\')" href="javascript:;">'+st1+'</a>');
  45. }
  46. }
  47. }
  48. }
  49. patt1 = new RegExp("\\[(.*?)\\](.*?)", 'gi');
  50. emu = str.match(patt1);
  51. if(emu!=null){
  52. for(i=0;i<emu.length; i++){
  53. st1=emu[i];
  54. oi=this.emotsarrss[st1];
  55. if(oi)str = str.replace(st1, '<img height="24" width="24" src="'+this.emotspath+'images/im/emots/qq/'+(oi-1)+'.gif">');
  56. }
  57. }
  58. str = str.replace(/\n/gi, '<br>');
  59. return str;
  60. },
  61. downshow:function(sid){
  62. var url = 'mode/upload/uploadshow.php?id='+sid+'';
  63. openurlla(url, 400, 300);
  64. return false;
  65. },
  66. strcontss:function(str,bq,rstr){
  67. var patt1 = new RegExp("\\["+bq+"\\](.*?)\\[\\/"+bq+"\\]", "gi");
  68. var emu = str.match(patt1);
  69. if(emu != null){
  70. bq1 = bq.toLowerCase();
  71. for(var i=0;i<emu.length; i++){
  72. var s0 = emu[i].replace('['+bq+']','').replace('[/'+bq+']','');
  73. s0 = s0.replace('['+bq1+']','').replace('[/'+bq1+']','');
  74. var s1 = s0,s2 = s0,s3='',sa;
  75. if(s0.indexOf('|')>0){
  76. sa = s0.split('|');
  77. s1 = sa[1];
  78. s2 = sa[0];
  79. s3 = sa[2];
  80. }
  81. var s4 = rstr.replace('{s1}',s1).replace('{s2}',s2).replace('{s3}',s3);
  82. str = str.replace(emu[i], s4);
  83. }
  84. }
  85. return str;
  86. },
  87. sendinstr:function(str, tuas){
  88. var bq = 'C';
  89. var patt1 = new RegExp("\\["+bq+"\\](.*?)\\[\\/"+bq+"\\]", "gi");
  90. var emu = str.match(patt1);
  91. if(emu != null){
  92. for(var i=0;i<emu.length; i++){
  93. var s0 = emu[i].replace('['+bq+']','').replace('[/'+bq+']','');
  94. str = str.replace(emu[i], this.sendcodearr[s0]);
  95. }
  96. }
  97. var nowa = js.serverdt('Y-m-d H:i:s 星期W'),
  98. nowas = nowa.split(' ');
  99. var ztstr = [['now',nowa],['date',nowas[0]],['time',nowas[1]],['week',nowas[2]]];
  100. var patt1,a,thnr,ths='';
  101. for(var i=0; i<ztstr.length; i++){
  102. a = ztstr[i];
  103. if(a[2] == 1){
  104. patt1 = new RegExp(""+a[0]+"", "gi");
  105. thnr = '[A]'+a[0]+'|'+a[1]+'[/A]';
  106. }else{
  107. thnr = a[1];
  108. patt1 = new RegExp("\\["+a[0]+"\\]", "gi");
  109. }
  110. str = str.replace(patt1, thnr);
  111. }
  112. return str;
  113. },
  114. picshow:function(str, wj){
  115. var s=str,sa;
  116. if(s.indexOf('[图片.')==0){
  117. s=s.substr(1,s.length-1);
  118. sa=s.split('.');
  119. if(wj)s='<img src="'+apiurl+''+wj+'">';
  120. }
  121. return s;
  122. },
  123. showdt:function(sj){
  124. if(!sj)sj='';
  125. var s='';
  126. sja=sj.split(' ');
  127. if(sj.indexOf(this.dt)==0){
  128. s=sja[1];
  129. }else{
  130. s=sj.substr(5,11);
  131. }
  132. return s;
  133. },
  134. showqp:function(type,name,dt,cont,nuid, fase,rnd,bqname,bqcor){
  135. var str = this.strcont(cont);
  136. if(!rnd)rnd=js.getrand();
  137. var nr = '',bqs='';
  138. if(bqname && bqcor)bqs='<font style="background:'+bqcor+';font-size:10px;margin-right:2px;color:white;padding:1px 2px;border-radius:2px" >'+bqname+'</font>';
  139. this.showqpid = 'ltcont_'+rnd+'';
  140. nr+='<div id="'+this.showqpid+'" class="ltcont">';
  141. nr+=' <div class="qipao" align="'+type+'">';
  142. nr+=' <div class="dt" style="padding-'+type+':65px">'+bqs+'<font id="ltname_'+rnd+'">'+name+'</font>('+this.showdt(dt)+')</div>';
  143. nr+=' <table border="0" cellspacing="0" cellpadding="0">';
  144. nr+=' <tr valign="top">';
  145. if(type == 'left'){
  146. nr+=' <td width="50" align="center"><img src="'+fase+'" onclick="strformat.clickface(\''+rnd+'\',this)" class="qipaoface" width="40" height="40"></td>';
  147. nr+=' <td><div class="qipao'+type+'"></div></td>';
  148. }else{
  149. nr+=' <td width="30" align="right">';
  150. if(nuid)nr+='<img src="images/loadings.gif" title="发送中..." id="'+nuid+'" style="margin-top:5px" align="absmiddle">&nbsp;';
  151. nr+=' </td>';
  152. }
  153. nr+=' <td>';
  154. nr+=' <div ontouchstart="touchobj=this" id="qipaocont_'+rnd+'" rand="'+rnd+'" class="qipaocont qipaocont'+type+'">'+str+'</div>';
  155. nr+=' </td>';
  156. if(type == 'right'){
  157. nr+=' <td><div class="qipao'+type+'"></div></td>';
  158. nr+=' <td width="50" align="center"><img src="'+fase+'" onclick="strformat.clickface(\''+rnd+'\',this)" class="qipaoface" width="40" height="40"></td>';
  159. }else{
  160. nr+=' <td width="30"></td>';
  161. }
  162. nr+=' </tr></table>';
  163. nr+=' </div>';
  164. nr+='</div>';
  165. return nr;
  166. },
  167. clickface:function(){
  168. },
  169. showupfile:function(f, snr){
  170. var nuid= js.now('time'),optdt = js.serverdt(),nr='';
  171. nr = '<div id="showve_'+nuid+'">';
  172. if(f && f.filename){
  173. if(f.isimg){
  174. var src = ''+this.emotspath+'images/noimg.jpg';
  175. if(f.thumbpath)src = ''+apiurl+''+f.thumbpath+'';
  176. if(f.imgviewurl)src = f.imgviewurl;
  177. nr+='<div><img width="150" onclick="strformat.clickimg(this)" id="imgview_'+nuid+'" src="'+src+'"><br>'+f.filesizecn+'</div>';
  178. }else{
  179. nr+= '<div><img src="'+this.emotspath+'images/fileicons/'+js.filelxext(f.fileext)+'.gif" align="absmiddle">&nbsp;'+f.filename+'('+f.filesizecn+')</div>';
  180. }
  181. }
  182. if(snr){
  183. nr+= '<div><img src="'+snr+'" onclick="strformat.clickimg(this)" id="jietuimg_'+nuid+'" width="150"></div>';
  184. nr+= '<div><a onclick="im.upbase64(\''+nuid+'\')" href="javascript:;">[发送截图]</a>';
  185. }
  186. nr+= '<div class="progresscls"><div id="progresscls_'+nuid+'" class="progressclssse"></div><div class="progressclstext" id="progresstext_'+nuid+'">0%</div></div>';
  187. nr+= '<div id="progcanter_'+nuid+'"><a href="javascript:;" onclick="strformat.cancelup(\''+nuid+'\')">取消</a></div>';
  188. nr+= '</div>';
  189. this.nuidup_tep = nuid;
  190. var nas = f.sendname;
  191. if(!nas)nas='我';
  192. var cont= this.showqp('right',nas,optdt, nr, nuid, f.face, nuid,f.bqname,f.bqcolor);
  193. return {'cont':cont,optdt:optdt,nuid:nuid};
  194. },
  195. upprogresss:function(per, nuid){
  196. if(!nuid)nuid=this.nuidup_tep;
  197. $('#progresscls_'+nuid+'').css('width',''+per+'%');
  198. $('#progresstext_'+nuid+'').html(''+per+'%');
  199. if(per==100)$('#progcanter_'+nuid+'').remove();
  200. },
  201. upsuccess:function(f,nuid){
  202. if(!nuid)nuid=this.nuidup_tep;
  203. this.upprogresss(100, nuid);
  204. $('#progresstext_'+nuid+'').html('上传成功');
  205. var contss;
  206. if(js.isimg(f.fileext)){
  207. contss = '[图片 '+f.filesizecn+']';
  208. }else{
  209. contss = '['+f.filename+' '+f.filesizecn+']';
  210. }
  211. var s = this.contshozt(f);
  212. $('#showve_'+nuid+'').html(s);
  213. return contss;
  214. },
  215. uperror:function(nuid){
  216. if(!nuid)nuid=this.nuidup_tep;
  217. $('#progresstext_'+nuid+'').html('<font color=red>上传失败</font>');
  218. $('#progcanter_'+nuid+'').remove();
  219. },
  220. cancelup:function(nuid){
  221. if(!nuid)nuid=this.nuidup_tep;
  222. try{if(this.upobj)this.upobj.abort();}catch(e){}
  223. $('#ltcont_'+nuid+'').remove();
  224. },
  225. openimg:function(src){
  226. var img = src;
  227. if(src.indexOf('thumb')>0){
  228. var ext = src.substr(src.lastIndexOf('.')+1);
  229. img = src.substr(0,src.lastIndexOf('_'))+'.'+ext;
  230. }
  231. js.open(img);
  232. },
  233. emotsarrss:{},
  234. init:function(){
  235. var a = this.emotsstr.split(',');
  236. this.emotsarr=a;
  237. var len = a.length,i;
  238. for(i=1;i<len;i++){
  239. this.emotsarrss[a[i]]=i;
  240. }
  241. this.dt=js.now();
  242. },
  243. contshozt:function(d, lj){
  244. var s='',slx,sttr;
  245. if(!d)return s;
  246. if(!d.fileid)d.fileid=d.id;
  247. if(js.isimg(d.fileext)){
  248. sttr='';
  249. if(d.thumbpath){
  250. s='<img src="'+d.thumbpath+'" style="max-width:250px" onclick="strformat.clickimg(this)" fid="'+d.fileid+'">';
  251. }else{
  252. if(d.width){
  253. if(d.width>150)sttr='width="150"';
  254. }else{
  255. sttr='width="150"';
  256. }
  257. s='<img src="'+d.filepath+'" onclick="strformat.clickimg(this)" '+sttr+' fid="'+d.fileid+'">';
  258. }
  259. }else if(d.fileext=='amr'){
  260. s+='<i class="icon-volume-up"></i> '+(parseInt(d.filesize/1000))+'"';
  261. s+='&nbsp;<a href="javascript:;" style="font-size:12px" onclick="js.fileopt('+d.fileid+',1)">下载</a>';
  262. }else{
  263. slx = d.fileext;if(!lj)lj='';
  264. if(js.fileall.indexOf(','+slx+',')<0)slx='wz';
  265. //s=''+d.filename+'<br><a href="javascript:;" onclick="js.fileopt('+d.fileid+',1)">下载</a>&nbsp;&nbsp;<a href="javascript:;" onclick="js.fileopt('+d.fileid+',0)">预览</a>&nbsp;'+d.filesizecn+'';
  266. s='<table><tr><td><div class="qipaofile">'+d.fileext.toUpperCase()+'</div></td><td>'+d.filename+'<br><span style="font-size:12px;color:#888888">('+d.filesizecn+')&nbsp;&nbsp;<a href="javascript:;" onclick="strformat.clickfile(\''+d.fileid+'\',1)">下载</a>&nbsp;&nbsp;<a href="javascript:;" onclick="strformat.clickfile(\''+d.fileid+'\',0)">预览</a></span></td></tr></table>';
  267. }
  268. return s;
  269. },
  270. clickfile:function(fid){
  271. js.msg('msg','没有开发打开');
  272. },
  273. clickimg:function(){
  274. }
  275. }
  276. strformat.init();