heartbeatservice / HeartbeatServiceSolution

0 stars 2 forks source link

Extend New Module Functionality #90

Open umais opened 9 years ago

umais commented 9 years ago

This is a large enhancement that will cover a lot of functionality and will basically put all other enhancements on hold other than the ones that are already in FirstLevel. The purpose of this enhancement is to extend the functionality for Modules.

Currently if we create a new Module from Admin Menu we have to specify the following information

1) Module Name 2) Module Description 3) Display Order 4) Module URL 5) Parent Module 6) Show Module 7) Icon Name

We would first of all like to extend this functionality in following ways . If an admin comes on to this screen and creates a new module then that module will be added to the Module table as well as the CustomerModule Table for the customer that is selected in the dropdown menu in the header. Ofcourse if the admin is super admin then depending on which customer is selected it will be added for that customer only.

Secondly the big extension that we would like to make to the new Module is that we want to be able to give the admin ability to create a module and then specify a type. Currently there is only one type which we will call "Built In" Modules. In "Built in" Modules The Module URL should be a working URL that has already some functionality that is programmed. We want to add a new type Called "Custom Module". So now when Creating a new module the Admin willl Specify what type of Module they want to create. If they choose Built In module then the URL textbox will appear and they can type the URL as they do today. If they choose "Custome Module" The behaviour should be as follows.

1) Once they choose "Custom Module" from Module Type Drop down they will see another Drop down called content Type and the URL textbox will be hidden because in the Custom Type the URL will always be "/Modules/{NameOfModule} " in this URL Modules is the name of the controller and "NameOfModule" will correspond to a parameter that will be passed to the Index Action method for the Modules Controller. In the Index Action method we will execute the logic to get the content for that module dynamically from database and then show that content on the page. So as I was saying the content type drop down will appear and user will choose what type of content this page will contain. Following are the content Types "Articles", "Blogs" , Simple HTML Content, Data Collection Form, Quiz Form, Survey Form, Product Module (With Paypal Integration)They will also choose a layout and also decide whether this new module will open up in a new window or a _self. Upon choosing the type they will then click "Next" as the "Save" button should automatically get renamed to "Next" when they click "Next" this is where the Wizard will begin for each module type and we will create a separate ticket for each Type. Remember All of this will be built on top of Web API and has to be RESTFul in nature.