Add toggle switch component, service configs, admin profile links

This commit is contained in:
Râu Cao 2023-03-12 12:55:21 +07:00 committed by Gitea
parent f050d010fd
commit 805733939c
6 changed files with 132 additions and 10 deletions

View File

@ -1,10 +1,16 @@
LDAP_HOST=localhost LDAP_HOST=localhost
LDAP_PORT=389 LDAP_PORT=389
LDAP_ADMIN_PASSWORD=passthebutter LDAP_ADMIN_PASSWORD=passthebutter
LDAP_SUFFIX="dc=kosmos,dc=org" LDAP_SUFFIX='dc=kosmos,dc=org'
WEBHOOKS_ALLOWED_IPS='10.1.1.163' WEBHOOKS_ALLOWED_IPS='10.1.1.163'
DISCOURSE_PUBLIC_URL='https://community.kosmos.org'
GITEA_PUBLIC_URL='https://gitea.kosmos.org'
MASTODON_PUBLIC_URL='https://kosmos.social'
MEDIAWIKI_PUBLIC_URL='https://wiki.kosmos.org'
EJABBERD_ADMIN_URL='https://xmpp.kosmos.org/admin'
EJABBERD_API_URL='https://xmpp.kosmos.org/api' EJABBERD_API_URL='https://xmpp.kosmos.org/api'
BTCPAY_API_URL='http://localhost:23001/api/v1' BTCPAY_API_URL='http://localhost:23001/api/v1'
@ -18,3 +24,4 @@ LNDHUB_PG_PORT=5432
LNDHUB_PG_DATABASE=lndhub LNDHUB_PG_DATABASE=lndhub
LNDHUB_PG_USERNAME=lndhub LNDHUB_PG_USERNAME=lndhub
LNDHUB_PG_PASSWORD='' LNDHUB_PG_PASSWORD=''

View File

@ -0,0 +1,12 @@
<button type="submit" role="switch" aria-checked="false"
class="<%= @enabled ? 'bg-indigo-600' : 'bg-gray-200' %>
relative inline-flex h-6 w-11 flex-shrink-0
cursor-pointer rounded-full border-2 border-transparent
transition-colors duration-200 ease-in-out focus:outline-none
focus:ring-2 focus:ring-indigo-600 focus:ring-offset-2">
<!-- <span class="sr&#45;only">Enable</span> -->
<span aria-hidden="true"
class="<%= @enabled ? 'translate-x-5' : 'translate-x-0' %>
pointer-events-none inline-block h-5 w-5 transform rounded-full
bg-white shadow ring-0 transition duration-200 ease-in-out"></span>
</button>

View File

@ -0,0 +1,9 @@
# frozen_string_literal: true
module FormElements
class ToggleComponent < ViewComponent::Base
def initialize(enabled:)
@enabled = !!enabled
end
end
end

View File

@ -10,6 +10,56 @@ class Setting < RailsSettings::Base
account accounts donations mail webmaster support account accounts donations mail webmaster support
] ]
#
# Discourse
#
field :discourse_public_url, type: :string,
default: ENV["DISCOURSE_PUBLIC_URL"].presence
field :discourse_enabled, type: :boolean,
default: (ENV["DISCOURSE_PUBLIC_URL"].present?.to_s || false)
#
# ejabberd
#
field :ejabberd_enabled, type: :boolean,
default: (ENV["EJABBERD_API_URL"].present?.to_s || false)
field :ejabberd_admin_url, type: :string,
default: ENV["EJABBERD_ADMIN_URL"].presence
#
# Gitea
#
field :gitea_public_url, type: :string,
default: ENV["GITEA_PUBLIC_URL"].presence
field :gitea_enabled, type: :boolean,
default: (ENV["GITEA_PUBLIC_URL"].present?.to_s || false)
#
# Mastodon
#
field :mastodon_public_url, type: :string,
default: ENV["MASTODON_PUBLIC_URL"].presence
field :mastodon_enabled, type: :boolean,
default: (ENV["MASTODON_PUBLIC_URL"].present?.to_s || false)
#
# MediaWiki
#
field :mediawiki_public_url, type: :string,
default: ENV["MEDIAWIKI_PUBLIC_URL"].presence
field :mediawiki_enabled, type: :boolean,
default: (ENV["MEDIAWIKI_PUBLIC_URL"].present?.to_s || false)
# #
# Lightning Network # Lightning Network
# #

View File

@ -53,7 +53,7 @@ class User < ApplicationRecord
end end
def devise_after_confirmation def devise_after_confirmation
enable_service %w[discourse gitea wiki xmpp] enable_service %w[discourse gitea mediawiki ejabberd]
end end
def reset_password(new_password, new_password_confirmation) def reset_password(new_password, new_password_confirmation)

View File

@ -65,28 +65,72 @@
<section> <section>
<h3>Services</h3> <h3>Services</h3>
<table class="sm:w-1/4"> <table class="divided">
<thead>
<tr>
<th>Name</th>
<th>Enabled</th>
<th></th>
</tr>
</thead>
<tbody> <tbody>
<% if Setting.discourse_enabled %>
<tr> <tr>
<td>Discourse</td> <td>Discourse</td>
<td><%= check_box_tag 'service_discourse', 'enabled', @services_enabled.include?("discourse"), disabled: true %></td> <td>
<%= render FormElements::ToggleComponent.new(enabled: @services_enabled.include?("discourse")) %>
</td>
<td class="text-right">
<%= link_to "Open profile", "#{Setting.discourse_public_url}/u/#{@user.cn}/summary", class: "btn-sm btn-gray" %>
</td>
</tr> </tr>
<% end %>
<% if Setting.gitea_enabled %>
<tr> <tr>
<td>Gitea</td> <td>Gitea</td>
<td><%= check_box_tag 'service_gitea', 'enabled', @services_enabled.include?("gitea"), disabled: true %></td> <td>
<%= render FormElements::ToggleComponent.new(enabled: @services_enabled.include?("gitea")) %>
</td>
<td class="text-right">
<%= link_to "Open profile", "#{Setting.gitea_public_url}/#{@user.cn}", class: "btn-sm btn-gray" %>
</td>
</tr> </tr>
<% end %>
<% if Setting.mastodon_enabled %>
<tr> <tr>
<td>Mastodon</td> <td>Mastodon</td>
<td><%= check_box_tag 'service_mastodon', 'enabled', @services_enabled.include?("mastodon"), disabled: true %></td> <td>
<%= render FormElements::ToggleComponent.new(enabled: @services_enabled.include?("mastodon")) %>
</td>
<td class="text-right">
<%= link_to "Open profile", "#{Setting.mastodon_public_url}/@#{@user.cn}", class: "btn-sm btn-gray" %>
</td>
</tr> </tr>
<% end %>
<% if Setting.mediawiki_enabled %>
<tr> <tr>
<td>Wiki</td> <td>MediaWiki</td>
<td><%= check_box_tag 'service_wiki', 'enabled', @services_enabled.include?("wiki"), disabled: true %></td> <td>
<%= render FormElements::ToggleComponent.new(enabled: @services_enabled.include?("mediawiki")) %>
</td>
<td class="text-right">
<%= link_to "Open profile", "#{Setting.mediawiki_public_url}/Special:Contributions/#{@user.cn}", class: "btn-sm btn-gray" %>
</td>
</tr> </tr>
<% end %>
<% if Setting.ejabberd_enabled %>
<tr> <tr>
<td>XMPP</td> <td>XMPP (ejabberd)</td>
<td><%= check_box_tag 'service_xmpp', 'enabled', @services_enabled.include?("xmpp"), disabled: true %></td> <td>
<%= render FormElements::ToggleComponent.new(enabled: @services_enabled.include?("ejabberd")) %>
</td>
<td class="text-right">
<% if Setting.ejabberd_admin_url.present? %>
<%= link_to "Open profile", "#{Setting.ejabberd_admin_url}/server/#{@user.ou}/user/#{@user.cn}/", class: "btn-sm btn-gray" %>
<% end %>
</td>
</tr> </tr>
<% end %>
</tbody> </tbody>
</table> </table>
</section> </section>