コード例 #1
0
        protected override void Render(HtmlTextWriter writer)
        {
            if (Asset.IsNull)
            {
                // No asset
                WriteImage(writer, "~/Images/Spacer.gif");
                return;
            }

            if (!EntitySecurityManager.CanUserViewAssetPreview(SessionInfo.Current.User, Asset))
            {
                // Access denied
                WriteImage(writer, "~/Images/Spacer.gif");
                return;
            }

            // The asset has not been marked as processed, so show a 'processing' image placeholder
            // instead, even if the filepath is not empty.  This is because the file may exist, but
            // may still have data being written to it by another process, so we don't have any
            // guarantee that it's safe to display to the user.
            if (!Asset.IsProcessed)
            {
                WriteImage(writer, "~/Images/Asset/Previews/Processing.gif");
                return;
            }

            // Get asset File Info
            AssetPreviewInfo info = new AssetPreviewInfo(Asset);

            // If we don't have an asset preview file. Show a placeholder image instead.
            if (!info.FileExists)
            {
                WriteImage(writer, "~/Images/Asset/Previews/Unavailable.gif");
                return;
            }

            // Setup variables to be replaced
            string assetPreviewFileExtension = StringUtils.GetFileExtension(info.FilePath);
            string assetPreviewUrl           = AssetFileUrlHelper.GetPreviewUrl(Asset.AssetId);
            string assetPreviewRelativeUrl   = ResolveUrl(assetPreviewUrl);
            string assetPreviewAbsoluteUrl   = SiteUtils.GetWebsiteUrl(assetPreviewUrl);
            string playerId            = ClientID + "_Preview";
            string rtmpStreamingServer = ConfigurationManager.AppSettings.GetValue("RTMPStreamingServer");

            // If the streaming server is enabled, then hack the file extension to get the correct markup
            if (assetPreviewFileExtension == "flv" && !StringUtils.IsBlank(rtmpStreamingServer))
            {
                assetPreviewFileExtension += "-streaming";
            }

            //get the plugin context type
            //use query string if specified otherwise use AdminSessionInfo
            ContextType contextType;

            if (HttpContext.Current.Request.QueryString["ctxt"] != null)
            {
                contextType = PluginManager.GetContextType(HttpContext.Current.Request.QueryString["ctxt"]);
            }
            else
            {
                contextType = SessionInfo.Current.AdminSessionInfo.AssetContext;
            }

            //get the plugin for the asset
            Plugin plugin = ContextInfo.PluginManager.GetPluginForAsset(Asset);

            //get the plugins relative URL
            string relativePluginUrl = ResolveUrl(plugin.RelativePath);

            // Get the HTML
            string markup = ContextInfo.PluginManager.GetMarkup(plugin, contextType);

            // We can override images
            if (StringUtils.IsBlank(markup) && AssetTypeChecker.IsImage(assetPreviewFileExtension))
            {
                WriteImage(writer, assetPreviewUrl);
                return;
            }

            // Otherwise, ensure we have markup
            if (string.IsNullOrEmpty(markup))
            {
                writer.Write(string.Format("[Unable to preview: {0}]", assetPreviewFileExtension));
                return;
            }

            // Replace params
            markup = markup.Replace("[ASSET-PREVIEW-URL]", assetPreviewUrl);
            markup = markup.Replace("[RELATIVE-PREVIEW-URL]", assetPreviewRelativeUrl);
            markup = markup.Replace("[ABSOLUTE-PREVIEW-URL]", assetPreviewAbsoluteUrl);
            markup = markup.Replace("[FOCUSOPEN-PREVIEW-FILENAME]", Path.GetFileName(info.FilePath));
            markup = markup.Replace("[PLAYER-ID]", playerId);
            markup = markup.Replace("[ASSET-ID]", Asset.AssetId.ToString());
            markup = markup.Replace("[ASSET-REFERENCE]", info.Asset.FileReference);
            markup = markup.Replace("[STREAMING-SERVER-URL]", rtmpStreamingServer);
            markup = markup.Replace("[USER-ID]", SessionInfo.Current.User.UserId.GetValueOrDefault().ToString());
            markup = markup.Replace("[PREVIEW-FILE-EXTENSION]", assetPreviewFileExtension);
            markup = markup.Replace("[ASSET-TYPE-ID]", Asset.AssetTypeId.ToString());
            markup = markup.Replace("[ASSET-TYPE-NAME]", Asset.AssetType.Name);
            markup = markup.Replace("[PREVIEW-AVAILABLE]", (info.PreviewAvailable ? "true" : "false"));
            markup = markup.Replace("[PLUGIN-URL]", relativePluginUrl);
            markup = markup.Replace("[SESSIONAPITOKEN]", SessionInfo.Current.User.SessionAPIToken);
            markup = markup.Replace("~/", WebUtils.GetApplicationPath());

            // Write the HTML to the page
            writer.Write(markup);
        }
コード例 #2
0
        protected override void Render(HtmlTextWriter writer)
        {
            if (Asset.IsNull)
            {
                // No asset

                WriteImage(writer, "~/Images/Asset/Previews/Unavailable.gif");
                return;
            }

            if (!EntitySecurityManager.CanUserViewAssetPreview(SessionInfo.Current.User, Asset))
            {
                // Access denied

                WriteImage(writer, "~/Images/Asset/Previews/Unavailable.gif");
                return;
            }

            // The asset has not been marked as processed, so show a 'processing' image placeholder
            // instead, even if the filepath is not empty.  This is because the file may exist, but
            // may still have data being written to it by another process, so we don't have any
            // guarantee that it's safe to display to the user.
            if (!Asset.IsProcessed)
            {
                WriteImage(writer, "~/Images/Asset/Previews/Processing.gif");
                return;
            }

            // Get asset File Info
            AssetPreviewInfo info = new AssetPreviewInfo(Asset);

            // If we don't have an asset preview file. Show a placeholder image instead.
            if (!info.FileExists)
            {
                WriteImage(writer, "~/Images/Asset/Previews/Unavailable.gif");
                return;
            }

            // Setup variables to be replaced
            string fileExtension       = StringUtils.GetFileExtension(info.FilePath);
            string assetPreviewUrl     = AssetFileUrlHelper.GetPreviewUrl(Asset.AssetId);
            string relativePreviewUrl  = ResolveUrl(assetPreviewUrl);
            string absolutePreviewUrl  = SiteUtils.GetWebsiteUrl(assetPreviewUrl);
            string playerId            = ClientID + "_Preview";
            string rtmpStreamingServer = ConfigurationManager.AppSettings.GetValue("RTMPStreamingServer");

            // If the streaming server is enabled, then hack the file extension to get the correct markup
            if (fileExtension == "flv" && !StringUtils.IsBlank(rtmpStreamingServer))
            {
                fileExtension += "-streaming";
            }

            //gets the plugin to be tested
            Plugin plugin = ContextInfo.PluginManager.GetAnyPluginById(PluginId);

            if (!plugin.IsNull && plugin.HasPluginFile)
            {
                //ensure asset is of the right file type or force preview set
                if (!plugin.PluginFile.FileExtensions.Contains(fileExtension, StringComparer.OrdinalIgnoreCase) && !plugin.PluginFile.ForcePreviewFormat)
                {
                    writer.Write(string.Format("[Plugin does not support file extension: {0}]", fileExtension));
                    return;
                }
            }
            else
            {
                writer.Write(string.Format("[Invalid plugin: {0}]", plugin.Name));
                return;
            }

            //get the plugins relative URL
            string relativePluginUrl = ResolveUrl(plugin.RelativePath);

            // Get the HTML
            string markup = ContextInfo.PluginManager.GetMarkup(plugin, ContextType);

            // Otherwise, ensure we have markup
            if (string.IsNullOrEmpty(markup))
            {
                writer.Write(string.Format("[Unable to preview asset: {0}]", Asset.AssetId));
                return;
            }

            // Replace params
            markup = markup.Replace("[ASSET-PREVIEW-URL]", assetPreviewUrl);
            markup = markup.Replace("[RELATIVE-PREVIEW-URL]", relativePreviewUrl);
            markup = markup.Replace("[ABSOLUTE-PREVIEW-URL]", absolutePreviewUrl);
            markup = markup.Replace("[FOCUSOPEN-PREVIEW-FILENAME]", Path.GetFileName(info.FilePath));
            markup = markup.Replace("[PLAYER-ID]", playerId);
            markup = markup.Replace("[ASSET-ID]", Asset.AssetId.ToString());
            markup = markup.Replace("[ASSET-REFERENCE]", info.Asset.FileReference);
            markup = markup.Replace("[STREAMING-SERVER-URL]", rtmpStreamingServer);
            markup = markup.Replace("[USER-ID]", SessionInfo.Current.User.UserId.GetValueOrDefault().ToString());
            markup = markup.Replace("[PREVIEW-FILE-EXTENSION]", fileExtension);
            markup = markup.Replace("[ASSET-TYPE-ID]", Asset.AssetTypeId.ToString());
            markup = markup.Replace("[ASSET-TYPE-NAME]", Asset.AssetType.Name);
            markup = markup.Replace("[PREVIEW-AVAILABLE]", (info.PreviewAvailable?"true":"false"));
            markup = markup.Replace("[PLUGIN-URL]", relativePluginUrl);
            markup = markup.Replace("~/", WebUtils.GetApplicationPath());

            // Write the HTML to the page
            writer.Write(markup);
        }