Javascript on a tape group

I managed to get a new ribbon group by following the article mentioned in How to create custom buttons horizontally one after another in the Tridion ribbon

Now I'm trying to run Javascript when something changes in Gui (hide / show buttons).

I have this in the configuration:

<!-- In the cfg:groups part -->
<cfg:group name="ClientGuiMods.ContentGroup" description="">
    <cfg:fileset>
        <cfg:file type="script">/Scripts/CreateRibbonGroup.js</cfg:file>
    </cfg:fileset>
    <cfg:dependencies>
        <cfg:dependency>Tridion.Web.UI.Editors.CME</cfg:dependency>
    </cfg:dependencies>
</cfg:group>

<!-- In the ribbontoolbars add part -->
<ext:extension pageid="HomePage" name="Content" assignid="ContentGroupId">
    <ext:group>~/Scripts/ContentGroup.ascx</ext:group>
    <ext:dependencies>
        <cfg:dependency>ClientGuiMods.ContentGroup</cfg:dependency>
    </ext:dependencies>
    <ext:apply>
        <ext:view name="DashboardView">
            <ext:control id="DashboardToolbar" />
        </ext:view>
    </ext:apply>
</ext:extension>

And this is in Javascript:

Type.registerNamespace("ClientGuiMods");

ClientGuiMods.ContentGroup = function ContentGroup(element)
{
    console.log('RibbonGroupCreated');
    Tridion.OO.enableInterface(this, "ClientGuiMods.ContentGroup");
    this.addInterface("Tridion.Controls.RibbonItemsGroup", [element]);
};

I tried different arguments for this.addInterface (), but it is never called. Is it correct? Or maybe there is another way to get the script called on the ribbon toolbar on the main page?

+5
source share
3 answers

@Bart, I tried the solution, but it didn’t work for this to work.

Javascripts chrome, , , - Javascript RibbonGroup ( , ).

"HomePage" RibbonPage .

, , "c: pagetype =" " RibbonPage HomePage DOM, . , script. , script .

Type.registerNamespace("ClientGuiMods");

ClientGuiMods.CreateRibbonPage = function CreateRibbonPage(element)
{
    Tridion.OO.enableInterface(this, "ClientGuiMods.CreateRibbonPage");
    this.addInterface("Tridion.Controls.RibbonPage", [element]);
};
ClientGuiMods.CreateRibbonPage.prototype.updateState = function CreateRibbonPage$updateState(stateObject)
{
    //...
    //Ribbonpage logic to update the state of your buttons and groups
};

console.log('Homepage: ' + document.getElementById('HomePage')); //.setAttribute('c:pagetype', 'HomePage');

var ClientScripts = {
    registerHomepage: function() {
        console.log('adding c:pagetype att');

        var homepage = document.getElementById('HomePage');

        if (homepage) {

            homepage.setAttribute('c:pagetype', 'HomePage');


        }
    }
}
if (document.addEventListener && !Tridion.Utils.Dom.isIE)
    $evt.addEventHandler(window, "DOMContentLoaded", ClientScripts.registerHomepage);
else
    $evt.addEventHandler(window, "readystatechange", ClientScripts.registerHomepage);

Tridion.Controls.Deck.registerPageType(ClientGuiMods.CreateRibbonPage, "HomePage");
+1

, ( ). , , , - Tridion.Cme.Command JavaScript.

, ControlResource, ContentGroup.ascx.cs

using Tridion.Web.UI.Core;
using Tridion.Web.UI.Controls;
using Tridion.Web.UI.Core.Controls;

namespace ClientGuiMods
{
    [ControlResources("ClientGuiMods.ContentGroup")]
    public class ContentGroup : TridionUserControl
    {
    }
}

Tridion.ControlBase JavaScript.

Type.registerNamespace("ClientGuiMods");

ClientGuiMods.ContentGroup = function ContentGroup(element) {
    console.log('RibbonGroupCreated');
    Tridion.OO.enableInterface(this, "ClientGuiMods.ContentGroup");
    this.addInterface("Tridion.ControlBase", [element]);
};

ClientGuiMods.ContentGroup.prototype.initialize = function ContentGroup$initialize() {
    // the control is initialized here, we can use the following properties now
    var props = this.properties;
    var controls = props.controls;
    var container = this.getElement();
};
+3

, , , , , , .

, "" , "" "" "" "". , , - Save ( Jaime details ), , SaveClose SaveNew Save._isEnabled Save._isAvailable, , , Save._execute, SaveClose SaveNew.

, , .

+1

All Articles