DotNetNuke修改数字资产管理器

时间:2014-08-05 15:08:50

标签: dotnetnuke dotnetnuke-module

我希望从DotNetNuke 7.3.1平台的源代码分发中提取数字资产管理器/管理模块(DAM),该平台将编译成一个单独的模块,以便我可以做一些修改以适应某些用例。

我做了什么:

  1. 我将DigitalAssets模块复制到本地开发环境的新副本(DNN 7.3.1)
  2. 我更改了所有名称空间(我没有打扰重命名文件名)
  3. 我使用DotNetNuke.Modules.DigitalAssets.csproj来获取VisualStudio sln
  4. 我清理了IIS中的虚拟目录和应用程序
  5. 我修正了抛出错误的库的其他问题
  6. 我得到它来编译并生成一个与原始模块具有不同名称的.dll
  7. 所以,现在当我将这个模块放在一个页面上(理论上)时,我应该期望与框架附带的原始DigitalAssets模块完全相同的行为。

    但它的行为并不相同。

    1. 实际上它似乎刷新了页面,就像它陷入无限循环一样。
    2. 它也没有加载任何文件。
    3. 它也不会加载数字资产管理设置标签。
    4. 原始DigitalAssets模块工作得很好。
    5. 我注意到表格的控制台窗口中有一个POST错误:

        

      JQMIGRATE:日志记录处于活动状态jquery-migrate.js?cdv = 23:21

           

      POST http://devsite1.me/DesktopModules/DigitalAssets/API/ContentService/GetFolderContent 401(未经授权) - jquery.js?cdv = 23:8526

           
          

      发送 - jquery.js?cdv = 23:8526

               

      jQuery.extend.ajax - jquery.js?cdv = 23:7978

               

      loadFolder - dnn.DigitalAssets.js?cdv = 23:1492

               

      loadFolderFirstPage - dnn.DigitalAssets.js?cdv = 23:1437

               

      loadInitialContent - dnn.DigitalAssets.js?cdv = 23:1431

               

      gridOnGridCreated - dnn.DigitalAssetsController.js?cdv = 23:47

               

      gridOnGridCreated - dnn.DigitalAssets.js?cdv = 23:205

               

      (匿名函数) - jquery.js:9597

               

      Telerik.Web.UI.RadWebControl.raiseEvent - jquery.js:9597

               

      (匿名函数) - jquery.js:9597

               

      Telerik.Web.UI.RadGrid.initialize - jquery.js:9597

               

      Sys.Component.endUpdate - jquery.js:9597

               

      Sys.Component.create - jquery.js:9597

               

      (匿名函数) - My-DAM?folderId = 41& view = gridview& pageSize = 10:1154

               

      (匿名函数) - jquery.js:9597

               

      Sys._Application._raiseInit - jquery.js:9597

               

      Sys._Application.initialize - jquery.js:9597

               

      b - jquery.js:9597

               

      document.addEventListener.a - jquery.js:9597

        

      有趣的是,我没有收到任何其他错误或事件日志。这些匿名函数调用让我很担心。

      在我看来,我错过了重要的事情。非常感谢任何帮助。

      编辑1:

      loadFolder - dnn.DigitalAssets.js?cdv=23:1492

      中发现此错误
        

      加载文件夹内容时发生错误

      ajax调用/DesktopModules/DigitalAssets/API/ContentService/GetFolderContent服务导致的错误。问题在于它实际上是指向原始的DigitalAssets模块,而不是我正在处理的模块。所以,这必须改变。

      状态401未经授权未得到修复。

      编辑2:

      经过进一步调查,我在ContentServiceController.cs中找到了GetFolderContent()函数,而该函数又应该返回一个具有文件夹结构的对象。

      [AllowAnonymous]在这个函数上没有使状态401消失。

      编辑3:

      将网址更改为/DesktopModules/Module_Name/API/ContentService/GetFolderContent以外的任何内容会导致ajax调用抛出状态404未找到并显示错误对话框An error occured while loading the folder content. Not Found

      我希望这意味着ajax调用实际上会转到GetDolderContent()并返回。至于为什么它返回状态401仍在调查中。

      编辑4:

      好的,我在Visual Studio中构建模块的方式似乎存在问题。尝试在发布模式下构建它,并且在成功构建时,我没有得到包含所有重要优点的installpackages个文件夹。

      编辑5:

      所有试图获得该模块所有权的工作暂时暂停。我已经设法让它编译代替原始的DigitalAssets模块,这非常简单。但现在它将自己的DotNetNuke.Web.dll(或文件上传器更具体)拉出来。

      让DotNetNuke.Web进行编译是完全相同的过程,这是相当直接的。但现在我在不止一个地方交易平台的可升级性。我并不特别喜欢。

1 个答案:

答案 0 :(得分:0)

只是结束如下问题的结论。

该项目;数字资产经理的收购已被搁置。当时没有足够的DNN内部工作知识可以让我进步而不会浪费太多时间。

现在我最终修改了核心模块(不理想)。在将来我需要做的事情很少,我一定会重新考虑这个想法。