diff --git a/app/components/ldap_auth_sources/row_component.rb b/app/components/ldap_auth_sources/row_component.rb new file mode 100644 index 000000000000..b7432042a7c1 --- /dev/null +++ b/app/components/ldap_auth_sources/row_component.rb @@ -0,0 +1,61 @@ +# frozen_string_literal: true + +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) 2012-2023 the OpenProject GmbH +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# See COPYRIGHT and LICENSE files for more details. +#++ + +module LdapAuthSources + class RowComponent < ::RowComponent + def name + link_to model.name, edit_ldap_auth_source_path(model) + end + + delegate :host, to: :model + + def users + model.users.size + end + + def button_links + [test_link, delete_link] + end + + def test_link + link_to t(:button_test), { controller: 'ldap_auth_sources', action: 'test_connection', id: model } + end + + def delete_link + link_to I18n.t(:button_delete), + { controller: 'ldap_auth_sources', id: model.id, action: :destroy }, + method: :delete, + data: { confirm: I18n.t(:text_are_you_sure) }, + class: 'icon icon-delete', + disabled: users.zero?, + title: I18n.t(:button_delete) + end + end +end diff --git a/app/components/ldap_auth_sources/table_component.rb b/app/components/ldap_auth_sources/table_component.rb new file mode 100644 index 000000000000..7e534ab8c168 --- /dev/null +++ b/app/components/ldap_auth_sources/table_component.rb @@ -0,0 +1,63 @@ +# frozen_string_literal: true + +#-- copyright +# OpenProject is an open source project management software. +# Copyright (C) 2012-2023 the OpenProject GmbH +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License version 3. +# +# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: +# Copyright (C) 2006-2013 Jean-Philippe Lang +# Copyright (C) 2010-2013 the ChiliProject Team +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# See COPYRIGHT and LICENSE files for more details. +#++ + +module LdapAuthSources + class TableComponent < ::TableComponent + columns :name, :host, :users + + def initial_sort + %i[id asc] + end + + def sortable? + true + end + + def sortable_column?(_column) + false + end + + def inline_create_link + link_to(new_ldap_auth_source_path, + class: 'budget-add-row wp-inline-create--add-link', + title: I18n.t(:label_ldap_auth_source_new)) do + helpers.op_icon('icon icon-add') + end + end + + def headers + [ + ['name', { caption: LdapAuthSource.human_attribute_name('name') }], + ['host', { caption: LdapAuthSource.human_attribute_name('host') }], + ['users', { caption: I18n.t(:label_user_plural) }] + ] + end + end +end diff --git a/app/controllers/ldap_auth_sources_controller.rb b/app/controllers/ldap_auth_sources_controller.rb index ccc52f08a1ce..c270e689b0bc 100644 --- a/app/controllers/ldap_auth_sources_controller.rb +++ b/app/controllers/ldap_auth_sources_controller.rb @@ -99,9 +99,9 @@ def destroy def default_breadcrumb if action_name == 'index' - t(:label_auth_source_plural) + t(:label_ldap_auth_source_plural) else - ActionController::Base.helpers.link_to(t(:label_auth_source_plural), ldap_auth_sources_path) + ActionController::Base.helpers.link_to(t(:label_ldap_auth_source_plural), ldap_auth_sources_path) end end diff --git a/app/views/ldap_auth_sources/index.html.erb b/app/views/ldap_auth_sources/index.html.erb index ce229a568f20..403f9a37628e 100644 --- a/app/views/ldap_auth_sources/index.html.erb +++ b/app/views/ldap_auth_sources/index.html.erb @@ -27,85 +27,17 @@ See COPYRIGHT and LICENSE files for more details. ++#%> -<% html_title t(:label_administration), t(:label_auth_source_plural) %> -<%= toolbar title: t(:label_auth_source_plural) do %> +<% html_title t(:label_administration), t(:label_ldap_auth_source_plural) %> +<%= toolbar title: t(:label_ldap_auth_source_plural) do %>
-
-
-
-
- <%= LdapAuthSource.human_attribute_name(:name) %>
-
-
- |
-
-
-
-
-
- <%= LdapAuthSource.human_attribute_name(:host) %>
-
-
- |
-
-
-
-
-
- <%= t(:label_user_plural)%>
-
-
- |
- - |
---|---|---|---|
<%= link_to source.name, action: 'edit', id: source %> | -<%= source.host %> | -<%= source.users.count %> | -- <%= link_to t(:button_test), { action: 'test_connection', id: source } %> - <%= link_to '', { action: 'destroy', id: source }, - method: :delete, - data: { confirm: t(:text_are_you_sure) }, - class: 'icon icon-delete', - disabled: source.users.any?, - title: t(:button_delete) %> - | -