Merge pull request #1273 from Zanz2/zz_tooltip_settings_enable_sci2663

Added toggle checkbox for tooltips help in prefferences [SCI-2663]
This commit is contained in:
Luka Murn 2018-09-24 16:23:28 +02:00 committed by GitHub
commit 2396149c57
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 156 additions and 86 deletions

View file

@ -66,7 +66,8 @@
});
notificationsSettings();
initNotificationSettingsForm();
tooltipSettings();
initTogglableSettingsForm();
// Setup notification checkbox buttons
function notificationsSettings() {
@ -141,9 +142,22 @@
);
}
// Initialize tooltips settings form
function tooltipSettings() {
var toggleInput = $('[name="tooltips_enabled"]');
toggleInput
.checkboxpicker({ onActiveCls: 'btn-toggle', offActiveCls: 'btn-toggle' });
if (toggleInput.attr('value') === 'true') {
toggleInput.prop('checked', true);
} else {
toggleInput.prop('checked', false);
}
}
// triggers submit action when the user clicks
function initNotificationSettingsForm() {
$('#notifications-settings-panel')
function initTogglableSettingsForm() {
$('#togglable-settings-panel')
.find('.btn-group')
.on('click', function() {
$(this).submit();

View file

@ -78,7 +78,8 @@ module ClientApi
:time_zone, :assignments_notification,
:assignments_email_notification, :recent_notification,
:recent_email_notification,
:system_message_email_notification)
:system_message_email_notification,
:popovers_enabled)
end
def success_response(args = {})

View file

@ -5,7 +5,7 @@ module Users
before_action :load_user, only: [
:index,
:update,
:notifications_settings
:update_togglable_settings
]
layout 'fluid'
@ -30,18 +30,25 @@ module Users
end
end
def notifications_settings
@user.assignments_notification =
params[:assignments_notification] ? true : false
@user.recent_notification =
params[:recent_notification] ? true : false
@user.recent_email_notification =
params[:recent_notification_email] ? true : false
@user.assignments_email_notification =
params[:assignments_notification_email] ? true : false
@user.system_message_email_notification =
params[:system_message_notification_email] ? true : false
def update_togglable_settings
read_from_params(:assignments_notification) do |val|
@user.assignments_notification = val
end
read_from_params(:recent_notification) do |val|
@user.recent_notification = val
end
read_from_params(:recent_notification_email) do |val|
@user.recent_email_notification = val
end
read_from_params(:assignments_notification_email) do |val|
@user.assignments_email_notification = val
end
read_from_params(:system_message_notification_email) do |val|
@user.system_message_email_notification = val
end
read_from_params(:tooltips_enabled) do |val|
@user.settings[:tooltips_enabled] = val
end
if @user.save
respond_to do |format|
format.json do
@ -72,6 +79,10 @@ module Users
:time_zone
)
end
def read_from_params(name)
yield(params.include?(name) ? true : false)
end
end
end
end

View file

@ -44,7 +44,8 @@ class User < ApplicationRecord
recent: true,
recent_email: false,
system_message_email: false
}
},
tooltips_enabled: true
)
# Relations
@ -457,6 +458,7 @@ class User < ApplicationRecord
assignments_email_notification
recent_email_notification
system_message_email_notification)
# declare notifications getters
NOTIFICATIONS_TYPES.each do |name|
define_method(name) do

View file

@ -29,6 +29,7 @@
data-atwho-rep-items-url="<%= atwho_rep_items_team_path(current_team) %>"
data-atwho-menu-items="<%= atwho_menu_items_team_path(current_team) %>"
data-file-max-size-mb="<%= Rails.configuration.x.file_max_size_mb %>"
data-tooltips-enabled="<%= current_user.settings[:tooltips_enabled] %>"
<% end %>
>

View file

@ -50,52 +50,27 @@
</div>
<% end %>
<hr>
<div class="notification-settings-container">
<h4><%= t('notifications.title') %></h4>
<%= form_for(@user,
url: notifications_settings_path(format: :json),
html: { method: :post, id: 'notifications-settings-panel' },
remote: true) do |f| %>
<div class="row">
<div class="col-sm-2">
<span class="assignment hidden-sm">
<i class="fas fa-newspaper"></i>
</span>
</div>
<div class="col-sm-10">
<strong><%=t 'notifications.form.assignments' %></strong>
<p><%=t 'notifications.form.assignments_description' %></p>
<div class="row">
<div class="col-sm-4">
<%=t 'notifications.form.notification_scinote' %>
</div>
<div class="col-sm-8">
<%= check_box_tag :assignments_notification, @user.assignments_notification %>
</div>
<%= form_for(@user,
url: update_togglable_settings_path(format: :json),
html: { method: :post, id: 'togglable-settings-panel' },
remote: true) do |f| %>
<div class="notification-settings-container">
<h4><%= t('notifications.title') %></h4>
<div class="row">
<div class="col-sm-2">
<span class="assignment hidden-sm">
<i class="fas fa-newspaper"></i>
</span>
</div>
<div class="row">
<div class="col-sm-4">
<%=t 'notifications.form.notification_email' %>
</div>
<div class="col-sm-8">
<%= check_box_tag :assignments_notification_email, @user.assignments_email_notification %>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-2">
<%= image_tag 'icon_small/missing.png', class: 'img-circle ' %>
</div>
<div class="col-sm-10">
<strong><%=t 'notifications.form.recent_notification' %></strong>
<p><%=t 'notifications.form.recent_notification_description' %></p>
<div class="col-sm-10">
<strong><%=t 'notifications.form.assignments' %></strong>
<p><%=t 'notifications.form.assignments_description' %></p>
<div class="row">
<div class="col-sm-4">
<%=t 'notifications.form.notification_scinote' %>
</div>
<div class="col-sm-8">
<%= check_box_tag :recent_notification, @user.recent_notification %>
<%= check_box_tag :assignments_notification, @user.assignments_notification %>
</div>
</div>
<div class="row">
@ -103,38 +78,84 @@
<%=t 'notifications.form.notification_email' %>
</div>
<div class="col-sm-8">
<%= check_box_tag :recent_notification_email, @user.recent_email_notification %>
<%= check_box_tag :assignments_notification_email, @user.assignments_email_notification %>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-2">
<span class="system-message hidden-sm"><i class="fas fa-chess-rook" aria-hidden="true"></i></span>
</div>
<div class="col-sm-10">
<strong><%=t 'notifications.form.system_message' %></strong>
<p><%=t 'notifications.form.system_message_description' %></p>
<div class="row">
<div class="col-sm-4">
<%=t 'notifications.form.notification_scinote' %>
</div>
<div class="col-sm-8">
<%= check_box_tag :system_message_notification %>
</div>
</div>
<div class="row">
<div class="col-sm-4">
<%=t 'notifications.form.notification_email' %>
</div>
<div class="row">
<div class="col-sm-2">
<%= image_tag 'icon_small/missing.png', class: 'img-circle ' %>
</div>
<div class="col-sm-10">
<strong><%=t 'notifications.form.recent_notification' %></strong>
<p><%=t 'notifications.form.recent_notification_description' %></p>
<div class="row">
<div class="col-sm-4">
<%=t 'notifications.form.notification_scinote' %>
</div>
<div class="col-sm-8">
<%= check_box_tag :recent_notification, @user.recent_notification %>
</div>
</div>
<div class="row">
<div class="col-sm-4">
<%=t 'notifications.form.notification_email' %>
</div>
<div class="col-sm-8">
<%= check_box_tag :recent_notification_email, @user.recent_email_notification %>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-2">
<span class="system-message hidden-sm"><i class="fas fa-chess-rook" aria-hidden="true"></i></span>
</div>
<div class="col-sm-10">
<strong><%=t 'notifications.form.system_message' %></strong>
<p><%=t 'notifications.form.system_message_description' %></p>
<div class="row">
<div class="col-sm-4">
<%=t 'notifications.form.notification_scinote' %>
</div>
<div class="col-sm-8">
<%= check_box_tag :system_message_notification %>
</div>
</div>
<div class="col-sm-8">
<%= check_box_tag :system_message_notification_email, @user.system_message_email_notification %>
<div class="row">
<div class="col-sm-4">
<%=t 'notifications.form.notification_email' %>
</div>
<div class="col-sm-8">
<%= check_box_tag :system_message_notification_email, @user.system_message_email_notification %>
</div>
</div>
</div>
</div>
</div>
<% end %>
</div>
<hr>
<div class="tooltips-settings-container">
<h4><%= t('users.settings.account.preferences.edit.tips.title') %></h4>
<div class="row">
<div class="col-sm-2">
</div>
<div class="col-sm-10">
<p><%=t 'users.settings.account.preferences.edit.tips.text1' %></p>
<p><%=t 'users.settings.account.preferences.edit.tips.text2' %></p>
<div class="row">
<div class="col-sm-4">
<%=t 'users.settings.account.preferences.edit.tips.toggle' %>
</div>
<div class="col-sm-8">
<%= check_box_tag :tooltips_enabled, @user.settings[:tooltips_enabled] %>
</div>
</div>
</div>
</div>
</div>
<% end %>
<br>
</div>
</div>
</div>

View file

@ -1413,6 +1413,11 @@ en:
time_zone_label: "Time zone"
time_zone_sublabel: "Time zone setting affects all time & date fields throughout application."
time_zone_title: "Time zone"
tips:
title: "Help Tips"
text1: "When you place your mouse over specific element of SciNote, we show you a tip with description of this element."
text2: "You may want to turn that off if you feel confident in here."
toggle: "Show Help Tips"
update_flash: "Preferences successfully updated."
addons:
head_title: "Settings | Add-ons"

View file

@ -56,9 +56,9 @@ Rails.application.routes.draw do
put 'users/settings/account/preferences',
to: 'users/settings/account/preferences#update',
as: 'update_preferences'
post 'users/settings/account/preferences/notifications_settings',
to: 'users/settings/account/preferences#notifications_settings',
as: 'notifications_settings',
post 'users/settings/account/preferences/togglable_settings',
to: 'users/settings/account/preferences#update_togglable_settings',
as: 'update_togglable_settings',
defaults: { format: 'json' }
# Change user's current team

View file

@ -0,0 +1,15 @@
class AddTooltipsEnabledToUserSettings < ActiveRecord::Migration[5.1]
def up
User.find_each do |user|
user.settings[:tooltips_enabled] = true
user.save
end
end
def down
User.find_each do |user|
user.settings.delete(:tooltips_enabled)
user.save
end
end
end

View file

@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 20180524091143) do
ActiveRecord::Schema.define(version: 20180905142400) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"