bookmark-settings.js 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545
  1. /* BOOKMARK JS FILE */
  2. // FUNCTIONS
  3. $(document).on('click', '#BOOKMARK-settings-button', function() {
  4. ajaxloader(".content-wrap","in");
  5. organizrAPI2('GET','api/v2/plugins/bookmark/settings').success(function(data) {
  6. var response = data.response;
  7. $('#BOOKMARK-settings-items').html(buildFormGroup(response.data));
  8. }).fail(function(xhr) {
  9. console.error("Organizr Function: API Connection Failed");
  10. });
  11. ajaxloader();
  12. });
  13. bookmarkLaunch();
  14. $('body').arrive('#settings-main-tab-editor .nav-tabs', {onceOnly: true}, function() {
  15. bookmarkLaunch();
  16. });
  17. function bookmarkLaunch(){
  18. if(activeInfo.plugins["BOOKMARK-enabled"] == true){
  19. bookmarkTabsLaunch();
  20. bookmarkCategoriesLaunch();
  21. pageLoad();
  22. }
  23. }
  24. // TAB MANAGEMENT
  25. function bookmarkTabsLaunch(){
  26. var menuList = `<li onclick="changeSettingsMenu('Settings::Tab Editor::Bookmark Tabs');loadSettingsPage2('api/v2/plugins/bookmark/settings_tab_editor_bookmark_tabs','#settings-tab-editor-tabs','Tab Editor');" role="presentation"><a id="settings-tab-editor-tabs-anchor" href="#settings-tab-editor-tabs" aria-controls="home" role="tab" data-toggle="tab" aria-expanded="true"><span class="visible-xs"><i class="ti-layout-tab-v"></i></span><span class="hidden-xs" lang="en">Bookmark Tabs</span></a></li>`;
  27. $('#settings-main-tab-editor .nav-tabs').append(menuList);
  28. }
  29. function buildBookmarkTabEditor(){
  30. organizrAPI2('GET','api/v2/plugins/bookmark/tabs').success(function(data) {
  31. try {
  32. var response = data.response;
  33. }catch(e) {
  34. organizrCatchError(e,data);
  35. }
  36. $('#bookmarkTabEditorTable').html(buildBookmarkTabEditorItem(response.data));
  37. }).fail(function(xhr) {
  38. OrganizrApiError(xhr);
  39. });
  40. }
  41. function buildBookmarkTabEditorItem(array){
  42. var tabList = '';
  43. $.each(array.tabs, function(i,v) {
  44. tabList += `
  45. <tr class="bookmarkTabEditor" data-order="`+v.order+`" data-original-order="`+v.order+`" data-id="`+v.id+`" data-group-id="`+v.group_id+`" data-category-id="`+v.category_id+`" data-name="`+v.name+`" data-url="`+v.url+`" data-image="`+v.image+`">
  46. <input type="hidden" class="form-control" name="tab[`+v.id+`].id" value="`+v.id+`">
  47. <input type="hidden" class="form-control order" name="tab[`+v.id+`].order" value="`+v.order+`">
  48. <input type="hidden" class="form-control" name="tab[`+v.id+`].originalOrder" value="`+v.order+`">
  49. <td style="text-align:center" class="text-center el-element-overlay">
  50. <div class="el-card-item p-0">
  51. <div class="el-card-avatar el-overlay-1 m-0">
  52. <div class="bookmarkTabEditorIcon">`+iconPrefix(v.image)+`</div>
  53. <div class="el-overlay bg-org">
  54. <ul class="el-info">
  55. <i class="fa fa-bars"></i>
  56. </ul>
  57. </div>
  58. </div>
  59. </div>
  60. </td>
  61. <td><span class="tooltip-info" data-toggle="tooltip" data-placement="right" title="" data-original-title="`+v.url+`">`+v.name+`</span></td>
  62. `+buildBookmarkTabCategorySelect(array.categories,v.id, v.category_id)+`
  63. `+buildBookmarkTabGroupSelect(array.groups,v.id, v.group_id)+`
  64. <td style="text-align:center"><input type="checkbox" class="js-switch bookmarkEnabledSwitch" data-size="small" data-color="#99d683" data-secondary-color="#f96262" name="tab[`+v.id+`].enabled" value="true" `+tof(v.enabled,'c')+`/><input type="hidden" class="form-control" name="tab[`+v.id+`].enabled" value="false"></td>
  65. <td style="text-align:center"><button type="button" class="btn btn-info btn-outline btn-circle btn-lg m-r-5 editBookmarkTabButton popup-with-form" onclick="editBookmarkTabForm('`+v.id+`')" href="#edit-bookmark-tab-form" data-effect="mfp-3d-unfold"><i class="ti-pencil-alt"></i></button></td>
  66. <td style="text-align:center"><button type="button" class="btn btn-danger btn-outline btn-circle btn-lg m-r-5 bookmarkDeleteTab"><i class="ti-trash"></i></button></td>
  67. </tr>
  68. `;
  69. });
  70. return tabList;
  71. }
  72. function buildBookmarkTabGroupSelect(array, tabID, groupID){
  73. var groupSelect = '';
  74. var selected = '';
  75. $.each(array, function(i,v) {
  76. selected = '';
  77. if(v.group_id == groupID){
  78. selected = 'selected';
  79. }
  80. groupSelect += '<option '+selected+' value="'+v.group_id+'">'+v.group+'</option>';
  81. });
  82. return '<td><select name="tab['+tabID+'].group_id" class="form-control bookmarkTabGroupSelect">'+groupSelect+'</select></td>';
  83. }
  84. function buildBookmarkTabCategorySelect(array,tabID, categoryID){
  85. var categorySelect = '';
  86. var selected = '';
  87. $.each(array, function(i,v) {
  88. selected = '';
  89. if(v.category_id == categoryID){
  90. selected = 'selected';
  91. }
  92. categorySelect += '<option '+selected+' value="'+v.category_id+'">'+v.category+'</option>';
  93. });
  94. return '<td><select name="tab['+tabID+'].category_id" class="form-control bookmarkTabCategorySelect">'+categorySelect+'</select></td>';
  95. }
  96. function editBookmarkTabForm(id){
  97. organizrAPI2('GET','api/v2/plugins/bookmark/tabs/' + id,true).success(function(data) {
  98. try {
  99. let response = data.response;
  100. console.log(response);
  101. $('#edit-bookmark-tab-form [name=name]').val(response.data.name);
  102. $('#originalBookmarkTabName').html(response.data.name);
  103. $('#edit-bookmark-tab-form [name=url]').val(response.data.url);
  104. $('#edit-bookmark-tab-form [name=image]').val(response.data.image);
  105. $('#edit-bookmark-tab-form [name=background_color]').val(response.data.background_color);
  106. $('#edit-bookmark-tab-form [name=text_color]').val(response.data.text_color);
  107. $('#edit-bookmark-tab-form [name=id]').val(response.data.id);
  108. if( response.data.url.indexOf('/?v') > 0){
  109. $('#edit-bookmark-tab-form [name=url]').prop('disabled', 'true');
  110. }else{
  111. $('#edit-bookmark-tab-form [name=url]').prop('disabled', null);
  112. }
  113. }catch(e) {
  114. organizrCatchError(e,data);
  115. }
  116. }).fail(function(xhr) {
  117. OrganizrApiError(xhr, 'Tab Error');
  118. });
  119. }
  120. // CHANGE ENABLED TAB
  121. $(document).on("change", ".bookmarkEnabledSwitch", function () {
  122. var id = $(this).parent().parent().attr("data-id");
  123. var enabled = $(this).prop("checked") ? 1 : 0;
  124. var callbacks = $.Callbacks();
  125. organizrAPI2('PUT','api/v2/plugins/bookmark/tabs/' + id, {"enabled":enabled},true).success(function(data) {
  126. try {
  127. var response = data.response;
  128. }catch(e) {
  129. organizrCatchError(e,data);
  130. }
  131. message('Tab Enable Updated',response.message,activeInfo.settings.notifications.position,"#FFF","success","5000");
  132. if(callbacks){ callbacks.fire(); }
  133. }).fail(function(xhr) {
  134. OrganizrApiError(xhr, 'Tab Enable Error');
  135. });
  136. });
  137. // CHANGE TAB GROUP
  138. $(document).on("change", ".bookmarkTabGroupSelect", function (event) {
  139. var id = $(this).parent().parent().attr("data-id");
  140. var groupID = $(this).find("option:selected").val();
  141. var callbacks = $.Callbacks();
  142. organizrAPI2('PUT','api/v2/plugins/bookmark/tabs/' + id, {"group_id":groupID},true).success(function(data) {
  143. try {
  144. var response = data.response;
  145. }catch(e) {
  146. organizrCatchError(e,data);
  147. }
  148. message('Tab Group Updated',response.message,activeInfo.settings.notifications.position,"#FFF","success","5000");
  149. if(callbacks){ callbacks.fire(); }
  150. }).fail(function(xhr) {
  151. OrganizrApiError(xhr, 'Tab Group Error');
  152. });
  153. });
  154. // CHANGE TAB CATEGORY
  155. $(document).on("change", ".bookmarkTabCategorySelect", function () {
  156. var id = $(this).parent().parent().attr("data-id");
  157. var categoryID = $(this).find("option:selected").val();
  158. console.log("CategoryID: " + categoryID);
  159. var callbacks = $.Callbacks();
  160. organizrAPI2('PUT','api/v2/plugins/bookmark/tabs/' + id, {"category_id":categoryID},true).success(function(data) {
  161. try {
  162. var response = data.response;
  163. }catch(e) {
  164. organizrCatchError(e,data);
  165. }
  166. message('Tab Category Updated',response.message,activeInfo.settings.notifications.position,"#FFF","success","5000");
  167. if(callbacks){ callbacks.fire(); }
  168. }).fail(function(xhr) {
  169. OrganizrApiError(xhr, 'Tab Category Error');
  170. });
  171. });
  172. //DELETE TAB
  173. $(document).on("click", ".bookmarkDeleteTab", function () {
  174. var tab = $(this);
  175. swal({
  176. title: window.lang.translate('Delete ') + tab.parent().parent().attr("data-name") + '?',
  177. icon: "warning",
  178. buttons: {
  179. cancel: window.lang.translate('No'),
  180. confirm: window.lang.translate('Yes'),
  181. },
  182. dangerMode: true,
  183. confirmButtonColor: "#DD6B55"
  184. }).then(function(willDelete) {
  185. if (willDelete) {
  186. var id = tab.parent().parent().attr("data-id");
  187. var callbacks = $.Callbacks();
  188. callbacks.add( buildBookmarkTabEditor );
  189. organizrAPI2('DELETE','api/v2/plugins/bookmark/tabs/' + id, null,true).success(function(data) {
  190. message('Tab Deleted','',activeInfo.settings.notifications.position,"#FFF","success","5000");
  191. if(callbacks){ callbacks.fire(); }
  192. }).fail(function(xhr) {
  193. OrganizrApiError(xhr, 'Tab Deleted Error');
  194. });
  195. }
  196. });
  197. });
  198. //EDIT TAB
  199. $(document).on("click", ".editBookmarkTab", function () {
  200. var originalTabName = $('#originalBookmarkTabName').html();
  201. var tabInfo = $('#edit-bookmark-tab-form').serializeToJSON();
  202. if (typeof tabInfo.id == 'undefined' || tabInfo.id == '') {
  203. message('Edit Tab Error',' Could not get Tab ID',activeInfo.settings.notifications.position,'#FFF','error','5000');
  204. return false;
  205. }
  206. if (typeof tabInfo.name == 'undefined' || tabInfo.name == '') {
  207. message('Edit Tab Error',' Please set a Tab Name',activeInfo.settings.notifications.position,'#FFF','warning','5000');
  208. return false;
  209. }
  210. if (typeof tabInfo.image == 'undefined' || tabInfo.image == '') {
  211. message('Edit Tab Error',' Please set a Tab Image',activeInfo.settings.notifications.position,'#FFF','warning','5000');
  212. return false;
  213. }
  214. if (typeof tabInfo.url == 'undefined' || tabInfo.url == '') {
  215. message('Edit Tab Error',' Please set a Tab URL',activeInfo.settings.notifications.position,'#FFF','warning','5000');
  216. return false;
  217. }
  218. if (typeof tabInfo.background_color == 'undefined' || tabInfo.background_color == '') {
  219. message('Edit Tab Error',' Please set a Background Color',activeInfo.settings.notifications.position,'#FFF','warning','5000');
  220. return false;
  221. }
  222. if (typeof tabInfo.text_color == 'undefined' || tabInfo.text_color == '') {
  223. message('Edit Tab Error',' Please set a Text Color',activeInfo.settings.notifications.position,'#FFF','warning','5000');
  224. return false;
  225. }
  226. if(tabInfo.id !== '' && tabInfo.tabName !== '' && tabInfo.tabImage !== '' && tabInfo.background_color !== '' && tabInfo.text_color !== ''){
  227. var callbacks = $.Callbacks();
  228. callbacks.add( buildBookmarkTabEditor );
  229. organizrAPI2('PUT','api/v2/plugins/bookmark/tabs/' + tabInfo.id,tabInfo,true).success(function(data) {
  230. try {
  231. var response = data.response;
  232. console.log(response);
  233. }catch(e) {
  234. organizrCatchError(e,data);
  235. }
  236. message('Tab Updated',response.message,activeInfo.settings.notifications.position,"#FFF","success","5000");
  237. if(callbacks){ callbacks.fire(); }
  238. clearForm('#edit-bookmark-tab-form');
  239. $.magnificPopup.close();
  240. }).fail(function(xhr) {
  241. OrganizrApiError(xhr, 'Tab Error');
  242. });
  243. }
  244. });
  245. //ADD NEW TAB
  246. $(document).on("click", ".addNewBookmarkTab", function () {
  247. var tabInfo = $('#new-bookmark-tab-form').serializeToJSON();
  248. var order = parseInt($('#bookmarkTabEditorTable').find('tr[data-order]').last().attr('data-order')) + 1;
  249. tabInfo['order'] = isNaN(order) ? 1 : order;
  250. if (typeof tabInfo.name == 'undefined' || tabInfo.name == '') {
  251. message('Edit Tab Error',' Please set a Tab Name',activeInfo.settings.notifications.position,'#FFF','warning','5000');
  252. return false;
  253. }
  254. if (typeof tabInfo.image == 'undefined' || tabInfo.image == '') {
  255. message('Edit Tab Error',' Please set a Tab Image',activeInfo.settings.notifications.position,'#FFF','warning','5000');
  256. return false;
  257. }
  258. if ((typeof tabInfo.url == 'undefined' || tabInfo.url == '')) {
  259. message('Edit Tab Error',' Please set a Tab URL',activeInfo.settings.notifications.position,'#FFF','warning','5000');
  260. return false;
  261. }
  262. if (typeof tabInfo.background_color == 'undefined' || tabInfo.background_color == '') {
  263. message('Edit Tab Error',' Please set a Background Color',activeInfo.settings.notifications.position,'#FFF','warning','5000');
  264. return false;
  265. }
  266. if (typeof tabInfo.text_color == 'undefined' || tabInfo.text_color == '') {
  267. message('Edit Tab Error',' Please set a Text Color',activeInfo.settings.notifications.position,'#FFF','warning','5000');
  268. return false;
  269. }
  270. if(tabInfo.order !== '' && tabInfo.name !== '' && tabInfo.url !== '' && tabInfo.image !== '' && tabInfo.background_color !== '' && tabInfo.text_color !== ''){
  271. var callbacks = $.Callbacks();
  272. callbacks.add( buildBookmarkTabEditor );
  273. organizrAPI2('POST','api/v2/plugins/bookmark/tabs',tabInfo,true).success(function(data) {
  274. try {
  275. var response = data.response;
  276. $('.bookmarkTabIconImageList').val(null).trigger('change');
  277. $('.bookmarkTabIconIconList').val(null).trigger('change');
  278. }catch(e) {
  279. organizrCatchError(e,data);
  280. }
  281. message('Tab Created',response.message,activeInfo.settings.notifications.position,"#FFF","success","5000");
  282. if(callbacks){ callbacks.fire(); }
  283. clearForm('#new-bookmark-tab-form');
  284. $.magnificPopup.close();
  285. }).fail(function(xhr) {
  286. OrganizrApiError(xhr, 'Tab Error');
  287. });
  288. }
  289. });
  290. // CHANGE TAB ORDER
  291. function submitBookmarkTabOrder(newTabs){
  292. var data = [];
  293. var process = false;
  294. $.each(newTabs.tab, function(i,v) {
  295. if(v.originalOrder == v.order){
  296. delete newTabs.tab[i];
  297. }else{
  298. let temp = {
  299. "order":v.order,
  300. "id":v.id
  301. }
  302. data.push(temp);
  303. process = true;
  304. }
  305. })
  306. if(!process){
  307. message('Tab Order Warning','Order was not changed - Submission not needed',activeInfo.settings.notifications.position,"#FFF","warning","5000");
  308. $('.saveBookmarkTabOrderButton').addClass('hidden');
  309. return false;
  310. }
  311. var callbacks = $.Callbacks();
  312. callbacks.add( buildBookmarkTabEditor );
  313. organizrAPI2('PUT','api/v2/plugins/bookmark/tabs',data,true).success(function(data) {
  314. try {
  315. var response = data.response;
  316. }catch(e) {
  317. organizrCatchError(e,data);
  318. }
  319. message('Tab Order Updated',response.message,activeInfo.settings.notifications.position,"#FFF","success","5000");
  320. if(callbacks){ callbacks.fire(); }
  321. $('.saveBookmarkTabOrderButton').addClass('hidden');
  322. }).fail(function(xhr) {
  323. OrganizrApiError(xhr, 'Update Error');
  324. });
  325. }
  326. $(document).on('change', "#new-bookmark-tab-form-chooseImage", function (e) {
  327. var newIcon = $('#new-bookmark-tab-form-chooseImage').val();
  328. if(newIcon !== 'Select or type Icon'){
  329. $('#new-bookmark-tab-form-inputImageNew').val(newIcon);
  330. }
  331. });
  332. $(document).on('change', "#edit-bookmark-tab-form-chooseImage", function (e) {
  333. var newIcon = $('#edit-bookmark-tab-form-chooseImage').val();
  334. if(newIcon !== 'Select or type Icon'){
  335. $('#edit-bookmark-tab-form-inputImage').val(newIcon);
  336. }
  337. });
  338. $(document).on('change', "#new-bookmark-tab-form-chooseIcon", function (e) {
  339. var newIcon = $('#new-bookmark-tab-form-chooseIcon').val();
  340. if(newIcon !== 'Select or type Icon'){
  341. $('#new-bookmark-tab-form-inputImageNew').val(newIcon);
  342. }
  343. });
  344. $(document).on('change', "#edit-bookmark-tab-form-chooseIcon", function (e) {
  345. var newIcon = $('#edit-bookmark-tab-form-chooseIcon').val();
  346. if(newIcon !== 'Select or type Icon'){
  347. $('#edit-bookmark-tab-form-inputImage').val(newIcon);
  348. }
  349. });
  350. // CATEGORY MANAGEMENT
  351. function bookmarkCategoriesLaunch(){
  352. var menuList = `<li onclick="changeSettingsMenu('Settings::Tab Editor::Bookmark Categories');loadSettingsPage2('api/v2/plugins/bookmark/settings_tab_editor_bookmark_categories','#settings-tab-editor-tabs','Tab Editor');" role="presentation"><a id="settings-tab-editor-tabs-anchor" href="#settings-tab-editor-tabs" aria-controls="home" role="tab" data-toggle="tab" aria-expanded="true"><span class="visible-xs"><i class="ti-layout-tab-v"></i></span><span class="hidden-xs" lang="en">Bookmark Categories</span></a></li>`;
  353. $('#settings-main-tab-editor .nav-tabs').append(menuList);
  354. }
  355. function buildBookmarkCategoryEditor(){
  356. organizrAPI2('GET','api/v2/plugins/bookmark/tabs').success(function(data) {
  357. try {
  358. var response = data.response;
  359. }catch(e) {
  360. organizrCatchError(e,data);
  361. }
  362. $('#bookmarkCategoryEditorTable').html(buildBookmarkCategoryEditorItem(response.data));
  363. }).fail(function(xhr) {
  364. OrganizrApiError(xhr);
  365. });
  366. }
  367. function buildBookmarkCategoryEditorItem(array){
  368. var categoryList = '';
  369. $.each(array.categories, function(i,v) {
  370. var tabCount = array.tabs.reduce(function (n, category) {
  371. return n + (category.category_id == v.category_id);
  372. }, 0);
  373. var disabledDefault = (v.default == 1) ? 'disabled' : '';
  374. var disabledDelete = (tabCount > 0) ? 'disabled' : '';
  375. var defaultIcon = (v.default == 1) ? 'icon-user-following' : 'icon-user-follow';
  376. var defaultColor = (v.default == 1) ? 'btn-info disabled' : 'btn-warning';
  377. categoryList += `
  378. <tr class="bookmarkCategoryEditor" data-id="`+v.id+`" data-order="`+v.order+`" data-category-id="`+v.category_id+`" data-name="`+v.category+`" data-default="`+tof(v.default)+`" data-tab-count="`+tabCount+`">
  379. <input type="hidden" class="form-control order" name="category[`+v.id+`].order" value="`+v.order+`">
  380. <input type="hidden" class="form-control" name="category[`+v.id+`].originalOrder" value="`+v.order+`">
  381. <input type="hidden" class="form-control" name="category[`+v.id+`].name" value="`+v.category+`">
  382. <input type="hidden" class="form-control" name="category[`+v.id+`].id" value="`+v.id+`">
  383. <td>`+v.category+`</td>
  384. <td style="text-align:center">`+tabCount+`</td>
  385. <td style="text-align:center"><button type="button" class="btn `+defaultColor+` btn-outline btn-circle btn-lg m-r-5 changeDefaultBookmarkCategory" `+disabledDefault+`><i class="`+defaultIcon+`"></i></button></td>
  386. <td style="text-align:center"><button type="button" class="btn btn-info btn-outline btn-circle btn-lg m-r-5 editBookmarkCategoryButton popup-with-form" href="#edit-bookmark-category-form" data-effect="mfp-3d-unfold"><i class="ti-pencil-alt"></i></button></td>
  387. <td style="text-align:center"><button type="button" class="btn btn-danger btn-outline btn-circle btn-lg m-r-5 deleteBookmarkCategory" `+disabledDelete+`><i class="ti-trash"></i></button></td>
  388. </tr>
  389. `;
  390. });
  391. return categoryList;
  392. }
  393. //ADD NEW CATEGORY
  394. $(document).on("click", ".addNewBookmarkCategory", function () {
  395. var categoryInfo = $('#new-bookmark-category-form').serializeToJSON();
  396. var order = parseInt($('#bookmarkCategoryEditorTable').find('tr[data-order]').last().attr('data-order')) + 1;
  397. categoryInfo['order'] = isNaN(order) ? 1 : order;
  398. if (typeof categoryInfo.category == 'undefined' || categoryInfo.category == '') {
  399. message('Edit Tab Error',' Please set a Category Name',activeInfo.settings.notifications.position,'#FFF','warning','5000');
  400. return false;
  401. }
  402. if(categoryInfo.category !== ''){
  403. var callbacks = $.Callbacks();
  404. callbacks.add( buildBookmarkCategoryEditor );
  405. organizrAPI2('POST','api/v2/plugins/bookmark/categories',categoryInfo,true).success(function(data) {
  406. try {
  407. var response = data.response;
  408. console.log(response);
  409. }catch(e) {
  410. organizrCatchError(e,data);
  411. }
  412. message('Category Added',response.message,activeInfo.settings.notifications.position,"#FFF","success","5000");
  413. if(callbacks){ callbacks.fire(); }
  414. clearForm('#new-bookmark-category-form');
  415. $.magnificPopup.close();
  416. }).fail(function(xhr) {
  417. OrganizrApiError(xhr, 'Category Error');
  418. });
  419. }
  420. });
  421. //DELETE CATEGORY
  422. $(document).on("click", ".deleteBookmarkCategory", function () {
  423. var category = $(this);
  424. swal({
  425. title: window.lang.translate('Delete ')+category.parent().parent().attr("data-name")+'?',
  426. icon: "warning",
  427. buttons: {
  428. cancel: window.lang.translate('No'),
  429. confirm: window.lang.translate('Yes'),
  430. },
  431. dangerMode: true,
  432. confirmButtonColor: "#DD6B55"
  433. }).then(function(willDelete) {
  434. if (willDelete) {
  435. var id = category.parent().parent().attr("data-id");
  436. var callbacks = $.Callbacks();
  437. callbacks.add( buildBookmarkCategoryEditor );
  438. organizrAPI2('DELETE','api/v2/plugins/bookmark/categories/' + id, null,true).success(function(data) {
  439. message('Category Deleted','',activeInfo.settings.notifications.position,"#FFF","success","5000");
  440. if(callbacks){ callbacks.fire(); }
  441. }).fail(function(xhr) {
  442. OrganizrApiError(xhr, 'Category Deleted Error');
  443. });
  444. }
  445. });
  446. });
  447. //EDIT CATEGORY GET ID
  448. $(document).on("click", ".editBookmarkCategoryButton", function () {
  449. $('#edit-bookmark-category-form [name=category]').val($(this).parent().parent().attr("data-name"));
  450. $('#edit-bookmark-category-form [name=id]').val($(this).parent().parent().attr("data-id"));
  451. });
  452. //EDIT CATEGORY
  453. $(document).on("click", ".editBookmarkCategory", function () {
  454. var categoryInfo = $('#edit-bookmark-category-form').serializeToJSON();
  455. if (typeof categoryInfo.id == 'undefined' || categoryInfo.id == '') {
  456. message('Edit Tab Error',' Could not get Category ID',activeInfo.settings.notifications.position,'#FFF','error','5000');
  457. return false;
  458. }
  459. if (typeof categoryInfo.category == 'undefined' || categoryInfo.category == '') {
  460. message('Edit Tab Error',' Please set a Category Name',activeInfo.settings.notifications.position,'#FFF','warning','5000');
  461. return false;
  462. }
  463. if(categoryInfo.id !== '' && categoryInfo.category !== ''){
  464. var callbacks = $.Callbacks();
  465. callbacks.add( buildBookmarkCategoryEditor );
  466. organizrAPI2('PUT','api/v2/plugins/bookmark/categories/' + categoryInfo.id,categoryInfo,true).success(function(data) {
  467. try {
  468. var response = data.response;
  469. console.log(response);
  470. }catch(e) {
  471. organizrCatchError(e,data);
  472. }
  473. message('Category Updated',response.message,activeInfo.settings.notifications.position,"#FFF","success","5000");
  474. if(callbacks){ callbacks.fire(); }
  475. clearForm('#edit-bookmark-category-form');
  476. $.magnificPopup.close();
  477. }).fail(function(xhr) {
  478. OrganizrApiError(xhr, 'Category Error');
  479. });
  480. }
  481. });
  482. //CHANGE DEFAULT CATEGORY
  483. $(document).on("click", ".changeDefaultBookmarkCategory", function () {
  484. var id = $(this).parent().parent().attr("data-id");
  485. var callbacks = $.Callbacks();
  486. callbacks.add( buildBookmarkCategoryEditor );
  487. organizrAPI2('PUT','api/v2/plugins/bookmark/categories/' + id, {"default":1},true).success(function(data) {
  488. try {
  489. var response = data.response;
  490. }catch(e) {
  491. organizrCatchError(e,data);
  492. }
  493. message('Default Category Updated',response.message,activeInfo.settings.notifications.position,"#FFF","success","5000");
  494. if(callbacks){ callbacks.fire(); }
  495. }).fail(function(xhr) {
  496. OrganizrApiError(xhr, 'Default Cateogry Error');
  497. });
  498. });
  499. // CHANGE CATEGORY ORDER
  500. function submitBookmarkCategoryOrder(){
  501. var data = [];
  502. var categories = $( "#submit-bookmark-categories-form" ).serializeToJSON();
  503. var callbacks = $.Callbacks();
  504. callbacks.add( buildCategoryEditor );
  505. $.each(categories.category, function(i,v) {
  506. if(v.originalOrder == v.order){
  507. delete categories.category[i];
  508. }else{
  509. let temp = {
  510. "order":v.order,
  511. "id":v.id
  512. }
  513. data.push(temp);
  514. }
  515. })
  516. organizrAPI2('PUT','api/v2/plugins/bookmark/categories',data,true).success(function(data) {
  517. try {
  518. var response = data.response;
  519. }catch(e) {
  520. organizrCatchError(e,data);
  521. }
  522. message('Category Order Updated',response.message,activeInfo.settings.notifications.position,"#FFF","success","5000");
  523. if(callbacks){ callbacks.fire(); }
  524. $('.saveTabOrderButton').addClass('hidden');
  525. }).fail(function(xhr) {
  526. OrganizrApiError(xhr, 'Update Error');
  527. });
  528. }
  529. // TAB MANAGEMENT