File structure for custom modules in Drupal 7 I want to organize non-core (modules that are not bundled with core) modules in Drupal 7. This is my proposed structure:


Contributed modules - downloaded modules that are untouched
Custom modules - downloaded modules that are modified to suit the requirement
local modules - self-developed modules


I GUESS, the best approach for this is to make three folders within sites/all/modules like below:


sites/all/modules/contrib
sites/all/modules/custom
sites/all/modules/local


Now, there are two ways to install a module:


Manually
From the admin panel


While installing the new module manually, everything is fine. I can just go to the directory and place the module there.  

But how to install a newly downloaded module in sites/all/modules/contrib from admin-panel?
Moreover, is there any better approach for organizing non-core modules?
Keeping your modules folder clear is important part of development. This is my common structure:


contrib — modules from Drupal.org
custom — modules developed for this project
features — exported features for Features-driven development
unstable — sandbox, forked, unstable, patched modules


Here are some examples how to organize patches/forks:


Drupal Boilerplate from Lullabot
A sustainable development workflow for patching drupal from Jennifer Lea Lampton
Drush Make workflow from @Letharion
Managing patches &amp; getting your drupal patch accepted from Greg Knaddison



  But how to install a newly downloaded module in `sites/all/modules/contrib from admin-panel.


Use Drush please.

drush dl views rules # will download Views and Rules into sites/all/modules/contrib automatically if contrib folder exists.


You also can specify --destination where to download project.