portal.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361
  1. /*
  2. [Discuz!] (C)2001-2099 Comsenz Inc.
  3. This is NOT a freeware, use is subject to license terms
  4. $Id: portal.js 31313 2012-08-10 03:51:03Z zhangguosheng $
  5. */
  6. function block_get_setting(classname, script, bid) {
  7. var x = new Ajax();
  8. x.get('portal.php?mod=portalcp&ac=block&op=setting&bid='+bid+'&classname='+classname+'&script='+script+'&inajax=1', function(s){
  9. ajaxinnerhtml($('tbody_setting'), s);
  10. });
  11. }
  12. function switch_blocktab(type) {
  13. if(type == 'setting') {
  14. $('blockformsetting').style.display = '';
  15. $('blockformdata').style.display = 'none';
  16. $('li_setting').className = 'a';
  17. $('li_data').className = '';
  18. } else {
  19. $('blockformsetting').style.display = 'none';
  20. $('blockformdata').style.display = '';
  21. $('li_setting').className = '';
  22. $('li_data').className = 'a';
  23. }
  24. }
  25. function showpicedit(pre) {
  26. pre = pre ? pre : 'pic';
  27. if($(pre+'way_remote').checked) {
  28. $(pre+'_remote').style.display = "block";
  29. $(pre+'_upload').style.display = "none";
  30. } else {
  31. $(pre+'_remote').style.display = "none";
  32. $(pre+'_upload').style.display = "block";
  33. }
  34. }
  35. function block_show_thumbsetting(classname, styleid, bid) {
  36. var x = new Ajax();
  37. x.get('portal.php?mod=portalcp&ac=block&op=thumbsetting&classname='+classname+'&styleid='+styleid+'&bid='+bid+'&inajax=1', function(s){
  38. ajaxinnerhtml($('tbody_thumbsetting'), s);
  39. });
  40. }
  41. function block_showstyle(stylename) {
  42. var el_span = $('span_'+stylename);
  43. var el_value = $('value_' + stylename);
  44. if (el_value.value == '1'){
  45. el_value.value = '0';
  46. el_span.className = "";
  47. } else {
  48. el_value.value = '1';
  49. el_span.className = "a";
  50. }
  51. }
  52. function block_pushitem(bid, itemid) {
  53. var id = $('push_id').value;
  54. var idtype = $('push_idtype').value;
  55. if(id && idtype) {
  56. var x = new Ajax();
  57. x.get('portal.php?mod=portalcp&ac=block&op=push&&bid='+bid+'&itemid='+itemid+'&idtype='+idtype+'&id='+id+'&inajax=1', function(s){
  58. ajaxinnerhtml($('tbody_pushcontent'), s);
  59. evalscript(s);
  60. });
  61. }
  62. }
  63. function block_delete_item(bid, itemid, itemtype, itemfrom, from) {
  64. var msg = itemtype==1 ? '您确定要删除该数据吗?' : '您确定要屏蔽该数据吗?';
  65. if(confirm(msg)) {
  66. var url = 'portal.php?mod=portalcp&ac=block&op=remove&bid='+bid+'&itemid='+itemid;
  67. if(itemfrom=='ajax') {
  68. var x = new Ajax();
  69. x.get(url+'&inajax=1', function(){
  70. if(succeedhandle_showblock) succeedhandle_showblock('', '', {'bid':bid});
  71. showWindow('showblock', 'portal.php?mod=portalcp&ac=block&op=data&bid='+bid+'&from='+from+'&tab=data&t='+(+ new Date()), 'get', 0);
  72. });
  73. } else {
  74. location.href = url;
  75. }
  76. }
  77. doane();
  78. }
  79. function portal_comment_requote(cid, aid) {
  80. var x = new Ajax();
  81. x.get('portal.php?mod=portalcp&ac=comment&op=requote&cid='+cid+'&aid='+aid+'&inajax=1', function(s){
  82. $('message').focus();
  83. ajaxinnerhtml($('message'), s);
  84. });
  85. }
  86. function insertImage(text) {
  87. text = "\n[img]" + text + "[/img]\n";
  88. insertContent('message', text);
  89. }
  90. function insertContent(target, text) {
  91. var obj = $(target);
  92. selection = document.selection;
  93. checkFocus(target);
  94. if(!isUndefined(obj.selectionStart)) {
  95. var opn = obj.selectionStart + 0;
  96. obj.value = obj.value.substr(0, obj.selectionStart) + text + obj.value.substr(obj.selectionEnd);
  97. } else if(selection && selection.createRange) {
  98. var sel = selection.createRange();
  99. sel.text = text;
  100. sel.moveStart('character', -strlen(text));
  101. } else {
  102. obj.value += text;
  103. }
  104. }
  105. function searchblock(from) {
  106. var value = $('searchkey').value;
  107. var targettplname = $('targettplname').value;
  108. value = BROWSER.ie && document.charset == 'utf-8' ? encodeURIComponent(value) : (value ? value.replace(/#/g,'%23') : '');
  109. var url = 'portal.php?mod=portalcp&ac=portalblock&searchkey='+value+'&from='+from;
  110. url += targettplname != '' ? '&targettplname='+targettplname+'&type=page' : '&type=block';
  111. reloadselection(url);
  112. }
  113. function reloadselection(url) {
  114. ajaxget(url+'&t='+(+ new Date()), 'block_selection');
  115. }
  116. function getColorPalette(colorid, id, background) {
  117. return "<input id=\"c"+colorid+"\" onclick=\"createPalette('"+colorid+"', '"+id+"');\" type=\"button\" class=\"pn colorwd\" value=\"\" style=\"background-color: "+background+"\">";
  118. }
  119. function listblock_bypage(id, idtype) {
  120. var tpl = $('rtargettplname') ? $('rtargettplname').value : '';
  121. var searchkey = $('rsearchkey') ? $('rsearchkey').value.replace('#', '%23') : '';
  122. ajaxget('portal.php?mod=portalcp&ac=portalblock&op=recommend&getdata=yes&searchkey='+searchkey+'&targettplname='+tpl+'&id='+id+'&idtype='+idtype, 'itemeditarea');
  123. }
  124. function recommenditem_check() {
  125. var sel = $('recommend_bid');
  126. if(sel && sel.value) {
  127. document.forms['recommendform'].action = document.forms['recommendform'].action+'&bid='+sel.value;
  128. return true;
  129. } else {
  130. alert("请选择一个模块!");
  131. return false;
  132. }
  133. }
  134. function recommenditem_byblock(bid, id, idtype) {
  135. var editarea = $('itemeditarea');
  136. if(editarea) {
  137. var olditemeditarea = $('olditemeditarea');
  138. ajaxinnerhtml(olditemeditarea, editarea.innerHTML);
  139. if(!$('recommendback')) {
  140. var back = document.createElement('div');
  141. back.innerHTML = '<em id="recommendback" onclick="recommenditem_back()" class="cur1">&nbsp;&nbsp;&laquo;返回</em>';
  142. var return_mods = $('return_mods') || $('return_recommend') || $('return_');
  143. if(return_mods) {
  144. return_mods.parentNode.appendChild(back.childNodes[0]);
  145. }
  146. }
  147. if(bid) {
  148. if($('recommend_bid')) {
  149. $('recommend_bid').value = bid;
  150. }
  151. ajaxget('portal.php?mod=portalcp&ac=block&op=recommend&bid='+bid+'&id='+id+'&idtype='+idtype+'&handlekey=recommenditem', 'itemeditarea');
  152. } else {
  153. ajaxinnerhtml(editarea, '<tr><td>&nbsp;</td><td>&nbsp;</td></tr>');
  154. }
  155. }
  156. }
  157. function delete_recommenditem(dataid, bid) {
  158. if(dataid && bid) {
  159. var x = new Ajax();
  160. x.get('portal.php?mod=portalcp&ac=block&op=delrecommend&bid='+bid+'&dataid='+dataid+'&inajax=1', function(s){
  161. $('recommenditem_'+dataid).parentNode.removeChild($('recommenditem_'+dataid));
  162. if(!$('recommenditem_ul').getElementsByTagName('li').length) {
  163. $('hasinblocks').parentNode.removeChild($('hasinblocks'));
  164. }
  165. });
  166. }
  167. }
  168. function recommenditem_back(){
  169. var editarea = $('itemeditarea');
  170. var oldeditarea = $('olditemeditarea');
  171. var recommendback = $('recommendback');
  172. if(oldeditarea){
  173. ajaxinnerhtml(editarea, oldeditarea.innerHTML);
  174. ajaxupdateevents(editarea);
  175. }
  176. if(recommendback) {
  177. recommendback.parentNode.removeChild(recommendback);
  178. }
  179. if($('recommend_bid')) {
  180. $('recommend_bid').value = '';
  181. }
  182. }
  183. function blockBindTips() {
  184. var elems = ($('blockformsetting') || document).getElementsByTagName('img');
  185. var k = 0;
  186. var stamp = (+new Date());
  187. var tips = '';
  188. for(var i = 0; i < elems.length; i++) {
  189. tips = elems[i]['tips'] || elems[i].getAttribute('tips') || '';
  190. if(tips && ! elems[i].isBindTips) {
  191. elems[i].isBindTips = '1';
  192. elems[i].id = elems[i].id ? elems[i].id : ('elem_' + stamp + k.toString());
  193. k++;
  194. showPrompt(elems[i].id, 'mouseover', tips, 1, true);
  195. }
  196. }
  197. }
  198. function blockSetCacheTime(timer) {
  199. $('txt_cachetime').value=timer;
  200. doane();
  201. }
  202. function toggleSettingShow() {
  203. if(!$('tbody_setting').style.display) {
  204. $('tbody_setting').style.display = 'none';
  205. $('a_setting_show').innerHTML = '展开设置项';
  206. } else {
  207. $('tbody_setting').style.display = '';
  208. $('a_setting_show').innerHTML = '收起设置项';
  209. }
  210. doane();
  211. }
  212. function switchSetting() {
  213. var checked = $('isblank').checked;
  214. if(checked) {
  215. $('tbody_setting').style.display = 'none';
  216. $('a_setting_show').innerHTML = '展开设置项';
  217. } else {
  218. $('tbody_setting').style.display = '';
  219. $('a_setting_show').innerHTML = '收起设置项';
  220. }
  221. }
  222. function checkblockname(form) {
  223. if(!(trim(form.name.value) > '')) {
  224. showDialog('模块标识不能为空', 'error', null, function(){form.name.focus();});
  225. return false;
  226. }
  227. if(form.summary && form.summary.value) {
  228. var tag = blockCheckTag(form.summary.value, true);
  229. if(tag) {
  230. showBlockSummary();
  231. form.summary.focus();
  232. showDialog('自定义内容错误,HTML代码:'+tag+' 标签不匹配', 'error', null, function(){form.summary.select();});
  233. return false;
  234. }
  235. }
  236. return true;
  237. }
  238. function blockCheckTag(summary, returnValue) {
  239. var obj = null, fn = null;
  240. if(typeof summary == 'object') {
  241. obj = summary;
  242. summary = summary.value;
  243. fn = function(){obj.focus();obj.select();};
  244. }
  245. if(trim(summary) > '') {
  246. var tags = ['div', 'table', 'tbody', 'tr', 'td', 'th'];
  247. for(var i = 0; i < tags.length; i++) {
  248. var tag = tags[i];
  249. var reg = new RegExp('<'+tag+'', 'gi');
  250. var preTag = [];
  251. var one = [];
  252. while (one = reg.exec(summary)) {
  253. preTag.push(one[0]);
  254. }
  255. reg = new RegExp('</'+tag+'>', 'gi');
  256. var endTag = [];
  257. var one = [];
  258. while (one = reg.exec(summary)) {
  259. endTag.push(one[0]);
  260. }
  261. if(!preTag && !endTag) continue;
  262. if((!preTag && endTag) || (preTag && !endTag) || preTag.length != endTag.length) {
  263. if(returnValue) {
  264. return tag;
  265. } else {
  266. showDialog('HTML代码:'+tag+' 标签不匹配', 'error', null, fn, true, fn);
  267. return false;
  268. }
  269. }
  270. }
  271. }
  272. return false;
  273. }
  274. function showBlockSummary() {
  275. $('block_sumamry_content').style.display='';
  276. $('a_summary_show').style.display='none';
  277. $('a_summary_hide').style.display='';
  278. return false;
  279. }
  280. function hideBlockSummary() {
  281. $('block_sumamry_content').style.display='none';
  282. $('a_summary_hide').style.display='none';
  283. $('a_summary_show').style.display='';
  284. return false;
  285. }
  286. function blockconver(ele,bid) {
  287. if(ele && bid) {
  288. if(confirm('您确定要转换模块的类型从 '+ele.options[0].innerHTML+' 到 '+ele.options[ele.selectedIndex].innerHTML)) {
  289. ajaxget('portal.php?mod=portalcp&ac=block&op=convert&bid='+bid+'&toblockclass='+ele.value,'blockshow');
  290. } else {
  291. ele.selectedIndex = 0;
  292. }
  293. }
  294. }
  295. function blockFavorite(bid){
  296. if(bid) {
  297. ajaxget('portal.php?mod=portalcp&ac=block&op=favorite&bid='+bid,'bfav_'+bid);
  298. }
  299. }
  300. function strLenCalc(obj, checklen, maxlen) {
  301. var v = obj.value, charlen = 0, maxlen = !maxlen ? 200 : maxlen, curlen = 0, len = strlen(v);
  302. for(var i = 0; i < v.length; i++) {
  303. if(v.charCodeAt(i) < 0 || v.charCodeAt(i) > 255) {
  304. curlen += 2;
  305. } else {
  306. curlen += 1;
  307. }
  308. }
  309. checklen = $(checklen);
  310. if(checklen.style.display == 'none') checklen.style.display = '';
  311. if(curlen <= maxlen) {
  312. checklen.innerHTML = '已输入 <b>'+(curlen)+'</b> 个字符';
  313. return true;
  314. } else {
  315. checklen.innerHTML = '超出 <b style="color:red">'+(curlen - maxlen)+'</b> 个字符';
  316. return false;
  317. }
  318. }
  319. function check_itemdata_lentgh(form) {
  320. if(form.title && (!strLenCalc(form.title, "titlechk", form.title.getAttribute('_maxlength')) || !form.title.value)) {
  321. form.title.focus();
  322. showDialog('标题长度不正确', 'error', null, function(){form.title.select();});
  323. return false;
  324. }
  325. if(form.summary && !strLenCalc(form.summary, "summarychk", form.summary.getAttribute('_maxlength'))) {
  326. form.summary.focus();
  327. showDialog('简介长度不正确', 'error', null, function(){form.summary.select();});
  328. return false;
  329. }
  330. return true;
  331. }