Wouldn’t it be nice in SharePoint 2007 if we could put our own buttons into the publishing menu? We can...it just takes a few steps. The steps taken are determined by the master page that is used. If you are using default.master, you will need to create a delegate control. There are plenty of examples for adding your own delegate control, so I will not go into that. My delegate control was copied from the PublishingMenu.ascx. The control we want to change within the publishing console is called the QuickAccessMenu. I wanted to start a custom workflow that was part of an approval process and I wanted users to enter comments when the workflow was started. I created my own check in page that the button redirects the users to when it is clicked. My check in page requires comments and starts a workflow. To do this I created my own QuickAccessMenu control that instantiates the MS QuickAccessMenu. I then use the following code to change the functionality of the Submit for Review button:
public override void RenderControl(HtmlTextWriter writer)
{
int location = GetControlLocation();
if (location > 0)
{
Control pub = menu.FindControl("qaApprovePublish");
if (pub != null && !SPContext.Current.Web.CurrentUser.IsSiteAdmin)
pub.Visible = false;
Control ctrl = (Control)menu.Controls[location];
PublishingButton button = (PublishingButton)ctrl.Controls[0];
button.DisplayText = "Start Custom Workflow";
string url = string.Format("{2}/_layouts/CustomLayouts/CustomCheckin.aspx?List={0}&FileName={1}&Publish=true&Source={1}&ListItemID={3}", SPContext.Current.ListItem.ParentList.ID.ToString("B"), SPContext.Current.Item["FileRef"].ToString(), SPContext.Current.Web.Url, SPContext.Current.ListItem.ID);
button.ClientOnClickScript = string.Format("location.href='{0}'", url);
}
base.RenderControl(writer);
}
The code above searched for a control called “qaPublish” and changes the some properties on the button before rendering. When the control is rendered it looks like the following image:

You can add new buttons to the control as well. The button type is PublishingButton. This will allow you to start workflows from these buttons or anything else you want.