/* BOOKMARK JS FILE */ // FUNCTIONS bookmarkLaunch(); $('body').arrive('#settings-main-tab-editor .nav-tabs', {onceOnly: true}, function() { bookmarkLaunch(); }); function bookmarkCheckForTab() { // Let check for tab with bookmark url organizrAPI2('GET', 'api/v2/plugins/bookmark/setup/tab').success(function (data) { try { let response = data.response; $('.bookmark-check-tab small').text('Bookmark Tab'); $('.bookmark-check-tab .result').text(response.message); } catch (e) { organizrCatchError(e, data); } }).fail(function (xhr) { OrganizrApiError(xhr); $('.bookmark-check-tab .result').text('Error...'); }); } $('body').arrive('.bookmark-check-tab', {onceOnly: false}, function() { setTimeout(function(){ bookmarkCheckForTab() bookmarkCheckForCategory(); }, 500); }); function bookmarkCheckForCategory(){ // Let check for tab with bookmark url organizrAPI2('GET','api/v2/plugins/bookmark/setup/category').success(function(data) { try { let response = data.response; $('.bookmark-check-category small').text('Bookmark Categories'); $('.bookmark-check-category .result').text(response.message); }catch(e) { organizrCatchError(e,data); } }).fail(function(xhr) { OrganizrApiError(xhr); $('.bookmark-check-category .result').text('Error...'); }); } function bookmarkLaunch(){ if(activeInfo.plugins["BOOKMARK-enabled"] == true){ bookmarkTabsLaunch(); bookmarkCategoriesLaunch(); pageLoad(); } } // TAB MANAGEMENT function bookmarkTabsLaunch(){ var menuList = ``; let menuListAlt = ``; let div = `

Loading...

`; if($('.bookmarkCategoryMenu-added').length === 0 ){ $('#settings-main-tab-editor .nav-tabs').append(menuList); $('.settings-dropdown-box.tab-editor-menu').append(menuListAlt); $('#settings-main-tab-editor .tab-content').append(div); } } function getColorPickerOptionsWithCallback(func){ return ; } var colorPickerInitialized = false; function buildBookmarkTabEditor(){ organizrAPI2('GET','api/v2/plugins/bookmark/tabs').success(function(data) { try { var response = data.response; }catch(e) { organizrCatchError(e,data); } $('#bookmarkTabEditorTable').html(buildBookmarkTabEditorItem(response.data)); // initialize color pickers only first time if(!colorPickerInitialized){ $("input.bookmark-pick-a-color").ColorPickerSliders({ placement: 'bottom', color: '#987654', hsvpanel: true, previewformat: 'hex', flat: true, onchange: function(container, color){ generatePreviewBookmarkNewTab(); generatePreviewBookmarkEditTab(); } }); colorPickerInitialized = true; } }).fail(function(xhr) { OrganizrApiError(xhr); }); } function buildBookmarkTabEditorItem(array){ var tabList = ''; $.each(array.tabs, function(i,v) { tabList += `
`+iconPrefix(v.image)+`
`+v.name+` `+buildBookmarkTabCategorySelect(array.categories,v.id, v.category_id)+` `+buildBookmarkTabGroupSelect(array.groups,v.id, v.group_id)+` `; }); return tabList; } function buildBookmarkTabGroupSelect(array, tabID, groupID){ var groupSelect = ''; var selected = ''; $.each(array, function(i,v) { selected = ''; if(v.group_id == groupID){ selected = 'selected'; } groupSelect += ''; }); return ''; } function buildBookmarkTabCategorySelect(array,tabID, categoryID){ var categorySelect = ''; var selected = ''; $.each(array, function(i,v) { selected = ''; if(v.category_id == categoryID){ selected = 'selected'; } categorySelect += ''; }); return ''; } function editBookmarkTabForm(id){ organizrAPI2('GET','api/v2/plugins/bookmark/tabs/' + id,true).success(function(data) { try { let response = data.response; console.log(response); $('#edit-bookmark-tab-form [name=name]').val(response.data.name); $('#originalBookmarkTabName').html(response.data.name); $('#edit-bookmark-tab-form [name=url]').val(response.data.url); $('#edit-bookmark-tab-form [name=image]').val(response.data.image); $('#edit-bookmark-tab-form [name=background_color]').val(response.data.background_color).change(); $('#edit-bookmark-tab-form [name=text_color]').val(response.data.text_color).change(); $('#edit-bookmark-tab-form [name=id]').val(response.data.id); if( response.data.url.indexOf('/?v') > 0){ $('#edit-bookmark-tab-form [name=url]').prop('disabled', 'true'); }else{ $('#edit-bookmark-tab-form [name=url]').prop('disabled', null); } generatePreviewBookmarkEditTab(); }catch(e) { organizrCatchError(e,data); } }).fail(function(xhr) { OrganizrApiError(xhr, 'Tab Error'); }); } function newBookmarkTabForm(){ generatePreviewBookmarkNewTab(); } // CHANGE ENABLED TAB $(document).on("change", ".bookmarkEnabledSwitch", function () { var id = $(this).parent().parent().attr("data-id"); var enabled = $(this).prop("checked") ? 1 : 0; var callbacks = $.Callbacks(); organizrAPI2('PUT','api/v2/plugins/bookmark/tabs/' + id, {"enabled":enabled},true).success(function(data) { try { var response = data.response; }catch(e) { organizrCatchError(e,data); } message('Tab Enable Updated',response.message,activeInfo.settings.notifications.position,"#FFF","success","5000"); if(callbacks){ callbacks.fire(); } }).fail(function(xhr) { OrganizrApiError(xhr, 'Tab Enable Error'); }); }); // CHANGE TAB GROUP $(document).on("change", ".bookmarkTabGroupSelect", function (event) { var id = $(this).parent().parent().attr("data-id"); var groupID = $(this).find("option:selected").val(); var callbacks = $.Callbacks(); organizrAPI2('PUT','api/v2/plugins/bookmark/tabs/' + id, {"group_id":groupID},true).success(function(data) { try { var response = data.response; }catch(e) { organizrCatchError(e,data); } message('Tab Group Updated',response.message,activeInfo.settings.notifications.position,"#FFF","success","5000"); if(callbacks){ callbacks.fire(); } }).fail(function(xhr) { OrganizrApiError(xhr, 'Tab Group Error'); }); }); // CHANGE TAB CATEGORY $(document).on("change", ".bookmarkTabCategorySelect", function () { var id = $(this).parent().parent().attr("data-id"); var categoryID = $(this).find("option:selected").val(); console.log("CategoryID: " + categoryID); var callbacks = $.Callbacks(); organizrAPI2('PUT','api/v2/plugins/bookmark/tabs/' + id, {"category_id":categoryID},true).success(function(data) { try { var response = data.response; }catch(e) { organizrCatchError(e,data); } message('Tab Category Updated',response.message,activeInfo.settings.notifications.position,"#FFF","success","5000"); if(callbacks){ callbacks.fire(); } }).fail(function(xhr) { OrganizrApiError(xhr, 'Tab Category Error'); }); }); //DELETE TAB $(document).on("click", ".bookmarkDeleteTab", function () { var tab = $(this); swal({ title: window.lang.translate('Delete ') + tab.parent().parent().attr("data-name") + '?', icon: "warning", buttons: { cancel: window.lang.translate('No'), confirm: window.lang.translate('Yes'), }, dangerMode: true, confirmButtonColor: "#DD6B55" }).then(function(willDelete) { if (willDelete) { var id = tab.parent().parent().attr("data-id"); var callbacks = $.Callbacks(); callbacks.add( buildBookmarkTabEditor ); organizrAPI2('DELETE','api/v2/plugins/bookmark/tabs/' + id, null,true).success(function(data) { message('Tab Deleted','',activeInfo.settings.notifications.position,"#FFF","success","5000"); if(callbacks){ callbacks.fire(); } }).fail(function(xhr) { OrganizrApiError(xhr, 'Tab Deleted Error'); }); } }); }); //EDIT TAB $(document).on("click", ".editBookmarkTab", function () { var originalTabName = $('#originalBookmarkTabName').html(); var tabInfo = $('#edit-bookmark-tab-form').serializeToJSON(); if (typeof tabInfo.id == 'undefined' || tabInfo.id == '') { message('Edit Tab Error',' Could not get Tab ID',activeInfo.settings.notifications.position,'#FFF','error','5000'); return false; } if (typeof tabInfo.name == 'undefined' || tabInfo.name == '') { message('Edit Tab Error',' Please set a Tab Name',activeInfo.settings.notifications.position,'#FFF','warning','5000'); return false; } if (typeof tabInfo.image == 'undefined' || tabInfo.image == '') { message('Edit Tab Error',' Please set a Tab Image',activeInfo.settings.notifications.position,'#FFF','warning','5000'); return false; } if (typeof tabInfo.url == 'undefined' || tabInfo.url == '') { message('Edit Tab Error',' Please set a Tab URL',activeInfo.settings.notifications.position,'#FFF','warning','5000'); return false; } if (typeof tabInfo.background_color == 'undefined' || tabInfo.background_color == '') { message('Edit Tab Error',' Please set a Background Color',activeInfo.settings.notifications.position,'#FFF','warning','5000'); return false; } if (typeof tabInfo.text_color == 'undefined' || tabInfo.text_color == '') { message('Edit Tab Error',' Please set a Text Color',activeInfo.settings.notifications.position,'#FFF','warning','5000'); return false; } if(tabInfo.id !== '' && tabInfo.tabName !== '' && tabInfo.tabImage !== '' && tabInfo.background_color !== '' && tabInfo.text_color !== ''){ var callbacks = $.Callbacks(); callbacks.add( buildBookmarkTabEditor ); organizrAPI2('PUT','api/v2/plugins/bookmark/tabs/' + tabInfo.id,tabInfo,true).success(function(data) { try { var response = data.response; console.log(response); }catch(e) { organizrCatchError(e,data); } message('Tab Updated',response.message,activeInfo.settings.notifications.position,"#FFF","success","5000"); if(callbacks){ callbacks.fire(); } clearForm('#edit-bookmark-tab-form'); $.magnificPopup.close(); }).fail(function(xhr) { OrganizrApiError(xhr, 'Tab Error'); }); } }); //ADD NEW TAB $(document).on("click", ".addNewBookmarkTab", function () { var tabInfo = $('#new-bookmark-tab-form').serializeToJSON(); var order = parseInt($('#bookmarkTabEditorTable').find('tr[data-order]').last().attr('data-order')) + 1; tabInfo['order'] = isNaN(order) ? 1 : order; if (typeof tabInfo.name == 'undefined' || tabInfo.name == '') { message('Edit Tab Error',' Please set a Tab Name',activeInfo.settings.notifications.position,'#FFF','warning','5000'); return false; } if (typeof tabInfo.image == 'undefined' || tabInfo.image == '') { message('Edit Tab Error',' Please set a Tab Image',activeInfo.settings.notifications.position,'#FFF','warning','5000'); return false; } if ((typeof tabInfo.url == 'undefined' || tabInfo.url == '')) { message('Edit Tab Error',' Please set a Tab URL',activeInfo.settings.notifications.position,'#FFF','warning','5000'); return false; } if (typeof tabInfo.background_color == 'undefined' || tabInfo.background_color == '') { message('Edit Tab Error',' Please set a Background Color',activeInfo.settings.notifications.position,'#FFF','warning','5000'); return false; } if (typeof tabInfo.text_color == 'undefined' || tabInfo.text_color == '') { message('Edit Tab Error',' Please set a Text Color',activeInfo.settings.notifications.position,'#FFF','warning','5000'); return false; } if(tabInfo.order !== '' && tabInfo.name !== '' && tabInfo.url !== '' && tabInfo.image !== '' && tabInfo.background_color !== '' && tabInfo.text_color !== ''){ var callbacks = $.Callbacks(); callbacks.add( buildBookmarkTabEditor ); organizrAPI2('POST','api/v2/plugins/bookmark/tabs',tabInfo,true).success(function(data) { try { var response = data.response; $('.bookmarkTabIconImageList').val(null).trigger('change'); $('.bookmarkTabIconIconList').val(null).trigger('change'); }catch(e) { organizrCatchError(e,data); } message('Tab Created',response.message,activeInfo.settings.notifications.position,"#FFF","success","5000"); if(callbacks){ callbacks.fire(); } clearForm('#new-bookmark-tab-form'); $.magnificPopup.close(); }).fail(function(xhr) { OrganizrApiError(xhr, 'Tab Error'); }); } }); // CHANGE TAB ORDER function submitBookmarkTabOrder(newTabs){ var data = []; var process = false; $.each(newTabs.tab, function(i,v) { if(v.originalOrder == v.order){ delete newTabs.tab[i]; }else{ let temp = { "order":v.order, "id":v.id } data.push(temp); process = true; } }) if(!process){ message('Tab Order Warning','Order was not changed - Submission not needed',activeInfo.settings.notifications.position,"#FFF","warning","5000"); $('.saveBookmarkTabOrderButton').addClass('hidden'); return false; } var callbacks = $.Callbacks(); callbacks.add( buildBookmarkTabEditor ); organizrAPI2('PUT','api/v2/plugins/bookmark/tabs',data,true).success(function(data) { try { var response = data.response; }catch(e) { organizrCatchError(e,data); } message('Tab Order Updated',response.message,activeInfo.settings.notifications.position,"#FFF","success","5000"); if(callbacks){ callbacks.fire(); } $('.saveBookmarkTabOrderButton').addClass('hidden'); }).fail(function(xhr) { OrganizrApiError(xhr, 'Update Error'); }); } $(document).on('change', "#new-bookmark-tab-form-chooseImage", function (e) { var newIcon = $('#new-bookmark-tab-form-chooseImage').val(); if(newIcon !== 'Select or type Icon'){ $('#new-bookmark-tab-form-inputImage').val(newIcon).change(); } }); $(document).on('change', "#edit-bookmark-tab-form-chooseImage", function (e) { var newIcon = $('#edit-bookmark-tab-form-chooseImage').val(); if(newIcon !== 'Select or type Icon'){ $('#edit-bookmark-tab-form-inputImage').val(newIcon).change(); } }); $(document).on('change', "#new-bookmark-tab-form-chooseIcon", function (e) { var newIcon = $('#new-bookmark-tab-form-chooseIcon').val(); if(newIcon !== 'Select or type Icon'){ $('#new-bookmark-tab-form-inputImage').val(newIcon).change(); } }); $(document).on('change', "#edit-bookmark-tab-form-chooseIcon", function (e) { var newIcon = $('#edit-bookmark-tab-form-chooseIcon').val(); if(newIcon !== 'Select or type Icon'){ $('#edit-bookmark-tab-form-inputImage').val(newIcon).change(); } }); // TAB PREVIEWS function adjustBrightness(hexCode, adjustPercent){ hexCode = hexCode.replace('#',''); if(hexCode.length != 6 && hexCode.length != 3) return; if(hexCode.length == 3) hexCode = hexCode[0]+hexCode[0]+hexCode[1]+hexCode[1]+hexCode[2]+hexCode[2]; var result = ['#']; for (var i = 0; i < 3; ++i) { var color = parseInt(hexCode[2*i] + hexCode[2*i+1], 16); var adjustableLimit = adjustPercent < 0 ? color : 255 - color; var adjustAmount = Math.ceil(adjustableLimit * adjustPercent); var hex = (color + adjustAmount).toString(16).padStart(2, '0'); result.push(hex); } return result.join(''); } function generatePreview(preview, name, image, colorBg, colorText){ var result = '
\ \
\ ' + iconPrefix(image) + ' \ ' + name + ' \
\
\
'; preview.html(result); $(".BOOKMARK-tab-image>img, .BOOKMARK-tab-image>i").removeClass("fa-fw"); } function generatePreviewBookmarkNewTab(){ var preview = $('#new-bookmark-preview'); var name = $('#new-bookmark-tab-form-inputName').val(); var image = $('#new-bookmark-tab-form-inputImage').val(); var colorBg = $('#new-bookmark-tab-form-inputBackgroundColor').val(); var colorText = $('#new-bookmark-tab-form-inputTextColor').val(); generatePreview(preview, name, image, colorBg, colorText); } function generatePreviewBookmarkEditTab(){ var preview = $('#edit-bookmark-preview'); var name = $('#edit-bookmark-tab-form-inputName').val(); var image = $('#edit-bookmark-tab-form-inputImage').val(); var colorBg = $('#edit-bookmark-tab-form-inputBackgroundColor').val(); var colorText = $('#edit-bookmark-tab-form-inputTextColor').val(); generatePreview(preview, name, image, colorBg, colorText); } $(document).on('input', "#new-bookmark-tab-form-inputName", generatePreviewBookmarkNewTab); $(document).on('input change', "#new-bookmark-tab-form-inputImage", generatePreviewBookmarkNewTab); $(document).on('input', "#new-bookmark-tab-form-inputBackgroundColor", generatePreviewBookmarkNewTab); $(document).on('input', "#new-bookmark-tab-form-inputTextColor", generatePreviewBookmarkNewTab); $(document).on('input', "#edit-bookmark-tab-form-inputName", generatePreviewBookmarkEditTab); $(document).on('input change', "#edit-bookmark-tab-form-inputImage", generatePreviewBookmarkEditTab); $(document).on('input', "#edit-bookmark-tab-form-inputBackgroundColor", generatePreviewBookmarkEditTab); $(document).on('input', "#edit-bookmark-tab-form-inputTextColor", generatePreviewBookmarkEditTab); // CATEGORY MANAGEMENT function bookmarkCategoriesLaunch(){ var menuList = ``; let menuListAlt = ``; let div = `

Loading...

`; if($('.bookmarkCategoryMenu-added').length === 0 ){ $('#settings-main-tab-editor .nav-tabs').append(menuList); $('.settings-dropdown-box.tab-editor-menu').append(menuListAlt); $('#settings-main-tab-editor .tab-content').append(div); } } function buildBookmarkCategoryEditor(){ organizrAPI2('GET','api/v2/plugins/bookmark/tabs').success(function(data) { try { var response = data.response; }catch(e) { organizrCatchError(e,data); } $('#bookmarkCategoryEditorTable').html(buildBookmarkCategoryEditorItem(response.data)); }).fail(function(xhr) { OrganizrApiError(xhr); }); } function buildBookmarkCategoryEditorItem(array){ var categoryList = ''; $.each(array.categories, function(i,v) { var tabCount = array.tabs.reduce(function (n, category) { return n + (category.category_id == v.category_id); }, 0); var disabledDefault = (v.default == 1) ? 'disabled' : ''; var disabledDelete = (tabCount > 0) ? 'disabled' : ''; var defaultIcon = (v.default == 1) ? 'icon-user-following' : 'icon-user-follow'; var defaultColor = (v.default == 1) ? 'btn-info disabled' : 'btn-warning'; categoryList += ` `+v.category+` `+tabCount+` `; }); return categoryList; } //ADD NEW CATEGORY $(document).on("click", ".addNewBookmarkCategory", function () { var categoryInfo = $('#new-bookmark-category-form').serializeToJSON(); var order = parseInt($('#bookmarkCategoryEditorTable').find('tr[data-order]').last().attr('data-order')) + 1; categoryInfo['order'] = isNaN(order) ? 1 : order; if (typeof categoryInfo.category == 'undefined' || categoryInfo.category == '') { message('Edit Tab Error',' Please set a Category Name',activeInfo.settings.notifications.position,'#FFF','warning','5000'); return false; } if(categoryInfo.category !== ''){ var callbacks = $.Callbacks(); callbacks.add( buildBookmarkCategoryEditor ); organizrAPI2('POST','api/v2/plugins/bookmark/categories',categoryInfo,true).success(function(data) { try { var response = data.response; console.log(response); }catch(e) { organizrCatchError(e,data); } message('Category Added',response.message,activeInfo.settings.notifications.position,"#FFF","success","5000"); if(callbacks){ callbacks.fire(); } clearForm('#new-bookmark-category-form'); $.magnificPopup.close(); }).fail(function(xhr) { OrganizrApiError(xhr, 'Category Error'); }); } }); //DELETE CATEGORY $(document).on("click", ".deleteBookmarkCategory", function () { var category = $(this); swal({ title: window.lang.translate('Delete ')+category.parent().parent().attr("data-name")+'?', icon: "warning", buttons: { cancel: window.lang.translate('No'), confirm: window.lang.translate('Yes'), }, dangerMode: true, confirmButtonColor: "#DD6B55" }).then(function(willDelete) { if (willDelete) { var id = category.parent().parent().attr("data-id"); var callbacks = $.Callbacks(); callbacks.add( buildBookmarkCategoryEditor ); organizrAPI2('DELETE','api/v2/plugins/bookmark/categories/' + id, null,true).success(function(data) { message('Category Deleted','',activeInfo.settings.notifications.position,"#FFF","success","5000"); if(callbacks){ callbacks.fire(); } }).fail(function(xhr) { OrganizrApiError(xhr, 'Category Deleted Error'); }); } }); }); //EDIT CATEGORY GET ID $(document).on("click", ".editBookmarkCategoryButton", function () { $('#edit-bookmark-category-form [name=category]').val($(this).parent().parent().attr("data-name")); $('#edit-bookmark-category-form [name=id]').val($(this).parent().parent().attr("data-id")); }); //EDIT CATEGORY $(document).on("click", ".editBookmarkCategory", function () { var categoryInfo = $('#edit-bookmark-category-form').serializeToJSON(); if (typeof categoryInfo.id == 'undefined' || categoryInfo.id == '') { message('Edit Tab Error',' Could not get Category ID',activeInfo.settings.notifications.position,'#FFF','error','5000'); return false; } if (typeof categoryInfo.category == 'undefined' || categoryInfo.category == '') { message('Edit Tab Error',' Please set a Category Name',activeInfo.settings.notifications.position,'#FFF','warning','5000'); return false; } if(categoryInfo.id !== '' && categoryInfo.category !== ''){ var callbacks = $.Callbacks(); callbacks.add( buildBookmarkCategoryEditor ); organizrAPI2('PUT','api/v2/plugins/bookmark/categories/' + categoryInfo.id,categoryInfo,true).success(function(data) { try { var response = data.response; console.log(response); }catch(e) { organizrCatchError(e,data); } message('Category Updated',response.message,activeInfo.settings.notifications.position,"#FFF","success","5000"); if(callbacks){ callbacks.fire(); } clearForm('#edit-bookmark-category-form'); $.magnificPopup.close(); }).fail(function(xhr) { OrganizrApiError(xhr, 'Category Error'); }); } }); //CHANGE DEFAULT CATEGORY $(document).on("click", ".changeDefaultBookmarkCategory", function () { var id = $(this).parent().parent().attr("data-id"); var callbacks = $.Callbacks(); callbacks.add( buildBookmarkCategoryEditor ); organizrAPI2('PUT','api/v2/plugins/bookmark/categories/' + id, {"default":1},true).success(function(data) { try { var response = data.response; }catch(e) { organizrCatchError(e,data); } message('Default Category Updated',response.message,activeInfo.settings.notifications.position,"#FFF","success","5000"); if(callbacks){ callbacks.fire(); } }).fail(function(xhr) { OrganizrApiError(xhr, 'Default Cateogry Error'); }); }); // CHANGE CATEGORY ORDER function submitBookmarkCategoryOrder(){ var data = []; var categories = $( "#submit-bookmark-categories-form" ).serializeToJSON(); var callbacks = $.Callbacks(); callbacks.add( buildCategoryEditor ); $.each(categories.category, function(i,v) { if(v.originalOrder == v.order){ delete categories.category[i]; }else{ let temp = { "order":v.order, "id":v.id } data.push(temp); } }) organizrAPI2('PUT','api/v2/plugins/bookmark/categories',data,true).success(function(data) { try { var response = data.response; }catch(e) { organizrCatchError(e,data); } message('Category Order Updated',response.message,activeInfo.settings.notifications.position,"#FFF","success","5000"); if(callbacks){ callbacks.fire(); } $('.saveTabOrderButton').addClass('hidden'); }).fail(function(xhr) { OrganizrApiError(xhr, 'Update Error'); }); }