This project is not covered by Drupal’s security advisory policy.


Experimental module that introduces a new composite form element. Have a look at the screenshot and the multicrud_example.module code.

Looking for a Co-Maintainer!
I am a bit scared myself of the javascript that is holding this thing together.
The functionality is awesome, but I don't dare touching it.
Besides, I have other things to take care of, and can't afford spending plenty of unpaid time trying to clean up this module's javascript.
Please contact me if you want to help.
See #1154758: Multicrud Javascript: Big cleanup, with a future in mind.

Status of this module
You are welcome to participate in feedback and brainstorming, while this module gets more mature.

This module is meant to be used by other modules, but let's give it some time and thinking to take its final shape, before we let other modules depend on it - ok?

Possible use cases

  • Edit items of a menu tree structure, like in Menu editor. (*)
  • Edit term names, descriptions and tree structure (weights, parent/child relationships) of a hierarchical taxonomy vocabulary. (*)
  • Create + delete multiple nodes, and edit their cck field values, all on one page. This could be all nodes that share the same nodereference destination, etc. Makes the most sense for nodes which contain only short text. (**)
  • Alternative UI for multiple-value CCK widgets, with no waiting for ajax callbacks (**)
  • The configuration form for date formats (date module) could be a lot more productive with a multicrud widget. (**)
  • Bulk edit url aliases. (***)

(*) experimental implementation in 2.x branch
(**) planned for 2.x branch
(***) planned, but needs to wait for pagination and filtering


  • As you can see in the image, this module allows to edit multiple items at once, each with form elements for different attributes.
  • New (empty) rows are added automatically with client-side javascript, and with no ajax callback. This behavior was inspired by a discussion in the CCK issue queue.
  • Optional drag/drop table sort and tree tabledrag.
  • The same validation rules are applied to each row, when the form is submitted.
  • A delete checkbox is added automatically for existing items. In the same way, a "discard" button allows to remove new items that only exist on client side yet.
  • Nothing happens on server side, until you click "Save".
  • Nice API that allows to implement validation and submit handlers per element, without having to worry about the list structure at all.

What this module is not (yet)

  • This is not, and won't become, a matrix or spreadsheet solution. You can think of it like the tables you get with MS Access, but not MS Excel.
  • It is not (yet) suited for a large number of items, that would need sorting, filtering and pagination.
  • This is not, and won't become, an "ajax live edit". You have to click "save", before anything goes to the database. This approach allows to tinker around on client side, without messing with server-side data. It allows to double-check your changes before you submit, and you can easily go back to the original state. There is no waiting for ajax callbacks. On the other hand: If you don't save, your local changes are lost. If you want ajax live edit, find another module.

Project information