--- b/openstack_dashboard/dashboards/admin/networks/tests.py
+++ a/openstack_dashboard/dashboards/admin/networks/tests.py
@@ -193,2 +193,3 @@
             .AndReturn(mac_learning)
+<<<<<<< HEAD
         api.neutron.is_extension_supported(
@@ -199,2 +200,8 @@
             'dhcp_agent_scheduler').AndReturn(True)
+=======
+        api.neutron.is_extension_supported(IsA(http.HttpRequest),
+                'dhcp_agent_scheduler').AndReturn(True)
+        api.neutron.is_extension_supported(IsA(http.HttpRequest),
+                'dhcp_agent_scheduler').AndReturn(True)
+>>>>>>> dc6b1ce... Add dropdown actions to all details pages
 
--- b/openstack_dashboard/dashboards/project/images/images/views.py
+++ a/openstack_dashboard/dashboards/project/images/images/views.py
@@ -96,5 +96,2 @@
         context["actions"] = table.render_row_actions(image)
-        context["page_title"] = _("Image Details: "
-                                  "%(image_name)s") % {'image_name':
-                                                       image.name}
         return context
--- b/openstack_dashboard/dashboards/project/instances/views.py
+++ a/openstack_dashboard/dashboards/project/instances/views.py
@@ -302,5 +302,2 @@
         context["actions"] = table.render_row_actions(instance)
-        context["page_title"] = _("Instance Details: "
-                                  "%(instance_name)s") % {'instance_name':
-                                                          instance.name}
         return context
--- b/openstack_dashboard/dashboards/project/networks/views.py
+++ a/openstack_dashboard/dashboards/project/networks/views.py
@@ -145,5 +145,2 @@
         context["actions"] = table.render_row_actions(network)
-        context["page_title"] = _("Network Details: "
-                                  "%(network_name)s") % {'network_name':
-                                                         network.name}
         return context
--- b/openstack_dashboard/dashboards/project/stacks/views.py
+++ a/openstack_dashboard/dashboards/project/stacks/views.py
@@ -310,2 +310,6 @@
 
+    @staticmethod
+    def get_redirect_url():
+        return reverse('horizon:project:stacks:index')
+
 
--- b/openstack_dashboard/dashboards/project/volumes/backups/views.py
+++ a/openstack_dashboard/dashboards/project/volumes/backups/views.py
@@ -62,6 +62,2 @@
         context["actions"] = table.render_row_actions(backup)
-        context["page_title"] = _("Volume Backup Details: "
-                                  "%(backup_name)s") % {'backup_name':
-                                                        backup.name}
-
         return context
--- b/openstack_dashboard/dashboards/project/volumes/snapshots/views.py
+++ a/openstack_dashboard/dashboards/project/volumes/snapshots/views.py
@@ -79,5 +79,2 @@
         context["actions"] = table.render_row_actions(snapshot)
-        context["page_title"] = _("Volume Snapshot Details: "
-                                  "%(snapshot_name)s") % {'snapshot_name':
-                                                          snapshot.name}
         return context
--- b/openstack_dashboard/dashboards/project/volumes/volumes/views.py
+++ a/openstack_dashboard/dashboards/project/volumes/volumes/views.py
@@ -54,6 +54,2 @@
         context["actions"] = table.render_row_actions(volume)
-        context["page_title"] = _("Volume Details: "
-                                  "%(volume_name)s") % {'volume_name':
-                                                        volume.name}
-
         return context
--- b/openstack_dashboard/dashboards/theme/theme_index/panel.py
+++ a/openstack_dashboard/dashboards/theme/theme_index/panel.py
@@ -22,3 +22,2 @@
 
-
 class ThemePanel(horizon.Panel):
--- b/openstack_dashboard/enabled/_99_customization.py
+++ a/openstack_dashboard/enabled/_99_customization.py
@@ -8 +8,2 @@
 ADD_INSTALLED_APPS = ['openstack_dashboard.dashboards.theme']
+
--- a/horizon/static/horizon/js/horizon.tables.js
+++ b/horizon/static/horizon/js/horizon.tables.js
@@ -140,4 +140,6 @@
       // Buttons should be enabled only if there are checked checkboxes
+      if (checkboxes.length) {
       action_buttons.toggleClass("disabled",
                                  !checkboxes.filter(":checked").length);
+        }
     });
--- a/horizon/tables/base.py
+++ b/horizon/tables/base.py
@@ -984,4 +984,6 @@
                                 'horizon/common/_data_table.html')
-        self.row_actions_template = \
-            'horizon/common/_data_table_row_actions.html'
+        self.row_actions_dropdown_template = ('horizon/common/_data_table_'
+                                              'row_actions_dropdown.html')
+        self.row_actions_row_template = ('horizon/common/_data_table_'
+                                         'row_actions_row.html')
         self.table_actions_template = \
@@ -1390,7 +1392,12 @@
 
-    def render_row_actions(self, datum, pull_right=True):
+    def render_row_actions(self, datum, pull_right=True, row=False):
         """Renders the actions specified in ``Meta.row_actions`` using the
-        current row data.
+        current row data. If `row` is True, the actions are rendered in a row
+        of buttons. Otherwise they are rendered in a dropdown box.
         """
-        template_path = self._meta.row_actions_template
+        if row:
+            template_path = self._meta.row_actions_row_template
+        else:
+            template_path = self._meta.row_actions_dropdown_template
+
         row_actions_template = template.loader.get_template(template_path)
--- a/horizon/templates/horizon/common/_data_table_row_action.html
+++ /dev/null
@@ -1,5 +0,0 @@
-{% if action.method != "GET" %}
-  <button {{ action.attr_string|safe }} name="action" value="{{ action.table.name }}__{{ action.name }}__{{ row_id }}" type="submit">{{ action.verbose_name }}</button>
-{% else %}
-  <a href='{{ action.bound_url }}' {{ action.attr_string|safe }}>{{ action.verbose_name }}</a>
-{% endif %}
--- /dev/null
+++ b/horizon/templates/horizon/common/_data_table_row_action_dropdown.html
@@ -0,0 +1,5 @@
+{% if action.method != "GET" %}
+  <button {{ action.attr_string|safe }} name="action" value="{{ action.table.name }}__{{ action.name }}__{{ row_id }}" type="submit">{{ action.verbose_name }}</button>
+{% else %}
+  <a href='{{ action.bound_url }}' {{ action.attr_string|safe }}>{{ action.verbose_name }}</a>
+{% endif %}
--- /dev/null
+++ b/horizon/templates/horizon/common/_data_table_row_action_row.html
@@ -0,0 +1,11 @@
+{% if action.method != "GET" %}
+  <button {{ action.attr_string|safe }} name="action" value="{{ action.table.name }}__{{ action.name }}__{{ row_id }}" type="submit">
+    {% if action.icon != None %}<span class="glyphicon glyphicon-{{ action.icon }}"></span> {% endif %}
+    {{ action.verbose_name }}
+  </button>
+{% else %}
+  <a href='{{ action.bound_url }}' title='{{ action.verbose_name }}' {{ action.attr_string|safe }}>
+    {% if action.icon != None %}<span class="glyphicon glyphicon-{{ action.icon }}"></span> {% endif %}
+    {{ action.verbose_name }}
+  </a>
+{% endif %}
--- a/horizon/templates/horizon/common/_data_table_row_actions.html
+++ /dev/null
@@ -1,29 +0,0 @@
-{% load horizon i18n %}
-
-{% spaceless %} {# This makes sure whitespace doesn't affect positioning for dropdown. #}
-{% if row_actions|length > 1 %}
-<div class="btn-group {% if pull_right %}pull-right{% endif %}">
-    {% for action in row_actions %}
-        {% if forloop.first %}
-          {% include "horizon/common/_data_table_row_action.html" %}
-          <a class="btn btn-default btn-sm dropdown-toggle" data-toggle="dropdown" href="#">
-            <span class="caret"></span>
-          </a>
-          <ul class="dropdown-menu row_actions clearfix">
-        {% else %}
-          <li class="clearfix">
-              {% include "horizon/common/_data_table_row_action.html" %}
-          </li>
-        {% endif %}
-        {% if forloop.last %}
-          </ul>
-        {% endif %}
-    {% endfor %}
-</div>
-{% endif %}
-{% if row_actions|length == 1%}
-  {% for action in row_actions %}
-    {% include "horizon/common/_data_table_row_action.html" %}
-  {% endfor %}
-{% endif %}
-{% endspaceless %}
--- /dev/null
+++ b/horizon/templates/horizon/common/_data_table_row_actions_dropdown.html
@@ -0,0 +1,27 @@
+{% load horizon i18n %}
+
+{% spaceless %} {# This makes sure whitespace doesn't affect positioning for dropdown. #}
+{% if row_actions|length > 1 %}
+<div class="btn-group {% if pull_right %}pull-right{% endif %}">
+    {% for action in row_actions %}
+        {% if forloop.first %}
+          {% include "horizon/common/_data_table_row_action_dropdown.html" %}
+          <a class="btn btn-default btn-sm dropdown-toggle" data-toggle="dropdown" href="#">
+            <span class="caret"></span>
+          </a>
+          <ul class="dropdown-menu row_actions clearfix">
+        {% else %}
+          <li class="clearfix">
+              {% include "horizon/common/_data_table_row_action_dropdown.html" %}
+          </li>
+        {% endif %}
+        {% if forloop.last %}
+          </ul>
+        {% endif %}
+    {% endfor %}
+</div>
+{% endif %}
+{% if row_actions|length == 1%}
+  {% include "horizon/common/_data_table_row_action_dropdown.html" with action=row_actions.0%}
+{% endif %}
+{% endspaceless %}
--- /dev/null
+++ b/horizon/templates/horizon/common/_data_table_row_actions_row.html
@@ -0,0 +1,8 @@
+{% load i18n %}
+<div class="table_actions clearfix">
+{% block table_actions %}
+  {% for action in row_actions %}
+    {%  include "horizon/common/_data_table_row_action_row.html" %}
+  {% endfor %}
+{% endblock table_actions %}
+</div>
