Search code examples
liferayliferay-6liferay-theme

How to add structure and template to the journal article while creating programatically


I have created structure and template through portal UI. Now I am creating the journal article programmatically in the action class. While creating a journal article in the action class I want to set the existing structure and template to this journal article. I am trying to use the following method but here what is meant by ddmStructureKey and ddmTemplateKey.

Are those related to my requirement only?

JournalArticleLocalServiceUtil.addArticle(userId, groupId, folderId, titleMap, descriptionMap, content, ddmStructureKey, ddmTemplateKey, serviceContext)

Help me out on this unknown thing. Thanks.


Solution

  • The following code i written to answer the above question and it worked out for me.Thanks to @Romeo Sheshi. I have hard coded some of the things.As per your requirement you can do whatever yo want.

    ThemeDisplay themeDisplay = (ThemeDisplay)actionRequest.getAttribute(WebKeys.THEME_DISPLAY);
                    Long parentFolderId = DLFolderConstants.DEFAULT_PARENT_FOLDER_ID;
                    DDMStructure ddmStructure=DDMStructureLocalServiceUtil.getDDMStructure(11515);
                    DDMTemplate ddmTemplate=DDMTemplateLocalServiceUtil.getDDMTemplate(11517);
                    Map<Locale,String> titleMap=new HashMap<Locale,String>();
                    titleMap.put(themeDisplay.getLocale(), "First Record");
                    String content=
                            "<root available-locales='en_US' default-locale='en_US'>"
                                    +"<dynamic-element dataType='string' indexType='keyword' name='Title' readOnly='false' repeatable='false' required='false' showLabel='true' type='text' width='small'>"
                                        +"<dynamic-content>FirstRecord</dynamic-content>"
                                    +"</dynamic-element>"
                                    +"<dynamic-element dataType='string' indexType='keyword' name='Description' readOnly='false' repeatable='false' required='false' showLabel='true' type='textarea' width='small'>"
                                    +"  <dynamic-content>This the first one doing by programatically</dynamic-content>"
                                    +"</dynamic-element>"
                                    +"<dynamic-element dataType='image' fieldNamespace='wcm' indexType='keyword' name='DamImage' readOnly='false' repeatable='false' required='false' showLabel='true' type='wcm-image' width=''>"
                                    +"  <dynamic-content>http://localhost:8080/documents/10184/0/welcome_community/0dc0adb1-b565-409a-b766-96d1e42b04fb?t=1459163274526</dynamic-content>"
                                    +"</dynamic-element>"
                                    +"<dynamic-element dataType='string' indexType='keyword' name='UserIdExcel' readOnly='false' repeatable='false' required='false' showLabel='true' type='text' width='small'>"
                                    +"  <dynamic-content>458155</dynamic-content>"
                                    +"</dynamic-element>"
                                    +"<dynamic-element dataType='string' indexType='keyword' name='Username' readOnly='false' repeatable='false' required='false' showLabel='true' type='text' width='small'>"
                                    +"  <dynamic-content>LaxmanDeepak</dynamic-content>"
                                    +"</dynamic-element>"
                                    +"<dynamic-element dataType='date' fieldNamespace='ddm' indexType='keyword' name='DateFromExcel' readOnly='false' repeatable='false' required='false' showLabel='true' type='ddm-date' width='small'>"
                                    +"<dynamic-content>03/29/2016</dynamic-content>"
                                    +"</dynamic-element>"
                                +"</root>";
                    ServiceContext serviceContext = new ServiceContext();
                    serviceContext.setScopeGroupId(themeDisplay.getScopeGroupId());
                    serviceContext.setWorkflowAction(WorkflowConstants.ACTION_PUBLISH);
    
                    JournalArticleLocalServiceUtil.addArticle(themeDisplay.getUserId(), themeDisplay.getScopeGroupId(), parentFolderId, titleMap, null, content, ddmStructure.getStructureKey(), ddmTemplate.getTemplateKey(), serviceContext);