Content Blocks Plugin
About Content Blocks
The Content Blocks plugin provides content authors with the ability to add multiple pre-configured compound type blocks to a document, in arbitrary order and combination. This allows for more flexible document types in which authors have the freedom to add and mix e.g. text, video and image blocks as they see fit. You should use Content Blocks if there is a need for content authors to put (potentially complex) pieces of content into arbitrary order.
Developers configure the available content blocks on a per document field basis.
Source Code and Demo