actions.js 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686
  1. App.Actions.toggle_suspend = function(evt)
  2. {
  3. var elm = $(evt.target);
  4. var ref = elm.parents('.form');
  5. ref.removeClass('form-suspended');
  6. fb.warn(ref);
  7. var ref_checkbox = ref.find('input[name="SUSPEND"]');
  8. ref_checkbox.val() == 'on' ? ref_checkbox.val('off') : ref_checkbox.val('on'); // switch state
  9. if (ref_checkbox.val() == 'on') { // set class on new state
  10. ref.addClass('form-suspended');
  11. fb.warn('SUSP');
  12. }
  13. else {
  14. ref.removeClass('form-suspended');
  15. fb.warn('UNSUSP');
  16. }
  17. }
  18. App.Actions.toggle_custom_select = function(evt)
  19. {
  20. var elm = $(evt.target);
  21. elm = elm.hasClass('complex-select') ? elm : elm.parents('.complex-select');
  22. var ref = elm.find('.complex-select-content');
  23. $('.s-c-highlighted').removeClass('s-c-highlighted');
  24. if (ref.hasClass('hidden')) {
  25. ref.removeClass('hidden');
  26. App.Tmp.focusedComplexSelect = elm;
  27. }
  28. else {
  29. ref.addClass('hidden');
  30. }
  31. }
  32. App.Actions.update_cs_value = function(evt)
  33. {
  34. var elm = $(evt.target);
  35. elm = elm.hasClass('cust-sel-option') ? elm : elm.parents('.cust-sel-option');
  36. var val = elm.find('.c-s-value').val();
  37. $('.complex-select-content').addClass('hidden');
  38. if (App.Tmp[App.Env.world + '_selected_records'] > 0) {
  39. var confirm_message_key = App.Tmp[App.Env.world + '_selected_records'] == 1 ? 1 + ' record' : App.Tmp[App.Env.world + '_selected_records'] + ' records';
  40. var confirmed = confirm('This action will ' + val.toLowerCase() + ' ' + confirm_message_key + '. Do you want to proceede?');
  41. if (confirmed) {
  42. fb.log('mass_' + val);
  43. var func_name = val.toLowerCase();
  44. 'function' == typeof App.Actions['mass_' + func_name] ? App.Actions['mass_' + func_name]() : false;
  45. }
  46. }
  47. }
  48. App.Actions.mass_delete = function()
  49. {
  50. App.Actions.mass_action('massiveDelete');
  51. }
  52. App.Actions.mass_suspend = function()
  53. {
  54. App.Actions.mass_action('massiveSuspend');
  55. }
  56. App.Actions.mass_unsuspend = function()
  57. {
  58. App.Actions.mass_action('massiveUnsuspend');
  59. }
  60. App.Actions.mass_action = function(method_name)
  61. {
  62. var rows = $('.checked-row');
  63. if (rows.length > 0) {
  64. var acc = [];
  65. rows.each(function(i, o) {
  66. acc[acc.length++] = App.Helpers.evalJSON($(o).find('.source').val());
  67. });
  68. App.Ajax.request(App.Env.world+'.'+method_name, {'entities': App.Helpers.toJSON(acc)}, function() {
  69. App.Pages.prepareHTML();
  70. });
  71. }
  72. }
  73. App.Actions.do_change_password = function()
  74. {
  75. var params = {
  76. email: $('#change-email').val(),
  77. captcha: $('#captcha').val()
  78. }
  79. App.Ajax.request('MAIN.requestPassword', params, function(reply){
  80. $('#captcha-img').attr('src', App.Helpers.generateUrl('captcha.php?')+Math.floor(Math.random() * 9999));
  81. $('#captcha').val('');
  82. if (reply.result) {
  83. $('#change-psw-error').html('');
  84. $('#change-psw-error').addClass('hidden');
  85. $('#change-psw-success').html('Reset link was sent to email box provided by you.');
  86. $('#change-psw-success').removeClass('hidden');
  87. $('.form-row').remove();
  88. }
  89. else {
  90. $('#change-psw-error').html(reply.message);
  91. $('#change-psw-error').removeClass('hidden');
  92. }
  93. });
  94. }
  95. App.Actions.back_to_login = function()
  96. {
  97. $('body').addClass('page-auth');
  98. var tpl = App.Templates.get('login', 'popup');
  99. tpl.set(':LOGO_URL', App.Helpers.generateUrl('images/vesta-logo-2011-12-14.png'));
  100. tpl.set(':YEAR', new Date().getFullYear());
  101. tpl.set(':EMAIL_REAL', App.Settings.VestaAbout.company_email);
  102. tpl.set(':EMAIL', App.Settings.VestaAbout.company_email);
  103. tpl.set(':PRODUCT_NAME', App.Settings.VestaAbout.company_name);
  104. tpl.set(':VERSION', App.Settings.VestaAbout.version_name + ' ' + App.Settings.VestaAbout.version);
  105. $('body').prepend(tpl.finalize());
  106. $('#change-psw-block').remove();
  107. $('.remember-me').checkBox();
  108. }
  109. App.Actions.change_password = function(evt)
  110. {
  111. evt.preventDefault();
  112. if ($('#change-psw-block').length > 0) {
  113. return $('#change-psw-block').show();
  114. }
  115. var tpl = App.Templates.get('change_psw', 'popup');
  116. tpl.set(':LOGO_URL', App.Helpers.generateUrl('images/vesta-logo-2011-12-14.png'));
  117. tpl.set(':YEAR', new Date().getFullYear());
  118. tpl.set(':CAPTCHA_URL', App.Helpers.generateUrl('captcha.php?')+Math.floor(Math.random() * 9999));
  119. tpl.set(':CAPTCHA_URL_2', App.Helpers.generateUrl('captcha.php'));
  120. tpl.set(':EMAIL_REAL', App.Settings.VestaAbout.company_email);
  121. tpl.set(':EMAIL', App.Settings.VestaAbout.company_email);
  122. tpl.set(':PRODUCT_NAME', App.Settings.VestaAbout.company_name);
  123. tpl.set(':VERSION', App.Settings.VestaAbout.version_name + ' ' + App.Settings.VestaAbout.version);
  124. $('#auth-block').remove();
  125. $('body').prepend(tpl.finalize());
  126. $('#change-psw-error').html('');
  127. $('#change-psw-error').addClass('hidden');
  128. }
  129. App.Actions.profile_exit = function(evt)
  130. {
  131. evt.preventDefault();
  132. App.Ajax.request('MAIN.logoff', {}, function(reply) {
  133. location.href = '';
  134. });
  135. }
  136. // show auth form
  137. App.Actions.authorize = function()
  138. {
  139. $('#change-psw-block').remove();
  140. if ($('#auth-block').length > 0) {
  141. return;
  142. }
  143. $('#page').addClass('hidden');
  144. $('body').addClass('page-auth');
  145. var tpl = App.Templates.get('login', 'popup');
  146. tpl.set(':LOGO_URL', App.Helpers.generateUrl('images/vesta-logo-2011-12-14.png'));
  147. tpl.set(':YEAR', new Date().getFullYear());
  148. tpl.set(':EMAIL_REAL', App.Settings.VestaAbout.company_email);
  149. tpl.set(':EMAIL', App.Settings.VestaAbout.company_email);
  150. tpl.set(':PRODUCT_NAME', App.Settings.VestaAbout.company_name);
  151. tpl.set(':VERSION', App.Settings.VestaAbout.version_name + ' ' + App.Settings.VestaAbout.version);
  152. $('body').prepend(tpl.finalize());
  153. $(document).ready(function(){
  154. $('.remember-me').checkBox();
  155. });
  156. }
  157. /**
  158. * Embeds new item form
  159. * if exits custom method (App.Pages[ENVIRONMENT_NAME].newForm)
  160. * custom method will be executes instead of default one
  161. */
  162. App.Actions.new_entry = function() {
  163. if ('undefined' != typeof App.Pages[App.Env.world].new_entry) {fb.log(1);
  164. App.Pages[App.Env.world].new_entry();
  165. } else {
  166. var form_id = App.Constants[App.Env.world + '_FORM_ID'];
  167. $('#'+form_id).remove();
  168. var build_method = App.Env.getWorldName() + '_form';
  169. var tpl = App.HTML.Build[build_method]({}, form_id);
  170. var box = $('<div>').html(tpl);
  171. $(box).find('.suspended').addClass('hidden');
  172. App.Ref.CONTENT.prepend($(box).html());
  173. App.Helpers.updateScreen();
  174. }
  175. }
  176. // execute authorisation
  177. App.Actions.do_authorize = function()
  178. {
  179. $('#auth-error').text('');
  180. $('#auth-form-content').hide();
  181. App.Ajax.request('MAIN.signin', {'login':$('#authorize-login').val(), 'password':$('#authorize-password').val()}, function(reply)
  182. {
  183. if (reply.result == true) {
  184. location.href = '';
  185. }
  186. else {
  187. $('#auth-error').text(reply.data.error_msg);
  188. $('#auth-form-content').show();
  189. $('#auth-error').removeClass('hidden');
  190. }
  191. });
  192. }
  193. App.Actions.delete_entry = function(evt)
  194. {
  195. var confirmed = confirm(App.i18n.getMessage('confirm'));
  196. if (!confirmed) {
  197. return;
  198. }
  199. var elm = $(evt.target);
  200. var elm = elm.hasClass('form') ? elm : elm.parents('.form');
  201. App.Model.remove(App.Env.world, elm);
  202. }
  203. App.Actions.show_subform = function(evt)
  204. {
  205. var elm = $(evt.target);
  206. var ref = elm.hasClass('row') ? elm : elm.parents('.row');
  207. var ref_subform = ref.next('.subform');
  208. if (ref_subform.length > 0) {
  209. ref_subform.remove();
  210. }
  211. if ('undefined' != typeof App.Pages[App.Env.world].showSubform) {
  212. App.Pages[App.Env.world].showSubform(ref);
  213. }
  214. // TODO: probably general way to embed subforms
  215. }
  216. App.Actions.view_template_settings = function(evt)
  217. {
  218. var elm = $(evt.target);
  219. var ref = elm.hasClass('tpl-item') ? elm : elm.prev('.tpl-item');
  220. var tpl_name = $(ref).val() || $(ref).text();
  221. App.Helpers.openInnerPopup(elm, App.Env.initialParams.WEB_DOMAIN.TPL[tpl_name].DESCR || tpl_name, 'Template Settings');
  222. }
  223. App.Actions.view_dns_template_settings = function(evt)
  224. {
  225. var elm = $(evt.target);
  226. var ref = elm.hasClass('tpl-item') ? elm : elm.prev('.tpl-item');
  227. var tpl_name = $(ref).val() || $(ref).text();
  228. App.Helpers.openInnerPopup(elm, App.Env.initialParams.DNS.TPL[tpl_name].DESCR || tpl_name, 'Template Settings');
  229. }
  230. /*App.Actions.view_dns_template_settings = function(evt)
  231. {
  232. var elm = $(evt.target);
  233. var ref = elm.prev('.tpl-item');
  234. var tpl_name = $(ref).val() || $(ref).text();
  235. App.Helpers.openInnerPopup(elm, App.Env.initialParams.DNS.TPL[tpl_name].DESCR || tpl_name, '');
  236. }*/
  237. App.Actions.add_subrecord_dns = function(evt)
  238. {
  239. var elm = $(evt.target);
  240. var ref = elm.hasClass('subform') ? elm : elm.parents('.subform');
  241. if (ref.length > 0) {
  242. var tpl = App.HTML.Build.dns_subrecord({});
  243. ref.find('.add-box').after(tpl.finalize());
  244. App.Helpers.updateScreen();
  245. }
  246. }
  247. // do_action_save
  248. App.Actions.save_form = function(evt) {
  249. var elm = $(evt.target);
  250. elm = elm.parents('.b-new-entry');
  251. var elm_id = App.Env.world + '_FORM_ID';
  252. var build_method = App.Env.getWorldName() + '_entry';
  253. if (!App.Validate.form(App.Env.world, elm)) {
  254. return App.Validate.displayFormErrors(App.Env.world, elm);
  255. }
  256. if (elm.attr('id') == App.Constants[elm_id]) { // NEW ITEM
  257. if ($('.b-new-entry').length > 1) {
  258. var confirmed = confirm('You were editing other entries and those changes will be discarded. Click cancel if you want to save updated entries before adding new one.');
  259. if (!confirmed) {
  260. return true;
  261. }
  262. else {
  263. var values = App.Helpers.getFormValues(elm);
  264. if(App.Validate.form(values, $('#'+elm_id))) {
  265. App.Model.add(values, source);
  266. var form_id = App.Constants[App.Env.world + '_FORM_ID'];
  267. $('#'+form_id).remove();
  268. }
  269. }
  270. }
  271. }
  272. else { // OLD ITEM, UPDATING IT
  273. var source = $(elm).find('.source').val();
  274. var values = App.Helpers.getFormValues(elm);
  275. if(App.Validate.form(values, $('#'+elm_id))) {
  276. App.Model.update(values, source, elm);
  277. }
  278. }
  279. }
  280. // do_action_edit
  281. App.Actions.edit = function(evt)
  282. {
  283. if ('undefined' != typeof App.Pages[App.Env.world].edit) {
  284. App.Pages[App.Env.world].edit(evt);
  285. }
  286. else {
  287. var elm = $(evt.target);
  288. elm = elm.hasClass('row') ? elm : elm.parents('.row');
  289. var options = elm.find('.source').val();
  290. var build_method = App.Env.getWorldName() + '_form';
  291. var tpl = App.HTML.Build[build_method](options);
  292. elm.replaceWith(tpl);
  293. App.Helpers.disableNotEditable();
  294. App.Helpers.updateScreen();
  295. }
  296. }
  297. // do_cancel_form
  298. App.Actions.cancel_form = function(evt, params) {
  299. var elm = $(evt.target);
  300. elm = elm.parents('.b-new-entry');
  301. var form_id = App.Constants[App.Env.world + '_FORM_ID'];
  302. if (elm.attr('id') == form_id) {
  303. $('#' + form_id).remove();
  304. }
  305. else {
  306. fb.warn(elm.find('.source').val());
  307. var options = App.Helpers.evalJSON(elm.find('.source').val());
  308. var entry_name = App.Env.world.toLowerCase() + '_entry';
  309. var tpl = App.HTML.Build[entry_name](options);
  310. elm.replaceWith(tpl);
  311. }
  312. App.Helpers.updateScreen();
  313. }
  314. App.Actions.suspend = function(evt)
  315. {
  316. var confirmed = confirm('Suspend?');
  317. if (!confirmed) {
  318. return ;
  319. }
  320. var elm = $(evt.target);
  321. var row = elm.parents('.row');
  322. var options = row.find('.source').val();
  323. App.Ajax.request(App.Env.world+'.suspend', {spell: options}, function(reply) {
  324. if (reply.result) {
  325. App.Pages.prepareHTML();
  326. App.Helpers.updateScreen();
  327. }
  328. else {
  329. return App.Helpers.alert('Failed to suspend');
  330. }
  331. });
  332. }
  333. App.Actions.unsuspend = function(evt)
  334. {
  335. var confirmed = confirm('Unsuspend?');
  336. if (!confirmed) {
  337. return ;
  338. }
  339. var elm = $(evt.target);
  340. var row = elm.parents('.row');
  341. var options = row.find('.source').val();
  342. App.Ajax.request(App.Env.world+'.unsuspend', {spell: options}, function(reply) {
  343. if (reply.result) {
  344. App.Pages.prepareHTML();
  345. App.Helpers.updateScreen();
  346. }
  347. else {
  348. return App.Helpers.alert('Failed to suspend');
  349. }
  350. });
  351. }
  352. // do_action_form_help
  353. App.Actions.showFormHelp = function(evt) {
  354. var tpl_name = App.Env.world + '_form';
  355. var tpl = App.Templates.get(tpl_name, 'help');
  356. App.View.popup(tpl.finalize());
  357. }
  358. // do_action_entry_help
  359. App.Actions.showEntryHelp = function(evt) {
  360. var tpl_name = App.Env.world + '_entry';
  361. var tpl = App.Templates.get(tpl_name, 'help');
  362. App.View.popup(tpl.finalize());
  363. }
  364. App.Actions.embedSubform = function(evt) {
  365. var tpl = App.Templates.get('subform', App.Env.getWorldName());
  366. }
  367. App.Actions.close_popup = function()
  368. {
  369. App.View.closePopup();
  370. }
  371. App.Actions.close_subform = function(evt, elm)
  372. {
  373. var elm = elm || $(evt.target);
  374. var ref = elm.hasClass('subform') ? elm : elm.parents('.subform');
  375. var parent_ref = ref.prev('.row');
  376. if (parent_ref.length > 0) {
  377. parent_ref.find('.show-records').removeClass('hidden');
  378. }
  379. ref.remove();
  380. }
  381. App.Actions.save_dns_subrecords = function(evt)
  382. {
  383. var elm = $(evt.target);
  384. var ref = elm.hasClass('subform') ? elm : elm.parents('.subform');
  385. var data = [];
  386. $('.subform').find('.subrow').each(function(i, o)
  387. {
  388. data[data.length++] = App.Helpers.getFormValues(o);
  389. });
  390. var parent_row = $(elm).parents('.subform').prev('.dns-details-row');
  391. var dns_json = $(parent_row).find('.source').val();
  392. App.Ajax.request('DNS.changeRecords', {spell: App.Helpers.toJSON(data), dns: dns_json}, function(reply)
  393. {
  394. if (reply.result) {
  395. var emphasize = $('.show-records', parent_row);
  396. App.Actions.close_subform(null, elm);
  397. $(emphasize).effect("highlight", {'color':'#B0D635'}, 3000);
  398. }
  399. else {
  400. App.Helpers.alert('Changes were not applied');
  401. }
  402. });
  403. }
  404. App.Actions.delete_subentry = function(evt)
  405. {
  406. var sure = confirm(App.i18n.getMessage('confirm'));
  407. if (!sure) {
  408. return;
  409. }
  410. var elm = $(evt.target);
  411. var ref = elm.hasClass('subrow') ? elm : elm.parents('.subrow');
  412. $(ref).remove();
  413. }
  414. App.Actions.generate_pass = function(evt)
  415. {
  416. var elm = $(evt.target);
  417. var ref = elm.parents('.form-row');
  418. $('.password', ref).val(App.Helpers.generatePassword());
  419. }
  420. App.Actions.toggle_section = function(evt)
  421. {
  422. var elm = $(evt.target);
  423. var ref = $(elm).parents('.form-options-group:first');
  424. fb.log(ref);
  425. if ($('.sub_section:first', ref).hasClass('hidden')) {
  426. $('.sub_section:first', ref).removeClass('hidden');
  427. $('.group-header:first', ref).removeClass('collapsed').addClass('expanded');
  428. }
  429. else {
  430. $('.sub_section:first', ref).addClass('hidden');
  431. $('.group-header:first', ref).removeClass('expanded').addClass('collapsed');
  432. }
  433. }
  434. App.Actions.close_inner_popup = function(evt)
  435. {
  436. App.Helpers.closeInnerPopup();
  437. }
  438. App.Actions.open_inner_popup = function(evt)
  439. {
  440. var elm = $(evt.target);
  441. App.Helpers.openInnerPopup(elm, $(elm).next('.inner-popup-html').val(), 'Details');
  442. }
  443. App.Actions.add_db_user = function(evt)
  444. {
  445. alert('TODO');
  446. }
  447. App.Actions.backup_db = function(evt)
  448. {
  449. alert('TODO');
  450. }
  451. App.Actions.add_form_ns = function(evt)
  452. {
  453. var elm = $(evt.target);
  454. form = elm.parents('.form:first');
  455. var total_nses = $(form).find('.ns-entry').length;
  456. if (total_nses == App.Settings.NS_MAX) {
  457. return App.Helpers.alert('Maximum number of NS cannot be more than ' + App.Settings.NS_MAX);
  458. }
  459. var tpl = App.Templates.get('NS_INPUT', 'user');
  460. tpl.set(':NAME', '');
  461. tpl.set(':NS_LABEL', 'NS');
  462. var ref = $(elm).hasClass('form-row') ? elm : $(elm).parents('.form-row');
  463. $(ref).before(tpl.finalize());
  464. if ((total_nses + 1) == App.Settings.NS_MAX ) { // added last NS
  465. $('.additional-ns-add', form).addClass('hidden');
  466. }
  467. $(form).find('.ns-entry').each(function(i, o)
  468. {
  469. $(o).find('label').text('NS #' + (i + 1));
  470. $(o).find('input').attr('name', 'NS' + (i + 1));
  471. });
  472. }
  473. App.Actions.delete_ns = function(evt)
  474. {
  475. var sure = confirm(App.i18n.getMessage('confirm'));
  476. if (!sure) {
  477. return;
  478. }
  479. var elm = $(evt.target);
  480. form = elm.parents('.form:first');
  481. var total_nses = $(form).find('.ns-entry').length;
  482. if (total_nses == App.Settings.NS_MIN) {
  483. return App.Helpers.alert('Minimum number of NS is ' + App.Settings.NS_MIN);
  484. }
  485. var form = elm.parents('.form:first');
  486. $(elm).parents('.form:first').find('.additional-ns-add').removeClass('hidden');
  487. $(elm).parents('.ns-entry').remove();
  488. $(form).find('.ns-entry').each(function(i, o)
  489. {
  490. $(o).find('label').text('NS #' + (i + 1));
  491. $(o).find('input').attr('name', 'NS' + (i + 1));
  492. });
  493. }
  494. App.Actions.view_full_ns_list = function(evt)
  495. {
  496. var elm = $(evt.target);
  497. App.Helpers.openInnerPopup(elm, $(elm).parents('.prop-box').find('.ns-full-list:first').html(), 'NS list');
  498. }
  499. App.Actions.view_template_info = function(evt)
  500. {
  501. var elm = $(evt.target);
  502. ref = elm.hasClass('row') ? elm : elm.parents('.row');
  503. var options = ref.find('.source').val();
  504. App.Ajax.request('DNS.getTemplateInfo', {spell: options}, function(reply) {
  505. if (reply.result) {
  506. var html = '';
  507. $.each(reply.data, function(key) {
  508. html += '<li><strong>'+key+':</strong> '+reply.data[key]+'</li>';
  509. });
  510. App.Helpers.openInnerPopup(elm, '<ul>'+html+'</ul>', 'Template Info');
  511. }
  512. });
  513. }
  514. App.Actions.toggle_stats_block = function(evt)
  515. {
  516. var elm = $(evt.target);
  517. if (!!elm.attr('checked')) {
  518. elm.parents('.stats-settings').find('.stats-block').removeClass('hidden');
  519. }
  520. else {
  521. elm.parents('.stats-settings').find('.stats-block').addClass('hidden');
  522. }
  523. }
  524. App.Actions.exec_v_console = function(evt)
  525. {
  526. evt.preventDefault();
  527. App.Helpers.openInnerPopup(evt.target, 'This functionality will be available in next releases', 'Details');
  528. }
  529. App.Actions.view_profile_settings = function(evt)
  530. {
  531. evt.preventDefault();
  532. App.Helpers.openInnerPopup(evt.target, 'This functionality will be available in next releases', 'Details');
  533. }
  534. App.Actions.select_all = function(evt)
  535. {
  536. $('.row').addClass('checked-row')
  537. }
  538. App.Actions.deselect_all = function(evt)
  539. {
  540. $('.row').removeClass('checked-row')
  541. }
  542. App.Actions.delete_selected = function(evt)
  543. {
  544. var selected = $('.checked-row');
  545. if (selected.length == 0) {
  546. return App.Helpers.alert('No entry selected. Please select at least one.');
  547. }
  548. var confirmed = confirm('You are about to delete ' + selected.length + ' entrie(s). Are you sure?');
  549. if (!confirmed) {
  550. return;
  551. }
  552. }
  553. App.Actions.loadStats = function(type)
  554. {
  555. var period = '';
  556. switch (type) {
  557. case 'month':
  558. period = 'monthly'
  559. break;
  560. case 'today':
  561. period = 'daily'
  562. break;
  563. case 'week':
  564. period = 'weekly'
  565. break;
  566. case 'year':
  567. period = 'yearly'
  568. break;
  569. default:
  570. period = 'daily';
  571. break;
  572. }
  573. $('#actions-toolbar .sub-active').removeClass('sub-active');
  574. $('#actions-toolbar .'+type).addClass('sub-active');
  575. App.Ajax.request('STATS.getList', {period: period}, function(reply) {
  576. if (!reply.result) {
  577. App.Herlers.alert('Stats list failed to load. Please try again a bit later');
  578. }
  579. App.Ref.CONTENT.html(App.HTML.Build.stats_list(reply.data));
  580. App.Helpers.updateScreen();
  581. });
  582. }
  583. App.Actions.toggle_batch_selector = function()
  584. {
  585. if (App.Tmp[App.Env.world + '_selected_records'] == 0) { // Select all
  586. var rows = $('.row');
  587. rows.each(function(i, row) {
  588. $(row).addClass('checked-row');
  589. });
  590. App.Tmp[App.Env.world + '_selected_records'] = rows.length;
  591. $('#batch-processor .selector-title').html(rows.length + ' SELECTED');
  592. }
  593. else {
  594. var rows = $('.row');
  595. rows.each(function(i, row) {
  596. $(row).removeClass('checked-row');
  597. });
  598. App.Tmp[App.Env.world + '_selected_records'] = 0;
  599. $('#batch-processor .selector-title').html('NONE');
  600. }
  601. }