main.js 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686
  1. //这里的代码是最早写的,很乱,以后整合优化
  2. var editors = [];
  3. $(document).ready(function()
  4. {
  5. //init();
  6. });
  7. function init()
  8. {
  9. edit();
  10. del();
  11. checkbox();
  12. image();
  13. change();
  14. autocomplete();
  15. template();
  16. submit();
  17. loadShow();
  18. initEditor();
  19. initPic();
  20. initDate();
  21. //更新页面一些功能,上边的一些功能等找时间再优化吧
  22. dever_update.init();
  23. hljs.initHighlightingOnLoad();
  24. table();
  25. }
  26. function initMenu()
  27. {
  28. if(typeof(config.layout) != "undefined")
  29. {
  30. $('.list-unstyled li').each(function(j)
  31. {
  32. $(this).unbind('click').bind('click', function()
  33. {
  34. $('.list-unstyled .active').each(function()
  35. {
  36. $(this).attr('class', '');
  37. $(this).find('a').attr('class', '');
  38. })
  39. $(this).attr('class', 'active');
  40. var a = $(this).find('a');
  41. a.attr('class', 'subdrop');
  42. //alert($(this).attr('class'));
  43. })
  44. });
  45. $('.project-list').each(function()
  46. {
  47. $(this).unbind('click').bind('click', function()
  48. {
  49. $('.project-list').each(function()
  50. {
  51. $(this).find('i').parent().attr('class', '');
  52. $(this).find('ul').attr('class', 'list-unstyled upload-menu');
  53. })
  54. $(this).find('i').parent().attr('class', 'active');
  55. $(this).find('ul').attr('class', 'list-unstyled upload-menu in');
  56. })
  57. });
  58. }
  59. }
  60. function table()
  61. {
  62. $('[data-pattern]').each(function ()
  63. {
  64. var $tableScrollWrapper = $(this);
  65. $tableScrollWrapper.responsiveTable($tableScrollWrapper.data());
  66. });
  67. }
  68. function initDate()
  69. {
  70. $.datetimepicker.setLocale('ch');
  71. if($(".manage_time").length)
  72. {
  73. $(".manage_time").each(function()
  74. {
  75. $(this).datetimepicker(
  76. {
  77. //inline:true,
  78. timepicker:false,
  79. format:'Y-m-d',
  80. lang:'ch'
  81. });
  82. });
  83. }
  84. if($(".manage_date").length)
  85. {
  86. $(".manage_date").each(function()
  87. {
  88. $(this).datetimepicker(
  89. {
  90. //datepicker:false,
  91. format:'Y-m-d H:i:s',
  92. lang:'ch'
  93. });
  94. });
  95. }
  96. }
  97. function initPic()
  98. {
  99. $('a[rel]').fancybox();
  100. }
  101. function initEditor()
  102. {
  103. if($('.editor').length)
  104. {
  105. $('.editor').each(function()
  106. {
  107. var parent = $(this).parent().parent();
  108. //alert(parent.attr('id'));
  109. if(parent.attr('id') && parent.attr('id').indexOf('-child-0') != -1)
  110. {
  111. return;
  112. }
  113. loadEditor($(this));
  114. })
  115. }
  116. }
  117. function loadEditor(e)
  118. {
  119. if(!e.length)
  120. {
  121. return;
  122. }
  123. var id = e.attr('id');
  124. var key = e.attr('key');
  125. var toolbar = [
  126. 'title'
  127. ,'bold'
  128. ,'italic'
  129. ,'underline'
  130. ,'strikethrough'
  131. ,'fontScale'
  132. ,'color'
  133. ,'ol'
  134. ,'ul'
  135. ,'blockquote'
  136. ,'code'
  137. ,'table'
  138. ,'link'
  139. ,'image'
  140. ,'hr'
  141. ,'indent'
  142. ,'outdent'
  143. ,'alignment'
  144. //,'emoji'
  145. , '|'
  146. ,'html'
  147. ];
  148. if(typeof(editors[id]) == "object")
  149. {
  150. editors[id].destroy();
  151. editors[id] = undefined;
  152. }
  153. if(typeof(editors[id]) == "undefined")
  154. {
  155. editors[id] = new Simditor(
  156. {
  157. textarea: e,
  158. upload:
  159. {
  160. url: config.upload + '.simditor',
  161. params: {key:key},
  162. fileKey: 'file',
  163. connectionCount: 10,
  164. leaveConfirm: 'Uploading is in progress, are you sure to leave this page?'
  165. },
  166. toolbar : toolbar,
  167. emoji:
  168. {
  169. imagePath: config.lib + 'simditor/plugins/emoji/images/emoji/'
  170. }
  171. });
  172. }
  173. }
  174. //更新页面的提交按钮
  175. function submit()
  176. {
  177. if($(".save-data").length)
  178. {
  179. $(".save-data").unbind('click').bind('click', function()
  180. {
  181. submit_action();
  182. //$(this).unbind('click');
  183. })
  184. }
  185. }
  186. //设置某一个input的值
  187. function set_update(id, value)
  188. {
  189. if($(id).length)
  190. {
  191. $(id).val(value);
  192. }
  193. }
  194. /**
  195. * 批量复制数据
  196. */
  197. function copy_data(e)
  198. {
  199. var html = '<div>';
  200. html += '<div><span>请输入要复制的数量:</span><input type="text" class="form-control form_margin" id="temp_copy_num" /></div>';
  201. html += '</div>';
  202. $('#dever_modal_body').html(html);
  203. $('#dever_modal_title').html('复制数据');
  204. $("#dever_modal_yes").unbind('click').bind('click', function()
  205. {
  206. set_update('#copy_num', $("#temp_copy_num").val());
  207. set_update('#update_where_id', 0);
  208. submit_action();
  209. });
  210. }
  211. //直接提交更新页的数据
  212. function submit_action()
  213. {
  214. $(".form1").submit();
  215. }
  216. //头部菜单
  217. function topMenu(e)
  218. {
  219. var p = e.parent().parent().parent().find('span');
  220. p.html(e.html());
  221. //更新当前的精细权限
  222. var url = config.host + 'top.update_action?json=1';
  223. var id = e.attr('data-id');
  224. $.post(url, {id:id}, function(t)
  225. {
  226. if(location.href.indexOf('where_id') != -1)
  227. {
  228. var href = location.href.split('where_id');
  229. location.href = href[0] + 'where_id=' + t;
  230. }
  231. else
  232. {
  233. location.reload();
  234. }
  235. })
  236. }
  237. //更新页面的批量载入选择
  238. function loadShow()
  239. {
  240. if($(".show_input").length)
  241. {
  242. $(".show_input input").each(function()
  243. {
  244. if($(this).attr('checked'))
  245. {
  246. inputShow($(this), $(this).attr('show_id'));
  247. }
  248. })
  249. }
  250. }
  251. function inputShow(e,n)
  252. {
  253. var item = e.parent().find('input');
  254. $(".show_" + n).hide();
  255. var array = ['input', 'textarea'];
  256. for(var a in array)
  257. {
  258. $(".show_" + n).find(array[a]).removeClass('validate[required]');
  259. }
  260. item.each(function()
  261. {
  262. if($(this).get(0).checked == true)
  263. {
  264. inputShowOne($(this),n);
  265. }
  266. });
  267. }
  268. function inputShowOne(e,n)
  269. {
  270. var value = e.val();
  271. //$(".show_" + n).hide();
  272. //$(".show_" + n + '_' + value).attr('style','color:red').show();
  273. $(".show_" + n + '_' + value).show();
  274. var array = ['input', 'textarea'];
  275. for(var a in array)
  276. {
  277. if($(".show_" + n + '_' + value).length && $(".show_" + n + '_' + value).attr('class').indexOf('show_no') == -1)
  278. {
  279. $(".show_" + n + '_' + value).find(array[a]).each(function()
  280. {
  281. var parent = $(this).parent();
  282. if($(this).attr('class') != 'editor' && parent.find('label').length && parent.find('label').html().indexOf('选填') == -1)
  283. {
  284. $(this).addClass('validate[required]');
  285. }
  286. })
  287. }
  288. }
  289. }
  290. //批量更新
  291. function list_mul(e)
  292. {
  293. var type = parseInt($("#mul_type").val());
  294. if(type != 1 && type != 2)
  295. {
  296. alert('您还没有选择数据更新方式');
  297. return;
  298. }
  299. if(confirm('确定进行此项操作吗?'))
  300. {
  301. //e.html('更新中').unbind('click');
  302. $('#method').val('mul');
  303. $('#function').val('msg');
  304. $('#form1').attr('target', 'f1').submit();
  305. }
  306. }
  307. //搜索
  308. function list_search(e)
  309. {
  310. $('#method').val('search');
  311. $('#function').val('');
  312. $('#form1').attr('target', '').submit();
  313. }
  314. //更新数据
  315. function update(e, id, key, table)
  316. {
  317. var col = e.attr('name').replace('up_col_', '');
  318. var value = e.val();
  319. var url = config.host + 'database.update_action?json=1';
  320. $.post(url, {where_id:id,col:col,value:value,key:key,table:table}, function(t)
  321. {
  322. notice('操作已成功!您的操作已修改当前选项!');
  323. preview();
  324. })
  325. }
  326. function notice(msg)
  327. {
  328. var notice = new PNotify({
  329. title: '提示信息',
  330. text: msg,
  331. buttons: {
  332. closer: false,
  333. sticker: false
  334. }
  335. });
  336. notice.get().click(function() {
  337. notice.remove();
  338. });
  339. }
  340. //模板选择
  341. function template()
  342. {
  343. if(config.template)
  344. {
  345. $('body').attr('class', 'theme-' + config.template);
  346. }
  347. if($(".selector").length)
  348. {
  349. $(".selector").each(function()
  350. {
  351. if($(this).data('check') == 'checked')
  352. {
  353. selector($(this));
  354. }
  355. })
  356. }
  357. }
  358. //选择器
  359. function selector(e)
  360. {
  361. var value = e.data('value');
  362. var name = e.data('name');
  363. $('#'+name+'_value').val(value);
  364. $('.'+name+'_selector').children().css({'border':'1px solid #ccc'});
  365. e.children().css({'border':'1px solid black'});
  366. if(name == 'update_template')
  367. {
  368. $('body').attr('class', 'theme-' + value);
  369. }
  370. }
  371. //根据e的值,来载入其他数据
  372. function loading(e, data)
  373. {
  374. var value = e.val();
  375. if(e.attr('id') && e.attr('id').indexOf('_temp') != -1)
  376. {
  377. var id = e.attr('id').replace('_temp', '');
  378. if($('#' + id).length)
  379. {
  380. var value = $('#' + id).val();
  381. }
  382. }
  383. if(data.element)
  384. {
  385. if(data.url)
  386. {
  387. data.value = value;
  388. $.getJSON(data.url, data, function(t)
  389. {
  390. $('#update_'+data.element+'_value').val(t.data);
  391. });
  392. }
  393. else
  394. {
  395. $('#update_'+data.element+'_value').val(value);
  396. }
  397. }
  398. else if(data.url)
  399. {
  400. data.value = value;
  401. data.where_id = $('#update_where_id').val();
  402. data.table = $('#table').val();
  403. data.key = $('#key').val();
  404. $.getJSON(data.url, data, function(s)
  405. {
  406. t = s.data;
  407. if(t.indexOf('onblur') != -1)
  408. {
  409. eval(t);
  410. }
  411. else
  412. {
  413. var parent = e.parent().parent();
  414. if(t.indexOf('status') == -1)
  415. {
  416. if(data.type == 1)
  417. {
  418. $('.checking_1,.checking_2,.checking_3,.checking_4').each(function()
  419. {
  420. $(this).remove();
  421. });
  422. }
  423. else
  424. {
  425. $('.checking_-1,.checking_3,.checking_4').each(function()
  426. {
  427. $(this).remove();
  428. });
  429. }
  430. parent.after(t);
  431. checkbox();
  432. }
  433. }
  434. });
  435. }
  436. }
  437. //根据e的值,来载入其他数据,先检测是否选中
  438. function checking(name, e, data)
  439. {
  440. var value = [];
  441. $('.' + name).each(function()
  442. {
  443. if($(this).get(0).checked == true)
  444. {
  445. value.push($(this).val());
  446. }
  447. });
  448. if(data.url)
  449. {
  450. data.value = value.join(',');
  451. data.where_id = $('#update_where_id').val();
  452. data.table = $('#table').val();
  453. data.key = $('#key').val();
  454. if(data.check)
  455. {
  456. data.check_value = false;
  457. $(data.check).each(function()
  458. {
  459. if($(this).get(0).checked == true)
  460. {
  461. data.check_value = $(this).val();
  462. }
  463. });
  464. }
  465. $.getJSON(data.url, data, function(s)
  466. {
  467. t = s.data;
  468. var parent = e.parent().parent().parent();
  469. if(t.indexOf('status') == -1)
  470. {
  471. if(data.type == 1)
  472. {
  473. $('.checking_1,.checking_2,.checking_3,.checking_4').each(function()
  474. {
  475. $(this).remove();
  476. });
  477. }
  478. else
  479. {
  480. $('.checking_-1,.checking_3,.checking_4').each(function()
  481. {
  482. $(this).remove();
  483. });
  484. }
  485. parent.after(t);
  486. checkbox();
  487. }
  488. });
  489. }
  490. }
  491. function autocomplete()
  492. {
  493. if($("input[complete]").length)
  494. {
  495. $("input[complete]").each(function()
  496. {
  497. var cache = {};
  498. var self = $(this);
  499. self.autocomplete(
  500. {
  501. minLength: 2,
  502. source: function( request, response )
  503. {
  504. var term = request.term;
  505. if ( term in cache ) {
  506. response( cache[ term ] );
  507. return;
  508. }
  509. $.getJSON(self.attr('complete') + '&callback=?', request, function( data, status, xhr ) {
  510. console.info(data);
  511. cache[ term ] = data;
  512. var state = true;
  513. for(var i in data)
  514. {
  515. if(data[i].id <=0)
  516. {
  517. state = false;
  518. }
  519. }
  520. if(state)
  521. {
  522. response( data );
  523. }
  524. });
  525. },
  526. select: function( event, ui )
  527. {
  528. //log( "Selected: " + ui.item.value + " aka " + ui.item.id );
  529. var value = self.attr('complete_callback');
  530. var id = self.attr('id').replace('_temp', '');
  531. $("#" + id).val(ui.item[value]);
  532. }
  533. });
  534. })
  535. }
  536. }
  537. //后台通用的提示
  538. function msg(value)
  539. {
  540. if(value == 1)
  541. {
  542. location.reload();
  543. return;
  544. }
  545. submit();
  546. var url = '';
  547. if(value.msg != 'reload' && value.status == 2)
  548. {
  549. //showAlert(value.msg);
  550. alert(value.msg);
  551. //location.reload();
  552. return;
  553. }
  554. else if(value.msg == 'reload')
  555. {
  556. if(typeof(config.layout) != "undefined" && $(config.layout).length)
  557. {
  558. $.pjax({url: location.href, container: config.layout});
  559. }
  560. else
  561. {
  562. location.reload();
  563. }
  564. return;
  565. }
  566. else
  567. {
  568. if(value.msg.indexOf('http://') != -1)
  569. {
  570. url = value.msg;
  571. }
  572. else if($("#url").length)
  573. {
  574. url = $("#url").val();
  575. }
  576. else
  577. {
  578. notice(value.msg);
  579. return;
  580. }
  581. if(url)
  582. {
  583. if(typeof(config.layout) != "undefined" && $(config.layout).length)
  584. {
  585. $.pjax({url: url, container: config.layout});
  586. }
  587. else
  588. {
  589. location.href = url;
  590. }
  591. }
  592. else
  593. {
  594. if(typeof(config.layout) != "undefined" && $(config.layout).length)
  595. {
  596. $.pjax({url: location.href, container: config.layout});
  597. }
  598. else
  599. {
  600. location.reload();
  601. }
  602. }
  603. }
  604. return;
  605. }
  606. /**
  607. * 处理多选问题,处理全选按钮
  608. */
  609. function checkbox()
  610. {
  611. if($(".autoload").length)
  612. {
  613. $(".autoload").each(function()
  614. {
  615. if($(this).get(0).checked == true)
  616. {
  617. $(this).removeClass('autoload');
  618. $(this).load();
  619. }
  620. });
  621. }
  622. if($(".autoload_text").length)
  623. {
  624. $(".autoload_text").each(function()
  625. {
  626. if($(this).val())
  627. {
  628. $(this).removeClass('autoload_text');
  629. $(this).load();
  630. }
  631. });
  632. }
  633. var name = 'checkbox-checkall';
  634. var checkbox = $("." + name);
  635. if(checkbox.length)
  636. {
  637. checkbox.click(function()
  638. {
  639. var self = $(this);
  640. $("." + name + "-" + self.val()).each(function()
  641. {
  642. $(this).get(0).checked = self.get(0).checked;
  643. var next = $(this).next();
  644. if($(this).get(0).checked == true)
  645. {
  646. if(next.length)
  647. {
  648. //next.attr('disabled', false);
  649. }
  650. if($("#mul_type").length)
  651. {
  652. $("#mul_type").val(1);
  653. }
  654. }
  655. else
  656. {
  657. if(next.length)
  658. {
  659. //next.attr('disabled', true);
  660. }
  661. if($("#mul_type").length)
  662. {
  663. $("#mul_type").val(0);
  664. }
  665. }
  666. })
  667. });
  668. checkbox.each(function()
  669. {
  670. var self = $(this);
  671. $("." + name + "-" + self.val()).each(function()
  672. {
  673. $(this).click(function()
  674. {
  675. var next = $(this).next();
  676. if($(this).get(0).checked == true)
  677. {
  678. self.get(0).checked = true;
  679. if(self.attr('type') == 'radio')
  680. {
  681. //如果父选项是radio类型,做下限制
  682. //alert(1);
  683. }
  684. if($("#mul_type").length)
  685. {
  686. $("#mul_type").val(1);
  687. }
  688. if(next.length)
  689. {
  690. //next.attr('disabled', false);
  691. }
  692. }
  693. else
  694. {
  695. //子选项取消时,处理一下父级选项
  696. var num = 0;
  697. $("." + name + "-" + self.val()).each(function()
  698. {
  699. if($(this).get(0).checked == true)
  700. {
  701. num = 1;
  702. }
  703. });
  704. if(num == 0)
  705. {
  706. self.get(0).checked = false;
  707. if($("#mul_type").length)
  708. {
  709. $("#mul_type").val(0);
  710. }
  711. }
  712. if(next.length)
  713. {
  714. //next.attr('disabled', true);
  715. }
  716. }
  717. })
  718. if($(this).get(0).checked == true)
  719. {
  720. self.get(0).checked = true;
  721. }
  722. });
  723. })
  724. }
  725. }
  726. //直接编辑
  727. function edit_col()
  728. {
  729. if($(".edit_col").length)
  730. {
  731. $(".edit_col").each(function()
  732. {
  733. $(this).bind('blur', function()
  734. {
  735. var self = $(this);
  736. var col = $(this).attr('data-col');
  737. var key = $(this).attr('data-key');
  738. var table = $(this).attr('data-table');
  739. var url = $(this).attr('data-url');
  740. var id = $(this).attr('data-id');
  741. var html = $(this).attr('data-content');
  742. var value = self.val();
  743. if(!value)
  744. {
  745. alert('不能为空');
  746. return;
  747. }
  748. if($(this).find(".edit-content").length)
  749. {
  750. $(this).find(".edit-content").html(value);
  751. }
  752. else
  753. {
  754. self.attr('data-content', value);
  755. }
  756. //self.html(value);
  757. $.post(url, {key:key,table:table,value:value,where_id:id,col:col}, function(t)
  758. {
  759. notice('修改成功');
  760. //preview();
  761. /*
  762. if(type && type == 'textarea')
  763. {
  764. self.html(t);
  765. }
  766. */
  767. })
  768. });
  769. })
  770. }
  771. }
  772. /**
  773. * 处理双击编辑
  774. */
  775. function edit()
  776. {
  777. edit_col();
  778. if($(".edit").length)
  779. {
  780. $(".edit").each(function()
  781. {
  782. $(this).bind('dblclick', function()
  783. {
  784. var col = $(this).attr('data-col');
  785. var key = $(this).attr('data-key');
  786. var table = $(this).attr('data-table');
  787. var url = $(this).attr('data-url');
  788. var id = $(this).attr('data-id');
  789. var html = $(this).attr('data-content');
  790. var type = $(this).attr('data-type');
  791. if($(this).find(".edit-content").length)
  792. {
  793. html = $(this).find(".edit-content").html();
  794. html = html.replace('<!--', '<');
  795. html = html.replace('-->', '>');
  796. }
  797. if(html.indexOf('input') == -1)
  798. {
  799. if(type && type == 'textarea')
  800. {
  801. $(this).html('<textarea type="text" name="edit" id="edit" rows="10" cols="60">'+html+'</textarea>');
  802. }
  803. else
  804. {
  805. $(this).html('<input type="text" name="edit" id="edit" value="'+html+'">');
  806. }
  807. var self = $(this);
  808. self.find("#edit").blur(function()
  809. {
  810. var value = self.find("#edit").val();
  811. if(!value)
  812. {
  813. alert('不能为空');
  814. return;
  815. }
  816. if($(this).find(".edit-content").length)
  817. {
  818. $(this).find(".edit-content").html(value);
  819. }
  820. else
  821. {
  822. self.attr('data-content', value);
  823. }
  824. self.html(value);
  825. $.post(url, {key:key,table:table,value:value,where_id:id,col:col}, function(t)
  826. {
  827. notice('修改成功');
  828. preview();
  829. /*
  830. if(type && type == 'textarea')
  831. {
  832. self.html(t);
  833. }
  834. */
  835. })
  836. })
  837. }
  838. });
  839. })
  840. }
  841. }
  842. function preview()
  843. {
  844. if($("#preview").length)
  845. {
  846. var time = Date.parse(new Date());
  847. var src = $('#preview').attr('src').split('#');
  848. $('#preview').attr('src', src[0] + '&' + time + '#' + src[1]);
  849. }
  850. }
  851. function del()
  852. {
  853. if($(".oper_6").length)
  854. {
  855. $(".oper_6").each(function()
  856. {
  857. var href = $(this).attr('href');
  858. $(this).attr('href', '#');
  859. $(this).unbind('click');
  860. $(this).bind('click', function()
  861. {
  862. del_act(href);
  863. });
  864. })
  865. }
  866. }
  867. /**
  868. * 处理删除
  869. */
  870. function del_act(href)
  871. {
  872. if(confirm('确定进行此项操作吗?'))
  873. {
  874. $.getJSON(href + '?json=1&callback=?', {}, function(t)
  875. {
  876. msg(t);
  877. })
  878. }
  879. }
  880. /**
  881. * 处理特殊加载的按钮
  882. */
  883. function load(href)
  884. {
  885. if(confirm('确定进行此项操作吗?'))
  886. {
  887. if(href.indexOf('&') == -1)
  888. {
  889. href += '?json=1&callback=?';
  890. }
  891. else
  892. {
  893. href += '&json=1&callback=?';
  894. }
  895. $.getJSON(href, {}, function(t)
  896. {
  897. msg(t);
  898. //location.reload();
  899. })
  900. }
  901. /*
  902. showAlert('确定进行此项操作吗?', function()
  903. {
  904. $("#dever_modal_no").click();
  905. $.getJSON(href + '&json=1', {}, function(t)
  906. {
  907. msg(t);
  908. })
  909. });
  910. */
  911. }
  912. /**
  913. * 处理特殊加载的按钮
  914. */
  915. function jump(href)
  916. {
  917. location.href = href;
  918. }
  919. /**
  920. * 处理change
  921. */
  922. function change()
  923. {
  924. if($(".change").length)
  925. {
  926. $(".change").each(function()
  927. {
  928. var key = $(this).attr('data-child');
  929. /*
  930. $('.' + key).each(function()
  931. {
  932. if($(this).find('select option:selected').val())
  933. {
  934. $(this).show();
  935. $('#set_cate_id_child').get(0).value = $(this).attr('parent');
  936. }
  937. });
  938. */
  939. $(this).change(function()
  940. {
  941. $('.' + key).hide();
  942. var v = $('.' + key + '_' + $(this).val());
  943. var s = v.find('select');
  944. s.change(function()
  945. {
  946. $('.' + key + '_value').val($(this).val());
  947. })
  948. if(v.length)
  949. {
  950. $('.' + key + '_value').val(s.val());
  951. v.show();
  952. }
  953. else
  954. {
  955. $('.' + key + '_value').val(-1);
  956. }
  957. });
  958. if($(this).val() > 0)
  959. {
  960. $(this).change();
  961. }
  962. });
  963. }
  964. }
  965. /**
  966. * 处理图库系统
  967. */
  968. function image()
  969. {
  970. if($(".dever-note").length)
  971. {
  972. $(".dever-note").each(function()
  973. {
  974. var key = $(this).attr('key');
  975. $(this).inlineattachment(
  976. {
  977. uploadUrl: config.upload + '.drag?key='+ key
  978. });
  979. });
  980. }
  981. if($(".image_upload").length)
  982. {
  983. $(".image_upload").each(function(i)
  984. {
  985. var parent = $(this).parent().parent();
  986. //alert(parent.attr('id'));
  987. if(parent.attr('id') && parent.attr('id').indexOf('-child-0') != -1)
  988. {
  989. return;
  990. }
  991. loadUpload(i,$(this),$(this).attr('key'),config.upload + '.start', config.lib + 'upload/');//三个参数说明1:第几个上传框2:文件对象3:图片的基本配置标题
  992. })
  993. }
  994. }
  995. /**
  996. * 修改密码
  997. */
  998. function pass(e)
  999. {
  1000. var html = '<style>.password_edit div{margin:10px;}.password_edit input{width:200px;}</style><div class="password_edit">';
  1001. html += '<div><span>旧密码:</span><input type="password" class="form-control form_margin" id="edit_old_password" /></div>';
  1002. html += '<div><span>新密码:</span><input type="password" class="form-control form_margin" id="edit_new_password" /></div>';
  1003. html += '</div>';
  1004. $('#dever_modal_body').html(html);
  1005. $('#dever_modal_title').html('修改密码');
  1006. $("#dever_modal_yes").unbind('click').bind('click', function()
  1007. {
  1008. var old_password = $("#edit_old_password").val();
  1009. var new_password = $("#edit_new_password").val();
  1010. if(!old_password || !new_password)
  1011. {
  1012. alert('请输入密码');
  1013. return;
  1014. }
  1015. if(old_password == new_password)
  1016. {
  1017. alert('旧密码和新密码相同');
  1018. return;
  1019. }
  1020. $.post(config.host + 'auth.password', {old:old_password,new:new_password}, function(t)
  1021. {
  1022. alert(t);
  1023. $("#dever_modal_no").click();
  1024. })
  1025. })
  1026. }
  1027. var MSG = [];
  1028. /**
  1029. * 打开弹窗
  1030. */
  1031. //function showMsg(title, e, id, func)
  1032. function showMsg(title, e, id, func)
  1033. {
  1034. if(id.indexOf('http://') == -1)
  1035. {
  1036. if($(id).length)
  1037. {
  1038. var html = $(id).html();
  1039. if($(id).html())
  1040. {
  1041. var html = $(id).html();
  1042. MSG[id] = html;
  1043. $(id).html('');
  1044. }
  1045. else
  1046. {
  1047. var html = MSG[id];
  1048. }
  1049. }
  1050. else
  1051. {
  1052. var html = id;
  1053. }
  1054. $('#dever_modal_body').html(html);
  1055. $('#dever_modal_title').html(title);
  1056. if(func)
  1057. {
  1058. $("#dever_modal_yes").unbind('click').bind('click', func);
  1059. }
  1060. }
  1061. else
  1062. {
  1063. if(e)
  1064. {
  1065. data = e.attr('msg-send');
  1066. }
  1067. $.getJSON(id+'?json=1',{data:data},function(t)
  1068. {
  1069. t = t.data;
  1070. $('#dever_modal_body').html(t);
  1071. $('#dever_modal_title').html(title);
  1072. if(func)
  1073. {
  1074. $("#dever_modal_yes").unbind('click').bind('click', func);
  1075. }
  1076. });
  1077. }
  1078. }
  1079. function updateMsg(id)
  1080. {
  1081. $("#"+id).submit();
  1082. }
  1083. function showAlert(msg, func)
  1084. {
  1085. //$("#dever_modal_no").click();
  1086. $("#dever_modal").modal();
  1087. $('#dever_modal_body').html(msg);
  1088. $('#dever_modal_title').html('提醒您');
  1089. if(func)
  1090. {
  1091. $("#dever_modal_yes").unbind('click').bind('click', func);
  1092. }
  1093. else
  1094. {
  1095. $("#dever_modal_yes").unbind('click').bind('click', function(){$("#dever_modal_no").click()});
  1096. }
  1097. }
  1098. /*
  1099. var test =
  1100. {
  1101. refreshPage: false,
  1102. addAjaxFlag: true,
  1103. //添加收藏
  1104. add: function(cfg)
  1105. {
  1106. }
  1107. }
  1108. */
  1109. function showToggle(e)
  1110. {
  1111. var id = e.attr('toggle');
  1112. var child = e.attr('toggle_child');
  1113. var parent = e.parent();
  1114. parent.parent().find('li').removeClass('active');
  1115. parent.addClass('active');
  1116. $(child).fadeOut(100);
  1117. $(id).fadeIn(500);
  1118. loadEditor($(id).find('.editor'));
  1119. }
  1120. function select_mul(level, id, url, name, value, valid, w, num)
  1121. {
  1122. if(level == 0)
  1123. {
  1124. $(id).find('select').remove();
  1125. $(id).find('span').remove();
  1126. return;
  1127. }
  1128. var parent = value.split(',');
  1129. var cur = parent[0];
  1130. parent.remove(cur);
  1131. value = parent.join(',');
  1132. var html = '';
  1133. var old = level;
  1134. if(level != -1)
  1135. {
  1136. if($(id + '_' + level).length)
  1137. {
  1138. level = $(id + '_' + level).val();
  1139. }
  1140. if(level == 0)
  1141. {
  1142. $(id + '_' + old).nextAll('select').remove();
  1143. $(id + '_' + old).next('span').nextAll('span').remove();
  1144. if($('#' + name + '_level_value').length)
  1145. {
  1146. var total = $(id).find('select').length;
  1147. $('#' + name + '_level_value').val(total);
  1148. }
  1149. if(old == -2 && $('#' + name + '_value_value').length)
  1150. {
  1151. $('#' + name + '_value_value').val(level);
  1152. }
  1153. return;
  1154. }
  1155. if(old == -2)
  1156. {
  1157. $(id + '_' + old).nextAll('select').remove();
  1158. $(id + '_' + old).next('span').nextAll('span').remove();
  1159. }
  1160. if($('#' + name + '_value_value').length)
  1161. {
  1162. $('#' + name + '_value_value').val(level);
  1163. }
  1164. }
  1165. var total = $(id).find('select').length;
  1166. if(num > 0 && total >= num)
  1167. {
  1168. return;
  1169. }
  1170. var get = url.replace('{level}', level);
  1171. if(level == -1)
  1172. {
  1173. level = -2;
  1174. }
  1175. if(!$(id + '_' + level).length)
  1176. {
  1177. $.getJSON(get + '&json=1', function(t)
  1178. {
  1179. var check = '';
  1180. if(!t.status)
  1181. {
  1182. html = '<select style="'+w+'display:inline;margin-top:10px;" class="update_value form-control '+valid+' dever-mul-'+name+'_'+level+'" name="'+name+'[]" onchange="select_mul('+level+', \''+id+'\', \''+url+'\', \''+name+'\', \''+value+'\', \''+valid+'\', \''+w+'\', '+num+');">';
  1183. for(a in t.data)
  1184. {
  1185. if(t.data[a].value)
  1186. {
  1187. check = '';
  1188. if(cur == t.data[a].value)
  1189. {
  1190. check = ' selected';
  1191. }
  1192. html += '<option value="'+t.data[a].value+'" '+check+'>'+t.data[a].name+'</option>';
  1193. }
  1194. }
  1195. html += '</select><span>&nbsp;&nbsp;</span>';
  1196. $(id).append(html);
  1197. $(id + '_' + level).change();
  1198. }
  1199. else
  1200. {
  1201. $(id + '_' + old).nextAll('select').remove();
  1202. $(id + '_' + old).next('span').nextAll('span').remove();
  1203. }
  1204. if($('#' + name + '_level_value').length)
  1205. {
  1206. var total = $(id).find('select').length;
  1207. $('#' + name + '_level_value').val(total);
  1208. }
  1209. if($('#' + name + '_up_value').length)
  1210. {
  1211. $('#' + name + '_up_value').val($(id + '_-2').val());
  1212. }
  1213. });
  1214. }
  1215. }
  1216. //处理更新页面的一些功能,写到一起吧
  1217. var dever_update =
  1218. {
  1219. addIndex : 2,
  1220. index : [],
  1221. auto : false,
  1222. save_key : '',
  1223. init : function()
  1224. {
  1225. var self = this;
  1226. // 增加整个更新的表单
  1227. if($(".dever_update_add").length)
  1228. {
  1229. $('.dever_update_add').unbind('click').bind('click', function()
  1230. {
  1231. self.add($(this));
  1232. })
  1233. }
  1234. /* 以后再增加 同时更新另外一个表
  1235. if($(".form-add-content").length)
  1236. {
  1237. var url = config.host + 'auth.password';
  1238. var url = 'http://localhost/dever/manage/?database.update?key=weixin&table=message&menu=weixin&menu_id=39&ajax=1';
  1239. $.get(url, function(t)
  1240. {
  1241. $(".form-add-content").html(t);
  1242. init();
  1243. })
  1244. }
  1245. */
  1246. //增加某一部分表单
  1247. if($(".dever_form_add").length)
  1248. {
  1249. $('.dever_form_add').each(function()
  1250. {
  1251. var key = $.attr('toggle_key');
  1252. if(typeof(self.index[key]) == "undefined")
  1253. {
  1254. self.index[key] = 0;
  1255. }
  1256. $(this).unbind('click').bind('click', function()
  1257. {
  1258. self.append($(this));
  1259. })
  1260. })
  1261. self.del();
  1262. }
  1263. // 开启自动保存
  1264. if($("#struct").length)
  1265. {
  1266. var save = $("#struct").attr('save');
  1267. if(save == 'yes')
  1268. {
  1269. //检测
  1270. self.save_key = location.href + 'test';
  1271. self.check();
  1272. }
  1273. }
  1274. if($('.dever-note').length)
  1275. {
  1276. $('.dever-note').each(function()
  1277. {
  1278. var mditor = new Mditor($(this),{
  1279. fixedHeight:true
  1280. });
  1281. mditor.openPreview();
  1282. })
  1283. }
  1284. },
  1285. save : function()
  1286. {
  1287. //var data = $("#data-1").html();
  1288. var data = [];
  1289. $(".update_value").each(function(i)
  1290. {
  1291. if($(this).attr("update_type") == 'checked')
  1292. {
  1293. data[i] = $(this).get(0).checked;
  1294. }
  1295. else if($(this).attr("update_type") == 'html')
  1296. {
  1297. data[i] = $(this).html();
  1298. }
  1299. else if($(this).attr("update_type") == 'src')
  1300. {
  1301. data[i] = $(this).attr('src');
  1302. }
  1303. else
  1304. {
  1305. data[i] = $(this).val();
  1306. }
  1307. });
  1308. store.set(this.save_key, data.join('|||'));
  1309. //console.info(data);
  1310. },
  1311. recover : function()
  1312. {
  1313. if(confirm('确定恢复上次保存的数据吗?'))
  1314. {
  1315. var data = store.get(this.save_key).split('|||');
  1316. if(data)
  1317. {
  1318. var value = $(".update_value");
  1319. for(var k in data)
  1320. {
  1321. var e = value.eq(k);
  1322. if(e.attr('update_type') == 'checked')
  1323. {
  1324. if(data[k] == 'true')
  1325. {
  1326. e.get(0).checked = true;
  1327. }
  1328. else
  1329. {
  1330. e.get(0).checked = false;
  1331. }
  1332. }
  1333. else if(e.attr('update_type') == 'html')
  1334. {
  1335. e.html(data[k]);
  1336. }
  1337. else if(e.attr('update_type') == 'src')
  1338. {
  1339. e.attr('src', data[k]);
  1340. }
  1341. else
  1342. {
  1343. if(e.attr('id'))
  1344. {
  1345. var id = e.attr('id');
  1346. if(typeof(editors[id]) != "undefined")
  1347. {
  1348. editors[id].setContent(data[k]);
  1349. }
  1350. }
  1351. e.val(data[k]);
  1352. }
  1353. }
  1354. store.set(this.save_key, '');
  1355. this.check();
  1356. }
  1357. }
  1358. },
  1359. check : function()
  1360. {
  1361. var data = store.get(this.save_key);
  1362. var self = this;
  1363. if(data)
  1364. {
  1365. $(".dever_save").unbind('click').bind('click', function()
  1366. {
  1367. self.recover();
  1368. }).show();
  1369. }
  1370. else
  1371. {
  1372. $(".dever_save").hide();
  1373. self.auto = setInterval(function(){self.save()}, 3000);
  1374. }
  1375. },
  1376. del : function()
  1377. {
  1378. var self = this;
  1379. if($(".dever_form_delete").length)
  1380. {
  1381. $('.dever_form_delete').each(function()
  1382. {
  1383. $(this).unbind('click').bind('click', function()
  1384. {
  1385. var parent = $(this).parent();
  1386. var id = parent.attr('id');
  1387. var index = parseInt($('#tab-' + id).attr('toggle_id'));
  1388. var key = $('#tab-' + id).attr('toggle_key');
  1389. if(index <= 1 && self.index[key] <= index)
  1390. {
  1391. }
  1392. else if(index <= 1 && self.index[key] > index)
  1393. {
  1394. index = index+1;
  1395. $("#tab-"+key+"-child-" + index).click();
  1396. }
  1397. else
  1398. {
  1399. index = index-1;
  1400. $("#tab-"+key+"-child-" + index).click();
  1401. };
  1402. $('#tab-' + id).parent().remove();
  1403. parent.remove();
  1404. })
  1405. })
  1406. }
  1407. },
  1408. append : function(e)
  1409. {
  1410. var self = this;
  1411. var key = e.attr('toggle_key');
  1412. var child = '.dever_'+key+'_child';
  1413. if(typeof(self.index[key]) == "undefined")
  1414. {
  1415. self.index[key] = 0;
  1416. }
  1417. if(self.index[key] <= 0)
  1418. {
  1419. self.index[key] = $(child).length;
  1420. }
  1421. if(self.index[key] > 10)
  1422. {
  1423. alert('最多只能增加10条');
  1424. return;
  1425. }
  1426. var p = e.parent();
  1427. var id = key + '-child-' + self.index[key];
  1428. var name = '第' + (self.index[key]) + '条';
  1429. p.before('<li><a href="javascript:;" id="tab-'+id+'" toggle_key="'+key+'" toggle_id="'+self.index[key]+'" toggle_child="'+child+'" toggle="#'+id+'" onclick="showToggle($(this))">'+name+'</a></li>');
  1430. var e = e.parent().parent();
  1431. var n = e.next();
  1432. var p = e.parent();
  1433. var content = n.html();
  1434. content = content.replaceAll('_c_', '_c_' + self.index[key] + '_i_');
  1435. content = '<div id="'+id+'" style="display:none;" class="'+n.attr('class')+' dever_form_add_child">' + content + '</div>';
  1436. p.append(content);
  1437. self.del();
  1438. //$("html,body").animate({scrollTop:$('.dever_form_add_child').eq(this.appendIndex).offset().top},500);
  1439. self.index[key]++;
  1440. image();
  1441. loadShow();
  1442. autocomplete();
  1443. change();
  1444. },
  1445. add : function(e)
  1446. {
  1447. var self = this;
  1448. var p = e.parent();
  1449. var id = 'data-' + this.addIndex;
  1450. var name = '新增数据-' + (this.addIndex-1);
  1451. p.before('<li><a href="#'+id+'" data-toggle="tab">'+name+'</a></li>');
  1452. var content = $("#myTabContent").find('.tab-pane').eq(0).html();
  1453. content = content.replaceAll('update_', 'update_' + this.addIndex + '__');
  1454. content = '<div class="tab-pane fade" id="'+id+'">' + content + '</div>';
  1455. $("#myTabContent").append(content);
  1456. $('#update_' + this.addIndex + '__where_id').val('-1');
  1457. this.addIndex++;
  1458. }
  1459. }
  1460. String.prototype.replaceAll = function(reallyDo, replaceWith, ignoreCase) {
  1461. if (!RegExp.prototype.isPrototypeOf(reallyDo)) {
  1462. return this.replace(new RegExp(reallyDo, (ignoreCase ? "gi": "g")), replaceWith);
  1463. } else {
  1464. return this.replace(reallyDo, replaceWith);
  1465. }
  1466. }
  1467. Array.prototype.remove = function(val) {
  1468. var index = -1;
  1469. for(var i = 0; i < this.length; i++)
  1470. {
  1471. if(this[i] == val)
  1472. {
  1473. index = i;
  1474. }
  1475. }
  1476. if (index > -1) {
  1477. this.splice(index, 1);
  1478. }
  1479. };
  1480. $.fn.pasteEvents = function( delay ) {
  1481. if (delay == undefined) delay = 20;
  1482. return $(this).each(function() {
  1483. var $el = $(this);
  1484. $el.on("paste", function() {
  1485. $el.trigger("prepaste");
  1486. setTimeout(function() { $el.trigger("postpaste"); }, delay);
  1487. });
  1488. });
  1489. };
  1490. $("textarea").on("postpaste", function()
  1491. {
  1492. if($(this).val().indexOf('<') != -1)
  1493. {
  1494. $(this).val(toMarkdown($(this).val()));
  1495. }
  1496. }).pasteEvents();