Author: andre
Date: 2010-05-26 16:03:33 +0200 (Wed, 26 May 2010)
New Revision: 42277
Modified:
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/CreateCachesFunction.java
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/createcaches/Job.java
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/AbstractTranscoder.java
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/AnalyzerUtils.java
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/FFMpeg2TheoraAnalyzer.java
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/FFMpeg2TheoraTranscoder.java
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/FFMpegAnalyzer.java
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/FFMpegTranscoder.java
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/RecognizerTranscoder.java
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/SegmenterAnalyzer.java
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/Transcoder.java
mmbase/trunk/applications/streams/src/main/webapp/mmbase/components/streams/admin.jspx
mmbase/trunk/applications/streams/src/main/webapp/mmbase/components/streams/fragment.trs.jspx
mmbase/trunk/applications/streams/src/main/webapp/mmbase/components/streams/myfragments.jspx
Log:
porting differences from 1.9
Modified:
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/CreateCachesFunction.java
===================================================================
---
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/CreateCachesFunction.java
2010-05-26 13:47:01 UTC (rev 42276)
+++
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/CreateCachesFunction.java
2010-05-26 14:03:33 UTC (rev 42277)
@@ -31,7 +31,7 @@
import org.mmbase.util.logging.*;
/**
- * Retriggers creation of the caches.
+ * Retriggers creation of (all) caches of a source node.
*
* @author Michiel Meeuwissen
* @version $Id$
@@ -44,7 +44,11 @@
super("createcaches");
}
-
+ /**
+ * CommitProcessor is on url field of source node.
+ * @param url field url of source node
+ * @return Processor to (re)create caches nodes
+ */
protected static Processor getCacheCreator(final Field url) {
CommitProcessor commitProcessor =
url.getDataType().getCommitProcessor();
if (commitProcessor instanceof ChainedCommitProcessor) {
Modified:
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/createcaches/Job.java
===================================================================
---
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/createcaches/Job.java
2010-05-26 13:47:01 UTC (rev 42276)
+++
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/createcaches/Job.java
2010-05-26 14:03:33 UTC (rev 42277)
@@ -200,15 +200,7 @@
dest.setNodeValue("mediaprovider", mediaprovider);
dest.setNodeValue("mediafragment", mediafragment);
- Format f = jd.transcoder.getFormat();
- dest.setIntValue("format", f.toInt());
- Codec c = jd.transcoder.getCodec();
- if (c == null || c == Codec.UNKNOWN) {
- dest.setValue("codec", null);
- } else {
- dest.setIntValue("codec", c.toInt());
- }
- //dest.setNodeValue("id", Job.this.node);
+ jd.transcoder.init(dest);
File inFile = new File(processor.getDirectory(),
Job.this.node.getStringValue("url").replace("/", File.separator));
@@ -236,12 +228,6 @@
while (destFileName.length() < 1 && w < 10) {
LOG.warn("No value for field url: '" + destFileName +
"' in #" + dest.getNumber() + ", committing it again and trying again in 5 sec.
(" + w + ")");
- if (c == null || c == Codec.UNKNOWN) {
- dest.setValue("codec", null);
- } else {
- dest.setIntValue("codec", c.toInt());
- }
- dest.setIntValue("format", f.toInt());
dest.setStringValue("url", outFileName);
dest.commit();
@@ -525,9 +511,10 @@
if (future.isDone()) {
processor.runningJobs.remove(getNode().getNumber());
+ /* this makes no sence:
ready = true;
} else {
- LOG.warn("This job has not completed yet.");
+ LOG.warn("This job has not completed yet."); */
}
ready = true;
}
Modified:
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/AbstractTranscoder.java
===================================================================
---
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/AbstractTranscoder.java
2010-05-26 13:47:01 UTC (rev 42276)
+++
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/AbstractTranscoder.java
2010-05-26 14:03:33 UTC (rev 42277)
@@ -27,6 +27,7 @@
import java.lang.reflect.*;
import java.io.*;
import java.util.*;
+import org.mmbase.bridge.Node;
import org.mmbase.util.externalprocess.*;
import org.mmbase.util.WriterOutputStream;
import org.mmbase.util.MimeType;
@@ -78,7 +79,17 @@
}
}
return trans;
+ }
+ public void init(Node dest) {
+ Format f = this.getFormat();
+ dest.setIntValue("format", f.toInt());
+ Codec c = this.getCodec();
+ if (c == null || c == Codec.UNKNOWN) {
+ dest.setValue("codec", null);
+ } else {
+ dest.setIntValue("codec", c.toInt());
+ }
}
protected AbstractTranscoder() {
@@ -152,7 +163,7 @@
Field f = getClass().getDeclaredField(setting);
value = f.get(this);
} catch (NoSuchFieldException nsfe) {
- LOG.error("No such method " + methodName + " or field " +
setting + " on " + getClass());;
+ LOG.error("No such method " + methodName + " or field " +
setting + " on " + getClass());
} catch (IllegalAccessException iea) {
LOG.error(iea);
}
Modified:
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/AnalyzerUtils.java
===================================================================
---
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/AnalyzerUtils.java
2010-05-26 13:47:01 UTC (rev 42276)
+++
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/AnalyzerUtils.java
2010-05-26 14:03:33 UTC (rev 42277)
@@ -59,6 +59,7 @@
private final ChainedLogger log = new ChainedLogger(LOG);
private boolean updateSource;
+ private boolean updateDestination = false;
AnalyzerUtils(Logger... loggers) {
for (Logger l : loggers) {
@@ -72,6 +73,9 @@
public boolean getUpdateSource() {
return updateSource;
}
+ public void setUpdateDestination(boolean b) {
+ updateDestination = b;
+ }
/**
* This fixes the first part (f.e. audio/*) when needed, not the complete
MimeType.
@@ -214,6 +218,20 @@
return false;
}
+ /* Output #0, mpeg, to 'presto.mpeg': */
+ private static final Pattern PATTERN_OUTPUT = Pattern.compile("^Output
#\\d+?, (.*), to.*?");
+
+ public boolean output(String l, Node source, Node dest) {
+ Matcher m = PATTERN_OUTPUT.matcher(l);
+ if (m.matches()) {
+ log.info("### OUTPUT match: " + l);
+ if (log.isDebugEnabled()) log.debug("format: " + m.group(1));
+ updateDestination = true;
+ return true;
+ }
+ return false;
+ }
+
/* ffmpeg reports sometimes no start and on some video's bitrate: N/A */
private static final Pattern PATTERN_DURATION =
Pattern.compile("\\s*Duration: (.*?),.* bitrate:.*?");
private static final Pattern PATTERN_BITRATE =
Pattern.compile("\\s*Duration: .* bitrate: (.*?) kb/s.*?");
@@ -237,7 +255,7 @@
if (updateSource) {
source.setLongValue("length", length);
}
- if (dest != null) {
+ if (updateDestination && dest != null) {
dest.setLongValue("length", length);
}
@@ -245,8 +263,12 @@
if (m.matches()) {
if (log.isDebugEnabled()) log.debug("bitrate: " + m.group(1));
int bitrate = 1000 * Integer.parseInt(m.group(1));
- if (updateSource) source.setIntValue("bitrate", bitrate);
- if (dest != null) dest.setIntValue("bitrate", bitrate);
+ if (updateSource) {
+ source.setIntValue("bitrate", bitrate);
+ }
+ if (updateDestination && dest != null) {
+ dest.setIntValue("bitrate", bitrate);
+ }
}
m = PATTERN_START.matcher(l);
@@ -287,8 +309,12 @@
if (m.matches()) {
if (log.isDebugEnabled()) log.debug("bitrate: " + m.group(1));
int bitrate = 1000 * Integer.parseInt(m.group(1));
- if (updateSource) source.setIntValue("bitrate", bitrate);
- if (dest != null) dest.setIntValue("bitrate", bitrate);
+ if (updateSource) {
+ source.setIntValue("bitrate", bitrate);
+ }
+ if (updateDestination && dest != null) {
+ dest.setIntValue("bitrate", bitrate);
+ }
}
return true;
@@ -315,6 +341,7 @@
}
private static final Pattern PATTERN_DIMENSIONS =
Pattern.compile(".*?\\sVideo: (.*?), (.*?), ([0-9]+)x([0-9]+).*");
+ private static final Pattern VIDEOBITRATE2_PATTERN =
Pattern.compile(".*?\\sVideo: .*, (.*?) kb/s.*");
/**
* Looks for width and height when it finds a match for Video, and looks
for bitrate after that.
@@ -343,7 +370,7 @@
source.setIntValue("width", Integer.parseInt(m.group(3)));
source.setIntValue("height", Integer.parseInt(m.group(4)));
}
- if (dest != null) {
+ if (updateDestination && dest != null) {
if (dest.getIntValue("codec") < 0) {
dest.setIntValue("codec", libtoCodec(m.group(1)).toInt() );
}
@@ -352,10 +379,24 @@
}
m = VIDEOBITRATE_PATTERN.matcher(l);
+ Matcher m2 = VIDEOBITRATE2_PATTERN.matcher(l);
if (m.matches()) {
- if (log.isDebugEnabled()) log.debug("bitRate: " + m.group(1));
- if (updateSource) source.setIntValue("bitrate",
Integer.parseInt(m.group(1)));
- if (dest != null) dest.setIntValue("bitrate",
Integer.parseInt(m.group(1)));
+ if (log.isDebugEnabled()) log.debug("bitrate: " + m.group(1));
+ if (updateSource) {
+ source.setIntValue("bitrate",
Integer.parseInt(m.group(1)));
+ }
+ if (updateDestination && dest != null) {
+ dest.setIntValue("bitrate", Integer.parseInt(m.group(1)));
+ }
+ } else if (m2.matches()) {
+ if (log.isDebugEnabled()) log.debug("bitrate: " + m2.group(1));
+ int bitrate = 1000 * Integer.parseInt(m2.group(1));
+ if (updateSource) {
+ source.setIntValue("bitrate", bitrate);
+ }
+ if (updateDestination && dest != null) {
+ dest.setIntValue("bitrate", bitrate);
+ }
}
return true;
@@ -365,7 +406,6 @@
}
private static final Pattern PATTERN_AUDIO = Pattern.compile(".*?\\sAudio:
(.*?), (.*?) Hz, (stereo|mono|([0-9]+) channels), .*?");
- private static final Pattern PATTERN_BITRATE2 =
Pattern.compile("\\s*Audio: .* bitrate: (.*?) kb/s.*?");
/**
* Looks for audio channel(s).
@@ -389,13 +429,20 @@
if (source.getNodeManager().hasField("channels") && updateSource) {
if (source.getIntValue("channels") < 0)
source.setIntValue("channels", ch);
- if (source.getIntValue("codec") < 0) {
+
+ if (source.getNodeManager().hasField("acodec") &&
source.getIntValue("acodec") < 0) {
+ source.setIntValue("acodec",
libtoCodec(m.group(1)).toInt() );
+ } else if (source.getIntValue("codec") < 0) {
source.setIntValue("codec", libtoCodec(m.group(1)).toInt()
);
}
}
- if (dest != null) {
- if (dest.getIntValue("channels") < 0)
dest.setIntValue("channels", ch);
- if (dest.getIntValue("codec") < 0) {
+ if (updateDestination && dest != null) {
+ if (dest.getIntValue("channels") < 0) {
+ dest.setIntValue("channels", ch);
+ }
+ if (dest.getNodeManager().hasField("acodec") &&
dest.getIntValue("acodec") < 0) {
+ dest.setIntValue("acodec", libtoCodec(m.group(1)).toInt()
);
+ } else if (source.getIntValue("codec") < 0) {
dest.setIntValue("codec", libtoCodec(m.group(1)).toInt() );
}
}
Modified:
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/FFMpeg2TheoraAnalyzer.java
===================================================================
---
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/FFMpeg2TheoraAnalyzer.java
2010-05-26 13:47:01 UTC (rev 42276)
+++
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/FFMpeg2TheoraAnalyzer.java
2010-05-26 14:03:33 UTC (rev 42277)
@@ -52,7 +52,7 @@
private AnalyzerUtils util = new AnalyzerUtils(log);
- private List<Throwable> errors =new ArrayList<Throwable>();
+ private List<Throwable> errors = new ArrayList<Throwable>();
public void addThrowable(Throwable t) {
errors.add(t);
@@ -70,11 +70,10 @@
return;
}
- if (util.dimensions(l, source, des)) {
- return;
- }
-
if (util.audio(l, source, des)) {
+ util.setUpdateDestination(true);
+ util.audio(l, source, des);
+ util.setUpdateDestination(false);
return;
}
@@ -83,9 +82,6 @@
if (m.matches()) {
util.toVideo(source, des);
log.debug("Found " + m);
- source.setIntValue("width", Integer.parseInt(m.group(1)));
- source.setIntValue("height", Integer.parseInt(m.group(2)));
- source.commit();
des.setIntValue("width", Integer.parseInt(m.group(3)));
des.setIntValue("height", Integer.parseInt(m.group(4)));
des.commit();
@@ -95,9 +91,6 @@
if (n.matches()) {
log.debug("Found " + n);
util.toVideo(source, des);
- source.setIntValue("width",
Integer.parseInt(n.group(1)));
- source.setIntValue("height",
Integer.parseInt(n.group(2)));
- source.commit();
des.setIntValue("width", Integer.parseInt(n.group(1)));
des.setIntValue("height",
Integer.parseInt(n.group(2)));
des.commit();
@@ -112,7 +105,6 @@
long videoBitrate = Integer.parseInt(m.group(3));
bits += ((double) (audioBitrate + videoBitrate)) *
((double) pos - prevPos) * 1000;
//System.out.println("" + pos + "ms " + (audioBitrate +
videoBitrate) + " -> " + (bits / pos) + " " + (100 * pos / length) + " %");
-
prevPos = pos;
}
}
Modified:
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/FFMpeg2TheoraTranscoder.java
===================================================================
---
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/FFMpeg2TheoraTranscoder.java
2010-05-26 13:47:01 UTC (rev 42276)
+++
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/FFMpeg2TheoraTranscoder.java
2010-05-26 14:03:33 UTC (rev 42277)
@@ -73,6 +73,14 @@
width = x;
}
+ /* Saving values codec, acodec */
+ public void init(Node dest) {
+ dest.setIntValue("codec", Codec.THEORA.toInt() );
+ if (dest.getNodeManager().hasField("acodec")) {
+ dest.setIntValue("acodec", Codec.VORBIS.toInt() );
+ }
+ }
+
@Override
protected String getCommand() {
return "ffmpeg2theora";
Modified:
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/FFMpegAnalyzer.java
===================================================================
---
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/FFMpegAnalyzer.java
2010-05-26 13:47:01 UTC (rev 42276)
+++
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/FFMpegAnalyzer.java
2010-05-26 14:03:33 UTC (rev 42277)
@@ -84,6 +84,11 @@
return;
}
+ if (util.output(l, source, des)) {
+ util.setUpdateDestination(true);
+ return;
+ }
+
if (util.duration(l, source, des)) {
return;
}
Modified:
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/FFMpegTranscoder.java
===================================================================
---
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/FFMpegTranscoder.java
2010-05-26 13:47:01 UTC (rev 42276)
+++
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/FFMpegTranscoder.java
2010-05-26 14:03:33 UTC (rev 42277)
@@ -33,11 +33,10 @@
/**
- * The transcoder that uses <code>ffmpeg</code> to transcode media. Possible
parameters to be set in
+ * Transcoder that uses <code>ffmpeg</code> to transcode media. Possible
parameters to be set in
* 'createcaches.xml' are: format, forceFormat (-f), acodec (-acodec), vcodec
(-vcodec),
* vpre (-vpre), aq (-aq), ab (-ab), bitrate or b (-b), async (-async),
framesPerSecond or
- * r (-r), audioChannels or ac (-ac),
- * width and height (combined to -s).
+ * r (-r), audioChannels or ac (-ac), width and height (combined to -s).
* Others can be added as extra parameters but will be at the end of the
commands parameters. See the
* documentation for FFmpeg for more information.
*
@@ -148,6 +147,17 @@
format = Format.AVI;
}
+ /* Saving values like width, height */
+ public void init(Node dest) {
+ /*
+ if (width != null && dest.getNodeManager().hasField("width")) {
+ dest.setIntValue("width", width);
+ if (height != null) {
+ dest.setIntValue("height", height);
+ }
+ }
+ */
+ }
@Override
protected String getCommand() {
Modified:
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/RecognizerTranscoder.java
===================================================================
---
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/RecognizerTranscoder.java
2010-05-26 13:47:01 UTC (rev 42276)
+++
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/RecognizerTranscoder.java
2010-05-26 14:03:33 UTC (rev 42277)
@@ -23,6 +23,7 @@
import java.net.URI;
+import org.mmbase.bridge.Node;
import org.mmbase.applications.media.Codec;
import org.mmbase.applications.media.Format;
import org.mmbase.util.MimeType;
@@ -53,6 +54,10 @@
protected MimeType mimeType = MimeType.ANY;
+ public void init(Node d) {
+ throw new UnsupportedOperationException();
+ }
+
public void setFormat(String f) {
throw new UnsupportedOperationException();
}
Modified:
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/SegmenterAnalyzer.java
===================================================================
---
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/SegmenterAnalyzer.java
2010-05-26 13:47:01 UTC (rev 42276)
+++
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/SegmenterAnalyzer.java
2010-05-26 14:03:33 UTC (rev 42277)
@@ -65,6 +65,7 @@
public void analyze(String l, Node source, Node des) {
synchronized(util) {
+ /*
Cloud cloud = source.getCloud();
if (util.duration(l, source, des)) {
@@ -78,7 +79,7 @@
if (util.audio(l, source, des)) {
return;
}
-
+ */
// TODO: progress matcher
/*
{
Modified:
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/Transcoder.java
===================================================================
---
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/Transcoder.java
2010-05-26 13:47:01 UTC (rev 42276)
+++
mmbase/trunk/applications/streams/src/main/java/org/mmbase/streams/transcoders/Transcoder.java
2010-05-26 14:03:33 UTC (rev 42277)
@@ -21,12 +21,11 @@
package org.mmbase.streams.transcoders;
-
import java.net.*;
+import org.mmbase.bridge.Node;
import org.mmbase.applications.media.*;
import org.mmbase.util.logging.*;
-
/**
* Representation of one transcoding action. Instances should cloned before
usage, so the transcoder
* needs not be stateless.
@@ -44,6 +43,12 @@
Codec getCodec();
/**
+ * Init the transcoder and destination node with appropiate values.
+ * @param destination stream destination Node
+ */
+ void init(Node destination);
+
+ /**
* Transcode a file to another, follow the process with a logger.
* @param in
* @param out
Modified:
mmbase/trunk/applications/streams/src/main/webapp/mmbase/components/streams/admin.jspx
===================================================================
---
mmbase/trunk/applications/streams/src/main/webapp/mmbase/components/streams/admin.jspx
2010-05-26 13:47:01 UTC (rev 42276)
+++
mmbase/trunk/applications/streams/src/main/webapp/mmbase/components/streams/admin.jspx
2010-05-26 14:03:33 UTC (rev 42277)
@@ -41,6 +41,14 @@
<table summary="mediafragments">
<caption>Recent mediafragments</caption>
+ <tr>
+ <th>#</th>
+ <th>title or url</th>
+ <th>mimetype</th>
+ <th>size</th>
+ <th>sourcenode, builder</th>
+ <th>action</th>
+ </tr>
<mm:listnodescontainer type="${type}">
<mm:sortorder field="number" direction="down" />
<mm:offset value="${page * pagesize}" />
Modified:
mmbase/trunk/applications/streams/src/main/webapp/mmbase/components/streams/fragment.trs.jspx
===================================================================
---
mmbase/trunk/applications/streams/src/main/webapp/mmbase/components/streams/fragment.trs.jspx
2010-05-26 13:47:01 UTC (rev 42276)
+++
mmbase/trunk/applications/streams/src/main/webapp/mmbase/components/streams/fragment.trs.jspx
2010-05-26 14:03:33 UTC (rev 42277)
@@ -7,29 +7,26 @@
<mm:listnodes id="fragment">
<tr>
- <th>
- <mm:nodeinfo type="nodemanager"/>
- </th><th>
- <mm:field name="number" />
- </th><th colspan="4">
- <mm:nodeinfo type="gui" />
- </th><th colspan="99" />
+ <th><mm:field name="number" /></th>
+ <th colspan="3"><mm:nodeinfo type="gui" /></th>
+ <th><mm:nodeinfo type="nodemanager" /></th>
+ <th colspan="3" />
</tr>
<mm:listfunction name="filteredurls">
<c:if test="${_.main}">
<c:set var="source" value="${_.source.number}" />
<tr>
- <th>${_.source.builder.tableName}</th>
<td>${_.source.number}</td>
<td>
- <jsp:text>${_.state}</jsp:text>
- ${_.mimeType}
- ${_.dimension}
+ <strong><a href="${mm:escape('text/xml',
_.URL)}"><mm:escape>${_.URL}</mm:escape></a></strong>
</td>
- <td>
- <a href="${mm:escape('text/xml',
_.URL)}"><mm:escape>${_.URL}</mm:escape></a>
- </td>
- <td colspan="2">
+ <td> ${_.mimeType} </td>
+ <td> ${_.dimension} </td>
+ <td> ${_.source.builder.tableName} </td>
+ <td>${_.state}</td>
+ </tr><tr>
+ <td />
+ <td colspan="4">
<mm:function set="streams" name="getJob" referids="_n...@node">
JOB: ${_.class}<br />
</mm:function>
@@ -71,26 +68,30 @@
<mm:listfunction name="filteredurls">
<c:if test="${!_.main}">
<tr>
- <th>${_.source.builder.tableName}</th>
- <td>${_.source.number}</td>
+ <td> ${_.source.number} </td>
<td>
- <jsp:text>${_.state}</jsp:text>
- ${_.mimeType}
- ${_.dimension}
+ <strong><a href="${mm:escape('text/xml',
_.URL)}"><mm:escape>${_.URL}</mm:escape></a></strong>
</td>
+ <td> ${_.mimeType} </td>
<td>
- <a href="${mm:escape('text/xml',
_.URL)}"><mm:escape>${_.URL}</mm:escape></a>
- </td>
- <mm:node number="${_.source.number}" notfound="skip" id="cache">
- <td>
+ ${_.dimension}
+ <mm:node number="${_.source.number}" notfound="skip">
<mm:hasfield name="label">
- <mm:field name="label" /><br />
- </mm:hasfield>
- <mm:hasfield name="id">
- <mm:field name="id" />
+ <mm:field
name="label"><mm:isnotempty>${_}</mm:isnotempty></mm:field>
</mm:hasfield>
+ </mm:node>
</td>
<td>
+ <mm:node number="${_.source.number}" notfound="skip">
+ <mm:hasfield name="id"><mm:field name="id" />, </mm:hasfield>
+ </mm:node>
+ ${_.source.builder.tableName}
+ </td>
+ <td>${_.state}</td>
+ </tr><tr>
+ <td />
+ <mm:node number="${_.source.number}" notfound="skip" id="cache">
+ <td colspan="4">
<mm:hasfield name="key">
<mm:field name="key" />
</mm:hasfield>
Modified:
mmbase/trunk/applications/streams/src/main/webapp/mmbase/components/streams/myfragments.jspx
===================================================================
---
mmbase/trunk/applications/streams/src/main/webapp/mmbase/components/streams/myfragments.jspx
2010-05-26 13:47:01 UTC (rev 42276)
+++
mmbase/trunk/applications/streams/src/main/webapp/mmbase/components/streams/myfragments.jspx
2010-05-26 14:03:33 UTC (rev 42277)
@@ -10,6 +10,14 @@
<table summary="my fragments">
<caption><mm:cloudinfo type="user" id="currentuser" /></caption>
+ <tr>
+ <th>#</th>
+ <th>title or url</th>
+ <th>mimetype</th>
+ <th>size</th>
+ <th>sourcenode, builder</th>
+ <th>action</th>
+ </tr>
<mm:listnodescontainer type="mediafragments">
<mm:constraint field="owner"
value="${requestScope['org.mmbase.cloud'].user.ownerField}" />
<mm:maxnumber value="100" />
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs