Developer forum

Forum » Development » Ribbonbar Extension and items?

Ribbonbar Extension and items?

Martin Nielsen
Reply

Hi DW,

I'm playing around with ribbon extenders and items, and it seems that it isn't completely supported yet. But i did some hacking around anyway, and i found a few quirks, that i hope theres a workaround for.

Here are my findings:

  1. Dynamicweb.Controls.Extensibility.RibbonBarAddInTarget.General doesn't contain ItemAsPageEdit and ItemAsParagraphEdit (Or what ever the names should be). To get it working i had to add [AddInTarget("/Admin/Content/Items/Editing/ItemEdit.aspx")] to my class.
     
  2. base.Ribbon.DataContext.DataSource is null and this makes it harder to get access to the item you're editing
     
  3. PopUpWindows don't open above page. Opening a PopupWindow looks like this:

    It seems the popup window is created in the wrong frame

 

This is my extension class that provoked the above mentioned issue

using System;
using System.Collections.Generic;
using System.Linq;
using Dynamicweb.Content;
using Dynamicweb.Controls;
using Dynamicweb.Controls.Extensibility;
using Dynamicweb.Extensibility;
using Dynamicweb.Content.Items;

namespace MyNamespace.Ribbon
{
    [AddInTarget("/Admin/Content/Items/Editing/ItemEdit.aspx")]
    [AddInDescription("Tilføj Åbningstider")]
    [AddInName("OpeningHours")]    
    public class ParagraphEditAddInOpeningHours : RibbonBarAddIn
    {
        /// <summary>
        /// Initializes a new instance of the ParagraphEditAddInOpeningHours class.
        /// </summary>
        public ParagraphEditAddInOpeningHours(RibbonBar ribbon)    : base(ribbon)
        {
        }

        public override void Load()
        {
            // Create new group in ribbon
            RibbonBarGroup group = base.CreateDefaultContainer();

            // Datasource is null - So no access to the element we're rendering
            Item item = base.Ribbon.DataContext.DataSource as Item;
            
            // Workaround because we have no datasource
            var querystring = base.Page.ClientQueryString; // contains something like "PageID=62"
            var itemID = querystring.Split('=')[1];        

            // Create popup window
            PopUpWindow window = new PopUpWindow();
            window.ID = "OpeninghourWindow";
            window.AutoReload = true;
            window.ShowHelpButton = false;
            window.ContentUrl = string.Concat("/CustomModules/OpeninghoursEditor/OpeninghoursEditor.aspx?ID=", itemID);
            base.AddWindow(window);

            // Add button to ribbon
            RibbonBarButton button = new RibbonBarButton();
            button.Size = Dynamicweb.Controls.Icons.Icon.Size.Large;
            button.Text = "Åbningstider";
            button.Image = Dynamicweb.Controls.Icons.Icon.Type.AddDocument;
            button.OnClientClick = Dynamicweb.Controls.PopUpWindow.GetClientMethodCall(window, Dynamicweb.Controls.PopUpWindowMethod.Show);
            group.AddItem(button);
        }
    }
}

If i can fix any of the bullets above, please let me know :-)

Also, when do you think that you will support Ribbon extensions for Items?

// Martin.

 

 


Replies

 
Nicolai Høeg Pedersen
Reply

Hi Martin

I've registered as a bug. TFS#15250 for fix in 8.5

Thank you for the feedback!

BR Nicolai

 
Martin Nielsen
Reply

Great :-)

 

You must be logged in to post in the forum