示例#1
0
        /// <summary>
        /// Adds publising jobs to the job list control.
        /// </summary>
        private void FillJobList()
        {
            IEnumerable <PublishJobEntry> jobEntries = PublishJobHelper.GetJobs();

            if (((IList)jobEntries).Count == 0)
            {
                AddEmptyItem();
            }
            else
            {
                string selectedItemId = "";
                if (JobList.SelectedItems.Length > 0)
                {
                    selectedItemId = JobList.SelectedItems[0].ID;
                }
                JobList.Controls.Clear();
                foreach (var job in jobEntries)
                {
                    ListviewItem listItem = new ListviewItem();
                    Context.ClientPage.AddControl(JobList, listItem);
                    PopulateListviewItem(listItem, job, selectedItemId);
                }
                SheerResponse.SetInnerHtml("JobPanel", JobList);
            }
        }
        /// <summary>
        /// Cancels all publishing jobs owned by the context user.
        /// </summary>
        protected virtual void CancelJob()
        {
            Job[] jobs        = JobManager.GetJobs();
            var   publishJobs = jobs.Where(j => j.Category.StartsWith("publish") && j.Options.ContextUser == Context.User);

            if (publishJobs.Count() > 0)
            {
                foreach (var job in publishJobs)
                {
                    PublishJobHelper.CancelJob(this, job);
                }
            }
        }
        /// <summary>
        /// Cancels all publishing jobs currently running or in queued state.
        /// </summary>
        public void CancelAll()
        {
            int canceledJobsCount = 0;

            foreach (var job in PublishJobHelper.GetJobs())
            {
                if (job != null && job.Status.State != JobState.Finished)
                {
                    PublishJobHelper.CancelJob(this, job.JobHandle);
                    canceledJobsCount++;
                }
            }
            Log.Info(string.Format("Publish cancel: {0} publishing related jobs were canceled.", canceledJobsCount), this);
        }
        /// <summary>
        /// Method gets called in the pipeline to allow an interaction with a user.
        /// </summary>
        /// <param name="args"></param>
        public void Run(ClientPipelineArgs args)
        {
            Assert.ArgumentNotNull(args, "args");
            string cancelAll = args.Parameters["cancelAll"];

            if (args.Result == "yes")
            {
                if (cancelAll == "yes")
                {
                    CancelAll();
                }
                else
                {
                    CancelJob();
                }
            }
            else if (args.Result == "no")
            {
                args.AbortPipeline();
            }
            else
            {
                if (cancelAll == "yes")
                {
                    var jobs = PublishJobHelper.GetJobs(JobState.Running);
                    if (jobs.GetEnumerator().MoveNext())
                    {
                        SheerResponse.Confirm(Translate.Text("Are you sure you want to cancel all current publishing jobs?"));
                    }
                    else
                    {
                        SheerResponse.Alert(Translate.Text("There are no publishing jobs to cancel."));
                    }
                }
                else
                {
                    if (PublishJobHelper.GetSelectedJob("JobList") != null)
                    {
                        SheerResponse.Confirm(Translate.Text("Are you sure you want to cancel selected publishing job?"));
                    }
                    else
                    {
                        SheerResponse.Alert(Translate.Text("Please select a job from the list to cancel."));
                    }
                }
            }
            args.WaitForPostBack();
        }
        /// <summary>
        /// Cancels a selected publishing job in the
        /// </summary>
        protected void CancelJob()
        {
            Job job = PublishJobHelper.GetSelectedJob("JobList");

            if (job != null)
            {
                if (job.Status.State == JobState.Finished)
                {
                    SheerResponse.Alert(Translate.Text("This job has already been completed."));
                }
                else
                {
                    PublishJobHelper.CancelJob(this, job);
                }
            }
        }