--- /dev/null
+/* help button pointing to an online documentation
+ for components contained in a modal window
+*/
+/*global
+ proxmoxOnlineHelpInfo
+*/
+Ext.define('Proxmox.button.Help', {
+ extend: 'Ext.button.Button',
+ xtype: 'proxmoxHelpButton',
+
+ text: gettext('Help'),
+
+ // make help button less flashy by styling it like toolbar buttons
+ iconCls: ' x-btn-icon-el-default-toolbar-small fa fa-question-circle',
+ cls: 'x-btn-default-toolbar-small proxmox-inline-button',
+
+ hidden: true,
+
+ listenToGlobalEvent: true,
+
+ controller: {
+ xclass: 'Ext.app.ViewController',
+ listen: {
+ global: {
+ proxmoxShowHelp: 'onProxmoxShowHelp',
+ proxmoxHideHelp: 'onProxmoxHideHelp'
+ }
+ },
+ onProxmoxShowHelp: function(helpLink) {
+ var me = this.getView();
+ if (me.listenToGlobalEvent === true) {
+ me.setOnlineHelp(helpLink);
+ me.show();
+ }
+ },
+ onProxmoxHideHelp: function() {
+ var me = this.getView();
+ if (me.listenToGlobalEvent === true) {
+ me.hide();
+ }
+ }
+ },
+
+ // this sets the link and the tooltip text
+ setOnlineHelp:function(blockid) {
+ var me = this;
+
+ var info = proxmoxOnlineHelpInfo[blockid];
+ if (info) {
+ me.onlineHelp = blockid;
+ var title = info.title;
+ if (info.subtitle) {
+ title += ' - ' + info.subtitle;
+ }
+ me.setTooltip(title);
+ }
+ },
+
+ // helper to set the onlineHelp via a config object
+ setHelpConfig: function(config) {
+ var me = this;
+ me.setOnlineHelp(config.onlineHelp);
+ },
+
+ handler: function() {
+ var me = this;
+ var docsURI;
+
+ if (me.onlineHelp) {
+ var info = proxmoxOnlineHelpInfo[me.onlineHelp];
+ if (info) {
+ docsURI = window.location.origin + info.link;
+ }
+ }
+
+ if (docsURI) {
+ window.open(docsURI);
+ } else {
+ Ext.Msg.alert(gettext('Help'), gettext('No Help available'));
+ }
+ },
+
+ initComponent: function() {
+ /*jslint confusion: true */
+ var me = this;
+
+ me.callParent();
+
+ if (me.onlineHelp) {
+ me.setOnlineHelp(me.onlineHelp); // set tooltip
+ }
+ }
+});