Version 11.1 - wondering the proper interface to implement if I wanted to create a custom Widget Configuration property.
I believe in prior versions I used an IPropertyControl
Version 11.1 - wondering the proper interface to implement if I wanted to create a custom Widget Configuration property.
I believe in prior versions I used an IPropertyControl
IPropertyTemplate is the new interface for defining custom widget configuration properties
https://community.telligent.com/community/11/w/api-documentation/64400/ipropertytemplate-plugin-type
What goes in the render method? HTML and Javascript?...kind of what I'd put in a .vm file if I was to do it this way:
<property labelText="Select a Resource" id="message" dataType="string" template="searchSelection.vm" />
When you render the configuration form making use of this property, are any exceptions logged? You may have issues with the stray { } in the JavaScript of your string used with FormatString.
No exceptions. And when I debug, it doesn't even enter the Render method
I changed my code to the below and still just get a plain text box...the Render method never fires.
public void Render(TextWriter writer, IPropertyTemplateOptions options)
{
string defaultOption = "<option value=\"test\" >Search</option>";
if (options.Value != null)
{
defaultOption = "<option value=\"placeholder\" >"+options.Value.ToString() + " </option>";
}
string script = "hello world";
writer.Write(script);
}This works for me to display Hello World:
using System.Collections.Generic;
using System.IO;
using Telligent.Evolution.Extensibility.Configuration.Version1;
namespace Samples
{
public class TestPropertyTemplate : IPropertyTemplate
{
#region IPlugin
public string Name => "Test Template";
public virtual string Description => $"template test";
public virtual void Initialize()
{
}
#endregion
#region IPropertyTemplate
public string[] DataTypes => new string[] { "Custom" };
public string TemplateName => "testTemplate";
public bool SupportsReadOnly => true;
public virtual PropertyTemplateOption[] Options
{
get
{
var options = new List<PropertyTemplateOption>();
return options.ToArray();
}
}
public void Render(TextWriter writer, IPropertyTemplateOptions options)
{
string script = "hello world";
writer.Write(script);
}
#endregion
}
}
Here is the configuration declaration:
<property id="test" defaultValue="" dataType="Custom" template="testTemplate" />
Since you're in the code already, could you try changing the case of the supported data type to "String" from "string"?
Yes. I got mine to work... Now I'm working backwards to try determine what was the culprit. I'll let you know
Looks like the issue was how I was returning the PropertyTemplateOptions array. Capitalizing "String" and keeping it lowercase worked both ways.
I got all of this working. Is it possible to pass custom attributes to the Control? in the XML config? Like this:
<property id="test" taxonomyItem="ContentType"
I added this here: It shows in the API docs XML config now, but not sure how to access it in the Render method.
public PropertyTemplateOption[] Options
{
get
{
var item = new PropertyTemplateOption("taxonomyKey", "contenttypes");
item.IsSelectableValueOption = false;
var options = new List<PropertyTemplateOption>();
options.Add(item);
return options.ToArray();
}
}I think I got it...Thanks for all the help on this!
I think I got it...Thanks for all the help on this!