var tab_len = 2; ( function($){ var ctTab = Object(); var ctKey = Object(); var tabList = Object(); $.fn.dynatabs = function(options){ var tabs = $(this.selector); var settings = $.extend({ tabBodyID : 'tabbody', defaultTab: 0, //default is 0 - first tab deactiveClass : 'unselected', activeClass : 'selected', showCloseBtn : false, //shows the close button on the tabs closeableClass : 'closeable', tabLoaderClass : 'tabLoader', confirmDelete : false, confirmMessage : 'Delete Tab?', switchToNewTab : true, fromIframe : false, debug : false, bindCard : false, zframe : false },options); $.fn.debug = function(message){ if(settings.debug) { if($.browser.webkit || $.browser.mozilla) { console.log(message); } else { alert('You have debug enabled in settings. It is only supported in Firefox and Chrome now.'); } } }; /** * Function to show a tab */ $.fn.showTab = function(event){ var ahref = event.data.ahref; var tab = event.data.tab; if(ahref != null) { if(event.target.nodeName != "IMG"){ $.fn.activateTab($(ahref).attr('tabid'), ahref, tab); } } else { $.fn.debug('unable to show a null tab'); } }; $.fn.closeTab = function(event){ if(event.data.key != null && event.data.tab != null) { try { //czyścimy zaznaczenia porównywarki var tab_frame = $( event.data.key ).find( "iframe" ); $(tab_frame)[0].contentWindow.jQuery('#clear_compare').click(); if(localStorage.es_brangeGrid__selection != undefined){ localStorage.es_brangeGrid__selection = ''; } } catch(ex) {} // zdejmujemy blokady try { var tab_frame = $( event.data.key ).find( "iframe" ); var type_theme = 1; if($(tab_frame)[0].contentWindow.new_type_theme != undefined){ type_theme = 2; } if(type_theme == 2){ $.ajax({ type: "POST", url: "task/ajax/LockUnLock.php", async: true, data: { lockUnlockBranchId: $(tab_frame)[0].contentWindow.branch_id, type_theme: type_theme, aj_function: 'UnlockTask', } }); } else { if($(tab_frame)[0].contentWindow.window_id == 'task' && $(tab_frame)[0].contentWindow.branch_id != undefined && !$(tab_frame)[0].contentWindow.task.locked){ $.ajax({ type: "POST", async: true, url: "custom/ajax/ajax_task.php", data: { lockUnlockBranchId: $(tab_frame)[0].contentWindow.branch_id, aj_function: 'lockUnlock', lockUnlock: 'UNLOCK', } }); } } } catch(ex) {} // to samo dla CRM try { var tab_frame = $( event.data.key ).find( "iframe" ); if($(tab_frame)[0].contentWindow.window_id == 'crm_task' && $(tab_frame)[0].contentWindow.task_crm_id != undefined && $(tab_frame)[0].contentWindow.task_crm_id > 0 && !$(tab_frame)[0].contentWindow.task_locked && !$(tab_frame)[0].contentWindow.session_expired){ $.ajax({ type: "POST", async: true, url: "custom/ajax/ajax_crm.php", data: { id_task_crm: $(tab_frame)[0].contentWindow.task_crm_id, aj_function: 'unlockTask', } }); } } catch(ex) {} $.fn.debug('deleting tab'); var canDelete = false; var ahref = null; //check if the tab can be deleted if(settings.confirmDelete) { if(confirm(settings.confirmMessage)) { canDelete = true; } } else { canDelete = true; } //delete the tab if(canDelete) { //find the ahref ahref = tabs.find("a[tabid='" + event.data.key + "']"); if(ahref != null && ahref.length == 1) { // zamykamy powiązaną zakładkę if($(ahref).hasClass( "bindTabClass" )){ var from_tabid = tabs.find("a[from_tabid='" + event.data.key + "']"); //usuwamy class $('a[tabid="'+$(ahref).attr('from_tabid')+'"]').removeClass("bindTabClass"); //usuwamy powiązany tab var del_tabid = $(from_tabid).attr('tabid'); if(del_tabid != undefined){ $(from_tabid).parent().remove(); $(del_tabid).remove(); if(tabs.find("a").length > 0) { var tmp = tabs.find("a").last(); if(ctKey[$(event.data.tab).attr('id')] == $(from_tabid).attr('tabid')) { $.fn.activateTab($(tmp).attr('tabid'), tmp, event.data.tab); } } } } var from_tabid = $(ahref).attr('from_tabid'); $.fn.logicRefresh(from_tabid, ahref); //delete it $(ahref).parent().remove(); $(event.data.key).remove(); //activate the next tab (if any) if(tabs.find("a").length > 0) { var tmp = tabs.find("a").last(); if(ctKey[$(event.data.tab).attr('id')] == $(ahref).attr('tabid')) { $.fn.activateTab($(tmp).attr('tabid'), tmp, event.data.tab); } } } else { $.fn.debug('Too many A Hrefs found with id ' + event.data.key); } } } return false; }; $.fn.refreshTab = function(event){ //odświeżamy var tab_frame = $( event.data.key ).find( "iframe" ); $(tab_frame).attr('src', $(tab_frame).attr('src')); //zmianiamy tytół zakładka taki jak w iframe addCSSlink2Frame(event.data.key); } $.fn.closeActiveTab = function(iframehref){ var tabid = ctKey[$('#addajaxtab').attr('id')]; //nie zamykamy kalendarza if(tabid == '#tabview0'){ return; } //zabezpieczenia, jeżeli zadanie jest w trakcie wysłania, a zmienie się zakładkę if(iframehref != undefined){ // alert(tabid); // alert($("iframe")); $( "iframe" ).each(function() { if($(this)[0].contentWindow.location.href == iframehref){ if($(this).parent().attr('id') != undefined) { tabid = '#' + $(this).parent().attr('id'); }; } }); } if(tabid != null) { //odblokowujemy task i crm// ze względu rozczapkania kodu w obecnym systemie nie udało się zrobić to uniwersalnie try { var tab_frame = $( tabid ).find( "iframe" ); var type_theme = 1; if($(tab_frame)[0].contentWindow.new_type_theme != undefined){ type_theme = 2; } if(type_theme == 2){ $.ajax({ type: "POST", url: "task/ajax/LockUnLock.php", data: { lockUnlockBranchId: $(tab_frame)[0].contentWindow.branch_id, aj_function: 'UnlockTask', } }); } else { if($(tab_frame)[0].contentWindow.window_id == 'task' && $(tab_frame)[0].contentWindow.branch_id != undefined && !$(tab_frame)[0].contentWindow.task.locked){ $.ajax({ type: "POST", url: "custom/ajax/ajax_task.php", data: { lockUnlockBranchId: $(tab_frame)[0].contentWindow.branch_id, type_theme: type_theme, aj_function: 'lockUnlock', lockUnlock: 'UNLOCK', } }); } } // left_menu.lockUnlock = 'UNLOCK'; // left_menu.lockUnlockBranchId = branch_id; } catch(ex) {} // to samo dla CRM try { var tab_frame = $( tabid ).find( "iframe" ); if($(tab_frame)[0].contentWindow.window_id == 'crm_task' && $(tab_frame)[0].contentWindow.task_crm_id != undefined && $(tab_frame)[0].contentWindow.task_crm_id > 0 && !$(tab_frame)[0].contentWindow.task_locked && !$(tab_frame)[0].contentWindow.session_expired){ $.ajax({ type: "POST", url: "custom/ajax/ajax_crm.php", data: { id_task_crm: $(tab_frame)[0].contentWindow.task_crm_id, aj_function: 'unlockTask', } }); } } catch(ex) {} var ahref = null; //find the ahref ahref = tabs.find("a[tabid='" + tabid + "']"); if(ahref != null && ahref.length == 1) { // zamykamy powiązaną zakładkę if($(ahref).hasClass( "bindTabClass" )){ var from_tabid = tabs.find("a[from_tabid='" + tabid + "']"); //usuwamy class $('a[tabid="'+$(ahref).attr('from_tabid')+'"]').removeClass("bindTabClass"); //usuwamy powiązany tab var del_tabid = $(from_tabid).attr('tabid'); if(del_tabid != undefined){ $(from_tabid).parent().remove(); $(del_tabid).remove(); if(tabs.find("a").length > 0) { var tmp = tabs.find("a").last(); if(ctKey[$('#addajaxtab').attr('id')] == $(from_tabid).attr('tabid')) { $.fn.activateTab($(tmp).attr('tabid'), tmp, $('#addajaxtab')); } } } } var from_tabid = $(ahref).attr('from_tabid'); $.fn.logicRefresh(from_tabid, ahref); //delete it $(ahref).parent().remove(); $(tabid).remove(); //activate the next tab (if any) if(tabs.find("a").length > 0) { var tmp = tabs.find("a").last(); $.fn.activateTab($(tmp).attr('tabid'), tmp, $('#addajaxtab')); } } } return false; }; $.fn.activateTab = function(key, ahref, tab){ if(key != null && ahref != null && tab != null) { $.fn.debug(tab); $.fn.debug(key); $.fn.hideTab(ctKey[$(tab).attr('id')], ctTab[$(tab).attr('id')]); $(ahref).parent().addClass(settings.activeClass); $(key).show(); ctKey[$(tab).attr('id')] = key; ctTab[$(tab).attr('id')] = ahref; // ładujemy iframe dopiero po aktywacji zakładki - jeżeli brak src var $f = $($(ahref).attr('tabid')).find(".st"); if($($f[0]).attr('src') != undefined && $($f[0]).attr('src') == ''){ $($f[0]).attr('src', $($f).attr('src_start')); } //odswierzamy MGView, bo błąd w obecnym systemie try { $f[0].contentWindow.showMAggg(); } catch (ex) {} try { $f[0].contentWindow.resizeHiddenPanelControl(); } catch (ex) {} //włączamy esView w towym tasku try { // $f[0].contentWindow.buildEsViewer(); } catch (ex) {} } //zamykamy menu jeżeli komorka $( ".count_tabs").html($( "#addajaxtab li" ).length); if($('.navbar-toggle').css('display') !='none') { // $( "#addajaxtab" ).fadeOut( "fast", function() {}); } //WM $('.close-tab-img').show(); $('#selected-zakladki').html($( '#addajaxtab' ).find('.selected').find('a').find('element').html()); // nie zamykamy ostatnią zakładkę if($( "#addajaxtab li" ).length < 2){ $('.close-tab-img').hide(); }; $('body').removeClass('pushy-open-right'); }; $.fn.hideTab = function(key, ahref){ if(key != null && ahref != null) { $(ahref).parent().removeClass(settings.activeClass); //$(ahref).parent().addClass(settings.deactiveClass); $(key).hide(); } }; /** * Bind the on-click of each tab to showtab function */ $.fn.bindTabs = function(){ $.each(tabs.find("li > a"), function(idx, a){ //bind click function of the tab header var tabid = $(a).attr('tabid'); $(a).bind('click',{ ahref: a, tab: tabs, tabid: tabid}, $.fn.showTab); //show the close button if enabled in settings if(settings.showCloseBtn && $(a).find("span").length == 0) { $.fn.addCloseBtn(a); } }); }; $.fn.addCloseBtn = function(ahref){ if(ahref != null) { this.debug('adding close button'); var key = $(ahref).attr('tabid'); if(key.length > 0) { $(ahref).prepend(''); $(ahref).find(".refreshtab").bind('click', { key: key, tab: tabs } ,$.fn.refreshTab); $(ahref).append(''); $(ahref).find(".closeable").bind('click', { key: key, tab: tabs } ,$.fn.closeTab); } } }; $.fn.addTabLoader = function(ahref){ if(ahref != null) { this.debug('adding tab loader button'); var key = $(ahref).attr('tabid'); if(key.length > 0) { $(ahref).append(''); $(ahref).find("span").bind('click', { key: key } ,$.fn.closeTab); } } }; $.fn.activateTabCustom = function(tabid, tabs){ ahref = tabs.find("a[tabid='" + tabid+ "']"); if(ahref != null && ahref.length == 1) { if(tabs.find("a").length > 0) { var tmp = tabs.find("a:last"); $.fn.activateTab($(tmp).attr('tabid'), tmp, '#addajaxtab'); } } }; $.fn.addNewTab = function(defaults, tabBody){ settings.tabBodyID = tabBody; tabs = $("#"+defaults.tabID); $.fn.debug('Tab ID : ' + defaults.tabID); if(defaults.type === 'html') { if(defaults.html != null && defaults.html.length > 0) { //create the title tag var a = $(""); //create the li tag var li = $("
  • "); //create data div var div = $("
    "); var len = tabs.find("li").length + 1; $(a).attr('href', '#'); $(a).attr('tabid', '#tabview' + '_' + settings.tabBodyID + len); $(a).html(defaults.tabTitle); $(li).append(a); $(div).attr('id', 'tabview' + '_' + settings.tabBodyID + len); $(div).html(defaults.html); //append to tab list tabs.append(li); $(div).addClass(settings.deactiveClass); $('#' + settings.tabBodyID).append(div); //bind all click functions to tab headers $.fn.bindTabs(); } else { $.fn.debug('No HTML content found for the new tab. Skipping new tab creation'); } } else if(defaults.type === 'div') { if(defaults.divID != null && defaults.divID.length > 0 && $("#" + defaults.divID)[0]) { //hide the div which holds actual content $("#" + defaults.divID).css("display", "none"); //create the title tag var a = $(""); //create the li tag var li = $("
  • "); //create data div var div = $("
    "); var len = tabs.find("li").length + 1; $(a).attr('href', '#'); $(a).attr('tabid', '#tabview' + '_' + settings.tabBodyID + len); $(a).html(defaults.tabTitle); $(li).append(a); $(div).attr('id', 'tabview' + '_' + settings.tabBodyID + len); $(div).html($("#" + defaults.divID).html()); //append to tab list tabs.append(li); $(div).addClass(settings.deactiveClass); $('#' + settings.tabBodyID).append(div); //bind all click functions to tab headers $.fn.bindTabs(); } else { $.fn.debug('No Div found with id ' + defaults.divID + ' in the body for html content.'); } } else if(defaults.type === 'ajax') { //zamykamy menu jeżeli komorka if($('.navbar-toggle').css('display') !='none') { $('#navnav').removeClass('in'); // $( "#addajaxtab" ).fadeOut( "fast", function() {}); } if(defaults.url.length > 0 && defaults.method.length > 0 && defaults.dtype.length > 0) { //sprawdzamy czy istnieje, jeżeli tak to aktywujemy var dublstop = false; var rep_div = ''; $.each(tabs.find("li > a"), function(idx, a){ var tab_name = ''; var defaults_tabTitle = defaults.tabTitle; if(tab_name != null && tab_name != '' && tab_name != undefined && defaults_tabTitle.indexOf(tab_name) !== -1) { var idxl = idx -(-1); $.fn.activateTab($(a).attr('tabid'), a, '#addajaxtab'); dublstop = true; rep_div = $(a).attr('tabid'); // alert('ZakĹ‚adka '+$(a).find("element").attr('unikname')+' juĹĽ jest otwarta, w celu otwierania ponownie proszÄ™ o zamkniÄ™cie'); } }); if(!dublstop){ //create the title tag var a = $(""); //create the li tag var li = $("
  • "); //create data div var div = $("
    "); // var len = tabs.find("li").length + 1; tab_len = tab_len + 1; var len = tab_len; $(a).attr('href', '#'); var tabid = '#tabview' + '_' + settings.tabBodyID + len; $(a).attr('tabid', tabid); //tylko z iframe, żeby odswieżyć listę rodzica if(defaults.zframe){ var from_tabid = ctKey[$('#addajaxtab').attr('id')]; $(a).attr('from_tabid', from_tabid); } else { var from_tabid = tabid; } if(defaults.bindCard){ $('a[tabid="'+from_tabid+'"]').addClass('bindTabClass'); $(a).addClass('bindTabClass'); // $(a).attr('bindCard', from_tabid); } $(a).html(defaults.tabTitle); $(div).attr('id', 'tabview' + '_' + settings.tabBodyID + len); //classa do mobil menu $(li).addClass('pushy-link'); $(li).attr('poz', 'right'); $(li).append(a); $(div).html("Loading..."); //append to tab list tabs.append(li); $(div).addClass(settings.deactiveClass); $('#' + settings.tabBodyID).append(div); //bind all click functions to tab headers $.fn.bindTabs(); //remove close button $(a).find("span").remove(); //add tab loader $.fn.addTabLoader(a); $.ajax({ url : defaults.url, type: defaults.method, data: {tabid: tabid, from_tabid : from_tabid}, dataType: defaults.dtype }).done(function(response){ $.fn.debug('obtained response..'); $(div).html(response); //remove tab loader $(a).find("span").remove(); $.fn.addCloseBtn(a); }).fail(function(){ alert('Failed to load the ajax page'); $(div).remove(); $(li).remove(); }); if(defaults.switchToNewTab){ $.fn.activateTabCustom('#tabview' + '_' + settings.tabBodyID + len, tabs); } //zmianiamy tytół zakładka taki jak w iframe $(function() { var ilrefr = 0; function manipIframe(tabid) { var tab_frame = $( tabid ).find( "iframe" ); if($(tab_frame).contents().find("title").html() != undefined && $(tab_frame).contents().find("title").html() != 'Workflow'){ myToolbar(); } if (ilrefr < 10) { setTimeout(manipIframe, 200, tabid); ilrefr++; return; } } manipIframe(tabid); }); // dodajemy css do iframe addCSSlink2Frame(tabid); } else { //odświeżamy /* $.ajax({ url : defaults.url, type: defaults.method, data: {}, dataType: defaults.dtype }).done(function(response){ $.fn.debug('obtained response..'); $(rep_div).html(response); //remove tab loader // $(a).find("span").remove(); // $.fn.addCloseBtn(a); }).fail(function(){ alert('Failed to load the ajax page'); $(rep_div).remove(); // $(li).remove(); }); // dodajemy css do iframe addCSSlink2Frame(rep_div); */ } } else { $.fn.debug('Could not load the ajax url given. Please verify parameters'); } //pokazujemy ilośc otwartych zakłądek $( ".count_tabs").html($( "#addajaxtab li" ).length); } }; $.fn.initTabs = function(){ //hide all tabs other than the default tab index var ct = 0; $.fn.debug('Tab Body ID -->' + settings.tabBodyID); $.each($("#" + settings.tabBodyID + " > div"), function(idx, div){ if(ct != settings.defaultTab) { $.fn.debug('Hiding -- ' + div.outerHTML); $(div).hide(); ct = ct + 1; } else { $.fn.debug('Showing -- ' + div.outerHTML); ct = ct + 1; } }); //add the selected class to the title also $.fn.debug(tabs); $.fn.debug('Tab Lengths --> ' + tabs.find("li").length); if(settings.defaultTab < tabs.find("li").length) { this.debug('setting active tab --> Index ' + settings.defaultTab); $(tabs.find("li")[settings.defaultTab]).removeClass(settings.deactiveClass); $(tabs.find("li")[settings.defaultTab]).addClass(settings.activeClass); ctTab[tabs.attr('id')] = $(tabs.find("li")[0]).find("a"); ctKey[tabs.attr('id')] = $(tabs.find("li")[0]).find("a").attr('tabID'); } else { $.fn.debug('Index ' + settings.defaultTab + ' does not map to li'); } //add close buttons as neccessary to all tabs and bind clicks this.bindTabs(); //add tabs to the list tabList[tabs.attr('id')] = settings.tabBodyID; }; this.initTabs(); }; $.addDynaTab = function(options){ var settings = $.extend({ type : 'html', //html or ajax or div url : '', //mandatory for ajax requests html : '', // mandatory for html content divID : '', //mandatory for div method method: 'post', //get or post for ajax urls dtype : 'html', //json/html/text for ajax urls params: {}, tabID : '', tabTitle : 'New Tab', bindCard : false, zframe : false },options); if(settings.tabID.length > 0) { $.fn.addNewTab(settings, tabList[settings.tabID]); } else { $.fn.debug('Please enter the tab id parameter'); } }; $.fn.removeDynaTab = function(options){ }; $.fn.logicRefresh = function(from_tabid, ahref){ try { var tab_frame = $( from_tabid ).find( "iframe" ); var tab_frame_src = $(tab_frame).attr('src'); var ref = true; // bo przyciski search są na każdej liście nie spójne if (tab_frame_src.indexOf('es_brange.php') > -1){ // tab_frame[0].contentWindow.$('#filtr-form').submit(); // podswietlanie rekordu //przerobić na odświeżanie tylko konkretnego rekordu var tabid = $(ahref).attr('tabid'); var tab_frame_tabid = $( tabid ).find( "iframe" ); var tab_frame_src_tabid = $(tab_frame_tabid).attr('src'); if (tab_frame_src_tabid.indexOf('branch_id') > -1){ var getframe = tab_frame[0].contentWindow.location.href; var branch_id = findGetParameter(tab_frame_src_tabid, 'branch_id'); var combobox_options_filtr = tab_frame[0].contentWindow.$('#combobox_options_filtr').val(); var combobox_options = tab_frame[0].contentWindow.$('#combobox_options').val(); if(branch_id != null){ var sel_row = tab_frame[0].contentWindow.$('#rec_' + branch_id).parent().parent().parent(); // pobieramy wartości na nowo z get parametrami getframe = getframe.replace("#", "&"); if(combobox_options_filtr != null){ getframe = getframe + '&combobox_options_filtr='+ combobox_options_filtr; } var ajurl = getframe + "&hname=es_brangePage_modal_view&tr=1&pk0=" + branch_id; $.ajax({ type: "GET", url: ajurl, async: true, success: function(msg) { // alert(msg); if(msg == 'FALSE'){ del = true; $(sel_row).hide("slow"); // alert('USUWAM '); } else { var msgTDVal = msg.split('|@|'); var ln = msgTDVal.length; for(var i=0; i < ln; i++){ var ir = i + 2; if(ir < ln){ $( sel_row ).find('td').eq(ir).html(msgTDVal[i]); } } } $(sel_row).animate({ backgroundColor: "#bfffaa" }, 700).delay(700).animate({ backgroundColor: "#fff" }, 700); }, error: function (xhr, ajaxOptions, thrownError) { } }); } } ref = false; } if (tab_frame_src.indexOf('taskList.php') > -1){ tab_frame[0].contentWindow.search(true); ref = false; } if (tab_frame_src.indexOf('subjects.php') > -1){ tab_frame[0].contentWindow.search_button_click(); ref = false; } if (tab_frame_src.indexOf('inventoryList.php') > -1){ tab_frame[0].contentWindow.search(); ref = false; } if (tab_frame_src.indexOf('companiesList.php') > -1){ // tab_frame[0].contentWindow.search(0); ref = false; } if (tab_frame_src.indexOf('task.php') > -1){ ref = false; } if (tab_frame_src.indexOf('company.php') > -1){ ref = false; } if(ref){ $(tab_frame).attr('src', tab_frame_src); } } catch(ex) {} }; /* DO dopisanie otwieranie następnego zadania $.fn.logicRefreshNexPrev = function(branch_id, type){ var tabid = '#tabview_addajaxtabbody4'; var ahref = $("a[tabid='"+tabid+"']"); var tab_frame = $( tabid ).find( "iframe" ); var tab_frame_src = $(tab_frame).attr('src'); var from_tabid = $(ahref).attr('from_tabid'); var from_tab_frame = $( from_tabid ).find( "iframe" ); var from_tab_frame_src = $(from_tab_frame).attr('src'); try { var CookieSelRowId = from_tab_frame[0].contentWindow.showCookie('selRowId'); console.log(CookieSelRowId); var new_src = "es_task.php?branch_id=9015"; // $(tab_frame).attr('src', new_src); // addCSSlink2Frame(event.data.key); // $.fn.logicRefresh(from_tabid, ahref); } catch(ex) {} }; */ }(jQuery) );