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
OnCreating/OnCreated events need to be implemented for all provisioned artifacts.
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
Logging/tracing feature or service needs to be added so that we may clearly understand how provision actually worked.
Adding WebPropertyDefinition and handler to provision
Implement hide/show field link behaviour
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.
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 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.
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.
Needs to be done.
rewrite code generation and check why some web features are missed
Something needs to be done to combine urls in a nice manner with CSOM.
SPUrlUtility.CombineUrl, but on the CSOM.
It would be nice to have library/model versioning for the future upgrades.
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.
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.
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
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.
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.
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.
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.
It is useful for regression testing containers.
migration to git? plus adding documentation
Adding managed metadata term provision
It is too messy yet. Should be improved and consolidates.
Needs to be implemented for a better stat and future performance improvements.
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.
*.regression dlls should be spitted up to support SSOM/CSOM
Add module file properties.
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.
Adding built-in web template ids
Too messy, too ad-hoc, too inefficient.
Adding sandbox solutions deployment support
It would be great to have "Pre/Post" deployment event not only for the particular artifact, but for the whole model.
CSOM web model handler should be refactored to make URL concatenation right. Currently, upper case URLs break everything.
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
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.
Needs to be done.
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.
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.
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.
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.
Completing FarmPropertyDefinition to provision farm properties
Currently there is no way to give permissions to standard groups like web.AssociatedOwnersGroup or web.AssociatedMembersGroup. Would be nice to have this option.
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.
Tests needed to be re-engineered.
CSOM list model handler
/ gosh!
var currentList = FindListByTitle(web.Lists, listModel.Title);
Should be looked up by URL.
Currently CSOM allows to upload only < 2Mb files. Not cool, REST should be used.
It would be nice to have Excel file paired with T4 for artifact generation.
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.
Add reflection and extension methods to get ModelServiceBase configured.
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.