CRM-like system using drupal? - drupal

I have a website running in drupal. Is there a module or some way to build a functionality which essentially builds a crm-like system on top of drupal?
I want to basically support this,
1. Create some kind of ticketing system that keys on each user
2. A blog like interface where various customer service personnel can make comments - again keyed by userid
3. A decent interface where you can list comments etc by date
4. Possibly another page to search for entries with certain keywords.
5. Support additional customization on top.
If the above is not possible is there a easy way to embed a third party crm application in drupal to provide the above?
Thanks,
Vivek

You might like to check out Open Atrium. It is a customized Drupal distribution by Phase2 Tech. Though its an out-of-the-box solution for ticketing system, you can modify it to your needs just like any Drupal installation.
Another open source solution could be CiviCRM. It won't serve as OOB solution but provides plenty of UI configurable options to fit your needs. Its a bit complex to start but once configured well, its quite powerful system. It integrates with Joomla and Drupal.

Related

Architecture for Web-App development aimed at aiding interoperability between CMS systems. Has it been done?

I'm thinking about attempting to design a new framework architecture aimed at allowing a web app to later be easily ported into a system such as Drupal or Joomla while maintaining the independence of the original app such that updates to core functionality would require only one release or otherwise minimal extra work.
Before I start on this however, I would like to see what work has previously been done that comes closest to what I am proposing. So an answer to this question would come in the form of a reference to the most similar work or if possible a definitive 'no' that this has not been done before.
Clarification by example: MediaWiki is a common web app that has become one of the most highly recommended of its kind. However, site admins building their sites with Drupal would be required to hack MediaWiki in order for it to play nicely with Drupal in terms of sharing a user base for example. Imagine that MediaWiki has decided to do a complete rebuild of their system, what design could be used to make this interaction simply require a Drupal module or Joomla component and thus make MediaWiki available to more users?
I'm using MediaWiki as just an example, I think modules and components already exist that solve this particular problem but I hope I am able to get my idea across. It is a problem I have encountered many times during web development now that CMS systems are appearing more and more enterprise-like.
Thanks!
godwin
Content Management Interoperability Services (CMIS) is an OASIS Specification that you can use to imrprove the data portability and interoperability of a CMS. If your system has (or your provide) a CMIS interface, you can move content to / from other CMS systems that also provide CMIS interfaces.
See:
http://en.wikipedia.org/wiki/Content_Management_Interoperability_Services
http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=cmis

Dot net nuke without module development?

*This is more of an architecture level question.
I am new to DNN development , we are trying to build an e-commerce site which will showcase all the products which will be tied to our current order database.
Am I wrong in assuming that any custom development that I do via DNN would be in MODULE form ? I created few custom module (i.e. list of products) which would tie to database in code behind and display data from SQL. This seems to be very heavy approach if I have to make modules for every functionality.
Is there a better way here ? Can I (is it recommended) to directly change the DNN pages to accommodate this type of functionality ?
UPDATED
Is it possible to do development without moduels ? i.e. provide code right in the html text editor or something. If i create new module from DNN template then it adds many files ....that is why it feels heavy
It is strongly recommended that you not directly change DNN. This will make it very difficult to apply upgrades to DNN and cause headaches for whoever maintains the site after you.
The main extensibility point in DotNetNuke is the module. The module is just some executable controls that you can place on any page. It shouldn't be significantly heavier than any other approach you would take. Whatever you want to do in DNN itself, you should be able to do in a module, and just place the module on a page.
You could also potentially have some of your functionality in the skin, rather than the module, if that is easier or makes more sense. Generally, the skin has functionality that is shared across most pages in the site, and module are used to place specific content on specific pages.
If you're looking for something simpler, you might try using the core reports module, which will allow you to style the results of a query from the database (if you don't need the interactivity that a module would provide).
Your good options are as follows
Build a separate Web Application for your e-commerce, but provide heavy inter-linking with the DNN site. With this method, DNN would be used for content.
Purchase a third party e-commerce module-set like SmithCart and try to configure it to meet your business model
Build custom DNN modules
Our current project utilizes option #3. We have 25,000 products and about 3,000 product listings with heavy customer-customization functionality.
While it might seem heavy, as in, a distinct module project per section of e-commerce, it doesn't have to be too complex.
Example Modules:
Product Listing
Product Details
Shopping Cart
Order Checkout (we split this into 4 modules)
Search Module
Search Results Module
You can use URLRewrites to map all your products to the same DNN Page/Module.
As a result, we really have very few non-content DNN pages.
In summary, it might feel a bit heavy, but with the proper design it can go rather smoothly in comparison to a separate web app.
There are ways to use existing DNN features without module development. You can do it by adding a sub application in your folder.
For example, you can look at http://www.firstphera.com/GiftRegistry/Index.aspx, FirstPhera.com is a main dnn application and folder GiftRegistry is a pure asp.net sub application that uses dnn's providers to deal with database. Custom implementation of registration and login was the only thing that was challenge, everything else working fine.
But If are building an e-commerce application, at long term you will get benefit from module development way.
It is not strictly necessary that you create separate complected module like you shown in screen shot. If you look at blog module, it has feature like latest blogs, search blog, archives etc are all implemented in single module.
It is also possible to create a single module with related features in dotnetnuke using the technique called ModuleDefinitions. Look http://lakhlaniprashant.blogspot.com/2010/04/dotnetnuke-what-is-module-definition.html.
I would strongly recommend to visit NBStore source code if you want to understand the e-commerce related module development in detail.
Please let know if you have any other question.

wordpress-mu or drupal?

I am in education and I want a framework that allows me to manage the toolbox Teachers (Blog with features) and student blogs.
I want to choose between wordpress-mu and drupal, but I do not know which to choose:
here are my needs:
multiblogging-user (one blog for each user for the site)
gradebook (to grade Assignments for students)
post-it (or to do list for teacher)
I want to access the platform through a remote client (in php) using the protocol by exmple xml rpc
I just searched in google, wordpress and drupal. I realized that drupal for me because it offers such services module, gradebook module, and blogs module (which provides the default multiblogging)
I also saw that wordpress is earlier oriented blogging.
Drupal is he really the right choice?
someone else would be other compelling arguments that corroborate this choice
While Wordpress has a larger userbase, Drupal is far more conservative about what gets into core. The qa process is slightly better. The end result is that writing custom modules and using the GUI as much as possible to make your system meet your requirement is a much nicer experience.
With wordpress is code horrors such as: a two similarly named functions but one with an underscore prefixed. The prefixed function includes an echo statement while the other returns the entity. Bad duplication of code!
Wordpress 3rd party plugins tend to be nightmare to maintain as even with incremental releases of Wordpress plugin support may be broken.
Upgrading Drupal modules is usually alot safer!
I've heard good things about moodle too which is an open source project aimed at education institutions.
One of the main gripes about Drupal is that the admin is hard to use. Whereas Wordpress is much easier. With the arrival of Drupal 7 last year, the Ux has improved significantly.
Wordpress has a great wsysiwyg bundled editor. With Drupal there is none bundled. I would suggest you avoid giving your users full blown HTML, and opt for a limited subset of HTML tags. Ckeditor, imce, imce bridge and wysiwyg module will help you there.
Sometimes with Drupal 7 very popular modules are still only avilable to Drupal 6.
The only time I ever use Wordpress is when I need a blog and thats it. Anything more then I go Drupal. Anything more involved than that usually zend framework or similar.
Good luck!

Module development tutorial in Drupal

I'd like to learn how to create modules in drupal- modules which can interact with the user, database, assign permissions, views.
Is there any good video tutorial or a simple sample module which covers these things?
Thanks.
My suggestion would be to pick up a copy of Pro Drupal Development and start working your way through. I think that book is the best one stop option for providing an easy to follow, yet in depth start for learning Drupal development.
If you really wanted to get by without purchasing a book, I would suggest checking out the Lullabot site for whatever free content they have available.
After an initial background, the Drupal api pages should be helpful for you, . Hit the search box in the upper left hand corner for type ahead search to find detailed info on drupal functions. This would be a great resource for getting some more background on the functions googletorp listed. I agree with googletorp that those are a good list of functions to get started with.
It requires some effort to learn how to develop in Drupal. You might be able to find some good videos, but you will only really master this when you get your hands dirty and start coding.
How hard this will be for you, is also highly dependent on your background. A seasoned PHP developer wont find it that difficult to develop with Drupal.
There are some key points that you need to understand though.
The hook system. This is Drupal's way to do OOP. The idea is that modules or Drupal core can define and run hooks when an event happen that other modules want to react to. An example could be the creation of a user or the display of a node. To implement a hook, you simply create a function with the correct name. You need replace the "hook" in the name of the hook with your module name.
Drupal has a lot of API functions and it takes time to find them and learn how to use them. Take your time, as using the right API functions can make a big difference. Drupal has a nice API site
From your description you should take a look at these functions:
hook_user
hook_perms
hook_menu
db_query
In addition to what googletorp and mike munroe already said, check out the module developers guide on drupal.org. On the api site, check out the well documented example modules.
I have learnt drupal from beginner to advanced with CodeKarate. its one of the best website for drupal.
http://www.codekarate.com
There is a very good, easy to follow tutorial on developing JQuery/Javascript modules on Drupal. Check it out as well.

Drupal registration to create the new user account also in a 3rd-party system

When my user registers in Drupal and his account is created, I'd like to be able to create an account in a 3rd-party system (e.g. some moodle site).
Is that possible with an existing module? If not, what would be the preferred way to add this functionality?
You'll need to create a new custom module and implement the hook_user().
Specifically, you'll need to support the 'insert' operation, but of course you could add support for many others (such as delete or update) so you can manage users from your Drupal installation as well.
BTW: no existing module will couple exactly with your system, unless you're referring to a 3rd party application - in which case it'd help if you could tell us which one you're using :)
I second Sebs suggestion of using hook_user() for this, either after the fact on the 'insert' action, or upfront on 'validate', or on both, depending on how you need to deal with an eventual failure of Drupal itself or the 3rd-party-system.
Also, given your other question in this context, it looks like you might be interested in the following posts/discussions concerning external authentication in general:
Distributed Authentication changes (A short note/description of changes compared to Drupal-5)
Refactor distributed auth out of user.module (lengthy but informative discussion leading to the current state of things)
External Authentication in Druapl 6 (Some user experiences with the current state)
You might also want to take a look at the OpenID integration in Drupal core as a somewhat 'authoritative' source of examples.
You might also check out the Moodle module for Drupal. I used it a couple years ago and it was kind of a headache, but I'd guess that it's come a long way since then.
Interestingly, they recommend using OpenID to manage users between the sites. That may be easier than implementing your own hook_user instance if you aren't very comfortable writing Drupal modules. Just a thought.

Resources