User Tools

Site Tools


test_notes

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
test_notes [2024/02/13 12:55] admintest_notes [2024/02/13 12:57] (current) admin
Line 3781: Line 3781:
 ===== Next… ===== ===== Next… =====
  
-====== User Controls ====== 
- 
-Add a ‘New Project’ to the solution. Choose “Visual C# | Windows” in the left panel. Then choose “Windows Forms Control Library” from the middle panel. 
- 
-Name it ‘ucXxxxXxxx’ and click <OK> 
- 
-===== Setup Properties Configurable in the VS IDE ===== 
- 
-Here is an overview video:\\ 
-[[file:///\\192.168.93.1\KB_MiM\Visual%20Studio%202012\20151227)%20uc%20Properties%20set-able%20in%20the%20IDE.mp4|\\192.168.93.1\KB_MiM\Visual Studio 2012\20151227) uc Properties set-able in the IDE.mp4]] 
- 
-Each settings name should be formatted as below then typically defaulted to True: 
- 
-  * ControlNameVisible 
-  * ControlNameEnabled 
- 
-Here are code samples to setup properties for control from the IDE 
-<hidden Code...> 
-<code csharp> 
-[Category("Legality Software")] // Category creates a group in the VS IDE Property Grid 
-public bool RefreshVisible 
-{ 
-  get { return rbtnRefresh.Visible; } 
-  set { rbtnRefresh.Visible = value; } // Show or hide the button 
-} 
- 
-[Category("Legality Software")] 
-public bool RefreshEnabled 
-{ 
-  get { return rbtnRefresh.Enabled; } 
-  set { rbtnRefresh.Enabled = value; } // Enable or disable the button 
-} 
- 
-[Category("Legality Software")] 
-public bool RecordCountVisible 
-{ 
-  get { return rlblRecordCount.Visible; } 
-  set { rlblRecordCount.Visible = value; } // Show or hide the label 
-} 
- 
-[Category("Legality Software")] 
-public bool FilterVisible 
-{ 
-  get { return tlpFilter.Visible; } 
-  set { tlpFilter.Visible = value; } // Show or hide the TableLayoutPanel (subpanel in a master tlp) 
-} 
- 
-[Category("Legality Software")] 
-public bool SearchVisible 
-{ 
-  get { return tlpSearch.ColumnStyles[0].Width == 50; } // TableLayoutPanel 1st Column default width is 50 
-  // ### I’m not sure why we don’t have to support getting the ColumnStyles[1].Width of 27? 
-  set 
-  { 
-    if (value == true) 
-    { 
-      tlpSearch.ColumnStyles[0].Width = 50; // Show column by restoring to default width of 50 
-      tlpSearch.ColumnStyles[1].Width = 27; // Show column setting width to 27 (actually a %) 
-    } 
-    else 
-    { 
-      tlpSearch.ColumnStyles[0].Width = 0; // hide column by setting width to 0 
-      tlpSearch.ColumnStyles[1].Width = 0; 
-    } 
-  } 
-} 
- 
-[Category("Legality Software")] 
-public bool QueryListTreeSearchRowVisible 
-{ 
-  get { return tlpQueryListTree.RowStyles[0].Height == 26; } // TableLayoutPanel 1st Row default height is 26 
-  set 
-  { 
-    if (value == true) 
-    { 
-      tlpQueryListTree.RowStyles[0].Height = 26; // Show row by restoring to default height of 26 
-    } 
-    else 
-    { 
-      tlpQueryListTree.RowStyles[0].Height = 0; // hide row by setting height to 0 
-    } 
-  } 
-} 
- 
-[Category("Legality Software")] 
-public string OptionAllText 
-{ 
-  get { return rrdoAll.Text; } 
-  set { rrdoAll.Text = value; } // Set the radio button text 
-} 
- 
-[Category("Legality Software")] 
-public Color OptionAllForeColor 
-{ 
-  get { return rrdoAll.ForeColor; } 
-  set { rrdoAll.ForeColor = value; } // Set the radio button font color 
-} 
-</code> 
-</hidden> 
-\\  
-===== Legality User Controls ===== 
- 
-Video: [[file:///\\192.168.93.1\KB_MiM\Telerik\20151221)%20Adding%20LS%20Common%20User%20Controls%20to%20a%20project.mp4|\\192.168.93.1\KB_MiM\Telerik\20151221) Adding LS Common User Controls to a project.mp4]] 
- 
-Start watching at 3:20 for the ‘right click Toolbox| Choose Items’ option. Look for the Project DLL for example: 
- 
-//‘C:\DevGIT\ls.common\LS.Common.SqlEditor\bin\x86\Debug\LS.Common.SqlEditor.dll’// contains all the versions of the SQL Editor User Control. 
- 
-==== DLL Folders to add Items to ToolBox ==== 
- 
-...\DevGIT\LS.Common\LS.Common.Presentation\bin\Debug\LS.Common.Presentation.dll\\ 
-...\DevGIT\LS.Common\LS.Common.FTP\bin\Debug\LS.Common.FTP.dll\\ 
-...\DevGIT\ls.common\LS.Common.Grid\bin\Debug\LS.Common.Grid.dll\\ 
-...\DevGIT\ls.common\LS.Common.ItemList\bin\Debug\LS.Common.ItemList.dll\\ 
-...\DevGIT\LS.Common\LS.Common.Log.Presentation\bin\Debug\LS.Common.Log.dll\\ 
-...\DevGIT\LS.Common\LS.Common.Scheduler\bin\Debug\LS.Common.Scheduler.dll\\ 
-...\DevGIT\LS.Common\LS.Common.SqlEditor\bin\Debug\LS.Common.SqlEditor.dll\\ 
-...\DevGIT\LS.Common\LS.Common.TableViewer\bin\Debug\LS.Common.TableViewer.dll\\ 
-...\DevGIT\LS.Common\LS.Common.Tree\bin\Debug\LS.Common.Tree.dll\\ 
-...\DevGIT\LS.Common\LS.Common.TMDBConnector\bin\Debug\LS.Common.TMDBConnector.dll 
- 
-Current list of folders: 
- 
-  * C:\DevGIT\LS.Common\LS.Common.Grid\ucGridStatus.Designer.cs 
-  * C:\DevGIT\LS.Common\LS.Common.Grid\ucGridStatus2.Designer.cs 
-  * C:\DevGIT\LS.Common\LS.Common.Log.Presentation\ucLogData.Designer.cs 
-  * C:\DevGIT\LS.Common\LS.Common.Log.Presentation\ucLogViewer.Designer.cs 
-  * C:\DevGIT\LS.Common\LS.Common.Presentation\ucEmailConnector.Designer.cs 
-  * C:\DevGIT\LS.Common\LS.Common.Presentation\ucFolderPathUserSecurity.Designer.cs 
-  * C:\DevGIT\LS.Common\LS.Common.Presentation\ucGridFilter.designer.cs 
-  * C:\DevGIT\LS.Common\LS.Common.Presentation\ucPassword.Designer.cs 
-  * C:\DevGIT\LS.Common\LS.Common.Presentation\ucTelerikThemeSelector.Designer.cs 
-  * C:\DevGIT\LS.Common\LS.Common.Presentation\ucUsernamePassword.Designer.cs 
-  * C:\DevGIT\LS.Common\LS.Common.Scheduler\ucScheduler.designer.cs 
-  * C:\DevGIT\LS.Common\LS.Common.SqlEditor\ucSqlEditor.Designer.cs 
-  * C:\DevGIT\LS.Common\LS.Common.SqlEditor\ucSqlEditor2.Designer.cs 
-  * C:\DevGIT\LS.Common\LS.Common.TableViewer\ucTableViewer.Designer.cs 
-  * C:\DevGIT\LS.Common\LS.Common.TMDBConnector\ucTMDatabaseConnector.Designer.cs 
-  * C:\DevGIT\LS.Datatool\LS.Components\ucQueryConfig.Designer.cs 
-  * C:\DevGIT\LS.Datatool\LS.Components\ucSqlDatabaseConnector.Designer.cs 
-  * C:\DevGIT\LS.Datatool\LS.Components\ucTelerikThemeSelector.designer.cs 
-  * C:\DevGIT\LS.Datatool\LS.Components\ucTMDatabaseConnector.Designer.cs 
-  * C:\DevGIT\LS.Datatool\LS.Components\ucTMDatabaseConnector_Old.Designer.cs 
-  * C:\DevGIT\LS.Common\LS.Common.Presentation\Scheduler\ucScheduler.designer.cs 
-  * C:\DevGIT\LS.Common\LS.Common.Presentation\TMDBConnector\ucTMDatabaseConnector.Designer.cs 
-  * C:\DevGIT\LS.Common\LS.Common.FTP\ucFtpConnector.Designer.cs 
-  * C:\DevGIT\LS.Common\LS.Common.Grid\ucGridSmart.Designer.cs 
- 
-==== ucFilePath.cs ==== 
- 
-...\DevGIT\LS.Common\LS.Common.Presentation\bin\Debug\LS.Common.Presentation.dll 
- 
-### Make the button here and on ucFolderPath the same width. Also shouldn’t the file control NullText say something about a ‘file’? 
- 
-{{tdn:image150.png?338x40|A close-up of a message Description automatically generated}} 
- 
-==== ucFilter.cs ==== 
- 
-//Look for [[#ucgridfilter.cs|ucGridFilter.cs]]// 
- 
-==== ucFolderPath.cs ==== 
- 
-...\DevGIT\LS.Common\LS.Common.Presentation\bin\Debug\LS.Common.Presentation.dll 
- 
-{{tdn:image151.png?336x39}} 
- 
-==== ucFolderPathUserSecurity.cs ==== 
- 
-...\DevGIT\LS.Common\LS.Common.Presentation\bin\Debug\LS.Common.Presentation.dll 
- 
-{{tdn:image152.png?267x136|A screenshot of a computer screen Description automatically generated}} 
- 
-==== ucFtpConnector.cs ==== 
- 
-...\DevGIT\LS.Common\LS.Common.FTP\bin\Debug\LS.Common.FTP.dll 
- 
-Everything you need to configure settings for a FTP/SFTP connection and transfer files. 
- 
-{{tdn:image153.png?326x154|A screenshot of a computer Description automatically generated}} 
- 
-==== ucGridFilter.cs ==== 
- 
-...\DevGIT\LS.Common\LS.Common.Presentation\bin\Debug\LS.Common.Presentation.dll 
- 
-<color red>### NEED TO MOVE TO GRID PROJECT</color> 
- 
-//See video above on how to add, but in short look for it in the Toolbox.// 
- 
-Includes a ‘Type to Filter/Search” text box and a <X> button to clear it. Filters the contents of a grid on any text column value. Filtering starts after the 3<sup>rd</sup> character is typed, or on <Tab> when there are less than 3 characters. 
- 
-{{tdn:image154.png?275x32}} 
- 
-==== ucDateRangeDays ==== 
- 
-...\DevGIT\LS.Common\LS.Common.Presentation\bin\Debug\LS.Common.Presentation.dll 
- 
-{{tdn:image155.png?451x37}} 
- 
-==== ucDateRangeMonths ==== 
- 
-...\DevGIT\LS.Common\LS.Common.Presentation\bin\Debug\LS.Common.Presentation.dll 
- 
-{{tdn:image156.png?451x46|A screen shot of a computer Description automatically generated}} 
- 
-==== ucGridSmart.cs ==== 
- 
-...\DevGIT\ls.common\LS.Common.Grid\bin\Debug\LS.Common.Grid.dll 
- 
-//See video above on how to add, but in short look for it in the Toolbox by searching for ‘uc’.// 
- 
-Our most basic GridView wrapper user control. Includes some code to autoset the column widths 
- 
-It does not include any extra controls. No filter, record count, <Refresh> etc. 
- 
-{{tdn:image157.png?252x213|A screenshot of a computer Description automatically generated}} 
- 
-==== ucGridSmart2.cs ==== 
- 
-...\DevGIT\ls.common\LS.Common.Grid\bin\Debug\LS.Common.Grid.dll 
- 
-This is a ucGridSmart with a Filter, Record Count and <Refresh> button. 
- 
-### Need to create this! 
- 
-{{tdn:image158.png?393x260|A screenshot of a computer Description automatically generated}} 
- 
-==== ucGridStatus.cs ==== 
- 
-...\DevGIT\ls.common\LS.Common.Grid\bin\Debug\LS.Common.Grid.dll 
- 
-Our grid with 4 colored radio button filters (originally used for the eTMsync log status), a search/filter control, record count and <Refresh>. 
- 
-### There are some properties here to control visibility of some uc elements that DO NOT work here but do work in the ucGridStatus2 user control. We need to move that code over. 
- 
-{{tdn:image159.png?411x280|A screenshot of a computer Description automatically generated}} 
- 
-==== ucGridStatus2.cs ==== 
- 
-//See video above on how to add, but in short look for it in the Toolbox.// 
- 
-...\DevGIT\ls.common\LS.Common.Grid\bin\Debug\LS.Common.Grid.dll 
- 
-Used in dbEntreé, //this is ucGridStatus in a RadDock document window with a tool window containing a tree view for a list of queries.// 
- 
-### There are some properties here to control visibility of some uc elements that work here but do not work in the basic ucGridStatus user control. I probably should have put the original ucGridStatus in this new user control but I actually copied what we had before. This enables us to change this beyond the original but means common code changes must be maintained. 
- 
-{{tdn:image160.png?499x253|A screenshot of a computer Description automatically generated}} 
- 
-=== Legality Software Properties === 
- 
-  * FormatString - [DefaultValue("{0}: {1}/{2}")] 
-  * RefreshVisible - Query Refresh button above GridView show/hide 
-  * RecordRename - "Records:" 
-  * QueryToolbarVisible - The tool-bar above the GridView 
-  * RefreshEnabled - Query Refresh button above GridView enable/disable 
-  * RecordCountVisible - "Visible count/total count" above GridView 
-  * ViewsToolBarVisible - Views tool-bar above the Query List tree 
-  * ViewsExpandCollapseAllVisible - The <+>/<-> buttons next to the filter controls above the Query List tree 
-  * FilterVisible 
-  * NoGridDataMessage 
-  * GroupPanelText 
-  * LayoutSourceFile 
-  * GroupPanelHeight 
-  * SearchVisible - result set filter above the Query List tree 
-  * EnableTreeSearch 
-  * SelectedTreeNode 
-  * SearchRowVisible 
-  * OptionRowVisible 
-  * QueryListTreeSearchRowVisible 
-  * OptionAllText 
-  * OptionAllForeColor 
-  * OptionAllVisible 
-  * Option1Text 
-  * Option1ForeColor 
-  * Option1Visible 
-  * Option1WatchValue 
-  * Option2Text 
-  * Option2ForeColor 
-  * Option2Visible 
-  * Option2WatchValue 
-  * Option3Text 
-  * Option3ForeColor 
-  * Option3Visible 
-  * Option3WatchValue 
-  * WatchColumn 
-  * WatchColumnVisible 
-  * FormatGridRows 
-  * HighlightingEnabled 
-  * FilterType 
-  * AutoRowHeight 
-  * AutoColumnWidth 
-  * ShowTooltips 
-  * GridType 
-  * QueryListDropDownVisible - The main application config will enable the user to show/hide either or both the QueryListDropDown and the QueryListTree, so that should be a settable property of the UC. But the application should also hide both query lists if there is only one query in the *.SQLDT file so your code needs to deal with that too. 
-  * QueryListTreeVisible - This property should hide/show the rdtwQueryListTree. It will be set based on the main application user configurable options. 
-  * MultiSelectRows 
-  * OverrideFormatString 
-  * TreeViewDockState 
-  * TreeViewCaption 
-  * DataSource 
-  * QueryName 
- 
-=== Legality Software Events === 
- 
-  * PositionChangedEventHandler SelectedQueryChanged 
-  * PositionChangingEventHandler SelectedQueryChanging 
-  * RadTreeView.RadTreeViewEventHandler SelectedTreeNodeChanged 
-  * RadTreeView.RadTreeViewCancelEventHandler SelectedTreeNodeChanging 
- 
-**ucListControlWithFilter.cs** 
- 
-...\DevGIT\LS.Common\LS.Common.Presentation\bin\Debug\LS.Common.Presentation.dll 
- 
-[[https://www.telerik.com/products/winforms/listcontrol.aspx|RadListControl]] with our standard type to filter textbox and <X>. 
- 
-Our [[#_*_RadListControl_–_1|RadListControl help]] in this document 
- 
-[[https://docs.telerik.com/devtools/winforms/controls/dropdown-listcontrol-and-checkeddropdownlist/listcontrol/listcontrol|Telerik RadListControl Docs]] 
- 
-==== ucItemList.cs ==== 
- 
-...\DevGIT\ls.common\LS.Common.ItemList\bin\Debug\LS.Common.ItemList.dll 
- 
-{{tdn:image161.png?228x261|A screenshot of a computer Description automatically generated}} 
- 
-==== ucLogData.cs ==== 
- 
-...\DevGIT\LS.Common\LS.Common.Log.Presentation\bin\Debug\LS.Common.Log.dll 
- 
-{{tdn:image157.png?252x213|A screenshot of a computer Description automatically generated}} 
- 
-==== ucLogViewer.cs ==== 
- 
-...\DevGIT\LS.Common\LS.Common.Log.Presentation\bin\Debug\LS.Common.Log.dll 
- 
-{{tdn:image162.png?538x261|C:\Users\rober\AppData\Local\Temp\SNAGHTML2dbdb378.PNG}} 
- 
-==== ucPassword.cs ==== 
- 
-...\DevGIT\LS.Common\LS.Common.Presentation\bin\Debug\LS.Common.Presentation.dll 
- 
-{{tdn:image163.png?201x32}} 
- 
-==== ucUsernamePassword.cs ==== 
- 
-...\DevGIT\LS.Common\LS.Common.Presentation\bin\Debug\LS.Common.Presentation.dll 
- 
-{{tdn:image164.png?200x31}} 
- 
-==== ucQueryConfig.cs ==== 
- 
-//<color red>Can’t find this in Common</color>// 
- 
-==== ucRichTextEditorHighlighter ==== 
- 
-...\DevGIT\LS.Common\LS.Common.Presentation\bin\Debug\LS.Common.Presentation.dll 
- 
-==== ucScheduler.cs ==== 
- 
-...\DevGIT\LS.Common\LS.Common.Scheduler\bin\Debug\LS.Common.Scheduler.dll 
- 
-{{tdn:image165.png?394x174|A screenshot of a computer Description automatically generated}} 
- 
-==== ucSqlDbName.cs ==== 
- 
-...\DevGIT\LS.Common\LS.Common.Presentation\bin\Debug\LS.Common.Presentation.dll 
- 
-==== ucSqlEditor.cs ==== 
- 
-...\DevGIT\LS.Common\LS.Common.SqlEditor\bin\Debug\LS.Common.SqlEditor.dll 
- 
-This is the basic editor with SQL syntax highlighting. No toolbars, extra controls or functionality. 
- 
-{{tdn:image166.png?415x296|A white rectangular object with black lines Description automatically generated}} 
- 
-==== ucSqlEditor2.cs ==== 
- 
-...\DevGIT\LS.Common\LS.Common.SqlEditor\bin\Debug\LS.Common.SqlEditor.dll 
- 
-This is the SQL editor with toolbars for SQL editing, inserting <SqlParameter> values, executing the query. 
- 
-This does NOT include the DB tree ToolWindow showing tables and columns. 
- 
-{{tdn:image167.png?484x345|A screenshot of a computer Description automatically generated}} 
- 
-==== ucSqlEditor3.cs ==== 
- 
-...\DevGIT\LS.Common\LS.Common.SqlEditor\bin\Debug\LS.Common.SqlEditor.dll 
- 
-This is a RadDock, containing a SqlEditor2 (with toolbars for SQL editing, inserting <SqlParameter> values, executing the query) in the Document window, and a ucTableViewer in a ToolWindow showing tables and columns. 
- 
-{{tdn:image168.png?720x333|C:\Users\rober\AppData\Local\Temp\SNAGHTML11178bc5.PNG}} 
- 
-==== ucSqlEditor4.cs ==== 
- 
-...\DevGIT \ls.common\LS.Common.NewSqlEditor\bin\Debug\LS.Common.NewSqlEditor.dll 
- 
-This control contains the new version of ActiproSoftware. 
- 
-This is the SQL editor with toolbars for SQL editing, inserting <SqlParameter> values, executing the query. 
- 
-This does NOT include the DB tree ToolWindow showing tables and columns. 
- 
-{{tdn:image169.png?544x313|A screenshot of a computer Description automatically generated}} 
- 
-==== ucSqlEditor5.cs ==== 
- 
-...\DevGIT \ls.common\LS.Common.NewSqlEditor\bin\Debug\LS.Common.NewSqlEditor.dll 
- 
-This control contains the new version of ActiproSoftware. 
- 
-This is a RadDock, containing a SqlEditor4 (with toolbars for SQL editing, inserting <SqlParameter> values, executing the query) in the Document window, and a ucTableViewer in a ToolWindow showing tables and columns. 
- 
-{{tdn:image170.png?725x335|A screenshot of a computer Description automatically generated}} 
- 
-==== ucTableViewer.cs ==== 
- 
-...\DevGIT\LS.Common\LS.Common.TableViewer\bin\Debug\LS.Common.TableViewer.dll 
- 
-{{tdn:image171.png?248x367|A screenshot of a computer Description automatically generated}} 
- 
-==== ucTelerikThemeSelector.cs ==== 
- 
-...\DevGIT\LS.Common\LS.Common.Presentation\bin\Debug\LS.Common.Presentation.dll 
- 
-{{tdn:image172.png?252x43|A screen shot of a computer Description automatically generated}} 
- 
-==== ucTreeFilter.cs ==== 
- 
-...\DevGIT\LS.Common\LS.Common.Tree\bin\Debug\LS.Common.Tree.dll 
- 
-{{tdn:image173.png?276x29}} 
- 
-==== ucUpdaterSettings.cs ==== 
- 
-...\DevGIT\LS.Common\LS.Common.Presentation\bin\Debug\LS.Common.Presentation.dll 
- 
-==== ucDatabaseConnector.cs ==== 
- 
-...\DevGIT\LS.Common\LS.Common.TMDBConnector\bin\Debug\LS.Common.TMDBConnector.dll 
- 
-{{tdn:image174.png?388x159|A screenshot of a computer Description automatically generated}} 
- 
-==== ucTMDatabaseConnector.cs ==== 
- 
-...\DevGIT\LS.Common\LS.Common.Presentation\bin\Debug\LS.Common.Presentation.dll 
- 
-//### Also here, so we need to clean up one or the other:\\ 
-//...\DevGIT\LS.Common\LS.Common.TMDBConnector\bin\Debug\LS.Common.TMDBConnector.dll 
- 
-**NOTE: This one also contains the ucDatabaseConnector.cs** 
- 
-{{tdn:image175.png?558x248|A screenshot of a computer Description automatically generated}} 
- 
-==== ucDbWikiOptions ==== 
- 
-X:\DevGIT\LS.Common\LS.Common.DbWiki\bin\Debug\LS.Common.DbWiki.dll 
- 
-{{tdn:image176.png?332x122|A screenshot of a computer Description automatically generated}} 
- 
-==== ucDbWikiBrowser ==== 
- 
-X:\DevGIT\LS.Common\LS.Common.DbWiki\bin\Debug\LS.Common.DbWiki.dll 
- 
-{{tdn:image177.png?377x209|A screenshot of a computer Description automatically generated}} 
- 
-==== ucEmailConnector.cs ==== 
- 
-...\DevGIT\LS.Common\LS.Common.Presentation\bin\Debug\LS.Common.Presentation.dll 
- 
-**To use this you must also add a reference to:\\ 
-**...\DevGIT\ls.common\LS.Common.Communication\bin\Debug\LS.Common.Communication.dll 
- 
-{{tdn:image178.png?312x317|A screenshot of a computer screen Description automatically generated}} 
- 
-{{tdn:image179.png?310x314|A screenshot of a computer screen Description automatically generated}} 
- 
-{{tdn:image180.png?305x310|A screenshot of a computer screen Description automatically generated}} 
- 
-{{tdn:image181.png?299x304|A screenshot of a computer Description automatically generated}} 
- 
-===== Legality Extended (via inheritance) Controls ===== 
- 
-==== LSRadPropertyGrid - lsrpg ==== 
- 
-Extended with these settable properties under the ‘Legality Software’ branch: 
- 
-  * AutoFitLabel – flag to autosize the label column width 
-  * ValueColumnWidthPercentage – (0.0-1.00) % of the total width is assigned to the value column 
-  * RequiredFieldBackground – color for required fields 
  
 ====== Tools ====== ====== Tools ======
test_notes.txt · Last modified: 2024/02/13 12:57 by admin

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki