Message Boards

Créer une portlet Journal modifiée

Bastien Peyré, modified 16 Years ago.

Créer une portlet Journal modifiée

New Member Posts: 2 Join Date: 5/30/07 Recent Posts
Bonjour,

Je souhaite créer une portlet qui serait basée sur Journal, mais simplifiée (plus d'onglets structure, template ni recent), juste pour ajouter des articles.

En clair, je souhaite accélerer la contribution, c'est à dire, que l'utilisateur arriverait sur la portlet pour ajouter un article, le type, la structure et le template de l'article seraient prédéfinis dans les preferences de la portlet.

En gros le gars qui ne veut ecrire que des News avec une Structure X et un template Y, modifie une seule fois son choix dans les preferences, et ensuite il ne se consacre qu'au contenu.

Mon probleme c'est comment développer cette portlet basée sur Journal.

En suivant le Portlet development guide, j'ai essayé dans un 1er temps de copier-coller le dossier webapps\ROOT\html\portlet\journal dans webapps\ROOT\html\portlet\ext\journal2, puis de modifier les fichiers :
* portlet-ext.xml

<portlet>
	<portlet-name>EXT_2</portlet-name>
		<display-name>Journal 2</display-name>
		<portlet-class>com.liferay.portlet.StrutsPortlet</portlet-class>
		<init-param>
			<name>view-action</name>
			<value>/ext/journal2/view</value>
		</init-param>
		<expiration-cache>0</expiration-cache>
		<supports>
			<mime-type>text/html</mime-type>
		</supports>
		<resource-bundle>com.liferay.portlet.StrutsResourceBundle</resource-bundle>
		<security-role-ref>
			<role-name>power-user</role-name>
		</security-role-ref>
		<security-role-ref>
			<role-name>user</role-name>
		</security-role-ref>
	</portlet>



* liferay-portlet-ext.xml

<portlet>
	<portlet-name>EXT_2</portlet-name>
		<struts-path>ext/journal2</struts-path>
		<configuration-path>/journal/edit_configuration</configuration-path>
		<indexer-class>com.liferay.portlet.journal.util.Indexer</indexer-class>
		<scheduler-class>com.liferay.portlet.journal.job.Scheduler</scheduler-class>
		<preferences-unique-per-layout>false</preferences-unique-per-layout>
		<use-default-template>false</use-default-template>
		<restore-current-view>false</restore-current-view>
		<private-request-attributes>false</private-request-attributes>
		<private-session-attributes>false</private-session-attributes>
		<render-weight>0</render-weight>
		<add-default-resource>true</add-default-resource>
	</portlet>



* struts-config-ext.xml

		<!-- Journal 2 -->	
		<action path="/ext/journal2/edit_article" type="com.liferay.portlet.journal.action.EditArticleAction">
			<forward name="portlet.journal2.edit_article" path="portlet.journal2.edit_article" />
			<forward name="portlet.journal2.error" path="portlet.journal2.error" />
		</action>

		<action path="/ext/journal2/edit_configuration" type="com.liferay.portlet.journal.action.EditConfigurationAction">
			<forward name="portlet.journal2.edit_configuration" path="portlet.journal2.edit_configuration" />
			<forward name="portlet.journal2.error" path="portlet.journal2.error" />
		</action>

		<action path="/ext/journal2/export" type="com.liferay.portlet.journal.action.ExportAction" />

		<action path="/ext/journal2/get_article_content" type="com.liferay.portlet.journal.action.GetArticleContentAction" />

		<action path="/ext/journal2/get_articles" type="com.liferay.portlet.journal.action.GetArticlesAction" />

		<action path="/ext/journal2/get_latest_article_content" type="com.liferay.portlet.journal.action.GetLatestArticleContentAction" />

		<action path="/ext/journal2/get_structure" type="com.liferay.portlet.journal.action.GetStructureAction" />

		<action path="/ext/journal2/get_template" type="com.liferay.portlet.journal.action.GetTemplateAction" />

		<action path="/ext/journal2/select_document_library" type="com.liferay.portlet.documentlibrary.action.ViewAction">
			<forward name="portlet.document_library.error" path="portlet.document_library.error" />
			<forward name="portlet.document_library.view" path="portlet.journal2.select_document_library" />
		</action>

		<action path="/ext/journal2/select_image_gallery" type="com.liferay.portlet.imagegallery.action.ViewAction">
			<forward name="portlet.image_gallery.error" path="portlet.image_gallery.error" />
			<forward name="portlet.image_gallery.view" path="portlet.journal2.select_image_gallery" />
		</action>

		<action path="/ext/journal2/select_structure" forward="portlet.journal2.select_structure" />

		<action path="/ext/journal2/select_template" forward="portlet.journal2.select_template" />

		<action path="/ext/journal2/view" forward="portlet.journal2.view" />

		<action path="/ext/journal2/view_article_content" type="com.liferay.portlet.journal.action.ViewArticleContentAction">
			<forward name="portlet.journal2.view_article_content" path="portlet/ext/journal2/view_article_content.jsp" />
		</action>



* tiles-def-ext.xml

	<!-- Journal 2-->
	<definition name="portlet.journal2" extends="portlet" />

	<definition name="portlet.journal2.edit_article" extends="portlet.journal2">
		<put name="portlet_content" value="/portlet/ext/journal2/edit_article.jsp" />
	</definition>

	<definition name="portlet.journal2.edit_configuration" extends="portlet.portlet_configuration.edit_configuration">
		<put name="portlet_configuration_content" value="/portlet/ext/journal2/edit_configuration.jsp" />
	</definition>

	<definition name="portlet.journal2.error" extends="portlet.journal2">
		<put name="portlet_content" value="/portlet/ext/journal2/error.jsp" />
	</definition>

	<definition name="portlet.journal2.select_document_library" extends="portlet.journal2">
		<put name="portlet_content" value="/portlet/ext/journal2/select_document_library.jsp" />
	</definition>

	<definition name="portlet.journal2.select_image_gallery" extends="portlet.journal2">
		<put name="portlet_content" value="/portlet/ext/journal2/select_image_gallery.jsp" />
	</definition>

	<definition name="portlet.journal2.select_structure" extends="portlet.journal2">
		<put name="portlet_content" value="/portlet/ext/journal2/select_structure.jsp" />
	</definition>

	<definition name="portlet.journal2.select_template" extends="portlet.journal2">
		<put name="portlet_content" value="/portlet/ext/journal2/select_template.jsp" />
	</definition>

	<definition name="portlet.journal2.view" extends="portlet.journal2">
		<put name="portlet_content" value="/portlet/ext/journal2/view.jsp" />
	</definition>

	<definition name="portlet.journal2.view_article_content" extends="portlet.journal2">
		<put name="portlet_content" value="/portlet/ext/journal2/view_article_content.jsp" />
	</definition>	



* liferay-display.xml

<category name="category.journal">
			<portlet id="15" />
			<portlet id="20" />
			<portlet id="31" />
			<portlet id="56" />
			<portlet id="62" />
			<portlet id="64" />
			<portlet id="77" />
			<portlet id="EXT_2" />
</category>




J'arrive à afficher la portlet, le bouton Search affiche bien les articles, mais le bouton Add plante (page blanche) et erreur console:

13:56:54,189 WARN  [FriendlyURLServlet:109] com.liferay.portal.NoSuchLayoutException: No Layout exists with the key {ownerId=PUB.1, friendlyURL=/pictures/pointilles-liste.gif}
13:57:17,768 ERROR [PortletRequestProcessor:259] Forward does not exist


Merci
Anonymous, modified 16 Years ago.

RE: Créer une portlet Journal modifiée

Post: 1
JE relirais ton message mais je suis tout à fait d'accord la contribution fait appel à deux portlet je trouve cela dommage.

A la limite ca serait deja plus simple si les onglets de la portlet Journal était dans la partie configuration de la portlet "journal articles", par exemple. Mais le problème je crois c'est qu'il faudrait faire la meme chose avec la portlet "journal content", il faudrait donc faire une ducplication de la portlet Journal dans les deux portlet ce qui n'est pas viable en terme de maintenance du projet Liferay.

Ceci dit je n'utilise pas cette portlet "journal content" car pas assez fonctionnelle mais peut etre cela changera dans la version 4.3.
thumbnail
Ray Auge, modified 16 Years ago.

Re: [Liferay en française]Créer une portlet Journal modifiée

Liferay Legend Posts: 1197 Join Date: 2/8/05 Recent Posts
<PRE>Vous n'avez qu'à copier les fichier jsp en particulier dans votre
dossier (pas touts les fichier, seulement celles que vous changez).

ext-web/docroot/html/portlet/journal/*.jsp

ces fichiers remplacerons les fichier default du portail dans votre
deployment.

par exemple, pour effacer les onglets copier

portal-web/docroot/html/portlet/journal/view.jsp

à

ext-web/docroot/html/portlet/journal/view.jsp

et changer


<liferay-ui:tabs names="articles,structures,templates,recent" url="<%= portletURL.toString() %>" />


par


<liferay-ui:tabs names="articles" url="<%= portletURL.toString() %>" />


C'est tout.

Pour modifier les preferences copier

portal-web/docroot/html/portlet/journal/edit_configuration.jsp

à

ext-web/docroot/html/portlet/journal/edit_configuration.jsp

et faites les changement que vous voulez.

Aussi pour limiter les structures et templates visible, changer la logic
de

portal-web/docroot/html/portlet/journal/select_structure.jsp
portal-web/docroot/html/portlet/journal/select_template.jsp

emoticon

alors vous n'avez aucune configurations à fair, ou de portlet a crée.</PRE>