[from now] 2012/07/23 08:28:57

diff --git a/grails-app/taglib/twitter/bootstrap/ModalsTagLib.groovy b/grails-app/taglib/twitter/bootstrap/ModalsTagLib.groovy
new file mode 100644
index 0000000..e36c443
--- /dev/null
+++ b/grails-app/taglib/twitter/bootstrap/ModalsTagLib.groovy
@@ -0,0 +1,33 @@
+package twitter.bootstrap
+
+class ModalsTagLib {
+
+    static namespace = "bootstrap"
+
+    /**
+     * Create modal for Twitter Bootstrap.
+     *
+     * @attr href
+     */
+    Closure modal = { attrs, body ->
+        def writer = out
+
+        writer << '<a class="btn" data-toggle="modal" href="#myModal" >Launch Modal</a>'
+
+        writer << '<div class="modal hide" id="myModal">'
+        writer << '  <div class="modal-header">'
+        writer << '    <button type="button" class="close" data-dismiss="modal">×</button>'
+        writer << '    <h3>Modal header</h3>'
+        writer << '  </div>'
+        writer << '  <div class="modal-body">'
+        writer << '    <p>One fine body…</p>'
+        writer << '  </div>'
+        writer << '  <div class="modal-footer">'
+        writer << '    <a href="#" class="btn" data-dismiss="modal">Close</a>'
+        writer << '    <a href="#" class="btn btn-primary">Save changes</a>'
+        writer << actionSubmit(value: 'hoge', action: 'delete', class: 'delete btn btn-danger')
+        writer << '  </div>'
+        writer << '</div>'
+    }
+
+}
diff --git a/src/templates/scaffolding/show.gsp b/src/templates/scaffolding/show.gsp
index 8982d56..4aeb342 100644
--- a/src/templates/scaffolding/show.gsp
+++ b/src/templates/scaffolding/show.gsp
@@ -70,13 +70,14 @@
                 </g:if>
                 <% } %>
             </ol>
-            <g:form class="well">
-                <fieldset class="buttons">
-                    <g:hiddenField name="id" value="\${${propertyName}?.id}"/>
-                    <g:link class="edit btn" action="edit" id="\${${propertyName}?.id}"><g:message code="default.button.edit.label" default="Edit"/></g:link>
-                    <g:actionSubmit class="delete btn btn-danger" action="delete" value="\${message(code: 'default.button.delete.label', default: 'Delete')}" onclick="return confirm('\${message(code: 'default.button.delete.confirm.message', default: 'Are you sure?')}');"/>
-                </fieldset>
-            </g:form>
+                <g:form class="well">
+                    <fieldset class="buttons">
+                        <g:hiddenField name="id" value="\${${propertyName}?.id}"/>
+                        <g:link class="edit btn" action="edit" id="\${${propertyName}?.id}"><g:message code="default.button.edit.label" default="Edit"/></g:link>
+                        <g:actionSubmit class="delete btn btn-danger" action="delete" value="\${message(code: 'default.button.delete.label', default: 'Delete')}" onclick="return confirm('\${message(code: 'default.button.delete.confirm.message', default: 'Are you sure?')}');"/>
+                        <bootstrap:modal/>
+                    </fieldset>
+                </g:form>
         </div>
     </div>
 </div>
diff --git a/test/unit/twitter/bootstrap/ModalsTagLibSpec.groovy b/test/unit/twitter/bootstrap/ModalsTagLibSpec.groovy
new file mode 100644
index 0000000..ab00ed4
--- /dev/null
+++ b/test/unit/twitter/bootstrap/ModalsTagLibSpec.groovy
@@ -0,0 +1,26 @@
+package twitter.bootstrap
+
+import static org.junit.Assert.*
+
+import grails.test.mixin.*
+import grails.test.mixin.support.*
+import org.junit.*
+
+/**
+ * See the API for {@link grails.test.mixin.support.GrailsUnitTestMixin} for usage instructions
+ */
+@TestMixin(GrailsUnitTestMixin)
+class ModalsTagLibSpec {
+
+    void setUp() {
+        // Setup logic here
+    }
+
+    void tearDown() {
+        // Tear down logic here
+    }
+
+    void testSomething() {
+        fail "Implement me"
+    }
+}