Redirection par un bouton vers un objet externe depuis la page d'accueil

@RmnVgx pour effectuer une redirection vers un formulaire, en mise à jour, directement depuis le javascript:

var objectName = "xxxObject";
var id = n;
$ui.displayForm(null, objectName, id, { nav: "add"});
1 Like

@scampano merci beaucoup, est ce qu’un exemple un peu plus poussé comprenant la liaison avec la partie html serait disponible par hasard ?

@scampano, j’ai du mal a faire fonctionner le display form, je souhaiterais connaitre comment a partir d’un clic sur un bouton dans ce qui nous sert de page d’accueil je pourrais naviguer vers une autre page :
Par exemple depuis la page d’accueil je veux afficher mon profil,
depuis la page d’acceuil je veux afficher mon tableau d’absence.
Aurais tu a disposition un modele de l’existant que je comprenne le rapport entre les differentes etapes ou les variables a utiliser pour effectuer cette action ?
Merci d’avance.

Votre besoin me semble ressembler à la notion de “raccourci” :

Bonjour, merci de votre réponse.
Par contre cela ne correspond pas a mon attente car je ne souhaites pas modifier les raccourcis de l’interface de simplicité.
Je souhaites créer un une action pour un bouton (en javascript par exemple ) qui me permettrait de naviguer a partir d’un objet externe vers un composant.
Pour remettre dans son contexte, voici l’us
En Tant Que : Alternant ( page alternant objet externe )
Je veux Que : Accéder a l’espace compteur d’absence en cliquant sur le bouton voir mes absences
Afin de : Consulter ma liste d’absence.

Dans le forum j’ai vu plusieurs cas d’utilisation de
$ui.displayform(‘mavue’, ‘mon objet’ , id ),

mais je ne sais pas comment l’utiliser dans mon cas.

Merci d’avance

Bonjour,

Votre besoin d’accès est assez flou car vous parlez d’espace compterus, de liste d’absences, de formulaire ou d’objet externe.

Les raccourcis sont habilités et donc vous pouvez ajouter les votres, l’utilisateur ne voit que les siens.
Vous pouvez aussi facilement mettre un bouton dans vos templates HTML (de la vue ou d’une ressource d’objet externe).

Pour afficher ce qui vous intéresse, il faut en connaitre la nature :

  • Un formulaire d’objet métier avec un row_id => $ui.displayForm
  • Une liste filtrée sur un objet métier => $ui.displayList
  • Une URL => $ui.loadURL (sert aussi pour un objet externe sur /ext/<MyExtObject>)
  • Un tableau croisé => $ui.displayCrosstab
    etc.

Ensuite on pourra voir de quels paramètres ces méthodes ont besoin dans vos cas d’usage.

Ce que je souhaites afficher en cliquant sur le bouton ‘voir’ est un objet externe, s’appelant CmpCompteurAbsence.

function displayEspAbs(){
	$ui.loadURL('#cmpaccueilapprenant', 'CmpCompteurAbsences',  { nav: "add"});
	}

Pour afficher un objet externe, il faut passer en paramètre une URL :

var app = $ui.getAjax(); // application services
var extobj = "CmpCompteurAbsences"; // external object name
var embedded = true; // true = no iframe, false = load the URL in a iframe
var param = null; // or string or object { key:value, ... }
var url = app.getExternalObjectURL(extobj, param, embedded);
console.log("debug url = " + url);

var ctn = null; // container null = main work zone, or any div selector
$ui.loadURL(ctn, url, { showNav:true, nav:"new" });

Quand on part d’une page d’accueil en général on met nav:"new" pour démarrer un nouveau fil d’Ariane à partir de cette URL

1 Like

Merci , par contre j’ai toujours
Uncaught ReferenceError: displayEspAbs is not defined onclick https://54.74.50.248/ui:1

La réponse est dans votre question et ne relève pas de Simplicité :

Votre bouton semble vouloir appeler une méthode displayEspAbs qui ne doit pas être déclarée dans votre Vue (block javascript), ni dans aucun autre JS chargé sur le site.

Vous pouvez aussi ajouter votre méthode dans la ressource SCRIPT de la disposition. Il convient également d’y mettre toutes vos méthodes publiques ou communes de l’application dans un namespace isolé, par exemple :

var myappTools = (function() {
  // private scope
  var x, y;
  function foo() { ... }
  function displayEspAbs() { ... }
  ...
  // expose only public methods
  return {
    displayEspAbs: displayEspAbs
    ...
  };
})();

Et d’appeler votre méthode via myappTools.displayEspAbs() dans votre bouton.

1 Like

Merci beaucoup @Francois

This topic was automatically closed 60 minutes after the last reply. New replies are no longer allowed.