diff --git a/horizon/tabs/__init__.py b/horizon/tabs/__init__.py index e7d57b9b7..ffc03c284 100644 --- a/horizon/tabs/__init__.py +++ b/horizon/tabs/__init__.py @@ -14,6 +14,7 @@ # Importing non-modules that are not used explicitly +from horizon.tabs.base import DetailTabsGroup # noqa from horizon.tabs.base import Tab # noqa from horizon.tabs.base import TabGroup # noqa from horizon.tabs.base import TableTab # noqa diff --git a/horizon/tabs/base.py b/horizon/tabs/base.py index d0a7ec42a..e06915716 100644 --- a/horizon/tabs/base.py +++ b/horizon/tabs/base.py @@ -478,3 +478,7 @@ class TableTab(Tab): def has_more_data(self, table): return False + + +class DetailTabsGroup(TabGroup): + template_name = "horizon/common/_detail_tab_group.html" diff --git a/horizon/templates/horizon/common/_detail_tab_group.html b/horizon/templates/horizon/common/_detail_tab_group.html new file mode 100644 index 000000000..71805d1a5 --- /dev/null +++ b/horizon/templates/horizon/common/_detail_tab_group.html @@ -0,0 +1,2 @@ +{% extends "horizon/common/_tab_group.html" %} +{% block additional_classes %}detail-tabs{% endblock %} \ No newline at end of file diff --git a/horizon/templates/horizon/common/_tab_group.html b/horizon/templates/horizon/common/_tab_group.html index f09a66e8b..8f3aa47fe 100644 --- a/horizon/templates/horizon/common/_tab_group.html +++ b/horizon/templates/horizon/common/_tab_group.html @@ -15,7 +15,7 @@ {# Tab Content #}
{% for tab in tabs %} -
+
{{ tab.render }}
{% endfor %} diff --git a/openstack_dashboard/dashboards/admin/metadata_defs/tabs.py b/openstack_dashboard/dashboards/admin/metadata_defs/tabs.py index cb168de29..d51e7c5ca 100644 --- a/openstack_dashboard/dashboards/admin/metadata_defs/tabs.py +++ b/openstack_dashboard/dashboards/admin/metadata_defs/tabs.py @@ -63,6 +63,6 @@ class ContentsTab(tabs.Tab): "namespace_contents": namespace.as_json()} -class NamespaceDetailTabs(tabs.TabGroup): +class NamespaceDetailTabs(tabs.DetailTabsGroup): slug = "namespace_details" tabs = (OverviewTab, ContentsTab) diff --git a/openstack_dashboard/dashboards/admin/networks/views.py b/openstack_dashboard/dashboards/admin/networks/views.py index 773a342af..babbd5dac 100644 --- a/openstack_dashboard/dashboards/admin/networks/views.py +++ b/openstack_dashboard/dashboards/admin/networks/views.py @@ -145,7 +145,7 @@ class UpdateView(user_views.UpdateView): 'external': network['router__external']} -class NetworkDetailsTabs(tabs.TabGroup): +class NetworkDetailsTabs(tabs.DetailTabsGroup): slug = "network_tabs" tabs = (OverviewTab, subnets_tables.SubnetsTab, ports_tables.PortsTab, agents_tabs.DHCPAgentsTab, ) diff --git a/openstack_dashboard/dashboards/admin/routers/ports/tabs.py b/openstack_dashboard/dashboards/admin/routers/ports/tabs.py index 60f8098f6..4c4749aaa 100644 --- a/openstack_dashboard/dashboards/admin/routers/ports/tabs.py +++ b/openstack_dashboard/dashboards/admin/routers/ports/tabs.py @@ -21,6 +21,6 @@ class OverviewTab(r_tabs.OverviewTab): failure_url = "horizon:admin:routers:index" -class PortDetailTabs(tabs.TabGroup): +class PortDetailTabs(tabs.DetailTabsGroup): slug = "port_details" tabs = (OverviewTab,) diff --git a/openstack_dashboard/dashboards/identity/identity_providers/tabs.py b/openstack_dashboard/dashboards/identity/identity_providers/tabs.py index bd59733ae..e57f7cf7d 100644 --- a/openstack_dashboard/dashboards/identity/identity_providers/tabs.py +++ b/openstack_dashboard/dashboards/identity/identity_providers/tabs.py @@ -42,7 +42,7 @@ class ProtocolsTab(tabs.TableTab): return self.tab_group.kwargs['protocols'] -class IdPDetailTabs(tabs.TabGroup): +class IdPDetailTabs(tabs.DetailTabsGroup): slug = "idp_details" tabs = (OverviewTab, ProtocolsTab) sticky = True diff --git a/openstack_dashboard/dashboards/project/instances/tabs.py b/openstack_dashboard/dashboards/project/instances/tabs.py index deae73395..d6004b129 100644 --- a/openstack_dashboard/dashboards/project/instances/tabs.py +++ b/openstack_dashboard/dashboards/project/instances/tabs.py @@ -108,7 +108,7 @@ class AuditTab(tabs.TableTab): return sorted(actions, reverse=True, key=lambda y: y.start_time) -class InstanceDetailTabs(tabs.TabGroup): +class InstanceDetailTabs(tabs.DetailTabsGroup): slug = "instance_details" tabs = (OverviewTab, LogTab, ConsoleTab, AuditTab) sticky = True diff --git a/openstack_dashboard/dashboards/project/instances/templates/instances/_detail_overview.html b/openstack_dashboard/dashboards/project/instances/templates/instances/_detail_overview.html index 5b3ce74e0..933080b06 100644 --- a/openstack_dashboard/dashboards/project/instances/templates/instances/_detail_overview.html +++ b/openstack_dashboard/dashboards/project/instances/templates/instances/_detail_overview.html @@ -78,7 +78,7 @@ {% for group in instance.security_groups %}
{{ group.name }}
-
    +
      {% for rule in group.rules %}
    • {{ rule }}
    • {% empty %} diff --git a/openstack_dashboard/dashboards/project/instances/templates/instances/_instance_ips.html b/openstack_dashboard/dashboards/project/instances/templates/instances/_instance_ips.html index 5c2a0167c..7b4226b90 100644 --- a/openstack_dashboard/dashboards/project/instances/templates/instances/_instance_ips.html +++ b/openstack_dashboard/dashboards/project/instances/templates/instances/_instance_ips.html @@ -3,14 +3,14 @@ {% if ip_groups.keys|length > 1 %}

      {{ ip_group }}

      {% endif %} -
        +
          {% for address in ips.non_floating %}
        • {{ address.addr }}
        • {% endfor %}
        {% if ips.floating|length > 0 %}
        {% trans 'Floating IPs:' %}
        -
          +
            {% for address in ips.floating %}
          • {{ address.addr }}
          • {% endfor %} diff --git a/openstack_dashboard/dashboards/project/networks/ports/tabs.py b/openstack_dashboard/dashboards/project/networks/ports/tabs.py index 005abef01..7f2e94664 100644 --- a/openstack_dashboard/dashboards/project/networks/ports/tabs.py +++ b/openstack_dashboard/dashboards/project/networks/ports/tabs.py @@ -34,7 +34,7 @@ class OverviewTab(tabs.Tab): return {'port': port} -class PortDetailTabs(tabs.TabGroup): +class PortDetailTabs(tabs.DetailTabsGroup): slug = "port_details" tabs = (OverviewTab, addr_pairs_tabs.AllowedAddressPairsTab) sticky = True diff --git a/openstack_dashboard/dashboards/project/networks/tabs.py b/openstack_dashboard/dashboards/project/networks/tabs.py index c9278e1d5..e48378ae6 100644 --- a/openstack_dashboard/dashboards/project/networks/tabs.py +++ b/openstack_dashboard/dashboards/project/networks/tabs.py @@ -64,7 +64,7 @@ class OverviewTab(tabs.Tab): return context -class NetworkDetailsTabs(tabs.TabGroup): +class NetworkDetailsTabs(tabs.DetailTabsGroup): slug = "network_tabs" tabs = (OverviewTab, subnets_tabs.SubnetsTab, ports_tabs.PortsTab, ) sticky = True diff --git a/openstack_dashboard/dashboards/project/networks/templates/networks/_detail_overview.html b/openstack_dashboard/dashboards/project/networks/templates/networks/_detail_overview.html index 6740dae37..1bdceddbe 100644 --- a/openstack_dashboard/dashboards/project/networks/templates/networks/_detail_overview.html +++ b/openstack_dashboard/dashboards/project/networks/templates/networks/_detail_overview.html @@ -1,7 +1,5 @@ {% load i18n sizeformat %} -

            {% trans "Network Overview" %}

            -
            {% trans "Name" %}
            diff --git a/openstack_dashboard/dashboards/project/routers/tabs.py b/openstack_dashboard/dashboards/project/routers/tabs.py index 0e6fc4e89..3ef73db87 100644 --- a/openstack_dashboard/dashboards/project/routers/tabs.py +++ b/openstack_dashboard/dashboards/project/routers/tabs.py @@ -44,7 +44,7 @@ class InterfacesTab(tabs.TableTab): return self.tab_group.kwargs['ports'] -class RouterDetailTabs(tabs.TabGroup): +class RouterDetailTabs(tabs.DetailTabsGroup): slug = "router_details" tabs = (OverviewTab, InterfacesTab, er_tabs.ExtraRoutesTab) sticky = True diff --git a/openstack_dashboard/static/dashboard/scss/components/_tab.scss b/openstack_dashboard/static/dashboard/scss/components/_tab.scss new file mode 100644 index 000000000..d74e613ec --- /dev/null +++ b/openstack_dashboard/static/dashboard/scss/components/_tab.scss @@ -0,0 +1,3 @@ +.detail-tabs { + margin-top: $padding-large-vertical; +} diff --git a/openstack_dashboard/static/dashboard/scss/horizon.scss b/openstack_dashboard/static/dashboard/scss/horizon.scss index c87d1e73c..64bca0cbb 100644 --- a/openstack_dashboard/static/dashboard/scss/horizon.scss +++ b/openstack_dashboard/static/dashboard/scss/horizon.scss @@ -43,6 +43,7 @@ @import "components/selection_menu"; @import "components/selects"; @import "components/sidebar"; +@import "components/tab"; @import "components/tables"; @import "components/transfer_tables"; @import "components/wizard";