// For AJAX calls to get video list across web parts
        public bool AsyncVideoList()
        {
            string query = Page.Request.QueryString[VideoCloudWebPart.QueryStringKeyAsyncQueryText];

            if (query != null)
            {
                VideoCloudWebPartUserControl videoCloud = new VideoCloudWebPartUserControl();
                BCAPI api = videoCloud.CreateAPI(this.configProvider);

                if (api != null)
                {
                    string chooser = Page.Request.QueryString[VideoCloudWebPart.QueryStringKeyAsyncChooserText];
                    string[] result = null;
                    int pageNumber = 0;

                    if (!string.IsNullOrEmpty(Page.Request.QueryString[Util.PagingKey]))
                    {
                        pageNumber = int.Parse(Page.Request.QueryString[Util.PagingKey]);
                    }

                    query = query.Trim();

                    if (string.IsNullOrEmpty(chooser))
                    {
                        result = Util.GetAllVideos(api, pageNumber, query);
                    }
                    else
                    {
                        chooser = chooser.Trim();

                        if (chooser == "PlaylistId")
                        {
                            // Playlists
                            if (this._playlistCache == null)
                            {
                                result = Util.GetAllPlaylists(api, pageNumber, query);
                                this._playlistCache = result;
                            }
                            else
                            {
                                result = this._playlistCache;
                            }
                        }
                        else
                        {
                            // Videos
                            if (this._videoListCache == null)
                            {
                                result = Util.GetAllVideos(api, pageNumber, query);
                                this._videoListCache = result;
                            }
                            else
                            {
                                result = this._videoListCache;
                            }
                        }
                    }

                    if (result == null)
                    {
                        result = new string[0];
                    }

                    string[] pagePath = Page.Request.FilePath.Split("/".ToCharArray());
                    string t = DateTime.Now.Ticks.ToString();
                    string pagingLink = pagePath[pagePath.Length - 1] + "?" + VideoCloudWebPart.QueryStringKeyAsyncQueryText + "=" + HttpUtility.UrlEncode(query) + "&t=" + t;

                    if (!string.IsNullOrEmpty(chooser))
                    {
                        pagingLink += "&" + VideoCloudWebPart.QueryStringKeyAsyncChooserText + "=" + HttpUtility.UrlEncode(chooser);
                    }

                    string resultJson = string.Format(
                         @"<script language=""javascript"" type=""text/javascript"" charset=""utf-8"">/*<![CDATA[*/
                            var vcAsyncVideoCount = {0};
                            var vcAsyncVideoResults = [{1}];
                            var vcAsyncVideoPaging = '{2}';
                        /*]]>*/</script>", result.Length, string.Join(",", result), Util.GetPaging(pageNumber, 50, result.Length, pagingLink));

                    // Clear the response and just display the results
                    Page.Response.Clear();
                    Page.Response.Write(resultJson);
                    Page.Response.Flush();
                    Page.Response.End();

                    return true;
                }
            }

            return false;
        }
コード例 #2
0
        // For AJAX calls to get video list across web parts
        public bool AsyncVideoList()
        {
            bool   returnValue = false;
            int    resultCount = 0;
            string resultItems = "";
            int    pageNumber  = 0;
            string pagingLink  = "";

            string query = "";

            if (Page.Request.QueryString[VideoCloudWebPart.QueryStringKeyAsyncQueryText] != null)
            {
                query = Page.Request.QueryString[VideoCloudWebPart.QueryStringKeyAsyncQueryText];
            }
            string order = "";

            if (Page.Request.QueryString[VideoCloudWebPart.QueryStringKeyAsyncOrder] != null)
            {
                order = Page.Request.QueryString[VideoCloudWebPart.QueryStringKeyAsyncOrder];
            }
            string sort = "";

            if (Page.Request.QueryString[VideoCloudWebPart.QueryStringKeyAsyncSort] != null)
            {
                sort = Page.Request.QueryString[VideoCloudWebPart.QueryStringKeyAsyncSort];
            }
            if (query != null)
            {
                VideoCloudWebPartUserControl videoCloud = new VideoCloudWebPartUserControl();
                BCAPI api = videoCloud.CreateAPI(this.configProvider);

                if (api != null)
                {
                    string   chooser = Page.Request.QueryString[VideoCloudWebPart.QueryStringKeyAsyncChooserText];
                    string[] result  = null;

                    if (!string.IsNullOrEmpty(Page.Request.QueryString[Util.PagingKey]))
                    {
                        pageNumber = int.Parse(Page.Request.QueryString[Util.PagingKey]);
                    }

                    query = query.Trim();

                    if (string.IsNullOrEmpty(chooser))
                    {
                        result = Util.GetAllVideos(api, pageNumber, query, order, sort);
                    }
                    else
                    {
                        chooser = chooser.Trim();

                        if (chooser == "PlaylistId")
                        {
                            // Playlists
                            if (this._playlistCache == null)
                            {
                                result = Util.GetAllPlaylists(api, pageNumber, query, order, sort);
                                this._playlistCache = result;
                            }
                            else
                            {
                                result = this._playlistCache;
                            }
                        }
                        else
                        {
                            // Videos
                            if (this._videoListCache == null)
                            {
                                result = Util.GetAllVideos(api, pageNumber, query, order, sort);
                                this._videoListCache = result;
                            }
                            else
                            {
                                result = this._videoListCache;
                            }
                        }
                    }

                    if (result == null)
                    {
                        result = new string[0];
                    }

                    string[] pagePath = Page.Request.FilePath.Split("/".ToCharArray());
                    string   t        = DateTime.Now.Ticks.ToString();
                    pagingLink = pagePath[pagePath.Length - 1] + "?" + VideoCloudWebPart.QueryStringKeyAsyncQueryText + "=" + HttpUtility.UrlEncode(query) + "&t=" + t;

                    if (!string.IsNullOrEmpty(chooser))
                    {
                        pagingLink += "&" + VideoCloudWebPart.QueryStringKeyAsyncChooserText + "=" + HttpUtility.UrlEncode(chooser);
                    }

                    resultCount = result.Length;
                    resultItems = string.Join(",", result);

                    returnValue = true;
                }

                string resultJson = string.Format(
                    @"<script language=""javascript"" type=""text/javascript"" charset=""utf-8"">/*<![CDATA[*/
                            var vcAsyncVideoCount = {0};
                            var vcAsyncVideoResults = [{1}];
                            var vcAsyncVideoPaging = '{2}';
                        /*]]>*/</script>", resultCount, resultItems, Util.GetPaging(pageNumber, 50, resultCount, pagingLink));

                // Clear the response and just display the results
                Page.Response.Clear();
                Page.Response.Write(resultJson);
                Page.Response.Flush();
                Page.Response.End();
            }

            return(returnValue);
        }