From: <die...@us...> - 2011-01-14 15:57:27
|
Revision: 3246 http://openutils.svn.sourceforge.net/openutils/?rev=3246&view=rev Author: diego_schivo Date: 2011-01-14 15:57:20 +0000 (Fri, 14 Jan 2011) Log Message: ----------- MEDIA-203 Playlist details: give the possibility to configure links similar to the xspf one Modified Paths: -------------- trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/lifecycle/MediaModule.java trunk/openutils-mgnlmedia/src/main/resources/mgnl-resources/media/css/playlist-view.css trunk/openutils-mgnlmedia/src/main/resources/net/sourceforge/openutils/mgnlmedia/playlist/pages/PlaylistView.html Added Paths: ----------- trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/playlist/pages/AbstractPlaylistLink.java trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/playlist/pages/MessageFormatPlaylistLink.java trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/playlist/pages/PlaylistLink.java trunk/openutils-mgnlmedia/src/main/resources/mgnl-bootstrap/media/config.modules.media.config.playlistLinks.xspf.xml Modified: trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/lifecycle/MediaModule.java =================================================================== --- trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/lifecycle/MediaModule.java 2011-01-14 10:41:44 UTC (rev 3245) +++ trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/lifecycle/MediaModule.java 2011-01-14 15:57:20 UTC (rev 3246) @@ -34,6 +34,7 @@ import net.sourceforge.openutils.mgnlmedia.media.configuration.MediaTypeConfiguration; import net.sourceforge.openutils.mgnlmedia.media.configuration.MediaUsedInManager; import net.sourceforge.openutils.mgnlmedia.media.zip.ZipImporter; +import net.sourceforge.openutils.mgnlmedia.playlist.pages.PlaylistLink; import net.sourceforge.openutils.mgnlmedia.playlist.pages.PlaylistTrackExtensionContributor; import org.slf4j.Logger; @@ -75,6 +76,8 @@ private List playlistTrackExtensionContributors = new ArrayList(); + private List playlistLinks = new ArrayList(); + /** * Constructor */ @@ -265,4 +268,27 @@ this.playlistTrackExtensionContributors.add(contributor); } + + /** + * Returns the playlistLinks. + * @return the playlistLinks + */ + public List getPlaylistLinks() + { + return playlistLinks; + } + + /** + * Sets the playlistLinks. + * @param playlistLinks the playlistLinks to set + */ + public void setPlaylistLinks(List playlistLinks) + { + this.playlistLinks = playlistLinks; + } + + public void addPlaylistLink(PlaylistLink playlistLink) + { + this.playlistLinks.add(playlistLink); + } } Added: trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/playlist/pages/AbstractPlaylistLink.java =================================================================== --- trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/playlist/pages/AbstractPlaylistLink.java (rev 0) +++ trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/playlist/pages/AbstractPlaylistLink.java 2011-01-14 15:57:20 UTC (rev 3246) @@ -0,0 +1,75 @@ +package net.sourceforge.openutils.mgnlmedia.playlist.pages; + +import info.magnolia.cms.core.Content; + + +/** + * @author ADMIN + * @version $Id: $ + */ +public abstract class AbstractPlaylistLink implements PlaylistLink +{ + + private String text; + + private String icon; + + private boolean external; + + /** + * {@inheritDoc} + */ + public String getText() + { + return text; + } + + /** + * Sets the text. + * @param text the text to set + */ + public void setText(String text) + { + this.text = text; + } + + /** + * {@inheritDoc} + */ + public String getIcon() + { + return icon; + } + + /** + * Sets the icon. + * @param icon the icon to set + */ + public void setIcon(String icon) + { + this.icon = icon; + } + + /** + * {@inheritDoc} + */ + public abstract String url(PlaylistBean playlist); + + /** + * {@inheritDoc} + */ + public boolean isExternal() + { + return external; + } + + /** + * Sets the external. + * @param external the external to set + */ + public void setExternal(boolean external) + { + this.external = external; + } + +} Added: trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/playlist/pages/MessageFormatPlaylistLink.java =================================================================== --- trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/playlist/pages/MessageFormatPlaylistLink.java (rev 0) +++ trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/playlist/pages/MessageFormatPlaylistLink.java 2011-01-14 15:57:20 UTC (rev 3246) @@ -0,0 +1,60 @@ +package net.sourceforge.openutils.mgnlmedia.playlist.pages; + +import info.magnolia.cms.core.Content; + +import java.text.MessageFormat; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + + +/** + * @author ADMIN + * @version $Id: $ + */ +public class MessageFormatPlaylistLink extends AbstractPlaylistLink +{ + + private static final Logger log = LoggerFactory.getLogger(MessageFormatPlaylistLink.class); + + private String urlFormat; + + private MessageFormat urlMessageFormat; + + /** + * Returns the urlFormat. + * @return the urlFormat + */ + public String getUrlFormat() + { + return urlFormat; + } + + /** + * Sets the urlFormat. + * @param urlFormat the urlFormat to set + */ + public void setUrlFormat(String urlFormat) + { + this.urlFormat = urlFormat; + try + { + urlMessageFormat = new MessageFormat(this.urlFormat); + } + catch (IllegalArgumentException e) + { + log.error("Invalid \"sdpUrlPattern\" (check your magnolia.properties)", e); + urlMessageFormat = null; + } + } + + /** + * {@inheritDoc} + */ + @Override + public String url(PlaylistBean playlist) + { + return urlMessageFormat.format(new Object[] { playlist.getHandle() }); + } + +} Added: trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/playlist/pages/PlaylistLink.java =================================================================== --- trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/playlist/pages/PlaylistLink.java (rev 0) +++ trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/playlist/pages/PlaylistLink.java 2011-01-14 15:57:20 UTC (rev 3246) @@ -0,0 +1,19 @@ +package net.sourceforge.openutils.mgnlmedia.playlist.pages; + + + +/** + * @author ADMIN + * @version $Id: $ + */ +public interface PlaylistLink +{ + + String getText(); + + String getIcon(); + + String url(PlaylistBean playlist); + + boolean isExternal(); +} Added: trunk/openutils-mgnlmedia/src/main/resources/mgnl-bootstrap/media/config.modules.media.config.playlistLinks.xspf.xml =================================================================== --- trunk/openutils-mgnlmedia/src/main/resources/mgnl-bootstrap/media/config.modules.media.config.playlistLinks.xspf.xml (rev 0) +++ trunk/openutils-mgnlmedia/src/main/resources/mgnl-bootstrap/media/config.modules.media.config.playlistLinks.xspf.xml 2011-01-14 15:57:20 UTC (rev 3246) @@ -0,0 +1,47 @@ +<?xml version="1.0" encoding="UTF-8"?> +<sv:node sv:name="xspf" xmlns:sv="http://www.jcp.org/jcr/sv/1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <sv:property sv:name="jcr:primaryType" sv:type="Name"> + <sv:value>mgnl:contentNode</sv:value> + </sv:property> + <sv:property sv:name="jcr:mixinTypes" sv:type="Name"> + <sv:value>mix:lockable</sv:value> + </sv:property> + <sv:property sv:name="jcr:uuid" sv:type="String"> + <sv:value>7338cdf4-3031-4aed-9239-5043d087fdff</sv:value> + </sv:property> + <sv:property sv:name="class" sv:type="String"> + <sv:value>net.sourceforge.openutils.mgnlmedia.playlist.pages.MessageFormatPlaylistLink</sv:value> + </sv:property> + <sv:property sv:name="i18nBasename" sv:type="String"> + <sv:value>net.sourceforge.openutils.mgnlmedia.media.lang.messages</sv:value> + </sv:property> + <sv:property sv:name="icon" sv:type="String"> + <sv:value>/.resources/media/icons/16/xspf.png</sv:value> + </sv:property> + <sv:property sv:name="jcr:createdBy" sv:type="String"> + <sv:value>admin</sv:value> + </sv:property> + <sv:property sv:name="text" sv:type="String"> + <sv:value>playlist.xspf.export</sv:value> + </sv:property> + <sv:property sv:name="urlFormat" sv:type="String"> + <sv:value>/playlists{0}.xspf</sv:value> + </sv:property> + <sv:node sv:name="MetaData"> + <sv:property sv:name="jcr:primaryType" sv:type="Name"> + <sv:value>mgnl:metaData</sv:value> + </sv:property> + <sv:property sv:name="jcr:createdBy" sv:type="String"> + <sv:value>admin</sv:value> + </sv:property> + <sv:property sv:name="mgnl:authorid" sv:type="String"> + <sv:value>superuser</sv:value> + </sv:property> + <sv:property sv:name="mgnl:creationdate" sv:type="Date"> + <sv:value>2011-01-14T14:42:38.829+01:00</sv:value> + </sv:property> + <sv:property sv:name="mgnl:lastmodified" sv:type="Date"> + <sv:value>2011-01-14T16:42:37.040+01:00</sv:value> + </sv:property> + </sv:node> +</sv:node> Modified: trunk/openutils-mgnlmedia/src/main/resources/mgnl-resources/media/css/playlist-view.css =================================================================== --- trunk/openutils-mgnlmedia/src/main/resources/mgnl-resources/media/css/playlist-view.css 2011-01-14 10:41:44 UTC (rev 3245) +++ trunk/openutils-mgnlmedia/src/main/resources/mgnl-resources/media/css/playlist-view.css 2011-01-14 15:57:20 UTC (rev 3246) @@ -2,15 +2,14 @@ white-space: normal; } -#xspfLink { - background-image: url("../icons/16/xspf.png"); +.playlistLink { background-repeat: no-repeat; background-position: left; padding-left: 20px; color: #000; } -#xspfLinkBox { +.playlistLinkBox { width: 100%; } Modified: trunk/openutils-mgnlmedia/src/main/resources/net/sourceforge/openutils/mgnlmedia/playlist/pages/PlaylistView.html =================================================================== --- trunk/openutils-mgnlmedia/src/main/resources/net/sourceforge/openutils/mgnlmedia/playlist/pages/PlaylistView.html 2011-01-14 10:41:44 UTC (rev 3245) +++ trunk/openutils-mgnlmedia/src/main/resources/net/sourceforge/openutils/mgnlmedia/playlist/pages/PlaylistView.html 2011-01-14 15:57:20 UTC (rev 3246) @@ -1,6 +1,7 @@ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> [#setting url_escaping_charset="UTF-8"] [#assign mgnlEl = this.getStatic("it.openutils.mgnlutils.el.MgnlUtilsElFunctions")] +[#assign mediaEl = this.getStatic("net.sourceforge.openutils.mgnlmedia.media.tags.el.MediaEl")] <html xmlns="http://www.w3.org/1999/xhtml" lang="en"> <head> <link rel="stylesheet" type="text/css" href="${this.request.contextPath}/.resources/ext/css/ext-all.css" /> @@ -188,6 +189,22 @@ } }); + var detailItems = [ + playlistForm + [#list mediaEl.module().playlistLinks as item] + , + { + xtype: 'panel', + bodyStyle: 'padding:0 35px;', + html: '<a id="playlistLink${item_index}" href="#" class="x-form-item playlistLink" [#if item.icon?exists]style="background-image: url(\'${this.request.contextPath}${item.icon}\')"[/#if]>${item.text}</a>' + }, + { + xtype: 'panel', + bodyStyle: 'padding:0 35px;', + html: '<input id="playlistLink${item_index}Box" value="[#if this.playlist?exists][#if !item.external]${mgnlEl.baseUrl()}[/#if]${item.url(this.playlist)}[/#if]" class="x-form-item playlistLinkBox hidden" readonly="readonly"/>' + } + [/#list] + ]; playlistView = new Ext.Panel({ id: 'playlistView', frame: true, @@ -224,30 +241,22 @@ } },{ columnWidth: 0.4, - items: [ - playlistForm, - { - xtype: 'panel', - bodyStyle: 'padding:0 35px;', - html: '<a id="xspfLink" href="${mgnlEl.baseUrl()}' + '/playlists' + playlist.handle + '.xml' + '" class="x-form-item">${this.msgs.get('playlist.xspf.export')}</a>' - }, - { - xtype: 'panel', - bodyStyle: 'padding:0 35px;', - html: '<input id="xspfLinkBox" class="hidden" value="${mgnlEl.baseUrl()}' + '/playlists' + playlist.handle + '.xspf' + '" class="x-form-item" readonly="readonly"/>' - } - ] + items: detailItems }], renderTo: Ext.getBody() }); grid = Ext.getCmp('playlistEntries'); - var xspfLink = Ext.get('xspfLink'); - xspfLink.on('click', function() { - Ext.get('xspfLinkBox').toggleClass('hidden'); - Ext.get('xspfLinkBox').dom.select(); - }, xspfLink, {stopEvent:true}); + var playlistLink; + [#list mediaEl.module().playlistLinks as item] + playlistLink = Ext.get('playlistLink${item_index}'); + playlistLink.on('click', function() { + var box = Ext.get('playlistLink${item_index}Box'); + box.toggleClass('hidden'); + box.dom.select(); + }, playlistLink, {stopEvent:true}); + [/#list] dd.on('beforerowmove', function(dropTarget, i1, i2){ if (i2 > i1 && i2 == grid.store.data.length - 1) return false; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |