【问题标题】:Disabling a button in page editor (ribbon) for field-type image在页面编辑器(功能区)中禁用字段类型图像的按钮
【发布时间】:2015-04-17 06:37:28
【问题描述】:

在页面编辑器中编辑时,我使用了具有图像字段类型功能区的自定义图像组件。

在核心数据库中,我需要隐藏/禁用 3 个用于图像的 webedit 按钮:

路径:/sitecore/system/Field types/Simple Types/Image/WebEdit Buttons/

按钮: 1。选择图片 2.图像属性 3. 清晰的图像

另外,我知道这可以通过重写 Querystate() 方法来实现,但我不确定它的实现,因为我是 CommandState 处理的新手。

我没有通过 QueryState,而是在尝试这个

我已将图像的属性“DisableEdit”设置为:

<myImage:PictureFillImage Field="<%# MyImage.Constants.FieldNames.Image %>" DisableEdit="true" ID="UIImage" runat="server"/>

我正在使用自定义类:

public class PictureFillImage : Sitecore.Web.UI.WebControls.FieldControl

我正在尝试禁用图像的网络编辑:

    public bool DisableEdit { get; set; }


    private Sitecore.Web.UI.WebControls.Image _smlImage;
    private Sitecore.Data.Fields.ImageField _smlImageField;
    private Sitecore.Web.UI.WebControls.FieldControl _fieldControl;

    protected override void OnLoad(EventArgs e)
    {
        this.DataBind();
    }

    public override void DataBind()
    {
        // base.OnLoad(e);
        this.Item = this.GetItem();

        if ((this.Item != null) && (this.Field != null))
        {
            Sitecore.Data.Fields.Field field = this.Item.Fields[this.Field];
            if (field != null)
            {
                this._smlImageField = (Sitecore.Data.Fields.ImageField)field;
                this._smlImage = new Sitecore.Web.UI.WebControls.Image();
                this._smlImage.Field = this.Field;
                this._fieldControl = this._smlImage as Sitecore.Web.UI.WebControls.FieldControl;
                this._smlImage.ID = this.ID;
                this._smlImage.CssClass = this.CssClass;
                this._smlImage.Parameters = "all=all";
                this._fieldControl.Item = this.Item;


                this._smlImage.DisableWebEditing = DisableEdit;
                this._fieldControl.DisableWebEditing = DisableEdit;
            }
        }

        base.DataBind();
    }

我希望代码会隐藏页面编辑器的浮动功能区中出现的三个按钮:“选择图像”、“图像属性”和“清除图像”,但我得到了否定的结果。

请帮忙。

【问题讨论】:

    标签: content-management-system sitecore ribbon page-editor


    【解决方案1】:

    您应该重写查询状态方法并返回隐藏或启用

     public override CommandState QueryState(CommandContext context)
     {
        // your logic here
         //access current item
         var item = context.Items[0];
    
        // return either Commandstate.Hidden or Commandstate.Enabled
     }
    

    对于每个按钮,您将声明一个命令类,以便您可以自定义每个按钮的行为。

    您也可以访问当前项目。

    这里有一个很好的例子,说明如何覆盖查询状态以影响按钮的状态

    https://briancaos.wordpress.com/2010/09/10/unlock-sitecore-items/

    【讨论】:

    • 我怎样才能让只有这 3 个按钮隐藏而不是其他按钮...你能给我一个链接,解释有关 commandstate 和 querystate 及其使用的详细信息.. 那会很棒.. : -)
    • 这将适用于具有这三个按钮的每个图像类型组件......这不是我需要的......
    • 这三个按钮(选择图像、图像道具、清除图像)不是 Sitecore 图像的默认 Web 编辑按钮吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-14
    相关资源
    最近更新 更多