Inheritance: System.MarshalByRefObject
 public static urn.microsoft.guidanceexplorer.Folder xmlDB_Add_Folder(this TM_Library tmLibrary, Guid parentFolderId, string folderCaption, TM_Xml_Database tmDatabase)
 {
     try
     {
         var newFolder = new urn.microsoft.guidanceexplorer.Folder
             {
                     caption = folderCaption,
                     folderId = Guid.NewGuid().str()
                 };
         var guidanceExplorer= tmLibrary.guidanceExplorer(tmDatabase);
         if (parentFolderId == Guid.Empty)
         {
             //adding a folder to the library
             guidanceExplorer.library.libraryStructure.folder.Add(newFolder);
         }
         else
         {
             //adding a folder to folder
             var folder = tmDatabase.xmlDB_Folder(tmLibrary.Id, parentFolderId);
             if (folder == null)
             {
                 "[xmlDB_Add_Folder] couldn't find parent folder (to add folder) with id: {0}".error(parentFolderId);
                 return null;
             }
             folder.folder1.Add(newFolder);
         }
         guidanceExplorer.xmlDB_Save_GuidanceExplorer(tmDatabase);
         return tmDatabase.xmlDB_Folder(tmLibrary.Id, newFolder.folderId.guid());
     }
     catch(Exception ex)
     {
         ex.log();
         return null;
     }
 }
Example #2
0
        public TM_FileStorage(bool loadData)
        {
            Server                      = new TM_Server();
            TMXmlDatabase               = new TM_Xml_Database();
            UserData                    = new TM_UserData();
            GuidanceExplorers_Paths     = new Dictionary<guidanceExplorer,string>();
            GuidanceItems_FileMappings  = new Dictionary<Guid,string>();
            if (loadData)
            {
                Current = this;

                this.set_WebRoot()              // defines where the web root will exist
                    .set_Path_XmlDatabase()     // the WebRoot is used to calculate the root of the XML Database
                    .tmServer_Load()            // the TM_Server is loaded from the root of the Path_XmlDatabase
                    .set_Path_UserData()        // the Path_UserData are Path_SiteData are both
                    .set_Path_SiteData()        //     set based on info from TM_Server and Path_XmlDatabase
                    .tmConfig_Load()            // tm TM_Config is loaded from the root of the UserData
                    .set_Path_XmlLibraries()    // the Path_XmlLibraries is set based on info from TM_Config and Path_XmlDatabase
                    .load_UserData()            // after all is configured we can load the users
                    .load_Libraries();          // and libraries

                this.hook_Events_TM_UserData()          // hook events to FileStorage handlers  so that actions on TeamMentor.Database
                    .hook_Events_TM_Xml_Database();     // and TeamMentor.UserData are saved or deleted from disk
            }
        }
Example #3
0
 public TM_WebServices(bool disable_Csrf_Check)
 {
     tmXmlDatabase       = TM_Xml_Database.Current;
     userData            = tmXmlDatabase  .userData();
     tmAuthentication	= new TM_Authentication(this).mapUserRoles(disable_Csrf_Check);
     GZip.setGZipCompression_forAjaxRequests();
 }
 public static TM_Library tmLibrary(this urn.microsoft.guidanceexplorer.View viewToFind, TM_Xml_Database tmDatabase)
 {
     return (from tmLibrary in tmDatabase.tmLibraries()
         from view in tmLibrary.xmlDB_Views(tmDatabase)
         where view == viewToFind
         select tmLibrary).first();
 }
Example #5
0
        public void Application_Start()
        {
            //O2_Utils.showLogViewer_if_LocalHost();

            TmXmlDatabase           = new  TM_Xml_Database(true);                                   // Create FileSystem Based database
            TrackingApplication     = new Tracking_Application(TmXmlDatabase.Path_XmlDatabase);    // Enabled Application Tracking
            TM_REST.SetRouteTable();	// Set REST routes
            TrackingApplication.saveLog();
        }
        public void setup()
        {
            UserGroup.Admin.assert();
            tmDatabase = new TM_Xml_Database();
            tmUserData = new TM_UserData();

            Assert.NotNull (tmDatabase);
            Assert.NotNull (tmDatabase.Events);
        }
Example #7
0
        public void Application_Start()
        {
            //O2_Utils.showLogViewer_if_LocalHost();

            TmXmlDatabase           = new  TM_Xml_Database(true);                                   // Create FileSystem Based database
            TrackingApplication     = new Tracking_Application(TmXmlDatabase.Path_XmlDatabase);     // Enabled Application Tracking

            TM_REST.SetRouteTable();	                                                            // Set REST routes
            MVC4.MapDefaultRoutes();                                                                // Add support for ASP.NET MVC Controllers on the TM_Website
            TrackingApplication.saveLog();
        }
Example #8
0
        public TM_Rest_Direct()
        {
            UserGroup.Admin.setThreadPrincipalWithRoles();
            tmXmlDatabase = new TM_Xml_Database(false);
            UserGroup.Anonymous.setThreadPrincipalWithRoles();

            TMConfig.Current.TMSetup.UseAppDataFolder = true;									// set the TM XMl Database folder to be
            moq_HttpContext                   = new API_Moq_HttpContext();
            HttpContextFactory.Context        = moq_HttpContext.httpContext();
            TmRest = new TM_REST();
        }
Example #9
0
        public void setDatabase()
        {
            UserGroup.Admin.assert();

            tmXmlDatabase = new TM_Xml_Database();
            tmXmlDatabase.setup();

            tmUserData = new TM_UserData();
            tmUserData.createDefaultAdminUser();

            UserGroup.None.assert();
        }
Example #10
0
        public void LoadAndSave_TMServer_To_Disk()
        {
            var tmXmlDatabase              = new TM_Xml_Database();
            tmXmlDatabase.Path_XmlDatabase = "_tmpLocation".tempDir();
            tmXmlDatabase.UsingFileStorage = true;

            var tmServer      = tmXmlDatabase.TM_Server_Config;
            var tmServerPath  = tmXmlDatabase.get_Path_TMServer_Config();

            Assert.IsNotNull(tmServer                   , "tmServer");
            Assert.IsNotNull(tmServerPath               , "tmServerPath");
            Assert.AreEqual (tmServerPath.parentFolder(), tmXmlDatabase.Path_XmlDatabase , "tmServerPath.folderName()");
        }
Example #11
0
        public void SetupDatabase()
        {
            tmXmlDatabase   = new TM_Xml_Database();
            userData        = tmXmlDatabase.UserData;
            tmConfig        = TMConfig.Current = new TMConfig();
            //new TM_TestLibrary().CreateTestDatabase(tmXmlDatabase);

            //all these values should be null since we are running TM memory (default setting)
            Assert.IsNull(tmXmlDatabase.Path_XmlDatabase		    , "Path_XmlDatabase");
            Assert.IsNull(tmXmlDatabase.Path_XmlLibraries		    , "Path_XmlLibraries");
            Assert.IsEmpty(tmXmlDatabase.Cached_GuidanceItems	    , "Cached_GuidanceItems");
            Assert.IsEmpty(tmXmlDatabase.UserData.ActiveSessions    , "ActiveSessions");
            Assert.AreEqual(tmXmlDatabase.UserData.TMUsers.size()   ,1 , "TMUsers");				// there should be admin
        }
Example #12
0
        public static TeamMentor_Article update_Cache_GuidanceItems(this TeamMentor_Article guidanceItem,  TM_Xml_Database tmDatabase)
        {
            //guidanceItem.htmlEncode(); // ensure MetaData is encoded

            var guidanceItemGuid = guidanceItem.Metadata.Id;
            if (TM_Xml_Database.Current.Cached_GuidanceItems.hasKey(guidanceItemGuid))
                TM_Xml_Database.Current.Cached_GuidanceItems[guidanceItemGuid] = guidanceItem;
            else
                TM_Xml_Database.Current.Cached_GuidanceItems.Add(guidanceItem.Metadata.Id, guidanceItem);

            tmDatabase.Events.Articles_Cache_Updated.raise();

            return guidanceItem;
        }
Example #13
0
        public void TM_Xml_Database_Ctor()
        {
            Assert.IsNull (TM_Xml_Database.Current);
            Assert.IsTrue (TM_Xml_Database.SkipServerOnlineCheck);       // set on TeamMentor.UnitTests.Tests_Config.RunBeforeAllTests()

            var tmDatabase = new TM_Xml_Database();

            Assert.IsNotNull(TM_Xml_Database.Current);
            Assert.False    (tmDatabase.usingFileStorage());        // new TM_Xml_Database() defaults to UsingFileStorage = false
            Assert.IsNotNull(tmDatabase.Events);                    // this is the only list that should be set on the Ctor
            Assert.IsNotNull(tmDatabase.Cached_GuidanceItems);
            Assert.IsNotNull(tmDatabase.GuidanceExplorers_XmlFormat);
            Assert.IsNotNull(tmDatabase.VirtualArticles);
        }
        public TM_XmlDatabase_FileStorage()
        {
            SendEmails.Disable_EmailEngine = true;

            UserGroup.Admin.assert();
            tmFileStorage   = new TM_FileStorage();
            tmXmlDatabase   = tmFileStorage.TMXmlDatabase; //new TM_Xml_Database().setup();
            userData        = tmFileStorage.UserData;
            tmServer        = tmFileStorage.Server;
            tmConfig        = TMConfig.Current;

            CheckDatabaseSetup();
            UserGroup.None.assert();
        }
Example #15
0
        public void SetupDatabase()
        {
            UserGroup.Admin.assert();

            TM_FileStorage.Current = null;              // ensure this is not setup

            tmXmlDatabase   = new TM_Xml_Database().setup();

            userData.createDefaultAdminUser();

            Assert.IsEmpty(tmXmlDatabase.Cached_GuidanceItems	    , "Cached_GuidanceItems");
            Assert.IsEmpty(userData.validSessions()                 , "ActiveSessions");
            Assert.AreEqual(userData.TMUsers.size()              ,1 , "TMUsers");	                 // there should be admin

            UserGroup.None.assert();
        }
Example #16
0
 public static Folder_V3 tmFolder(this urn.microsoft.guidanceexplorer.Folder folder, Guid libraryId, TM_Xml_Database tmDatabase)
 {
     if (folder.isNull())
         return null;
     if (folder.folderId.isNull())				// handle legacy case where there is no folderId in the guidanceitems object
             folder.folderId = Guid.NewGuid().str();
     var tmFolder= new Folder_V3
             {
                 libraryId = libraryId,
                 name = folder.caption,
                 folderId = folder.folderId.guid(),
                 subFolders = tmDatabase.tmFolders(libraryId, folder.folder1)
             };
     foreach(var view in folder.view)
         tmFolder.views.Add(new View_V3  { viewId = view.id.guid()});
     return tmFolder;
 }
        public void setup()
        {
            if (Tests_Consts.offline)
                Assert.Ignore("Ignoring Test because we are offline");

            admin.assert(()=>{
                                tmFileStorage = new TM_FileStorage(false);

                                TM_FileStorage.Custom_WebRoot = "Custom_WebRoot".tempDir();

                                tmFileStorage.set_WebRoot()
                                             .set_Path_XmlDatabase()
                                             .tmConfig_Load()
                                             .set_Path_XmlLibraries();

                                tmXmlDatabase = tmFileStorage.TMXmlDatabase;
                            });
        }
Example #18
0
        public Events_TM_Xml_Database(TM_Xml_Database tmXmlDatabase)
        {
            this.Target                 = tmXmlDatabase;
            Before_Setup                = new TM_Event<TM_Xml_Database>(tmXmlDatabase);
            After_Setup                 = new TM_Event<TM_Xml_Database>(tmXmlDatabase);
            After_Set_Default_Values    = new TM_Event<TM_Xml_Database>(tmXmlDatabase);
            After_Set_Path_XmlLibraries = new TM_Event<TM_Xml_Database>(tmXmlDatabase);
               //         After_TmServer_Load         = new TM_Event<TM_Xml_Database>(tmXmlDatabase);
            After_Load_UserData         = new TM_Event<TM_Xml_Database>(tmXmlDatabase);
            After_Load_SiteData         = new TM_Event<TM_Xml_Database>(tmXmlDatabase);
            After_Load_Libraries        = new TM_Event<TM_Xml_Database>(tmXmlDatabase);

            Articles_Cache_Updated      = new TM_Event_TM_Xml_Database (tmXmlDatabase);
            Article_Saved                = new TM_Event_TM_Article      (tmXmlDatabase);
            Article_Deleted             = new TM_Event_TM_Article      (tmXmlDatabase);

            Library_Deleted             = new TM_Event_TM_Library      (tmXmlDatabase);
            GuidanceExplorer_Save       = new TM_Event_GuidanceExplorer(tmXmlDatabase);

            VirtualArticles_Loaded      = new TM_Event_TM_Xml_Database (tmXmlDatabase);
            VirtualArticles_Saved       = new TM_Event_TM_Xml_Database (tmXmlDatabase);
        }
Example #19
0
        public void setup_UserData_Git_Support()
        {
            var tmXmlDatabase = new TM_Xml_Database();

            Assert.Ignore("needs rewrite");
                /*
            Assert.AreEqual(tmXmlDatabase.Events.After_UserData_Ctor.size(), 1);
            tmXmlDatabase.setup_UserData_Git_Support();
            Assert.AreEqual(tmXmlDatabase.Events.After_UserData_Ctor.size(), 2);

            Assert.IsNull  (TM_UserData_Git.Current);
            Assert.IsNull  (tmXmlDatabase.UserData);

            tmXmlDatabase.userData();                       // will call the TM_UserData ctor if tmXmlDatabase.UserData is null

            Assert.NotNull  (tmXmlDatabase.UserData);
            Assert.NotNull  (TM_UserData_Git.Current);
            Assert.IsNotNull(TM_UserData_Git.Current.UserData);
            Assert.IsNull   (TM_UserData_Git.Current.UserData.path_UserData());
            Assert.IsNull   (tmXmlDatabase.path_XmlDatabase());
            Assert.AreEqual (TM_UserData_Git.Current.UserData, tmXmlDatabase.UserData);
                 * */
        }
Example #20
0
 public static List<Folder_V3> tmFolders(this TM_Library tmLibrary, TM_Xml_Database tmDatabase )
 {
     return tmDatabase.tmFolders(tmLibrary);
 }
Example #21
0
        public void SetupDatabase()
        {
            1.set_DEFAULT_PBKDF2_INTERACTIONS();                    // improve performance of tests that create users

            tmXmlDatabase   = new TM_Xml_Database();
            userData        = tmXmlDatabase.UserData;
            tmConfig        = TMConfig.Current = new TMConfig();

            Assert.IsNull(tmXmlDatabase.Path_XmlDatabase		    , "Path_XmlDatabase");          // null since we are running TM memory (default setting)
            Assert.IsNull(tmXmlDatabase.Path_XmlLibraries		    , "Path_XmlLibraries");         // null since we are running TM memory (default setting)
            Assert.IsEmpty(tmXmlDatabase.Cached_GuidanceItems	    , "Cached_GuidanceItems");
            Assert.IsEmpty(tmXmlDatabase.UserData.validSessions()   , "ActiveSessions");
            Assert.AreEqual(tmXmlDatabase.UserData.TMUsers.size(),1 , "TMUsers");	                 // there should be admin
        }
Example #22
0
 public static Folder_V3 tmFolder(this TM_Library tmLibrary, Guid folderId, TM_Xml_Database tmDatabase )
 {
     return tmDatabase.tmFolder(tmLibrary.Id, folderId);
 }
Example #23
0
 public static Library library(this TM_Library tmLibrary, TM_Xml_Database tmDatabase)
 {
     if (tmLibrary.isNull())
         return null;
     return new Library
         {
             caption = tmLibrary.Caption,
             id = tmLibrary.Id.str(),
             //Views = tmDatabase.tmViews(tmLibrary).ToArray()
         };
 }
Example #24
0
 static MarkdownController()
 {
     tmDatabase = TM_Xml_Database.Current;
 }
Example #25
0
 public TM_Xml_Database CreateTestDatabase(TM_Xml_Database tmXmlDatabase)
 {
     return tmXmlDatabase;
 }
Example #26
0
 public static string get_Path_TMServer_Config(this TM_Xml_Database tmDatabase)
 {
     return((tmDatabase.notNull() && tmDatabase.UsingFileStorage)
                 ? tmDatabase.Path_XmlDatabase.pathCombine(TMConsts.TM_SERVER_FILENAME)
                 : null);
 }
 public static bool xmlDB_Save_Article(this TeamMentor_Article article, TM_Xml_Database tmDatabase)
 {
     return article.xmlDB_Save_Article(article.Metadata.Library_Id, tmDatabase);
 }
        public void setUp()
        {
            UserGroup.Admin.assert();

            //create TM_FileStorage on temp Custom_WebRoot for this TestFixture
            TM_FileStorage.Custom_WebRoot = "custom_WebRoot".tempDir();

            tmFileStorage = new TM_FileStorage(false);
            tmFileStorage.set_WebRoot()
                         .set_Path_XmlDatabase()
                         .tmServer_Load()
                         .set_Path_UserData()
                         .load_UserData();
            tmFileStorage.hook_Events_TM_UserData();

            tmXmlDatabase = tmFileStorage.TMXmlDatabase   .assert_Not_Null();
            userData      = tmFileStorage.UserData        .assert_Not_Null();
            tmServer      = tmFileStorage.Server          .assert_Not_Null();

            tmFileStorage.Path_XmlDatabase.assert_Folder_Exists();
            tmFileStorage.Path_UserData   .assert_Folder_Exists();

            userDataGit = tmFileStorage   .setup_UserData_Git_Support();        // adds Git Support for UserData repos

            tmFileStorage.Path_UserData.isGitRepository().assert_True();

            Assert.NotNull(tmFileStorage.Server.userData_Config());

            userData .createDefaultAdminUser();

            userDataGit.triggerGitCommit();

            nGit     = userDataGit.NGit;

            nGit.commits().assert_Size_Is(2, "there should be two commits here");

            UserGroup.None.assert();
        }
 public static List<urn.microsoft.guidanceexplorer.View> xmlDB_Views_InLibraryRoot(this TM_Library tmLibrary , TM_Xml_Database tmDatabase)
 {
     try
     {
         return tmLibrary.guidanceExplorer(tmDatabase).library.libraryStructure.view.toList();
     }
     catch
     {
         return new List<urn.microsoft.guidanceexplorer.View>();
     }
 }
        public static bool xmlDB_Save_Article(this TeamMentor_Article article, Guid libraryId, TM_Xml_Database tmDatabase)
        {
            if (libraryId == Guid.Empty)                                                // ensure we have a library to put the Article in
            {
                "[xmlDB_Save_GuidanceItem] no LibraryId was provided".error();
                return false;
            }

            if(article.Content.DataType.lower() == "html")                              // tidy the html
            {
                var cdataContent=  article.Content.Data.Value.replace("]]>", "]] >");   // xmlserialization below will break if there is a ]]>  in the text
                var tidiedHtml = cdataContent.tidyHtml();

                article.Content.Data.Value = tidiedHtml;
                if (article.serialize(false).inValid())                                 // see if the tidied content can be serialized  and if not use the original data
                    article.Content.Data.Value = cdataContent;
            }
            article.Metadata.Library_Id = libraryId;                                    // ensure the LibraryID is correct

            if (article.serialize(false).notValid())                                    // make sure the article can be serilialized  correctly
                return false;

            article.update_Cache_GuidanceItems(tmDatabase);                             // add it to in Memory cache

            if(tmDatabase.UsingFileStorage)                                             // save to disk
            {
                var guidanceXmlPath = tmDatabase.getXmlFilePathForGuidanceId(article.Metadata.Id, libraryId);
                "Saving GuidanceItem {0} to {1}".info(article.Metadata.Id, guidanceXmlPath);
                article.saveAs(guidanceXmlPath);
                return guidanceXmlPath.fileExists();
            }
            return true;
        }
Example #31
0
 public void setDatabase()
 {
     tmXmlDatabase = new TM_Xml_Database(false);
 }