At first glance these suggestions may seem complex but this is very much like the current implementation of FlexWiki. These suggesteions merely move things around to allow people to cutstomize FlexWiki in their own ways without preventing them from contributing to the core of FlexWiki. However the changes suggested by this topic would probably involve significant enough changes to the source to merit a significant verion number change.
Check out the ThreeWikiFormats topic which relates to this content.
There are 3 2 parts of FlexWiki that should be decoupled from the current engine to make it a more flexible solution.
Data Model - An abstract data model would allow wiki content to be stored in a variety of sources. It would also pave the way toward a SOAP interface to FlexWiki which would in turn help with LinkedFederations. (Note that OmarShahine is working on the FlexWikiWebService that may help with this also...)
Rendering Engine - Seperating the current UI from the core wiki rendering logic would allow people to implement their own UI and still be able to upgrade their rendering engine when updates are made to flexwiki.
Data Model
Currently the data structures that are needed for generalization are:
Wiki Federation (FederationConfiguration and Federation)
Then the default FlexWiki data providers would consist of
XmlFederationStore : IFederation - This would use the configuration information as described in AbstractContentBase which would probably be just an extension of our current FederationConfiguration and Federations classes.
FileBackedContentBase : IContentBase - Basicaly the current ContentBase class
File Based Wiki Topic class : IWikiTopic
Rendering Engine
The Rendering Engine would consist of:
FlexWiki.Web.dll - Assembly containing the compiled UI elements for basic FlexWiki rendering
Web.Config Config Section Handler
FlexWiki.Web.dll
FlexWikiHttpHandler : System.Web.IHttpHandlerFactory - Registered in Web.Config (or Machine.Config) as an http handler that deals with paths that end in .wiki
FlexWiki.Web.Page : System.Web.UI.Page - Base class for rendering wiki pages
""FlexWiki.Formatting" - Contains Types used for formatting and rendering Wiki content.
Federation - Config Entry that registers IWikiFederation implementations with http paths. (the FlexWikiHttpHandler will use these entries to figure out which IFederation gets associated with a specific request eg. <Federation path="/MyFederation" type="CustomCode.SQLFederation" />
WikiPage - This entry identifies the page class used for rendering contentthis must be either an aspx page of a class that inherits from FlexWiki.Web.Page The handler will pass processing of an httprequest to this page after the appropriate Federation and Namespace have been loaded. eg. <WikiPage page="wikipage.ascx" /> or <WikiPage page="FlexWiki.Web.UI.WikiPage" />
Emoticons - Section similar to the transform section used in ASP.NET Forums that contains emoticon mapping information eg. <Emoticon string="" image="./images/smile.gif" />
The Current FlexWiki UI would sit on top of this rendering engine and consist of:
FlexWiki.Web.UI.dll : FlexWiki.Web.Page The default FlexWiki Page implementations would live here. People wanting to implement their own UI would not need this dll.
\images\ - Folder containing all the images used by this UI
background information about FlexWiki
8/19/2007 10:36:06 AM - -66.78.124.101
background information about FlexWiki
8/19/2007 10:36:06 AM - -66.78.124.101
background information about FlexWiki
8/19/2007 10:36:06 AM - -66.78.124.101
background information about FlexWiki
8/19/2007 10:36:06 AM - -66.78.124.101
Click to read this topic
9/17/2007 1:12:05 PM - -74.15.254.118
background information about FlexWiki
8/19/2007 10:36:06 AM - -66.78.124.101
David Ornstein works at Microsoft. He is the primary original author and a key contributor to the software (FlexWiki) that makes this wiki run.
9/11/2007 2:15:20 PM - -74.12.234.30
background information about FlexWiki
8/19/2007 10:36:06 AM - -66.78.124.101
LinkedFederations would allow a federation to include ContentBases that it can't reach via the local file system. This would likely be SOAP-based and would allow two people, each running a federation to include each other's ContentBases.
9/19/2007 1:54:12 PM - -74.15.253.157
FlexWikiWebService is a WebService that exposes APIs for retrieving and modifying content on a FlexWiki instance.
9/12/2007 12:58:58 PM - -10.10.192.22
Click to read this topic
9/11/2007 3:00:52 PM - -74.12.234.30
background information about FlexWiki
8/19/2007 10:36:06 AM - -66.78.124.101
LinkedFederations would allow a federation to include ContentBases that it can't reach via the local file system. This would likely be SOAP-based and would allow two people, each running a federation to include each other's ContentBases.
9/19/2007 1:54:12 PM - -74.15.253.157
describes the rules around creating a name for a WikiTopic.
9/13/2007 2:51:34 PM - -74.15.247.173
David Ornstein works at Microsoft. He is the primary original author and a key contributor to the software (FlexWiki) that makes this wiki run.
9/11/2007 2:15:20 PM - -74.12.234.30
David Ornstein works at Microsoft. He is the primary original author and a key contributor to the software (FlexWiki) that makes this wiki run.
9/11/2007 2:15:20 PM - -74.12.234.30
Click to read this topic
9/11/2007 3:00:52 PM - -74.12.234.30
David Ornstein works at Microsoft. He is the primary original author and a key contributor to the software (FlexWiki) that makes this wiki run.
9/11/2007 2:15:20 PM - -74.12.234.30
background information about FlexWiki
8/19/2007 10:36:06 AM - -66.78.124.101
Click to read this topic
8/19/2007 12:04:38 PM - -66.78.124.101
Click to read this topic
9/11/2007 3:00:52 PM - -74.12.234.30
background information about FlexWiki
8/19/2007 10:36:06 AM - -66.78.124.101
background information about FlexWiki
8/19/2007 10:36:06 AM - -66.78.124.101
David Ornstein works at Microsoft. He is the primary original author and a key contributor to the software (FlexWiki) that makes this wiki run.