Add a class productLogoClass="applicationLogo"
to your logo like shown here.
Add a client side onclick event for this class which executes a partial refresh on an empty panel. This panel has a rendered property which always returns true but executes additional code if partial refresh was executed by client side onclick event.
<xe:applicationLayout
...
<xe:this.configuration>
<xe:oneuiApplication
productLogo="/logo.png"
productLogoClass="applicationLogo">
...
</xe:oneuiApplication>
</xe:this.configuration>
</xe:applicationLayout>
<xp:eventHandler
event="onClientLoad"
submit="false">
<xp:this.script><![CDATA[var applicationLogo = dojo.query('.applicationLogo')[0];
applicationLogo.onclick = function() {
XSP.partialRefreshGet("#{id:onClickApplicationLogo}",
{params: {'onClickApplicationLogo': true}})
}
]]></xp:this.script>
</xp:eventHandler>
<xp:panel id="onClickApplicationLogo">
<xp:this.rendered><![CDATA[#{javascript:
if (param.onClickApplicationLogo) {
print("onClick application icon");
context.redirectToPage("Home.xsp");
}
return true;}]]>
</xp:this.rendered>
</xp:panel>
In this example it writes "onClick application icon" to server console and redirects to "Home.xsp".