[development] SoC Proposal - Drag Drop and Sort API

Sean Adams-Hiett vacantspaces at gmail.com
Mon Mar 19 18:19:23 UTC 2007


*Synopsis*

Drupal stresses ease of use. To that end, I will be submitting an API to
offer dragging, dropping, and sorting functionality to modules. This will
greatly enhance not only the ease of making changes to the user interface,
but also the development of associated drop and drag projects. To highlight
the abilities of the API, I will also be creating a module to drag and drop
blocks.

*Project details*

One of my main considerations in designing the Drag Drop and Sort API is
flexibility. Namely, I would like the API to be usable by all content
elements within drupal. The API will achieve this flexibility by performing
several operations:

   1. Identifying appropriate positioning information to be altered by
   the API (i.e. weight and region).
   2. Querying the database for the relevant positioning information for
   each element that will be affected by the change.
   3. Attaching javascript class information to position variables that
   will make them draggable, droppable, and sortable.
   4. Providing the framework for a user interface to use this
   functionality.
   5. After each sort, the API will recalculate weights of all relevant
   elements and reassign position information that has changed.
   6. Finally, using an AJAX submit process, it will update the position
   information in the database without reloading the page.

In order to test the API, I will also build a Blocks DnD module that will
incorporate the drag, drop, and sort functionality. This module will allow
users with the right permissions to sort blocks within each region, as well
as moving blocks from region to region.

*How does this benefit Drupal?*

   - By enhancing ease of use, we open the door to a wider range of
   would-be users and developers.
   - By de-emphasizing the need for complex programming, we allow users
   and developers to focus on style and content.
   - Easily integrated Web 2.0 features makes for an easier sell to
   prospective clients or a boss.
   - Since drag and drop features mimic such popular operating systems as
   Windows and OS X, it makes the user interface more familiar and intuitive to
   users that are already familiar with functionality.
   - And let's be honest: Drag and drop is really cool!

*Criteria for Success*

   - Creation of the above specified modules.
   - Successful functionality on all the most widely used browsers,
   including Internet Explorer 6 and 7, Mozilla Firefox and other similar
   browsers, Opera 8 and up, as well as Safari.
   - Graceful degradation in browsers that don't support these features.

*Roadmap*

   1. *Now to the end of April* - Submit my plans to the Drupal community
   to generate feedback and suggestions on how I might enhance this project and
   make it truly universal in scope. Completely familiarize myself with the
   Drupal structure to ensure that my code is in line with Drupal coding
   standards, and to enhance continuity with the core. Discuss my proposal with
   developers who engaged in similar or complimentary work. Examples include
   the Panels Module <http://www.drupal.org/project/panels>, Mysite
   Module <http://www.drupal.org/project/mysite>, and any other projects
   that might be affected or enhanced by this project.
   2. *Beginning of May to the end of June* - Complete initial
   development of Drag Drop and Sort API and Blocks DnD module. Release for
   testing and improvement.
   3. *Beginning of July to the end of August* - Implement bug fixes and
   any improvements.

*Who am I?*

Ever since I was young, I have been fascinated with web design. Having no
skill in building things with my hands, I loved the idea of being able to
manipulate a virtual space to suit my fancy or needs. Ever since then, I
have tried to hone my skills and reach for ever greater control over the
virtual environment.

My love affair with Drupal began more than a year ago. After building many
websites with straight html and a little javascript here and there, I
discovered the concept of a CMS. I began searching for the best CMS to build
my online t-shirt store with. I quickly learned that although a CMS can
greatly enhance productivity, they can also be very difficult to learn. Then
I discovered Drupal. Within a couple of days, I was able to build an initial
test store that I was quite happy with. Since then I have honed my skills
and endeavored to learn as much about Drupal as I could. I have provided
feedback for several projects and have been aching for some time to get my
hands dirty with actually developing a module for Drupal.

I now run several websites off the same code base (a feature I am quite
enamored with). I am ready to take the next step and ride the web 2.0 tidal
wave that is sweeping the internet. I am interested in making Drupal easier
to use so that more people will have the opportunity that I have had to work
with such amazing software. I think that my success in creating the above
mentioned enhancements to Drupal will help me accomplish that goal.

I would appreciate any feedback that you might have for me.

--
Sean
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.drupal.org/pipermail/development/attachments/20070319/a66d7a8e/attachment.htm 


More information about the development mailing list