Skip to content

Instantly share code, notes, and snippets.

@leekelleher
Created October 2, 2012 10:43
Show Gist options
  • Save leekelleher/3818118 to your computer and use it in GitHub Desktop.
Save leekelleher/3818118 to your computer and use it in GitHub Desktop.
uComponents: Temporary ModelBinder proxy/stub for Umbraco core's MultiNodeTreePicker
namespace Our.Umbraco
{
using uComponents.Core.DataTypes.MultiNodeTreePicker; // for v4.x
// using uComponents.DataTypes.MultiNodeTreePicker; // for v5.x
using umbraco.editorControls;
using umbraco.MacroEngines;
[RazorDataTypeModel(DataTypeGuids.MultiNodeTreePickerId)]
public class MntpModelBinder : MultiNodeTreePickerModelBinder
{
}
}
@vnbaaij
Copy link

vnbaaij commented Oct 2, 2012

using System.Linq;
using umbraco.MacroEngines;
using umbraco.MacroEngines.Library;

namespace umbraco.editorControls.MultiNodeTreePicker
{
///

/// Model binder for the MultiNodeTreePicker data-type.
/// </summary>


[RazorDataTypeModel(DataTypeGuids.MultiNodeTreePickerId)]
public class MultiNodeTreePickerModelBinder : IRazorDataTypeModel
{
    /// <summary>


    /// Inits the specified current node id.
    /// </summary>


    /// <param name="CurrentNodeId">The current node id.</param>
    /// <param name="PropertyData">The property data.</param>
    /// <param name="instance">The instance.</param>
    /// <returns></returns>
    public bool Init(int CurrentNodeId, string PropertyData, out object instance)
    {
        //if (!Settings.RazorModelBindingEnabled)
        //{
        //    if (umbraco.xmlHelper.CouldItBeXml(PropertyData))
        //    {
        //        instance = new DynamicXml(PropertyData);
        //        return true;
        //    }
        //    instance = PropertyData;
        //    return true;
        //}

        var nodeIds = umbraco.xmlHelper.CouldItBeXml(PropertyData) ? umbraco.uQuery.GetXmlIds(PropertyData) : umbraco.uQuery.ConvertToIntArray(umbraco.uQuery.GetCsvIds(PropertyData));
        var library = new RazorLibraryCore(null);

        instance = (library.NodesById(nodeIds.ToList()) as DynamicNodeList);

        return true;
    }
}

}

@leekelleher
Copy link
Author

Yep, that works too! :-)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment