首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WebIDE:如何为创建Shell插件?

WebIDE:如何为创建Shell插件?
EN

Stack Overflow用户
提问于 2020-11-04 19:17:23
回答 2查看 2K关注 0票数 0

这是为了:

  • 自定义Fiori Launchpad (例如修改外壳条或添加页脚)
  • 在近地天体环境中工作(不是云铸造)
  • 在WebIDE中安装,而不是

其他指南也有一些过时的信息,比如不再有更长时间的选项,可以从“新项目模板”创建一个“Fiori Launchpad插件”。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-11-04 19:17:23

2020更新的

步骤:

  • 创建SAPUI5模板应用程序
  • 向Component.js添加以下代码(&根据您的喜好进行修改)。所有内容都将存储在Component.js中,MVC将保持不变。.then()中的所有内容都为修改FLP添加了自定义代码。

代码语言:javascript
复制
init: function () {
    // call the base component's init function
    UIComponent.prototype.init.apply(this, arguments);
    
    var rendererPromise= this._getRenderer();
    rendererPromise.then(function(oRenderer){
        // var bFull= jQuery.sap.getUriParameters().get("plugin-full");
        oRenderer.addHeaderItem("sap.ushell.ui.shell.ShellHeadItem", {
            icon:"sap-icon://add"
            ,tooltip:"Current Stage"
        },true,true);
    });
    
    // var oRenderer= sap.ushell.Container.getRenderer('fiori2');
    // oRenderer.addHeaderItem({icon:'sap-icon://add'},true,true);
    
    // enable routing
    // this.getRouter().initialize();
    // set the device model
    // this.setModel(models.createDeviceModel(), "device");
},
_getRenderer:function(){
    var that=this,
        oDeferred= new jQuery.Deferred(),
        oRenderer;
    that._oShellContainer= jQuery.sap.getObject("sap.ushell.Container");
    if(!that._oShellContainer){
        oDeferred.reject("Illegal state: shell container not available. This component must be executed in a unified shell runtime context.");
    } else{
        oRenderer= that._oShellContainer.getRenderer();
        if(oRenderer){oDeferred.resolve(oRenderer);}
        else{ //renderer not initialized yet, listen to rendererCreated event
            that._onRendererCreated= function(oEvent){
                oRenderer= oEvent.getParameter('renderer');
                if(oRenderer){oDeferred.resolve(oRenderer);}
                else{oDeferred.reject('Illegal state: shell renderer not available after receiving rendererLoaded event');}
            };
            that._oShellContainer.attachRendererCreatedEvent(that._onRendererCreated);
        }
    }
    return oDeferred.promise();
}

  • 部署应用程序
  • 激活您的插件:转到SCP的门户服务>转到服务>站点目录>*选择一个您希望在>> Apps > *Add app ('+‘图标)中激活的插件。
  1. 属性:*App :选择已部署的应用程序> *App :选择Shell插件
  2. 目录:*选择一个目录来放置你的插件
  3. 保存
  • 使用顶部丝带的右侧全球图标发布网站

它的外观:*注意顶部丝带上附加的“+”按钮。成功!

参考文献:

  1. 样例插件:此示例演示如何添加页眉操作项、页脚、参数等。
  2. 激活插件:仅参见“配置Shell插件应用程序”一节
  3. 什么上的API引用可以在FLP中修改
票数 0
EN

Stack Overflow用户

发布于 2021-02-11 00:41:41

与在jQuery函数中使用_getRenderer不同,这在快速测试中至少适用于我。使用承诺而不是延迟和ObjectPath (需要"sap/base/util/ObjectPath"),这是"$.sap.getObject“的推荐替代,因为这是不推荐的。

代码语言:javascript
复制
_getRenderer: function() {
    return new Promise(function(fnResolve, fnReject) {
        this._oShellContainer = ObjectPath.get("sap.ushell.Container");
        if (!this._oShellContainer) {
            fnReject(
                "Illegal state: shell container not available; this component must be executed in a unified shell runtime context."
            );
        } else {
            var oRenderer = this._oShellContainer.getRenderer();
            if (oRenderer) {
                fnResolve(oRenderer);
            } else {
                // renderer not initialized yet, listen to rendererCreated event
                this._onRendererCreated = function(oEvent) {
                    oRenderer = oEvent.getParameter("renderer");
                    if (oRenderer) {
                        fnResolve(oRenderer);
                    } else {
                        fnReject(
                            "Illegal state: shell renderer not available after receiving 'rendererLoaded' event."
                        );
                    }
                };
                this._oShellContainer.attachRendererCreatedEvent(
                    this._onRendererCreated
                );
            }
        }
    }.bind(this));
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64686362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档