2015-11-17 5 views
0

Je veux ouvrir les factures de whmcs dans un nouvel onglet ou une fenêtre contextuelle. La plus grande partie de ce problème est résolue mais une chose reste un problème. J'ai utilisé quelques j pour ouvrir la facture dans un nouvel onglet, mais sur la page d'origine, après l'ouverture de la facture, il charge également et renvoie un 404. La facture s'ouvre sans aucun problème.whmcs facture dans nouvel onglet

C'est le js

  <script> 
      function OpenInNewTab(url) { 
       var win = window.open(url, '_blank'); 
       win.focus(); 
       } 
      </script> 

c'est le code pour appeler les factures et l'afficher dans une table. Note: ceci est un Smarty tpl

<tr onclick="clickableSafeRedirect(event, OpenInNewTab('viewinvoice.php?id={$invoice.id}'), false)"> 
        <td>{$invoice.invoicenum}</td> 
        <td><span class="hidden">{$invoice.normalisedDateCreated}</span>{$invoice.datecreated}</td> 
        <td><span class="hidden">{$invoice.normalisedDateDue}</span>{$invoice.datedue}</td> 
        <td>{$invoice.total}</td> 
        <td><span class="label status status-{$invoice.statusClass}">{$invoice.status}</span></td> 
        <td class="responsive-edit-button" style="display: none;" > 
         <a href="viewinvoice.php?id={$invoice.id}" class="btn btn-block btn-info" > 
          {$LANG.manageproduct} 
         </a> 
        </td> 
       </tr> 

J'ai ajouté le OpenInNewTab dans cette ligne

<tr onclick="clickableSafeRedirect(event, OpenInNewTab('viewinvoice.php?id={$invoice.id}'), false)"> 

et ce fut le code d'origine

<tr onclick="clickableSafeRedirect(event, viewinvoice.php?id={$invoice.id}, false)"> 

Merci d'avance !!

EDIT: J'ai essayé de fusionner la fonction clickableSafeRedirect avec la fonction OpenInNewTab, ce qui a entraîné un onglet vide avec la facture chargée sur la page d'origine.

Ceci est la fonction clickableSafeRedirect

function clickableSafeRedirect(clickEvent, target, newWindow) { 

    var eventSource = clickEvent.target.tagName.toLowerCase(); 
    var eventParent = clickEvent.target.parentNode.tagName.toLowerCase(); 
    var eventTable = clickEvent.target.parentNode.parentNode.parentNode; 
    if (jQuery(eventTable).hasClass('collapsed')) { 
     // This is a mobile device sized display, and datatables has triggered folding 
     return false; 
    } 
    if(eventSource != 'button' && eventSource != 'a') { 
     if(eventParent != 'button' && eventParent != 'a') { 
      if (newWindow) { 
       window.open(target); 

      } else { 
       window.location.href = target; 

      } 
     } 
    } 
} 

Répondre

0

Cette fonction clickableSafeRedirect() dans WHMCS ont un paramètre qui permet yo d'ouvrir la nouvelle fenêtre au lieu de votre fonction personnalisée.

Retirez votre fonction OpenInNewTab() et faire ceci:

clickableSafeRedirect(event, viewinvoice.php?id={$invoice.id}, true); 
---------------------------------------------------------------^^^^ 

Réglage vrai dans le troisième paramètre ouvert dans une nouvelle fenêtre. Regardez le code dans whmcs. La définition de la fonction est:

function clickableSafeRedirect(clickEvent, target, newWindow)