subpointsolutions / spmeta2 Goto Github PK
View Code? Open in Web Editor NEWSharePoint artifact provision for .NET platform. Supports SharePoint Online, SharePoint 2019, 2016 and 2013 via CSOM/SSOM.
Home Page: http://subpointsolutions.com/spmeta2
SharePoint artifact provision for .NET platform. Supports SharePoint Online, SharePoint 2019, 2016 and 2013 via CSOM/SSOM.
Home Page: http://subpointsolutions.com/spmeta2
Fields, conten types and other artifacts can be looked up by ID, internal name, title, URL and so on.
It would ne great to be able to configure "lookup" strategy so that it would be possible to configure provision and "Does artifact exist" strategy per project.
Needs to be done.
rewrite code generation and check why some web features are missed
migration to git? plus adding documentation
it would be nice to have predefined list definitions for most common libraries/list in SharePoint:
Style Library
SitePages
Documents
... etc.
It would allow to refer to the particular library without creating new definition every time.
Too messy, too ad-hoc, too inefficient.
CSOM provisioning requires more complex "model hosts".
For some cases, instead of having just Web/List instance, more variable are required - for SP2013 workflow, security and content type links.
This requires to create and pass "model host" as a complex object to the model handlers.
In turn, re-factoring is required:
Finish CSOM model hosts
Refactor CSOM model handlers
Implement complex model hosts for SSOM
Refactor SSOM model handlers
Finally, refactor ModelHandlerBase class "DeployModel(object modelHost, DefinitionBase model)" method with "DeployModel(object modelHost)" signature supposed to consume only CSOMModelHostBase/SSOMModelHostBase classes with "complex" variables and contexts
Would be nice to have eother API or providioned copy of ListUrls, Ids, Title and so on while model is being provisioned.
This would help to bind CQWP, Lookup fields, User fields and other "dynamic" artifacts within "post-deployment" event.
Add reflection and extension methods to get ModelServiceBase configured.
It was impossible to create ContentType with fixed ID via CSOM before SP2013 SP1.
Having content types with predefined is highly important feature to be addressed with SPMeta2 library.
Seems to be done with #if def/else and two different binaries.
It would be nice to have Excel file paired with T4 for artifact generation.
Needs to be done.
It would be nice to have "shadow copy" of the provisioned model which would store provision outcome; listId, listUrl, contentTypeId and so on - all properties which are unknown and being created while artifacts are provisioned.
This would allow to avoid lots of code to lookup ListId for the webparts, foe example, LitsId for lookup fields, GroupIds for UserFields bounded to particular SharePoint group.
Adding managed metadata term provision
It is too messy yet. Should be improved and consolidates.
*.regression dlls should be spitted up to support SSOM/CSOM
Adding WebPropertyDefinition and handler to provision
It would be nice to have library/model versioning for the future upgrades.
Currently there is no way to give permissions to standard groups like web.AssociatedOwnersGroup or web.AssociatedMembersGroup. Would be nice to have this option.
POCO needs to be pure POCO without any unnecessary properties.
DefinitionBase.RequireSelfProcessing needs to be move to the ModelNode the same way as OnCreated/OnCreating events work. ModelNode is meant to be "wrapper" on the particular definition, adding other "reach" events and specific properties.
Serialization options are to be configured and setup on ModelNode. POCO must be clean.
It would be nice to extract model tree traverse to separate class.
In turn, it would allow to create various strategies to implement provision, including multi-threading for separate webs/lists and so on.
Model handlers need to be configured with "priority" so that we may ensure that fields are going to be deployed first, then content types, then lists and so on.
This needs to be configurable and clear.
A must have feature for the future is to have "OnError" handler per created artifact.
It would allow to have control over rollbacks, providing ability to handle exceptions in a better way.
Logging/tracing feature or service needs to be added so that we may clearly understand how provision actually worked.
Adding sandbox solutions deployment support
It would be great to "extract" most of the provision methods to be reused as plain extension or static methods wihtout full SPMeta2 library. Just a sub-set of API.
Tests needed to be re-engineered.
There should be tests against model "nesting".
Cases such as "Web can host list", "Web can host field", "List can host field" and so on should be covered by tests.
Adding web part to the wiki pages is technically possible, but extremely tricky - (1) token replace or (2) first/particular zone in layout. This to be defined and standardized in future versions of SPMeta2 library.
More info could be seen here:
http://blog.mastykarz.nl/programmatically-adding-web-parts-rich-content-sharepoint-2010/
http://passionatetechie.blogspot.com.au/2011/11/how-to-add-web-part-on-sharepoint-2010.html
Tests needed to be re-engineered.
There should be tests against model "events".
Currently, there are "OnCreating/OnCreated" events raised by model handlers.
Not all of the model handlers raise such events. This should be covered by tests. A "fake" event storage or something like that is required.
Tests needed to be re-engineered.
Adding web part vis CSOM requires additional XML setup. We need to configure .webpart or .dwp XML correctly so that web part can be imported. Exceptions is raised if web part XML is incorrect.
In turn, this require either having 2nd implementation of events or passing more complex "context" object to the event pipeline.
Needs to be implemented for a better stat and future performance improvements.
CSOM list model handler
/ gosh!
var currentList = FindListByTitle(web.Lists, listModel.Title);
Should be looked up by URL.
Models need to be defined once, so that they can be reused across tests.
Right now, it is wasting of code to define same models over and over across CSOM/SSOM tests.
It would be nice to have various validation rules for the model definitions:
*field internal name should be less than 32 chars
*list urls
*OOTB list url
*duplicated fields ids, names
*duplicated content type ids, names
*duplicated list urls
Etc., to be updated as issues arise.
It would be nice to have ability to activate/deactivate and ensure feature activation on specific farm/webapp/site/web.
*site/web done
*web app needs tobe tested
*farm needs to be implemented
Currently CSOM allows to upload only < 2Mb files. Not cool, REST should be used.
It would be nice to generate JS vars including fieds ids, names; content type ids, names and the rest so that JS based development would be much easier. It would allow to avoid "copy-paste" id ids/internal names from c# code and model definition to JS files.
CSOM web model handler should be refactored to make URL concatenation right. Currently, upper case URLs break everything.
Adding built-in web template ids
dll version needs to be set correctly for SP2013 (15), O365 (15) and SP2010 (14).
context.RequestSchemaVersion needs to be used for CSOM and SSOM should be reflected as well.
Add module file properties.
Completing FarmPropertyDefinition to provision farm properties
v2 used to work with SP2010 well.
v3 is required for SP2013/O365.
More R&D is needed to make sure we have consistency across API/SP.
Something needs to be done to combine urls in a nice manner with CSOM.
SPUrlUtility.CombineUrl, but on the CSOM.
It would be great to have "Pre/Post" deployment event not only for the particular artifact, but for the whole model.
Implement hide/show field link behaviour
OnCreating/OnCreated events need to be implemented for all provisioned artifacts.
CSOM/SSOM plus SP2010/2013/O365 gives too much fun, including difference of .dwp and .webpart files, different behaviors of particular web parts (list not found bla bla bla).
This needs to be automized and covered by regression test across all API/SP versions.
It is useful for regression testing containers.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.