AnsweredAssumed Answered

Custom Dialog in WCM

Question asked by vijay_alfresco on Oct 8, 2007
Latest reply on Oct 9, 2007 by vijay_alfresco
Hi,

I am trying to build my own custom dialog for WCM Add Content. I want this to be similar to the "Edit Properties Dialog" in alfresco CMS where you can edit the properties.

Following are the steps I followed, but the Edit Properties dialog is blank.

1. I Copied edit-content-properties from jsp/content folder to jsp/wcm folder

2. Added Following code in AddAvmContentDialog.java
      

protected String doPostCommitProcessing(FacesContext context, String outcome) {
………………………………………………….
this.showOtherProperties = true;
this.avmBrowseBean.setAvmActionNode(new AVMNode(this.avmService.lookup(-1, this.path)));
return "dialog:avmEditContentProperties1";}

3. Created a new class AVMEditContentPropertiesDialog.java and following is the code


package org.alfresco.web.bean.wcm;

import java.util.Map;
import org.alfresco.model.ContentModel;
import org.alfresco.service.cmr.avm.AVMService;
import org.alfresco.service.cmr.repository.ContentData;
import org.alfresco.web.bean.content.EditContentPropertiesDialog;
import org.alfresco.web.bean.repository.Node;

public class AVMEditContentPropertiesDialog extends EditContentPropertiesDialog {

   /** AVM Browse Bean reference */
   protected AVMBrowseBean avmBrowseBean;
   protected AVMService avmService;
  
  
   @Override
   public void init(Map<String, String> parameters)
   {
      super.init(parameters);
     
      // setup the editable node
      this.editableNode = initEditableNode();
     
      // special case for Mimetype - since this is a sub-property of the ContentData object
      // we must extract it so it can be edited in the client, then we check for it later
      // and create a new ContentData object to wrap it and it's associated URL
      ContentData content = (ContentData)this.editableNode.getProperties().get(ContentModel.PROP_CONTENT);
      if (content != null)
      {
         this.editableNode.getProperties().put(TEMP_PROP_MIMETYPE, content.getMimetype());
         this.editableNode.getProperties().put(TEMP_PROP_ENCODING, content.getEncoding());
      }
   }
  
   /**
    * Init the editable Node
    */
   protected Node initEditableNode()
   {
     //get the AVM path that will contain the content
     String parent = this.avmBrowseBean.getCurrentPath();

     return new AVMNode(this.avmService.lookup(-1, parent));
   }
//   public void start(ActionEvent event)
//   {
//      // NOTE: this is a temporary solution to allow us to use the new dialog
//      //       framework beans outside of the dialog framework, we need to do
//      //       this because the uploading requires a separate non-JSF form, this
//      //       approach can not be used in the current dialog framework. Until
//      //       we have a pure JSF upload solution we need this initialisation
//
//      init(null);
//   }
   /**
    * @param avmService The AVMService to set.
    */
   public void setAvmService(AVMService avmService)
   {
      this.avmService = avmService;
   }
  
   /**
    * @param avmBrowseBean    The AVMBrowseBean to set.
    */
   public void setAvmBrowseBean(AVMBrowseBean avmBrowseBean)
   {
      this.avmBrowseBean = avmBrowseBean;
   }
}


4. Entered Managed bean to faces-config-beans.xml as follows


   <managed-bean>
      <description>
         The bean that backs up the AVM Add Content Dialog
      </description>
      <managed-bean-name>AVMEditContentPropertiesDialog</managed-bean-name>
      <managed-bean-class>org.alfresco.web.bean.wcm.AVMEditContentPropertiesDialog</managed-bean-class>
      <managed-bean-scope>session</managed-bean-scope>
      <managed-property>
         <property-name>nodeService</property-name>
         <value>#{NodeService}</value>
      </managed-property>
      <managed-property>
         <property-name>dictionaryService</property-name>
         <value>#{DictionaryService}</value>
      </managed-property>
      <managed-property>
         <property-name>avmService</property-name>
         <value>#{AVMLockingAwareService}</value>
      </managed-property>
      <managed-property>
         <property-name>avmBrowseBean</property-name>
         <value>#{AVMBrowseBean}</value>
      </managed-property>
   </managed-bean>

5. Added the dialog to web-client-config-dialogs.xml as follows


         <!– Definition of the edit content properties dialog –>
         <dialog name="editContentProperties1" page="/jsp/content/wcm/edit-content-properties.jsp"
                 managed-bean="AVMEditContentPropertiesDialog" icon="/images/icons/edit_properties_large.gif"
                 title-id="modify_content_properties" description-id="edit_content_description" />

6. Added action to web-client-config-wcm-actions.xml


         <action id="edit_content">
            <permissions>
               <permission allow="true">CreateChildren</permission>
            </permissions>
            <label-id>edit_content</label-id>
            <image>/images/icons/add.gif</image>
            <action>dialog:editContentProperties1</action>
            <action-listener>#{AvmEditContentPropertiesDialog.start}</action-listener>
         </action>

When I try to add the content and click on OK button in add dialog, I am getting Edit Properties screen with no details

Please let me know where I am wrong. I am new to Alfresco.

Thanks,
Vijay

Outcomes