Exemplo n.º 1
0
        private int LocalizeModuleInternal(ModuleInfo sourceModule)
        {
            int moduleId = Null.NullInteger;

            if (sourceModule != null)
            {
                // clone the module object ( to avoid creating an object reference to the data cache )
                var newModule = sourceModule.Clone();
                newModule.ModuleID = Null.NullInteger;

                string translatorRoles = PortalController.GetPortalSetting(string.Format("DefaultTranslatorRoles-{0}", sourceModule.CultureCode), sourceModule.PortalID, "").TrimEnd(';');

                //Add the default translators for this language, view and edit permissions
                var permissionController = new PermissionController();
                var viewPermissionsList = permissionController.GetPermissionByCodeAndKey("SYSTEM_MODULE_DEFINITION", "VIEW");
                var editPermissionsList = permissionController.GetPermissionByCodeAndKey("SYSTEM_MODULE_DEFINITION", "EDIT");
                PermissionInfo viewPermisison = null;
                PermissionInfo editPermisison = null;

                //View
                if (viewPermissionsList != null && viewPermissionsList.Count > 0)
                {
                    viewPermisison = (PermissionInfo)viewPermissionsList[0];
                }

                //Edit
                if (editPermissionsList != null && editPermissionsList.Count > 0)
                {
                    editPermisison = (PermissionInfo)editPermissionsList[0];
                }

                if (viewPermisison != null || editPermisison != null)
                {
                    foreach (string translatorRole in translatorRoles.Split(';'))
                    {
                        AddModulePermission(ref newModule, sourceModule.PortalID, translatorRole, viewPermisison, "VIEW");
                        AddModulePermission(ref newModule, sourceModule.PortalID, translatorRole, editPermisison, "EDIT");
                    }
                }

                //Add Module
                AddModuleInternal(newModule);

                //copy module settings
                Hashtable settings = GetModuleSettings(sourceModule.ModuleID);

                //Copy each setting to the new TabModule instance
                foreach (DictionaryEntry setting in settings)
                {
                    UpdateModuleSetting(newModule.ModuleID, Convert.ToString(setting.Key), Convert.ToString(setting.Value));
                }

                // update tabmodule
                dataProvider.UpdateTabModule(newModule.TabModuleID,
                                             newModule.TabID,
                                             newModule.ModuleID,
                                             newModule.ModuleTitle,
                                             newModule.Header,
                                             newModule.Footer,
                                             newModule.ModuleOrder,
                                             newModule.PaneName,
                                             newModule.CacheTime,
                                             newModule.CacheMethod,
                                             newModule.Alignment,
                                             newModule.Color,
                                             newModule.Border,
                                             newModule.IconFile,
                                             (int)newModule.Visibility,
                                             newModule.ContainerSrc,
                                             newModule.DisplayTitle,
                                             newModule.DisplayPrint,
                                             newModule.DisplaySyndicate,
                                             newModule.IsWebSlice,
                                             newModule.WebSliceTitle,
                                             newModule.WebSliceExpiryDate,
                                             newModule.WebSliceTTL,
                                             newModule.VersionGuid,
                                             newModule.DefaultLanguageGuid,
                                             newModule.LocalizedVersionGuid,
                                             newModule.CultureCode,
                                             UserController.GetCurrentUserInfo().UserID);

                if (!string.IsNullOrEmpty(newModule.DesktopModule.BusinessControllerClass))
                {
                    try
                    {
                        object businessController = Reflection.CreateObject(newModule.DesktopModule.BusinessControllerClass, newModule.DesktopModule.BusinessControllerClass);
                        var portableModule = businessController as IPortable;
                        if (portableModule != null)
                        {
                            string Content = portableModule.ExportModule(sourceModule.ModuleID);
                            if (!string.IsNullOrEmpty(Content))
                            {
                                portableModule.ImportModule(newModule.ModuleID, Content, newModule.DesktopModule.Version, UserController.GetCurrentUserInfo().UserID);
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        Exceptions.LogException(ex);
                    }
                }

                moduleId = newModule.ModuleID;

                //Clear Caches
                ClearCache(newModule.TabID);
                ClearCache(sourceModule.TabID);
            }

            return moduleId;
        }
Exemplo n.º 2
0
        /// <summary>
        /// Des the localize module.
        /// </summary>
        /// <param name="sourceModule">The source module.</param>
        /// <returns>new module id</returns>
        public int DeLocalizeModule(ModuleInfo sourceModule)
        {
            int moduleId = Null.NullInteger;

            if (sourceModule != null && sourceModule.DefaultLanguageModule != null)
            {
                // clone the module object ( to avoid creating an object reference to the data cache )
                ModuleInfo newModule = sourceModule.Clone();

                //Get the Module ID of the default language instance
                newModule.ModuleID = sourceModule.DefaultLanguageModule.ModuleID;

                if (newModule.ModuleID != sourceModule.ModuleID)
                {
                    // update tabmodule
                    dataProvider.UpdateTabModule(newModule.TabModuleID,
                                                 newModule.TabID,
                                                 newModule.ModuleID,
                                                 newModule.ModuleTitle,
                                                 newModule.Header,
                                                 newModule.Footer,
                                                 newModule.ModuleOrder,
                                                 newModule.PaneName,
                                                 newModule.CacheTime,
                                                 newModule.CacheMethod,
                                                 newModule.Alignment,
                                                 newModule.Color,
                                                 newModule.Border,
                                                 newModule.IconFile,
                                                 (int)newModule.Visibility,
                                                 newModule.ContainerSrc,
                                                 newModule.DisplayTitle,
                                                 newModule.DisplayPrint,
                                                 newModule.DisplaySyndicate,
                                                 newModule.IsWebSlice,
                                                 newModule.WebSliceTitle,
                                                 newModule.WebSliceExpiryDate,
                                                 newModule.WebSliceTTL,
                                                 newModule.VersionGuid,
                                                 newModule.DefaultLanguageGuid,
                                                 newModule.LocalizedVersionGuid,
                                                 newModule.CultureCode,
                                                 UserController.GetCurrentUserInfo().UserID);

                    //check if all modules instances have been deleted
                    if (GetModule(sourceModule.ModuleID, Null.NullInteger, true).TabID == Null.NullInteger)
                    {
                        //delete the deep copy "module info"
                        DeleteModule(sourceModule.ModuleID);
                    }

                }

                moduleId = newModule.ModuleID;

                //Clear Caches
                ClearCache(newModule.TabID);
                ClearCache(sourceModule.TabID);
            }

            return moduleId;
        }
        /// <summary>
        /// Copies the module to page.
        /// </summary>
        /// <param name="moduleToCopy">The module to copy.</param>
        /// <param name="destinationTabID">The destination tab ID.</param>
        private static void CopyModuleToPage(ModuleInfo moduleToCopy, int destinationTabID)
        {
            var  moduleController = new ModuleController();

            // duplicate the module and assign it the new page
            ModuleInfo newModule = moduleToCopy.Clone();
            newModule.ModuleID = -1;
            newModule.TabID = destinationTabID;

            // add it to the system - this takes care of adding the 
            // module and the tab module
            newModule.ModuleID = moduleController.AddModule(newModule);

            // duplicate the settings for the module
            DuplicateModuleSettings(moduleToCopy, newModule.ModuleID);

            // duplicate the settings for the tabmodule
            moduleController.CopyTabModuleSettings(moduleToCopy, newModule);
        }
Exemplo n.º 4
0
         /// <summary>
        /// Copies the module to a new page.
        /// </summary>
        /// <param name="sourceModule">The source module.</param>
        /// <param name="destinationTab">The destination tab.</param>
        /// <param name="toPaneName">Name of to pane.</param>
        /// <param name="includeSettings">if set to <c>true</c> include settings.</param>
        public void CopyModule(ModuleInfo sourceModule, TabInfo destinationTab, string toPaneName, bool includeSettings)
        {
            PortalInfo portal = new PortalController().GetPortal(destinationTab.PortalID);

            //Clone Module
            ModuleInfo destinationModule = sourceModule.Clone();
            if (!String.IsNullOrEmpty(toPaneName))
            {
                destinationModule.PaneName = toPaneName;
            }

            destinationModule.TabID = destinationTab.TabID;

            //The new reference copy should have the same culture as the destination Tab
            destinationModule.UniqueId = Guid.NewGuid();
            destinationModule.CultureCode = destinationTab.CultureCode;
            destinationModule.VersionGuid = Guid.NewGuid();
            destinationModule.LocalizedVersionGuid = Guid.NewGuid();

            //Figure out the DefaultLanguage Guid
            if (!String.IsNullOrEmpty(sourceModule.CultureCode) && sourceModule.CultureCode == portal.DefaultLanguage && destinationModule.CultureCode != sourceModule.CultureCode &&
                !String.IsNullOrEmpty(destinationModule.CultureCode))
            {
                //Tab is localized so set Default language Guid reference
                destinationModule.DefaultLanguageGuid = sourceModule.UniqueId;
            }
            else if (!String.IsNullOrEmpty(sourceModule.CultureCode) && sourceModule.CultureCode != portal.DefaultLanguage && destinationModule.CultureCode != sourceModule.CultureCode &&
                     !String.IsNullOrEmpty(destinationModule.CultureCode))
            {
                // tab is localized, but the source is not in the default language (it was on a single culture page)
                // this wires up all the connections 
                sourceModule.DefaultLanguageGuid = destinationModule.UniqueId;
                UpdateModule(sourceModule);
            }
            else if (sourceModule.AllTabs && sourceModule.CultureCode != portal.DefaultLanguage)
            {
                if (sourceModule.DefaultLanguageModule != null && destinationTab.DefaultLanguageTab != null)
                {
                    ModuleInfo defaultLanguageModule = GetModule(sourceModule.DefaultLanguageModule.ModuleID, destinationTab.DefaultLanguageTab.TabID);

                    if (defaultLanguageModule != null)
                    {
                        destinationModule.DefaultLanguageGuid = defaultLanguageModule.UniqueId;
                    }
                }
            }

            //This will fail if the page already contains this module
            try
            {
                //Add a copy of the module to the bottom of the Pane for the new Tab
                dataProvider.AddTabModule(destinationModule.TabID,
                                          destinationModule.ModuleID,
                                          destinationModule.ModuleTitle,
                                          destinationModule.Header,
                                          destinationModule.Footer,
                                          destinationModule.ModuleOrder,
                                          destinationModule.PaneName,
                                          destinationModule.CacheTime,
                                          destinationModule.CacheMethod,
                                          destinationModule.Alignment,
                                          destinationModule.Color,
                                          destinationModule.Border,
                                          destinationModule.IconFile,
                                          (int)destinationModule.Visibility,
                                          destinationModule.ContainerSrc,
                                          destinationModule.DisplayTitle,
                                          destinationModule.DisplayPrint,
                                          destinationModule.DisplaySyndicate,
                                          destinationModule.IsWebSlice,
                                          destinationModule.WebSliceTitle,
                                          destinationModule.WebSliceExpiryDate,
                                          destinationModule.WebSliceTTL,
                                          destinationModule.UniqueId,
                                          destinationModule.VersionGuid,
                                          destinationModule.DefaultLanguageGuid,
                                          destinationModule.LocalizedVersionGuid,
                                          destinationModule.CultureCode,
                                          UserController.GetCurrentUserInfo().UserID);

                //Optionally copy the TabModuleSettings
                if (includeSettings)
                {
                    CopyTabModuleSettings(sourceModule, destinationModule);
                }
            }
            catch (Exception exc)
            {
                // module already in the page, ignore error
                Logger.Error(exc);
            }
            
            ClearCache(sourceModule.TabID);
            ClearCache(destinationTab.TabID);            

            //Optionally copy the TabModuleSettings
            if (includeSettings)
            {
                destinationModule = GetModule(destinationModule.ModuleID, destinationModule.TabID);
                CopyTabModuleSettings(sourceModule, destinationModule);
            }
        }
        /// <summary>
        /// Adds the referenced module to page.
        /// </summary>
        /// <param name="moduleToCopy">The module to copy.</param>
        /// <param name="destinationTabID">The destination tab ID.</param>
        private static void AddReferencedModuleToPage(ModuleInfo moduleToCopy, int destinationTabID)
        {
            // duplicate the module and assign it the new page
            ModuleInfo newModule = moduleToCopy.Clone();
            newModule.TabID = destinationTabID;

            // add it to the system - this takes care of adding the 
            // module and the tab module
            newModule.ModuleID = new ModuleController().AddModule(newModule);
        }