2014-06-19 1 views
0

Je suis confronté à un problème avec l'ouverture d'un portlet personnalisé dans une fenêtre contextuelle.problème avec portlet liferay dans la popup

Vous trouverez ci-dessous le code d'ouverture de la fenêtre contextuelle.

LiferayPortletURL documentLibURL = PortletURLFactoryUtil.create(request, "portlet name with WAR name", themeDisplay.getPlid(), PortletRequest.RENDER_PHASE); 
documentLibURL.setWindowState(LiferayWindowState.POP_UP); 
documentLibURL.setPortletMode(PortletMode.VIEW); 

    AUI().use('aui-dialog', 'aui-io', 'event', 'event-custom', function(A) { 
     var dialog = new A.Dialog({ 
       width: 800, 
       height: 500, 
       title: 'Popup Title', 
       centered: true, 
       draggable: true, 
       modal: true 
      }).plug(A.Plugin.IO, {uri: '<%= documentLibURL.toString() %>'}).render(); 

      dialog.show(); 

     }); 

Lorsque mon portlet ne reçoit aucun appel aux services locaux, le portlet est affiché en mode contextuel. Mais après avoir ajouté du code complexe. Le portlet donne une erreur d'autorisation. "Vous n'avez pas les rôles requis pour accéder à ce portlet."

1) J'ai également ajouté true dans liferay-portlet.xml.

2) J'ai accordé des permissions à l'utilisateur invité pour la vue depuis le panneau de contrôle.

S'il vous plaît laissez-moi savoir si des changements nécessite.

Merci à l'avance

+0

suivant, je travaillais sur ce jusqu'à à présent. Je sais ça. Si je n'ajoute pas mon portlet sur une page, cette erreur arrive. Une fois que j'ajoute mon portlet à une page. Le portlet est également affiché dans le popup. C'est quelque chose comme Liferay ne reçoit aucune instance de portlet. Faites-moi savoir s'il y a une solution à cela. –

Répondre

1

appels locaux de service ne génère jamais une exception d'autorisation (PrincipalException) mais supprimer les services seront.

Vérifiez votre code que cette URL va invoquer et voyez s'il y a des appels de service de suppression. Ils sont facilement distingués. Par exemple, si c'est le service User vous travaillez avec un appel à UserLocalServiceUtil ne lancera jamais un PrincipalException mais un appel à UserServiceUtil. Vérifiez les appels que vous effectuez au *ServiceUtil et assurez-vous que l'utilisateur effectuant l'opération dispose d'un accès suffisant.

0

Quelle version de liferay votre utilisation.
Le dialogue ne fonctionnera pas dans liferay 6.2 et peut-être aussi dans 6.1, référez-vous au code ci-dessous.

function popup(url){ 

AUI().ready(function(A) { 
    AUI().use('aui-base', function(A) { 
     Liferay.Util.Window.getWindow(
      { 
       title : "Popup Tile", 
       uri: url, 
       dialog: { 
        cache: false, 
        modal: true 
       } 
      } 
     ).on('hide', function() { 
       console.log("Modal closed")}); 

    }); 
}); 
} 

si son correct ne pas oublier de le marquer comme une réponse

0

simplement ajouter dans vos portal-ext.properties le code et redémarrez le serveur

layout.show.portlet.access.denied=false