cancel
Showing results for 
Search instead for 
Did you mean: 

custom button for different user

tavvolley
Champ on-the-rise
Champ on-the-rise
Salve a tutti mi chiamo rocco e sono un novello di alfresco!!

Vorrei fare alcune domande.
l'architettura su cui ho messo le mani in questi giorni è molto complessa e sto cercando di analizzarla (si tratta della creazione di un amp che una volta installato ti consente di creare un nuovo tipo di sito personalizzato).
Riassumo in breve il funzionamento. In fase di creazione del sito si può scegliere di fare un sito di tipo fatture.
Quando si clicca sul sito di tipo fattura viene aperto il classico sito di alfesco con l'aggiunta di un tasto "fatturazione" su una dashlet.
Cliccando sul bottone fatturazione si apre una nuova pagina di alfresco personalizzata con 5 pulsanti, una tabella…


Quello che dovrei fare io è far visualizzare i pulsanti in base all'utente loggato quando si clicca sul tasto fatturazione.

lo script che devo modificare si trova in tomcat/share/fat/components/fattura/fattura-min.js

l'instestazione del file inizia con :

<import resource="/Company Home/Data Dictionary/Scripts/library.js">


(function()
{
   /**
    * YUI Library aliases
    */
   var Dom = YAHOO.util.Dom,
      Event = YAHOO.util.Event,
      Element = YAHOO.util.Element;
   
   var varsorting = "desc";
//**************************************************************************************
//righe aggiunte
   var username = Alfresco.costants.USERNAME

   model.user = people.getPerson(Alfresco.costants.USERNAME);
        //var test = people.getPerson(Alfresco.costants.USERNAME);
        //ERRORE: ReferenceError: people is not defined
     //model.scriptUser = groups.getUser(username);
        //var test = groups.getUser(username);
        //ERRORE: ReferenceError: groups is not defined
//**************************************************************************************
  
   Event.onAvailable("facture-list", function(){
      
      
      var pesona = new people.getPerson(Alfresco.constants.USERNAME)
      // datatable object
      var source = new YAHOO.util.XHRDataSource(Alfresco.constants.PROXY_URI_RELATIVE+"gest/fat/fatture/list?site="+Alfresco.constants.SITE);
      source.responseType = YAHOO.util.XHRDataSource.TYPE_JSON;
      source.responseSchema = {
          resultsList : "results",
          fields : [
              { key: "noderef" },
         { key: "facture" },
         { key: "date" },
         { key: "owner" },
         { key: "status" },
         { key: "subject" },
         { key: "classification" },
         { key: "document" },
         { key: "note" }
         ],
          metaFields: {
              totalRecords : "total",
              startIndex: "startIndex"
          }
      };

….


ho fatto vari tentativi, ma quando aggiungo le mie righe di codice javascript va in eccezione e non carica la pagina.
<ul>
<li> prima domanda devo utilizzare service o script? quali sono le differenze fondamentali?</li>
<li> ho pensato che l'oggetto people non esista allora ho creato un bean e all'intenro del file fat-context.xml</li>
</ul>
ho aggiunto :


<bean id="peopleScript" class="org.alfresco.repo.jscript.People">
   <propery name="extensionName">
      <value>people</value>
   </property>
</bean>

ma sempre senza nessun successo.
potreste darmi una mano, oppure delle dritte su come fare ? grazie in anticipo.
2 REPLIES 2

davidciamberlan
Elite Collaborator
Elite Collaborator
Ciao Rocco,

l'errore è dovuto al fatto che stai cercando di utilizzare un oggetto di alfresco in uno script lato client.

I Root-scoped objects (come people e group) li puoi utilizzare solo se stai realizzando un webscript dove scrivi codice in javascript che viene poi tradotto in java con Rhino.

Nel tuo caso invece stai tentando di utilizzarli in un javascript puro che viene eseguito solo nel tuo browser. Tale javascript non sa dell'esistenza di alfresco ma si limita a presentare i dati che il controller gli passa.

Dovresti quindi cercare il webscript che estrae i dati da alfresco e modificare quello.

Se può esserti utile e hai il codice sorgente di Share, la parte di presentazione realizzata in html e javascript puro (con le librerie YUI)la trovi sotto il path /source/web/[…].
La parte controller in cui realizzi le interazioni con Alfresco è invece è nel path /config/alfresco/[…]



tavvolley
Champ on-the-rise
Champ on-the-rise
Ciao David ti ringrazio per le dritte.

Ora cercherò di seguire i tuoi consigli.

Ho un'altra domanda da farti, dove posso trovare una guida sugli evaluator ho visto che molte volte se ha bisogno di qualche valore di alfresco utilizza gli evaluator. Potrebbe essere anche una risoluzione alternativa del mio problema oppure creo solo un webscript come mi hai consigliato?