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!