2016-10-03 2 views
0

以下のコードはHTMLモジュールでは問題なく動作していますが、HTML PROモジュールでは機能しません。コンテンツ内のDNN HTML Proモジュールを別のモジュールにコピー

HtmlTextController htmlTextController = new HtmlTextController(); 
WorkflowStateController workflowStateController = new WorkflowStateController(); 
int workflowId = htmlTextController.GetWorkflow(ModuleId, TabId, PortalId).Value; 

List<HtmlTextInfo> htmlContents = htmlTextController.GetAllHtmlText(ModuleModId); 
htmlContents = htmlContents.OrderBy(c => c.Version).ToList(); 

foreach (var content in htmlContents) 
{ 
    HtmlTextInfo htmlContent = new HtmlTextInfo(); 
    htmlContent.ItemID = -1; 
    htmlContent.StateID = workflowStateController.GetFirstWorkflowStateID(workflowId); 
    htmlContent.WorkflowID = workflowId; 
    htmlContent.ModuleID = ModuleId; 
    htmlContent.IsPublished = content.IsPublished; 
    htmlContent.Approved = content.Approved; 
    htmlContent.IsActive = content.IsActive; 
    htmlContent.Content = content.Content; 
    htmlContent.Summary = content.Summary; 
    htmlContent.Version = content.Version; 
} 
htmlTextController.UpdateHtmlText(htmlContent, htmlTextController.GetMaximumVersionHistory(PortalId)); 

答えて

0

これは、HTML Proモジュールによって異なる方法が発生しています。これは、DNN HTMLモジュールとは部分的に異なります。以下はコードです。

  HtmlTextController htmlTextController = new HtmlTextController(); 
      WorkflowStateController workflowStateController = new WorkflowStateController(); 
      WorkflowStateInfo wsinfo = new WorkflowStateInfo(); 

      int workflowId = wsinfo.WorkflowID; 

      HtmlTextInfo htmlContents = htmlTextController.GetLatestHTMLContent(ModuleModId); 

       HtmlTextInfo htmlContent = new HtmlTextInfo(); 
       htmlContent.ItemID = -1; 
       htmlContent.StateID = workflowStateController.GetFirstWorkflowStateID(workflowId); 
       htmlContent.WorkflowID = workflowId; 
       htmlContent.ModuleID = ModuleId; 
       htmlContent.IsPublished = htmlContents.IsPublished; 
       htmlContent.Approved = htmlContents.Approved; 
       htmlContent.IsActive = htmlContents.IsActive; 
       htmlContent.Content = htmlContents.Content; 
       htmlContent.Summary = htmlContents.Summary; 
       htmlContent.Version = htmlContents.Version; 

       if (Tags != null && Tags.Count > 0) 
       { 
        foreach (KeyValuePair<string, string> tag in Tags) 
        { 
         if (htmlContent.Content.Contains(tag.Key)) 
         { 
          htmlContent.Content = htmlContent.Content.Replace(tag.Key, tag.Value); 
         } 
        } 
       } 

       htmlTextController.SaveHtmlContent(htmlContent, newModule); 

また、以下のコードを参照してメソッドを参照してください。

using DotNetNuke.Modules.HtmlPro; 
using DotNetNuke.Professional.HtmlPro; 
using DotNetNuke.Professional.HtmlPro.Components; 
using DotNetNuke.Professional.HtmlPro.Services; 
0

あなたは、単に「コピー」、他の1つのコンテンツを探している場合は、これらのモジュールの一部である「インポート」と「エクスポート」機能の使用状況を調査することがあります。

時間の経過とともに互換性が向上するよう、このルートを使用することをお勧めします。フィールドやその他のデータ要素を更新する場合は、調査の必要がなくなり、コードを更新する必要があります。

これらの各モジュールの.dnnマニフェストを見て、使用できる2つのメソッド "ImportModule"と "ExportModule"を持つBusinessControllerClassを見つけることができます。

関連する問題