DotNetNuke Modifying Digital Assets Manager - dotnetnuke

I am looking to extract Digital Assets Manager / Management module (DAM) from source distribution of DotNetNuke 7.3.1 platform which is to be compiled into a separate module so that I can do some modifications to suit certain use cases.
What I have done:
I copied DigitalAssets module into fresh copy of local dev environment (DNN 7.3.1)
I changed all namespaces (I didn't bother renaming file names)
I used DotNetNuke.Modules.DigitalAssets.csproj to get VisualStudio sln
I cleaned out virtual directories and apps from IIS
I fixed other issues with libraries that were throwing errors
I got it to compile and produce a .dll with a different name to original module
So, now when I throw this module on a page (in theory) I should expect exactly the same behaviour as the original DigitalAssets module that came with framework.
But it doesn't behave the same.
In fact it appears to be refreshing the page like it is stuck in an infinite loop.
It doesn't load any documents either.
It doesn't load Digital Assets Management Settings tab either.
Original DigitalAssets module works just fine.
I have noticed a POST error in console window of the form:
JQMIGRATE: Logging is active jquery-migrate.js?cdv=23:21
POST http://devsite1.me/DesktopModules/DigitalAssets/API/ContentService/GetFolderContent 401 (Unauthorized) - jquery.js?cdv=23:8526
send - 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
(anonymous function) - jquery.js:9597
Telerik.Web.UI.RadWebControl.raiseEvent - jquery.js:9597
(anonymous function) - jquery.js:9597
Telerik.Web.UI.RadGrid.initialize - jquery.js:9597
Sys.Component.endUpdate - jquery.js:9597
Sys.Component.create - jquery.js:9597
(anonymous function) - My-DAM?folderId=41&view=gridview&pageSize=10:1154
(anonymous function) - 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
Interesting to note that I am not getting any other errors or event logs. These anonymous function calls make me worried.
It appears to me I missed something important. Any help with this is greatly appreciated.
EDIT 1:
Found this error within loadFolder - dnn.DigitalAssets.js?cdv=23:1492
An error occurred while loading the folder content
An error caused by ajax call to /DesktopModules/DigitalAssets/API/ContentService/GetFolderContent service. Problem with this is its actually pointing to the original DigitalAssets module and not the one I am working on. So, this has to change.
Status 401 Unauthorized didn't get fixed.
EDIT 2:
Upon further investigation I have found GetFolderContent() function in ContentServiceController.cs which in turn supposed to return an object with folder structure.
[AllowAnonymous] on this function didn't make Status 401 go away either.
EDIT 3:
Changing url to anything other then /DesktopModules/Module_Name/API/ContentService/GetFolderContent causes ajax call throw Status 404 Not Found and display error dialog An error occured while loading the folder content. Not Found.
Which I hope means that the ajax call actually gets to GetDolderContent() and back. As to why it comes back with Status 401 is still under investigation.
EDIT 4:
OK, there seems to be an issue with the way I got the module to build in Visual Studio. Tried building it in Release mode and while it build successfully I didn't get my install and packages folders packed with all important goodness.
EDIT 5:
All work trying to take ownership of this module has been suspended for the time being. I have managed to get it to compile in place of the original DigitalAssets module which was fairly easy. But now it's pulling DotNetNuke.Web.dll (or File Uploader to be more specific) after itself.
Getting DotNetNuke.Web to compile was exactly the same process which is fairly straight forward. But now I am trading upgradability of the platform in more than one place. Which I don't particularly fancy.

Just to close off the question the conclusion as follows.
The project; Digital Assets Manager takeover has been put on hold. At the time there wasn't enough knowledge of DNN inner workings that would allow me to progress without wasting too much time.
For now I ended up modifying the core module (not ideal). In the future when I have less things that need to be done ASAP I will definitely revisit this idea.

Related

How to get generated content in Apache module and save it to file

I have been playing around with Apache module development and got the module working. However, I ran into the issue of where to hook properly to get all the data I need.
I am making a simple caching module that needs to hook at the beginning of the request and check if the file for this URL exists on disk and if it does then serve that file and stop content generation of Apache.
Currently, the module still continues to go into content generation mode. Let's say I have a long-running PHP script that takes 5s to generate. I would to omit calling the script altogether and just serve the static file from disk.
Furthermore, if the local file does not exist, I would like Apache to execute content generation (actually executes the PHP script) and before sending that data to the client I would like to have a proper hook that somehow gets this data and saves it to a local file.
I have tried ap_hook_fixups, ap_hook_handler and APR_HOOK_LAST, APR_HOOK_LAST and all the variations but no luck.
It always executes at the start of the request.
I also do not want to use any existing Apache modules. I want this to be a self-contained module.
Is there a way to do this kind of thing?
Based on the information you have provided, it sounds like you want your module to execute First and not last.
From what I understand of your issue, you want to make sure the file that would potentially be generated is already on disk or not, and if it is, serve that file, instead of allowing your php script to serve it.
In this case, you'll want to use APR_HOOK_FIRST or APR_HOOK_REALLY_FIRST
Then, assuming your file is on disk, you serve your file, and at the end of your module's work do a return OK;
If the file does not exist, do a return DECLINED
The DECLINED tells Apache that your module should not be the handler for this request and will continue down the list of modules till it finds something that will.
The goal here is to get your module to run before the php module does, to prevent your generation code from running, and fall back onto the php module if the requested file was not found.
Note:
The APR_HOOK_? priorities are just numbers -10 to 30
You should be able to fine tune this if you find your module executing a little too soon, like before mod_ssl for example.
Also, I am terrible at following documents, but the official Apache module development docs are amazingly assembled. Please try to use them, if you have,
I have spent the last 6 months messing around with Apache module development, working on a telegram bot.
I have had to do this song and dace a few times now.

ABI issue in standard pancakeswap fork

I am trying to create a fork of pancakeswap/goosedefi. The project works when I check it out from github and start using yarn start.
As soon as I change the contract addresses, symbol, and ABI to match my new project, I get the following error:
"Uncaught (in promise) Error: Returned values aren't valid, did it run Out of Gas? You might also see this error if you are not using the correct ABI for the contract you are retrieving data from, requesting data from a block number that does not exist, or querying a node which is not fully synced"
The ABI matches the ABI generated by BscScan for the contract address.
Has anyone successfully forked PancakeSwap and gotten past this error?
I'm trying to fork It too and i've encountered the same error multiple time. You should check which function throw this error becouse the original cause can be a wrong farms or pools configuration. For example i've the same error throwed by useFetchBalances hooks and navigating through the stack i've seen that useCakeBnb/useCakeBusd cause the problem too, so i've configured pools and now It works fine.
I Hope that this can be helpfull for you

Codenamone One Online Build Failure

We added new features to our data collection mobile application after two -three months of inactivity, only for the build to keep failing.
This is the stack trace
ll-advised or mistaken usage of a core class (java.* or javax.*)
when not building a core library.
This is often due to inadvertently including a core library file
in your application's project, when using an IDE (such as
Eclipse). If you are sure you're not intentionally defining a
core class, then this is the most likely explanation of what's
going on.
However, you might actually be trying to define a class in a core
namespace, the source of which you may have taken, for example,
from a non-Android virtual machine project. This will most
assuredly not work. At a minimum, it jeopardizes the
compatibility of your app with future versions of the platform.
It is also often of questionable legality.
If you really intend to build a core library -- which is only
appropriate as part of creating a full virtual machine
distribution, as opposed to compiling an application -- then use
the "--core-library" option to suppress this error message.
If you go ahead and use "--core-library" but are in fact
building an application, then be forewarned that your application
will still fail to build or run, at some point. Please be
prepared for angry customers who find, for example, that your
application ceases to function once they upgrade their operating
system. You will be to blame for this problem.
If you are legitimately using some code that happens to be in a
core package, then the easiest safe alternative you have is to
repackage that code. That is, move the classes in question into
your own package namespace. This means that they will never be in
conflict with core system classes. JarJar is a tool that may help
you in this endeavor. If you find that you cannot do this, then
that is an indication that the path you are on will ultimately
lead to pain, suffering, grief, and lamentation.
1 error; aborting
:transformClassesWithDexForRelease FAILED
:transformClassesWithDexForRelease (Thread[Daemon worker,5,main]) completed. Took 11.045 secs.
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':transformClassesWithDexForRelease'.
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: Error while executing java process with main class com.android.dx.command.Main with arguments {--dex --verbose --force-jumbo --num-threads=4 --output /tmp/build8570106392456281219xxx/Application/build/intermediates/transforms/dex/release/0 --min-sdk-version 15 /tmp/build8570106392456281219xxx/Application/build/intermediates/transforms/proguard/release/0.jar}
You or one of the cn1libs you are using included a javax.xml package as part of the code. We migrated to build target 27 over the weekend and I'm guessing that Google made checks for this sort of problem more rigid.
I see a lot of keep statements in your build hints so I'm guessing this was done intentionally.

Credentails Manager service is stopped

Hi,
I am getting the below error when trying to update my view . Also, creds manager service is stopped and not getting started.
As long as the credmanager.exe is not started, none of the view (snapshot or dynamic) will work. So you need to debug that first.
Typically, you would check the ClearCase logs, and the Windows event, to see what the issue is. See "how to fix or investigate 'Operation “view_ws_is_ws_view” failed'?", using cleartool getlog.
That kind of error ("This application has failed to start becauselibatriaks.dllwas not found. Re-installing the application may fix this problem") was seen with rather old versions of ClearCase (7.0.1).
See for instance this thread.
If the DLL is present and the directory is in your path you should never
get this error.
Check to see how far ...\rational\clearcase\bin is down your SYSTEM path, and make sure the DLL's are in there.
ccgzip.exe will be called (by the client process) when checking in any files that fall back to the "compressed_file" element type. It may be called by the view server during file opens and checkouts to construct cleartext if needed. The former uses your user path, the latter will normally use the SYSTEM path.
We've seen odd behavior on Windows when the path gets >500 characters
long, though there seems to be no "official" limit to the length this environment variable (%PATH%) can grow to.
The error message you see is likely a path issue. Whether that's related to the other issue is unknown...
Is the albd server process running? The credential manager service is flagged to depend on this service. If that service fails to start, or terminates, the credential manager service will also fail.
A service startup failure should be in the Application or System Event logs. and from there the "Troubleshooting albd startup failures" technote on ibm.com would likely be a good place to start.

Best practice to resolve the URI error

I have a main project (ProjectA) that contain a base class (xaml + code-behind).
Also, I have another project (ProjectB) in reference with ProjectA. In that last
project I have inherits some user-control created in ProjectA.
When launching the main application, I receive the follow error:
The component 'XXX' does not have a resource identified by the URI
'/My.Assembly;component/.../simplegridview.xaml'
Is there a best way to resolve that problem?
I know it is not really a solution to the problem. But I have found that Clean and Build makes the error go away...
I encounter the same problem with VS 2013 sometimes, without any immediate cause e.g. after a reboot and rebuild from scratch. In such cases the solution build succeeds, it also runs but still the error list displays e.g. 5 URI errors. While sometimes clean and build suffies, other times you have to close VS, delete bin/obj folders of the project with the errors, reopen VS and then the errors have gone.

Resources