Create DotNetNuke Module - dotnetnuke

I am a mid-level c#/.Net developer. I was asked to create a Dotnetnuke module. In your opinion, what is the best way to learn how to create modules? Is there a site/video/tutorial that is more beneficial than most? I will be using Dotnetnuke 8.**.
UPDATE
Since opinion based questions are not allowed then please just list places to learn how to create dotnetnuke modules.

My opinion may be slightly biased....
http://www.christoc.com/Tutorials/DNN8-Tutorials
Use my free Visual Studio project templates http://cjh.am/dnntemplates
Setup your local development environment as instructed in the videos (using http://dnndev.me/)

I have an account at http://www.dnncreative.com/ that has helped me a lot!!

We believe that developing in DNN has a few requirements you must adhere to, to ensure you're ready for the future. These requirements include:
avoid any kind of webforms-specific mechanism, as they are end of life and have been for quite a while now
use Razor for server side templating and JS for most logic - this ensure you're on current technologies and ready for .net core
use webapi for actions / data / state change
You can do this manually with a lot of plumbing using MVC modules, or do it 10x faster using 2sxc (check 2sxc.org).
Love from Switzerland,
Daniel

Related

In 2019, how much is it necessary to migrate a site from Angularjs to another framework?

I'm a project manager of a market place and I'm trying to find solution for my concerns. For two years a ago we decided to develop market place.
In front layer we decide to use angularjs and our team professional implement front layer using AngularJS. We add dependency injection for first time to angularjs 1.3 and solve google analytic crawling in SPA website.
But when google announce On July 1, 2018 AngularJS entered a 3 year Long Term Support period. As a project manager I have a big concern because We living in 2019 and after two years whats happen for our website ?
But my biggest question is how optimistic how long can we use Angularjs?
how much migration is necessary for this framework and
Is it possible that the sites written with Angularjs are not able to work after 2021?
Google announced:
All AngularJS applications that work now, will continue to work in the future. All published versions of AngularJS, on npm, bower, CDNs, etc will continue to be available.
For more information, see
Angular Blog - Stable AngularJS and Long Term Support
AngularJS Version Support Status
It’s out of date now, and new projects should absolutely not be built using it. This isn’t to say it was ever a particularly great choice. AngularJS came out of nowhere and became popular by default, rather than because it had particularly great design. It has a difficulty curve better suited to a great roller coaster than a decent framework, and a bunch of weird architectural and terminology choices. What the hell is a $scope, anyway? And what is a directive? What does transclusion actually mean? Meaningless terms that AngularJS has created. AngularJS does some things that are fundamentally wrong, such as creating invalid attributes on HTML markup. Even Google doesn’t use Angular for their own apps, like Gmail, and there’s a reason for that.
In fairness, AngularJS was always a poor choice. Its idiosyncratic code means that unlike other frameworks, it’s not good at implementing an agnostic, javascript solution. AngularJS code looks unfamiliar to anyone not super experienced with the weird intricacies of AngularJS itself.
Thankfully, this decision is well made for you – AngularJS is now quite thoroughly dead, and only legacy projects will continue to be using it. We should be grateful for what AngularJS has given us, and respect the position it held, but we should be just as pleased that it’s gone.1
The change is only about "support" and it means, no more bug fixes and no more improvements. Other than that, everything will be the same. Although, you should consider some disaster scenarios after LTS.
I saw some posts about running AngularJS and Angular side by side and I think it can be a good solution for your problem. Since you have enough time to migrate, your team can develop new features on Angular and you can also maintain your current AngularJS. Eventually you can get rid of AngularJS depending on your project size and development capacity.
Please check these scenarios.
Running AngularJS 1.6 in Angular 5 (side by side)
Running Angular and AngularJS frameworks side by side
For Angularjs support, you can find the previous discussion on this portal: angularjs 1.x support lifecycle and end-of-life
And the question regarding migration, in my personal opinion migration is a better option as the latest Angular version provides Boost in performance, Mobile-driven approach, code Maintainability & optimization, and most importantly Reduced development time and costs with better support.
And if asked about the migration approach, I would suggest a complete re-write that can be the most cost-effective strategy. If you’re a manager, put your team through Angular training (live, online, videos, books). Allocate time and budget for getting your developers up to speed with Angular as the learning curve is steep and prior experience with AngularJS is not overly helpful. Then your developers will write the new version of the app as per best practices recommended for Angular/TypeScript projects.
And finally, it’ll definitely pay off in the end. And, secondly, the newer versions of Angular won’t let you systems become outdated or irrelevant.
There is a team called XLTS.dev who are providing extended support for AngularJS beyond December 2021.
We have used Angular JS extensively in our company for enterprise projects, mobile applications and continue to use it. Google's decision to stop development of AngularJS and put it on a EOL will definitely make developers to panic. But 3 years to migrate away from it is a long time and you can plan accordingly.
If your plan is to migrate to Angular, then you can follow their official guide to upgrade using ngUpgrade. You can find numerous articles online that explain how they upgraded existing AngularJS apps to Angular.
If your plan is to consider migrating to a totally new framework, then this will involve some work. You should take a look Web Components spec. Your existing directives/components can be re-written, with less effort, as web components (shadow DOM) or custom components (without shadow DOM). There are libraries that help you write these generic components - supported on most browsers today - Stencil JS, lit element and a few others.
The advantage of using Stencil JS is that it provides tools to compile your web components to target different frameworks (Angular, React, Vue, Ember).
The latter solution seems feasible as it allows you to migrate directives one by one over a period of time, without having to re-write the whole application in one go. In the future you can also re-use your components in the framework of your choice.
As for your question about will it continue to work after 2021 - yes it will continue to work. The problems you might face might not really be of technical nature, but related to hiring resources to work on it or maintain it.
I am AngularJS developer and I do continue to use this framework for some of my projects. I am aware that in not too distant future this library will be completely outdated (as some of you can say it's the case now), however:
AngularJS ecosystem gives you still lots of choice/support (as framework is very mature)
my main libraries as ag-grid, highChart or others, help to build great apps out of the box with little time
I still do enjoy to work with this framework for it's simplicity and flexibility
If you should build brand new app I would recommend React or Vue (or other framework) especially if you do not have significant experience with Angularjs. However if Angularjs is not new for you, you need to go fast - just use your experience and go for Angular.
Taking into account what you wrote:
My main concern is after 3 years of support. Whether after the 3 year end of support, Angularjs sites can continue to work without problems
Angularjs apps won't just stop to work like that, from one day to another.
As your project requires long-term maintenance, needs to be built from scratch and will take lots of effort - Angularjs ecosystem is then probably not the best choice for you (I do insist "for you").

Front end material design stack with angular.js

I am trying to get better at coding and am trying to figure out exactly what front end stack I need. I have red a lot and about a lot of tools but it is too much and I don't know which ones work good together or not.
Currently my idea is to do a web app with the design principles of Material Design from google and use angular for the logic of the front end.
I have red about and used these tools: Angular.js, Material Design Lite, Angular-material, polymer, ionic, bootstrap, Materialize and other various material design frameworks.
I am playing with this demo that I wanted to try out Material Design Lite but went too further and ended up needing Polymer for some input drop-down components. Playing further more with MDL I found out that it is not sufficient as bootstrap as I am used to work and would like to have this in it, but don't get me wrong I like MDL.
ionic has some good features for the local server and easy set up of template app as well other nice things like export to ios,android app, push notifications, but I ended up deleting ionic.css cause it was interfering with MDL and Polymer
I am asking some more experienced web app developers to help me out with this stack dilemma. I would like to get this out of my mind so I can be free and develop more.
Also tools like GRUNT, BOWER and so on? which one is the best in my case?
note: if u got interested the back end would be cakePhP and Mysql and the data type is going to be JSON (angular will send json to php into DB).
It can be overwhelming trying to learn all the tools and using them at the same time. My advice is to just use the tools when you need to.
If your web app is simple you may not even need a framework like angular. If you want to play with material design, you can do that with the css classes that MD lite offers no matter if you use angular / polymer / or plain javascript. ( If you want to use Polymer you already have some material design styles included. )
Some people prefer starting with the most simple solution and keep adding more sophisticated tools gradually. Others prefer starting with a more complex solution that has integrated the best practices, and in that case using a "Starter kit" may be useful.
Regarding Grunt/gulp... etc. You could worry about that later when you need to have a "build system" to do tasks like compressing files, optimising images and other things that are important for publishing.
After years doing frontend development i realised that is not possible to master all the tools available ( and having a life outside code ). You eventually settle for some tools (everybody have different preferences) and the important experience comes with solving real problems.
i would recommend you to use angular-material for your project if :
you have good knowledge of angularjs or if you find it interesting to learn
you have gone through google design and you want to implement it in angularjs way
try implementing missing features or take online help
Angular-material team is working on adding more and more features as already build in directives and services. Check releases on github page & demo guide
( Drop downs are already there in latest version as menu)
Few points
Google has an awesome open source guide for design.
Angular-material is a framework that helps you implement and follow that design language and principles using angularjs.
Bootstrap is just a framework which gives implementation of css, js related to front end work. Look and feel will be entirely different from google design.
Ionic is again a completely different framework which provides implementation and guide for mobile app development.
You can read about diff in angular-material/bootstrap/ionic in my post here
Bower/Grunt
bower ( package manager) and grunt ( task runner) are tools which work in node environment.
if your development environment is nodejs you should use them to get work done quickly and efficiently.
Check there sites for more information.
cakePhp/mySql
If your backend runs on these and you have angularjs in frontend.
Angularjs can make restfull calls in JSON to your api and it would all work good.

SAP Fiori application development in angular?

we are developing an application using HTML/CSS and using the Angular framework. The problem is that we are quite a ways in to development and our client is switching to SAP, I have looked and looked and all I can find is information about SAPUI5 and Fiori. Is there a way we can still use our Angular app as a Fiori application or would we have to switch everything to SAPUI5, it sounds like a lot of work for a custom application that is practically done but I'm not an SAP expert so I was hoping someone could provide some insight around working with Fiori apps.
Thanks -
in general it is probably a good idea to choose either one of the frameworks. Changing to SAP is a bit general, i assume you do mean here SAP HANA cloud platform? If so there is no reason, why you would not be able to use angularjs to continue your application and just use the backend data services via for instance an odata service (which also should be present for a lot of other SAP applications, there is also SAP Gateway to enable this).
So all in all i think it will be possible to go ahead with angularjs, at the end also SAPUI5 is just a frontend framework.
Quick search on sdn.sap.com brings up some interesting articles that might be of help for you like the following.
http://scn.sap.com/community/developer-center/front-end/blog/2013/12/15/openui5-or-angularjs-how-about-both
In addition to what is mentioned in AirBorne04 answer, if you continue to build AngularJS application consuming oData services provided by SAP backend, you will loose all the features provided by Fiori Launchpad (which are many btw). See the link https://help.sap.com/saphelp_uiaddon10/helpdata/en/f9/51b50a07ce41deb08ced62711fe8b5/frameset.htm
Technically, this is not an issue but suppose if your customer wants to implement Fiori Launchpad then it will be an issue. So I suggest that you inform the customer about this in advance so that there are no surprises later on.

JSPs for a simple Project Reporting Web App?

I'm about to start developing a simple reporting tool for tasks in international projects. In a nutshell: using the tool, a project is created, defining team members, tasks, and work packages. Team members will be asked to periodically submit reports on the work they've done (related to tasks and/or work packages). These reports will be stored and accessed trough the tool.
I'll use Google App Engine (client requirement) and its datastore (using JDO). But I want to ask you for advice on the frontend part: JSP looks pretty messy for non Java developers... any other idea???
Thanks!!!
Seems like at the moment it's either java or python. However, you may want to look at Grails. GSPs might looks a little less 'messy'. I'm suggesting Grails based on your description of the project, that I suspect will turn out anything but simple later on. You might end up being glad for the mix of constraints and flexibility that Grails will afford.
JSP doesn't need to be any messier than other similar HTML presentation frameworks, it really comes down to implementation. That being said, it is old Java technology which means it's not being kept up to date, and finding a good single source of documentation is difficult.
If you don't want to use JSP, there are other frameworks you can use, you just need to make sure they're compatible with Google App Engine.
The new kid on the block is the Play framework, and that's a Java MVC framework similar to Ruby on Rails. You can find a tutorial here: http://viralpatel.net/blogs/first-play-framework-gae-siena-application-tutorial-example/
If you're going to use Spring, check out this question: Alternatives to JSP for Spring MVC view layer
For a front end developer, if the code is separated correctly, you won't have to know anything about Java since there shouldn't be any Java mixed in with the HTML. If that's your only worry, then I would just go with JSP to keep things simple unless the team has experience with another technology.

DotNetNuke VS Drupal 7?

I am planning to build a website for courses online, teachers can create their courses and put their exams, students can enroll, view courses and apply for exams ..
I am a bit confused, to build it with DDN or Drupal ? which is easier and more powerful ?
I have no problem with .NET C# or PHP, although I see C# more easy to code with,
what I need to know, which CMS is better for my case ?
Which CMS is more robust & complete ?
Thanks in advance.
Of course, either platform has its pros and cons. What you're looking at building is essentially a Learning Management System, or LMS. There are a few existing LMS solutions built specifically for DotNetNuke. They include Engage: Campus, NetLearn, and Accord.
I would tell you to go with which ever platform offers you the most features for managing this kind of content for the best return on your investment, and offers you the best comfort level. If you're familiar with .Net and are comfortable in that arena, then stick with DotNetNuke. Otherwise go with another platform. However, having nearly 8 years of experience in developing solutions with DotNetNuke, and 13+ overall in developing software solutions (including PHP-based ones), if I have a choice, I always go with DotNetNuke. (And not just because I am an employee for a year now.)
I find that DotNetNuke has the most stable builds and releases overall. It's security team and features are second to none. It's community and ecosystem is unrivaled. If you're looking for a pre-built solution for any kind of business problem, chances are that the 10,000+ extensions in the Store or Forge will get you up and running with less development time and less expense. The forge has free (open source) extensions, and the median price of a store extension is $89 (LMS's are quite more expensive though).
The eco-system also boasts over 800 known ISV's out there. So chances are, if you're looking for support, not only is there an official company to provide it and back you up when something goes wrong, there are numerous other options out there in terms of companies that specialize in DotNetNuke.
One last thing on the releases... DotNetNuke has a known roadmap, a frequent release cycle, and an outstanding reputation for backwards compatibility. Your extensions will continue to work on the platform as you upgrade to take advantage of the latest and greatest features added to the platform, usability updates, bug fixes, and security updates.
As a Sales Engineer at DNN Corp, I hear all kinds of use cases, and I see DotNetNuke used a lot in educational institutions. They all use it to varying degrees as not only a CMS, but also a LMS, social platform (even in schools), and more. Most schools are also standardized in some way on the Microsoft stack too, so integration is much more straight-forward using DotNetNuke.
I could go on, but this is as much time as I have to give you an informed response.
Based on what you are trying to build DotNetNuke will only really give you authentication and basic page creation out of the box. All those other elements will have to be custom coded in .NET.
If you use Drupal 7 you can build majority of that using CCK, Views and workflow without really having to do a ton of programming if you don't want to.
I have been doing DotNetNuke since 2003 and have developed tons of modules for it, including some publicly available at www.dnnspot.com
If I was in your shoes I would do Drupal, but I know both pretty well.
ACTUALLY - If 'I' was in your shoes I would do Ruby on Rails now ;) but ... Drupal would work pretty well and you could get alot if not all of this done without slinging much code. Drupal is crazy.
DNN is now built on C# but has always been on .NET. I'm in a similar position as I code in PHP and .NET and have used Drupal and have been working on DNN for the last 4 years. I find that Module Development in DNN is wonderful.
i hope that helps.
Full featured Learning Management Systems (LMS) require substantial development (man decades), especially if you want to support SCORM eLearning content. Both DNN and Drupal will offer you most of the add on functionality that you will need in addition to the LMS features - the ability to build web pages, rich text editors, etc.
I would evaluate the different the LMS available for each platform and make your choice based on how robust the LMS are. In addition, evaluate how easily the LMS integrates with add on modules such as forums, wikis, etc. Most of our clients select our LMS without any knowledge of the portal framework beneath it.
Based on these evaluation metrics I am confident that you will find the Interzoic Accord LMS running on DNN to be a superior choice.
Chris

Resources