Podcast
资源发布器
处理模板时发生错误。
No error description was specified for this error; low-level message: java.lang.ClassNotFoundException: com.liferay.portlet.asset.model.AssetRenderer cannot be found by com.liferay.portal.template.freemarker_2.0.27 ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign PortalAssetRenderer = staticU... [in template "11002#11040#69601" at line 2, column 1] ----
1<div id="podcast"></div>
2<#assign PortalAssetRenderer = staticUtil["com.liferay.portlet.asset.model.AssetRenderer"] />
3<#assign DLAppLocalServiceUtil = staticUtil["com.liferay.portlet.documentlibrary.service.DLAppLocalServiceUtil"] />
4<#assign FileVersion = staticUtil["com.liferay.portal.kernel.repository.model.FileVersion"] />
5<#assign StringPool = staticUtil["com.liferay.portal.kernel.util.StringPool"] />
6<#assign HttpUtil = staticUtil["com.liferay.portal.kernel.util.HttpUtil"] />
7<#assign HtmlUtil = staticUtil["com.liferay.portal.kernel.util.HtmlUtil"] />
8
9<select id="podcastDropdown">
10 <#list entries as entry>
11
12
13 <#assign assetRenderer = entry.getAssetRenderer() />
14 <#assign entryTitle = htmlUtil.escape(assetRenderer.getTitle(locale)) />
15 <#assign viewURL = assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, entry) />
16
17 <#if assetRenderer.getType()=="document">
18
19 <#assign dlFileEntryId = assetRenderer.getClassPK() />
20 <#assign fileEntry = DLAppLocalServiceUtil.getFileEntry(dlFileEntryId) />
21 <#assign fileVersion = fileEntry.getLatestFileVersion() />
22 <#assign viewURL = themeDisplay.getPortalURL() + themeDisplay.getPathContext() + "/documents/" + fileEntry.getGroupId() + StringPool.SLASH + fileEntry.getFolderId() + StringPool.SLASH + HttpUtil.encodeURL(HtmlUtil.unescape(fileEntry.getTitle())) + StringPool.SLASH + fileEntry.getUuid() + "?version=" + fileVersion.getVersion() />
23
24 </#if>
25
26 <option value="${viewURL}">
27 Part ${entries?size - entry_index} - sections ${entryTitle}
28 </option>
29 </#list>
30</select>
31<div>
32<a href="" id="podcast-download">Download <span id="podcast-download-part"></span></a>
33</div>
34<script type="text/javascript">
35 try {
36
37 YUI().use(
38 'aui-audio',
39 function(Y) {
40 var targetUrl = Y.one("#podcastDropdown").get("options").item(0).get("value");
41 var podcastAudio = new Y.Audio(
42 {
43 boundingBox: '#podcast',
44 url: targetUrl,
45 oggUrl: targetUrl,
46
47 }
48 ).render();
49 Y.one("#podcast-download").set("href", targetUrl);
50
51 Y.one("#podcastDropdown").on("change", function(e){
52 try {
53 e.preventDefault();
54 Y.one("#podcast").empty();
55 podcastAudio = new Y.Audio({
56 boundingBox: '#podcast',
57 url: this.get("value"),
58 oggUrl: this.get("value")
59
60 });
61 Y.one("#podcast-download").set("href", this.get("value"));
62
63 } catch (err) {
64 if (console) {
65 console.log(err);
66 }
67 }
68 });
69 }
70 );
71
72 } catch (err) {
73 if (console) {
74 console.log(err);
75 }
76 }
77</script>
78<style type="text/css">
79#podcastDropdown, #podcast {
80 width: 100%;
81 margin-bottom: 15px;
82}
83#podcast-download {
84 margin-bottom: 15px;
85}
86</style>