cancel
Showing results for 
Search instead for 
Did you mean: 

Erweiterung der Properties

marcus2012
Champ in-the-making
Champ in-the-making
Und noch einmal ein Hallo,

da ich die Properties eines Nodes erweitern wollte, habe ich ein neues Modell definiert und dies auch eingepflegt. Alle Schritte habe ich im übrigen dieser Anleitung entnommen:

http://wiki.alfresco.com/wiki/Custom_Action_UI

Mein Modell sieht wie folgt aus:

<?xml version="1.0" encoding="UTF-8"?>
<model name="preview:previewtextmodel" xmlns="http://www.alfresco.org/model/dictionary/1.0">
   <imports>
      <import uri="http://www.alfresco.org/model/dictionary/1.0" prefix="d"/>
      <import uri="http://www.alfresco.org/model/content/1.0" prefix="cm"/>
   </imports>
   <namespaces>
      <namespace uri="extension.previewtext" prefix="preview"/>
   </namespaces>
    <aspects>
      <aspect name="preview:textable">
         <title>PreviewText</title>
         <properties>
            <property name="preview:previewtext">
               <title>Text</title>
               <type>d:text</type>
               <multiple>false</multiple>
            </property>
         </properties>
      </aspect>
   </aspects>
</model>

Soweit so gut. Nun wollte ich nach meiner Definition des neuen Aspekts und des Property eine eigene Aktion einführen mit der ich dieses auch setzen kann.

Der Code für meinen Executer und Handler sehen so aus:



/**
* Vorschautexte hinzuzufuegen
*/
public class PreviewTextActionExecuter extends ActionExecuterAbstractBase {

   /**
    * Name des Konzepts
    */
   public static final String NAME = "preview";

   public static final String PARAM_TAGS = "";
   
   /**
    * NodeService fuer den Zugriff auf Nodes
    */
   private NodeService nodeService;

   /**
    * NodeServer von außerhalb setzen (für Zugriffe)
    * @param nodeService
    */
   public void setNodeService(NodeService nodeService) {
      this.nodeService = nodeService;
   }

   /**
    * Ausfuehren der ausgewaehlten Aktion
    * @param action Informationen ueber die Aktion
    * @param actionedUponNodeRef Objekt-Node
    */
   @Override
   protected void executeImpl(Action action, NodeRef actionedUponNodeRef) {
      if (this.nodeService.exists(actionedUponNodeRef) == true) {
         QName tagAspect = QName.createQName("extension.previewtext", "textable");
         if (this.nodeService.hasAspect(actionedUponNodeRef, tagAspect) == false) {
            this.nodeService.addAspect(actionedUponNodeRef, tagAspect, null);
         }
      }
   }

   @Override
   protected void addParameterDefinitions(List<ParameterDefinition> params) {
      params.add(new ParameterDefinitionImpl("previewtext",
            DataTypeDefinition.TEXT, true, getParamDisplayLabel("previewtext")));
   }
}


public class PreviewTextActionHandler extends BaseActionHandler {

   public static final String PROP_TAGS = "previewtext";

   public String getJSPPath() {
      return "/jsp/extension/previewtext.jsp";
   }

   public void prepareForSave(Map<String, Serializable> actionProps,
         Map<String, Serializable> repoProps) {
      repoProps.put(PreviewTextActionExecuter.PARAM_TAGS,
            (String) actionProps.get(PROP_TAGS));
   }

   public void prepareForEdit(Map<String, Serializable> actionProps,
         Map<String, Serializable> repoProps) {
      actionProps.put(PROP_TAGS, (String)repoProps.get(PreviewTextActionExecuter.PARAM_TAGS));
   }

   public String generateSummary(FacesContext context, IWizardBean wizard,
         Map<String, Serializable> actionProps) {
      String previewText = (String) actionProps.get(PROP_TAGS);
      if (previewText == null) {
         previewText = "";
      }

      return MessageFormat.format(
            Application.getMessage(context, "add_previewText"),
            new Object[] { previewText });
   }

}

Anmerkung: Habe mich bei der Erstellung dieser Klassen an dem Artikel und dem Tagging-Sample aus dem SDK gehalten.

Mein Problem ist nun, dass die von mir definierte Aktion nicht in der Liste der auswählbaren Aktionen angezeigt wird. Dem Artikel nach habe ich die Datei "previewtext-context.xml" mit diesem Inhalt angelegt:

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>
<beans>
   <bean id="preview.dictionaryBootstrap" parent="dictionaryModelBootstrap" depends-on="dictionaryBootstrap">
      <property name="models">
         <list>
            <value>alfresco/extension/previewTextModel.xml</value>
         </list>
      </property>
   </bean>
   <bean id="preview" class="org.alfresco.bag.preview.PreviewTextActionExecuter" parent="action-executer" >
      <property name="nodeService">
         <ref bean="nodeService" />
      </property>
   </bean>
   <bean id="preview-action-messages" parent="actionResourceBundles">
      <property name="resourceBundles">
         <list>
            <value>org.alfresco.bag.preview.preview-action-messages</value>
         </list>
      </property>
   </bean>
</beans>

Trotzdem wird mir die Aktion immer noch nicht in der Liste angezeigt. Meine Erweiterung wird zwar richtig deployed und das Modell auch geladen, nur wird die Aktion nicht angezeigt.

Hat jemand eine Idee wie ich das Problem lösen kann?
6 REPLIES 6

jpfi_4454
Champ in-the-making
Champ in-the-making
Hi,
ist Dir klar, dass du hier eine Erweiterung für den alten Alfresco Explorer (/alfresco) implementierst und die keine Extension für Share (/share) ist?
Ich glaube du hast den config-Eintrag in der web-client-config-custom.xml vergessen, ala (steht ganz unten auf der von dir genannten wiki page):
<config evaluator="string-compare" condition="Action Wizards">
   <action-handlers>
      <handler name="preview" class="org.alfresco.bag.preview.PreviewTextActionHandler" />
   </action-handlers>
</config>>

VG, Jan

marcus2012
Champ in-the-making
Champ in-the-making
Hallo,

danke für die Antwort und ja, mir ist bekannt das ich eine Erweiterung für den Alfresco Explorer implementiere.

Das ich den Eintrag in der "web-client-config-custom.xml" vergessen habe, ist mir nach etwas längerem Debugging aufgefallen, aber trotzdem danke für die Antwort.

Gruß,
Marcus

jpfi_4454
Champ in-the-making
Champ in-the-making
Hi,
naa, so war das "ist dir klar" nicht gemeint.
es ist bloß so, das auf einen älteren Alfresco-Wiki-Seiten nicht explizit gekennzeichnet ist, ob es sich um eine Wiki-Seite bzgl. des Explorer- oder des Share-Clients handelt.
Daher gibt es immer mal wieder den einen oder anderen der eine ganze Zeit an einer falschen Stelle forscht.
VG, Jan

marcus2012
Champ in-the-making
Champ in-the-making
Hallo,

ist doch kein Problem, aber ich finde so oder so, dass das Wiki ein bisschen zu wünschen übrig lässt - zumindest an einigen Stellen. Wichtige Infos wie die Version wären ja sinnvoll denke ich.

Vielleicht mache ich mal den Vorschlag dies eventuell zu ergänzen. Da vertut man sich sonst leicht (vor allem wenn man sich gerade in die Materie einließt).

Gruß,
Marcus

jpfi_4454
Champ in-the-making
Champ in-the-making
Hallo,
der Vorschlag dies zu ergänzen ist das eine. Wiki's leben von der Mitarbeit, also ergänze einfach einen Hinweis wenn Dir auffällt das einer fehlt.
VG, jan

marcus2012
Champ in-the-making
Champ in-the-making
Hallo,

okay dann werde ich den Eintrag im Wiki um einen entsprechenden Hinweis ergänzen.

Edit: Hab den Hinweis nun ergänzt in dem Artikel.

Gruß,
Marcus
Getting started

Tags


Find what you came for

We want to make your experience in Hyland Connect as valuable as possible, so we put together some helpful links.