在页面编辑器(功能区)中禁用字段类型图像的按钮
Disabling a button in page editor (ribbon) for field-type image
我在页面编辑器中编辑时使用了自定义图像组件,该组件具有图像字段类型的功能区。
在核心数据库中,有 3 个我需要的图像 webedit 按钮 hide/disable:
路径:/sitecore/system/Fieldtypes/SimpleTypes/Image/WebEdit按钮/
按钮:
1。选择图像
2.图像属性
3. 清晰图像
此外,我知道这可以通过覆盖 Querystate() 方法来实现,但我不确定它的实现,因为我是 CommandState 处理的新手。
而不是通过 QueryState ,我正在尝试这个
我已经将图像的属性“DisableEdit”设置为:
<myImage:PictureFillImage Field="<%# MyImage.Constants.FieldNames.Image %>" DisableEdit="true" ID="UIImage" runat="server"/>
我正在使用自定义 class 作为:
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();
}
我希望代码会隐藏三个按钮:"Choose Image"、"Image Properties" 和 "Clear Image",它们出现在页面编辑器的浮动功能区中,但结果是否定的。
请帮忙。
您应该重写查询状态方法并且return隐藏或启用
public override CommandState QueryState(CommandContext context)
{
// your logic here
//access current item
var item = context.Items[0];
// return either Commandstate.Hidden or Commandstate.Enabled
}
对于每个按钮,您都会声明一个命令 class,这样您就可以自定义每个按钮的行为。
您也可以访问当前项目。
这里有一个很好的例子,说明如何覆盖查询状态以影响按钮的状态
https://briancaos.wordpress.com/2010/09/10/unlock-sitecore-items/
我在页面编辑器中编辑时使用了自定义图像组件,该组件具有图像字段类型的功能区。
在核心数据库中,有 3 个我需要的图像 webedit 按钮 hide/disable:
路径:/sitecore/system/Fieldtypes/SimpleTypes/Image/WebEdit按钮/
按钮: 1。选择图像 2.图像属性 3. 清晰图像
此外,我知道这可以通过覆盖 Querystate() 方法来实现,但我不确定它的实现,因为我是 CommandState 处理的新手。
而不是通过 QueryState ,我正在尝试这个
我已经将图像的属性“DisableEdit”设置为:
<myImage:PictureFillImage Field="<%# MyImage.Constants.FieldNames.Image %>" DisableEdit="true" ID="UIImage" runat="server"/>
我正在使用自定义 class 作为:
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();
}
我希望代码会隐藏三个按钮:"Choose Image"、"Image Properties" 和 "Clear Image",它们出现在页面编辑器的浮动功能区中,但结果是否定的。
请帮忙。
您应该重写查询状态方法并且return隐藏或启用
public override CommandState QueryState(CommandContext context)
{
// your logic here
//access current item
var item = context.Items[0];
// return either Commandstate.Hidden or Commandstate.Enabled
}
对于每个按钮,您都会声明一个命令 class,这样您就可以自定义每个按钮的行为。
您也可以访问当前项目。
这里有一个很好的例子,说明如何覆盖查询状态以影响按钮的状态
https://briancaos.wordpress.com/2010/09/10/unlock-sitecore-items/