2016-02-18 2 views
2

J'ai créé un formulaire en plein air. Je voudrais intégrer le composant d'aperçu Web sur celui-ci. I found un exemple de code source pour Alfresco 4.2.1.Afficher l'aperçu Web d'un document sur un formulaire dans la communauté de partage Alfresco 5

D'abord, il crée un fichier ftl.

<@script type="text/javascript" src="${page.url.context}/res/components/form/custom-web-preview.js"></@script> 
    <@script type="text/javascript" src="${page.url.context}/res/components/preview/web-preview.js"></@script> 
    <@script src="${url.context}/res/components/preview/web-preview.js" /> 
    <@script src="${url.context}/res/components/preview/WebPreviewer.js" /> 
    <@script src="${url.context}/res/js/flash/extMouseWheel.js" /> 
    <@script src="${url.context}/res/components/preview/StrobeMediaPlayback.js" /> 
    <@script src="${url.context}/res/components/preview/Video.js" /> 
    <@script src="${url.context}/res/components/preview/Audio.js" /> 
    <@script src="${url.context}/res/components/preview/Flash.js" /> 
    <@script src="${url.context}/res/components/preview/Image.js" /> 

<script type="text/javascript">//<![CDATA[ 
(
function() 
{ 
    new Alfresco.customControl("${fieldHtmlId}").setMessages(${messages}); 
} 
) 
(); 

//]]></script> 

<div id="${fieldHtmlId}"> 
    <div id="web-preview"> 

</div> 
</div> 

Après ajoutez le code suivant dans la méthode onReady de java script

Alfresco.util.Ajax.request(
     { 
      method: "GET", 
      url: Alfresco.constants.URL_SERVICECONTEXT + "components/preview/web-preview?nodeRef=${NODEREF}&htmlid=${ID}",, 
      successCallback: 
      { 
      fn: function(o) 
      { 
     Dom.get("web-preview").innerHTML = o.serverResponse.responseText; 
      }, 
      scope: this 
      }, 
      failureMessage: "Failed" 
     }); 
     } 

côté client Quand j'essaye cela sur 5 communauté alfresco l'échec de forme.

Est-ce possible de travailler dans la nouvelle version d'Alfresco? Où devrais-je ajouter la requête Ajax? Existe-t-il un meilleur moyen d'y parvenir?

+0

Quelle est l'erreur que vous obtenez? Vous ne vous attendez pas à ce que nous copions le code et l'essayons sur 5 pour vous à droite :) –

+0

ERREUR [extensions.webscripts.AbstractRuntime] [http-bio -8080-exec-17] Exception de executeScript - rediriger vers le modèle d'état err ou: 01190000 Impossible de traiter le modèle org/alfresco/components/form/form.get.ht ml.ftl org.springframework.extensions.webscripts.WebScriptException: 01190000 Échec t o Modèle de processus org/alfresco/components/form/form.get.html.ftl –

+0

Conseil: Si l'expression défaillante est reconnue comme juridiquement nulle/manquante, spécifiez fy une valeur par défaut avec myOptionalVar! myDefault, ou utilisez <#if myOptionalVar ??> où n-présent <#else> when-missing. (Ceci ne couvre que la dernière étape de l'expre ssion; pour couvrir toute l'expression, utilisez parenthessis: (myOptionVar.foo)! MyDefa ult, (myOptionVar.foo) L'instruction défaillante (trace de pile d'impression pour 14 more): ==> $ {page.url.context} [dans le modèle "org/alfresco/components/form/controls/web -preview.ftl" à la ligne 1, colonne 38] –

Répondre

0

Le code dans cet article est incomplet et dépend de beaucoup de code personnalisé qui n'a pas été inclus.

Il est clair pour moi:

  1. quel est-il le web-personnalisés preview.js?
  2. Qu'est-ce que la classe javascript Alfresco.customControl qui est instanciée dans le ftl?

    nouveau Alfresco. CustomControl ("$ {} fieldHtmlId"). SetMessages ($ {}) messages

  3. Quel est le javascript "côté client" dans lequel ajouter la onReady?

  4. Qu'est-ce qui tente d'appeler avec l'URL suivante?

    Alfresco.constants.URL_SERVICECONTEXT + "composants/preview/web preview? NodeRef = $ {} NODEREF & htmlid = $ {ID}"

Je ne connais pas d'espaces réservés avec la syntaxe $ {} dans la bibliothèque de partage. Dans le code de l'action parfois YAHOO.lang.substitute est utilisé pour remplacer les espaces réservés spécifiés avec la syntaxe {}, comme dans l'exemple suivant:

var templateUrl = YAHOO.lang.substitute(Alfresco.constants.URL_SERVICECONTEXT + "components/form?itemKind={itemKind}&itemId={itemId}&mode={mode}&submitType={submitType}&formId={formId}&showCancelButton=true", 
{ 
    itemKind: "type", 
    itemId: "cm:folder", 
    mode: "create", 
    submitType: "json", 
    formId: "doclib-common" 
}); 

L'objet javascript passé à la méthode est utilisée pour spécifier les valeurs réelles pour les espaces réservés. Dans le code suggéré dans l'article, je ne vois pas quel partage est supposé faire avec $ {ID} et $ {NODEREF}. Je suis désolé, mais il me semble que l'auteur de l'article vient de copier et coller du code écrit dans son projet au travail sans tester que ce qu'il a écrit était autonome et correct.