cancel
Showing results for 
Search instead for 
Did you mean: 

[SOLVED]tipos de contenido y aspectos soportados por alfresc

magno_6045
Champ in-the-making
Champ in-the-making
Buenas,
estoy intentando crear un portlet para liferay que acceda a alfresco y cree un contenido. Bien, he seguido lso ejemplos de los SDK y he conseguido crear un fichero basico sin problemas. el tema es que estoy intentando encontrar información, acerca de los aspectos que se le pueden dar a un nodo y de los tipos de contenido que soporta alfresco…
Por un lado, veo que el tipo de contenido se indica en esta linea:
ContentFormat contentFormat = new ContentFormat("text/plain", "UTF-8");
aqui le indico un txt sino me equivoco, pero queria saber donde puedo encontrar información de los parámetros que pueden ir aqui, por ejemplo pra decir que es un word o un jpg, o lo que sea… igual estoy equivocado y tampoco es aqui donde se especifica, asi que si  no lo es, decirmelo sin problemas que soy nuevo con todo esto…
y por otro lado, los aspectos, que veo que para dar el titulo y la descripción se hace asi:
NamedValue[] titledProps = new NamedValue[2]; 
             titledProps[0] = Utils.createNamedValue(Constants.PROP_TITLE, "titulo"); 
             titledProps[1] = Utils.createNamedValue(Constants.PROP_DESCRIPTION, "descripcion"); 
             CMLAddAspect addAspect = new CMLAddAspect(Constants.ASPECT_TITLED, titledProps, null, "1");
Estoy mirando la clase Constants pero claro, tiene un monton de cosas y no se si en algun lado esta especificado que aspectos se le puede dar por defecto a un documento que creas…igual es una tontería, pero he buscado en la wiki y no lo he encontrado…
Otra duda que me surge es si yo quiero que se pueda editar inline, eso es un aspecto que se le da a la hora de crear el documento, verdad? y hay un servicio web que me lo permita…el de update o algo asi?
espero haberme explicado bien, la verdad que tengo una "nube" tan difusa en la cabeza, que igual estoy preguntando tonterias super obvias…
Ah, he mirado la mini guia de creación de contenidos(que esta super bien, por cierto), pero en principio, queria ver si con lo básico, me sirve para lo que yo quiero, de ahi mis preguntas genéricas… Smiley Very Happy
Muchas gracias!
11 REPLIES 11

magno_6045
Champ in-the-making
Champ in-the-making
he probado y funciona esto para crear un word:
en el  content Format:
ContentFormat contentFormat = new ContentFormat("application/msword", "UTF-8");
y al darle el nombre, hay que ponerle la extensión .docx y al crearlo, en alfresco ya se ve como un word normal…
sigo con el resto de dudas Smiley Happy

magno_6045
Champ in-the-making
Champ in-the-making
sigo con el mismo problema…nadie sabe como puedo hacer para que al crear un documento a traves de los servicios web de alfresco, darle la "propiedad" o el aspecto de que sea editable inline???
vi que hay esta propiedad:
<app:editInline>true</app:editInline>
que creo que es la que tengo que poner a true para que al meter un contenido, en el alfresco, luego me aparezca lo del edit inline habilitado…estoy intentando hacerlo con:
NamedValue[] titledProps = new NamedValue[3]; 
                      titledProps[0] = Utils.createNamedValue(Constants.PROP_TITLE, titulo); 
                      titledProps[1] = Utils.createNamedValue(Constants.PROP_DESCRIPTION, descripcion); 
                     titledProps[1] = Utils.createNamedValue("editInline", "true"); 
                      CMLAddAspect addAspect = new CMLAddAspect(Constants.ASPECT_TITLED, titledProps, null, "1");
pero no consigo nada…alguna idea de por donde ir??
Gracias chic@s!

cesarista
World-Class Innovator
World-Class Innovator
Hola:

En los ejemplos de la SDK de Alfresco tienes ejemplos del API Web Service Client con las clases CML, que te pueden servir de guia.
Por otro lado, sólo un apunte los "tipos de contenido" a los que te refieres en el título son tipos mime o mimetypes.

Un saludo.

–C.

magno_6045
Champ in-the-making
Champ in-the-making
Gracias Cesar,
los SDK ya los estuve viendo y probando pero no he encontrado pero claro, son ejemplos concretos de casos determinados, y yo queria saber si hay algun sitio donde pueda mirar todos los valores que se le pueden dar, vamos, para ver el alcance total…por ejemplo, no hay ninguno que haga que un documento se pueda editar online y queria ver todos los casos para ver que es lo que el tendria que pasar para darle esa propiedad o aspecto…

fegor
Star Collaborator
Star Collaborator
Magno, el aspecto que tienes que asignar al documento es el aspecto "inlineeditable" y la propiedad se llama "editInline".

En javascript sería:


props = new Array(1);
props["app:editInline"] = true;
document.addAspect("app:inlineeditable", props);

En java (webservices) no lo he probado pero sería algo así como:


NamedValue[] editInlineProps = new NamedValue[1];
editInlineProps[0] = Utils.createNamedValue(Constants.PROP_EDITINLINE, "true");
CMLAddAspect addAspect = new CMLAddAspect(Constants.ASPECT_INLINEEDIT, editInlineProps, null, "1");

Un saludo.

magno_6045
Champ in-the-making
Champ in-the-making
Hola de nuevo,
ya me he aclarado bien de los aspectos y las propiedades, ya tengo claro como va, que tenia un poco de lio…
Total, que estaba intentando hacer esto que me decias, porque habia visto los nombres por el foro pero yo no los tengo ni en la clase Constant las constantes(cosa que no importa porque las creo a mano y ya esta) peeeero, tampoco tengo en el contentModel.xml ese aspecto, por lo que al intentar aplicarlo,claro, me pega un casque de que el aspecto es invalido.
Yo me he instalado la versión 3.3g, no he hecho ninguna modificación y el jar por ejemplo donde esta la clase constant es el alfresco-web-service-client-3.3g.jar
como es posible que eso que se supone que viene por defecto, y que en alfresco me funciona, no venga en el contentModel.xml? tengo que añadirlo o algo asi?
Gracias, sin el foro y sin vuestra ayuda estaria perdido :?

fegor
Star Collaborator
Star Collaborator
Es que no está en contentModel.xml, está en applicationModel.xml (fíjate en el prefijo, es appSmiley Happy

Extracto de applicationModel.xml:

      …
      <aspect name="app:inlineeditable">
         <title>Inline Editable</title>
         <properties>
            <property name="app:editInline">
               <title>Edit Inline</title>
               <type>d:boolean</type>
            </property>
         </properties>
      </aspect>
      …

Para una constante de un aspecto inlineeditable será ASPECT_INLINEEDITABLE, para una propiedad como editInline será PROP_EDITINLINE y así para las demás.

Un saludo.

magno_6045
Champ in-the-making
Champ in-the-making
no entiendo eso de los ficheros… como hago para referenciar al app: y no al cm:?? porque no veo que en el codigo que estoy poniendo y que me encuentra los aspectos en el content model, le especifique en ningun lado eso…excepto en la linea esta donde meto el nombre…tendria que crear otro nodo o algo asi?

                                     // Creamos la referencia del nodo padre, donde se añadira el contenido 
                      // En este caso el nodo padre es company_home 
                      Store storeRef = new Store(Constants.WORKSPACE_STORE, "SpacesStore"); 
                      ParentReference companyHomeParent = new ParentReference(storeRef, null, "/app:company_home", Constants.ASSOC_CONTAINS, null); 
           
                      // Asignamos un nombre para el nodo que vamos a crea en company_home 
                      String name = nombre; 
                     [b] companyHomeParent.setChildName("cm:" + name);  [/b]
                       
                      // Comienza la construcción de nodo  
                      NamedValue[] contentProps = new NamedValue[1];  
                      contentProps[0] = Utils.createNamedValue(Constants.PROP_NAME, name);  
                      CMLCreate create = new CMLCreate("1", companyHomeParent, null, null, null, Constants.TYPE_CONTENT, contentProps); 
                       
                      // Añadimos aspectos al nodo 
                      NamedValue[] titledProps = new NamedValue[2]; 
                      titledProps[0] = Utils.createNamedValue(Constants.PROP_TITLE, titulo); 
                      titledProps[1] = Utils.createNamedValue(Constants.PROP_DESCRIPTION, descripcion); 
                        CMLAddAspect addAspect = new CMLAddAspect(Constants.ASPECT_TITLED, titledProps, null, "1"); 
                     
                 
                      
                     //añado aspecto editar online
                     NamedValue[] inline=new NamedValue[1];
                     inline[0]=Utils.createNamedValue(createQNameString("http://www.alfresco.org/model/content/1.0", "editInline"), "true");
                     CMLAddAspect addAspectInline=new CMLAddAspect(createQNameString("http://www.alfresco.org/model/content/1.0", "inlineeditable"), inline, null, "1"); 
                    
                    
                      // Contruimos CML Block, con el nodo y sus aspectos 
                      CML cml = new CML(); 
                      cml.setCreate(new CMLCreate[] {create}); 
                      cml.setAddAspect(new CMLAddAspect[] {addAspect}); 
                      cml.setAddAspect(new CMLAddAspect[] {addAspectInline}); 
                    
                       
                      // Creamos y recuperamos el contenido vía Repository Web Service 
                       
                      UpdateResult[] result = WebServiceFactory.getRepositoryService().update(cml);      
                      Reference content = result[0].getDestination(); 
           
                      // 
                      // Escribimos el contenido 
                      // 
                       
                      ContentServiceSoapBindingStub contentService = WebServiceFactory.getContentService(); 
                      ContentFormat contentFormat = new ContentFormat(tipo, "UTF-8"); 
                      contentService.write(content, Constants.PROP_CONTENT,archivo , contentFormat); 
                     


si pudieras explicarme la diferencia de esos ficheros y como acceder a ellos, te lo agradeceria mucho

fegor
Star Collaborator
Star Collaborator
Tendrás que especificar que te refieres al espacio de aplicación (http://www.alfresco.org/model/application/1.0) y no de contenido (http://www.alfresco.org/model/content/1.0).

Algo así:


//añado aspecto editar online
NamedValue[] inline=new NamedValue[1];
inline[0]=Utils.createNamedValue(createQNameString("http://www.alfresco.org/model/application/1.0", "editInline"), "true");
CMLAddAspect addAspectInline=new CMLAddAspect(createQNameString("http://www.alfresco.org/model/application/1.0", "inlineeditable"), inline, null, "1");                      

Un saludo.