From 09d38007010f3dc6504476dc6b1d5b39ae116319 Mon Sep 17 00:00:00 2001 From: Chris Hunt <c@chrishunt.co> Date: Fri, 14 Jun 2013 23:58:24 -0700 Subject: [PATCH] Move 'dynamic favicon' from Server to User pref --- app/assets/javascripts/discourse.js | 4 ++-- app/assets/javascripts/discourse/models/user.js | 2 ++ .../discourse/templates/user/preferences.js.handlebars | 10 ++++++++++ app/controllers/users_controller.rb | 2 +- app/models/site_setting.rb | 1 - app/serializers/current_user_serializer.rb | 1 + app/serializers/user_serializer.rb | 1 + config/locales/client.de.yml | 1 + config/locales/client.en.yml | 2 ++ config/locales/client.ru.yml | 1 + config/locales/server.de.yml | 1 - config/locales/server.en.yml | 1 - config/locales/server.ru.yml | 1 - 13 files changed, 21 insertions(+), 7 deletions(-) diff --git a/app/assets/javascripts/discourse.js b/app/assets/javascripts/discourse.js index a6e831349..82b54d0cb 100644 --- a/app/assets/javascripts/discourse.js +++ b/app/assets/javascripts/discourse.js @@ -75,7 +75,7 @@ Discourse = Ember.Application.createWithMixins({ $('title').text(title); var notifyCount = this.get('notifyCount'); - if (notifyCount > 0 && !Discourse.SiteSettings.dynamic_favicon) { + if (notifyCount > 0 && !Discourse.User.current('dynamic_favicon')) { title = "(" + notifyCount + ") " + title; } // chrome bug workaround see: http://stackoverflow.com/questions/2952384/changing-the-window-title-when-focussing-the-window-doesnt-work-in-chrome @@ -86,7 +86,7 @@ Discourse = Ember.Application.createWithMixins({ }.observes('title', 'hasFocus', 'notifyCount'), faviconChanged: function() { - if(Discourse.SiteSettings.dynamic_favicon) { + if(Discourse.User.current('dynamic_favicon')) { $.faviconNotify( Discourse.SiteSettings.favicon_url, this.get('notifyCount') ); diff --git a/app/assets/javascripts/discourse/models/user.js b/app/assets/javascripts/discourse/models/user.js index 6cfa31ccf..de049ad81 100644 --- a/app/assets/javascripts/discourse/models/user.js +++ b/app/assets/javascripts/discourse/models/user.js @@ -153,6 +153,7 @@ Discourse.User = Discourse.Model.extend({ 'email_digests', 'email_direct', 'email_private_messages', + 'dynamic_favicon', 'digest_after_days', 'new_topic_duration_minutes', 'external_links_in_new_tab', @@ -162,6 +163,7 @@ Discourse.User = Discourse.Model.extend({ user.set('bio_excerpt',data.user.bio_excerpt); Discourse.User.current().set('enable_quoting', user.get('enable_quoting')); Discourse.User.current().set('external_links_in_new_tab', user.get('external_links_in_new_tab')); + Discourse.User.current().set('dynamic_favicon', user.get('dynamic_favicon')); }); }, diff --git a/app/assets/javascripts/discourse/templates/user/preferences.js.handlebars b/app/assets/javascripts/discourse/templates/user/preferences.js.handlebars index e8a3133ee..6ee825ecb 100644 --- a/app/assets/javascripts/discourse/templates/user/preferences.js.handlebars +++ b/app/assets/javascripts/discourse/templates/user/preferences.js.handlebars @@ -84,6 +84,16 @@ </div> </div> + <div class="control-group"> + <label class="control-label">{{i18n user.notifications}}</label> + <div class="controls"> + <label> + {{view Ember.Checkbox checkedBinding="dynamic_favicon"}} + {{i18n user.dynamic_favicon}} + </label> + </div> + </div> + <div class="control-group other"> <label class="control-label">{{i18n user.other_settings}}</label> <div class="controls"> diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index f9684a99b..c74f38840 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -51,7 +51,7 @@ class UsersController < ApplicationController u.new_topic_duration_minutes = params[:new_topic_duration_minutes].to_i if params[:new_topic_duration_minutes] [:email_digests, :email_direct, :email_private_messages, - :external_links_in_new_tab, :enable_quoting].each do |i| + :external_links_in_new_tab, :enable_quoting, :dynamic_favicon].each do |i| if params[i].present? u.send("#{i.to_s}=", params[i] == 'true') end diff --git a/app/models/site_setting.rb b/app/models/site_setting.rb index c448e2cbc..6163a52fb 100644 --- a/app/models/site_setting.rb +++ b/app/models/site_setting.rb @@ -78,7 +78,6 @@ class SiteSetting < ActiveRecord::Base setting(:active_user_rate_limit_secs, 60) setting(:previous_visit_timeout_hours, 1) client_setting(:favicon_url, '/assets/default-favicon.ico') - client_setting(:dynamic_favicon, false) setting(:apple_touch_icon_url, '/assets/default-apple-touch-icon.png') setting(:ninja_edit_window, 5.minutes.to_i) diff --git a/app/serializers/current_user_serializer.rb b/app/serializers/current_user_serializer.rb index 270d51161..69079b4f3 100644 --- a/app/serializers/current_user_serializer.rb +++ b/app/serializers/current_user_serializer.rb @@ -12,6 +12,7 @@ class CurrentUserSerializer < BasicUserSerializer :topic_count, :enable_quoting, :external_links_in_new_tab, + :dynamic_favicon, :trust_level, :can_edit diff --git a/app/serializers/user_serializer.rb b/app/serializers/user_serializer.rb index f33aec45c..e1224bcf2 100644 --- a/app/serializers/user_serializer.rb +++ b/app/serializers/user_serializer.rb @@ -48,6 +48,7 @@ class UserSerializer < BasicUserSerializer :auto_track_topics_after_msecs, :new_topic_duration_minutes, :external_links_in_new_tab, + :dynamic_favicon, :enable_quoting diff --git a/config/locales/client.de.yml b/config/locales/client.de.yml index dbd24f57f..2f554286d 100644 --- a/config/locales/client.de.yml +++ b/config/locales/client.de.yml @@ -175,6 +175,7 @@ de: bio: "Über mich" invited_by: "Eingeladen von" trust_level: "Stufe" + dynamic_favicon: "Zeige eingehende Nachrichten im Favicon" external_links_in_new_tab: "Öffne alle externen Links in neuen Tabs" enable_quoting: "Markierten Text bei Antwort zitieren" diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml index cfcb40d5b..b6d6c05d8 100644 --- a/config/locales/client.en.yml +++ b/config/locales/client.en.yml @@ -172,6 +172,8 @@ en: bio: "About me" invited_by: "Invited By" trust_level: "Trust Level" + notifications: "Notifications" + dynamic_favicon: "Show incoming message notifications on favicon" external_links_in_new_tab: "Open all external links in a new tab" enable_quoting: "Enable quote reply for highlighted text" diff --git a/config/locales/client.ru.yml b/config/locales/client.ru.yml index 207aee300..1d5f54d48 100644 --- a/config/locales/client.ru.yml +++ b/config/locales/client.ru.yml @@ -205,6 +205,7 @@ ru: bio: Обо мне invited_by: Приглашен пользователем trust_level: Уровень доверия + dynamic_favicon: Отображать события на favicon external_links_in_new_tab: Открывать все внешние ссылки в новой вкладке enable_quoting: Позволить отвечать с цитированием выделенного текста moderator: '{{user}} - модератор' diff --git a/config/locales/server.de.yml b/config/locales/server.de.yml index 624e916f9..e95ad9c50 100644 --- a/config/locales/server.de.yml +++ b/config/locales/server.de.yml @@ -456,7 +456,6 @@ de: logo_url: "Das Logo deiner Seite, zum Beispiel: http://example.com/logo.png" logo_small_url: "Kleines Logo deiner Seite, das beim Herunterscrollen in einem Thema gezeigt wird, zum Beispiel: http://example.com/logo-small.png" favicon_url: "Das Favicon deiner Seite, siehe http://de.wikipedia.org/wiki/Favicon" - dynamic_favicon: "Zeige eingehende Nachrichten im Favicon" apple_touch_icon_url: "Icon für berührungsempfindliche Apple Geräte. Empfohlene Grösse ist 144px auf 144px." notification_email: "Die Antwortadresse, die in Systemmails (zum Beispiel zur Passwortwiederherstellung, neuen Konten, etc.) eingetragen wird." diff --git a/config/locales/server.en.yml b/config/locales/server.en.yml index 274f17112..c9fd59d5b 100644 --- a/config/locales/server.en.yml +++ b/config/locales/server.en.yml @@ -457,7 +457,6 @@ en: logo_url: "The logo for your site eg: http://example.com/logo.png" logo_small_url: "The small logo for your site used when scrolling down on topics eg: http://example.com/logo-small.png" favicon_url: "A favicon for your site, see http://en.wikipedia.org/wiki/Favicon" - dynamic_favicon: "Show incoming message notifications on favicon" apple_touch_icon_url: "Icon used for Apple touch devices. Recommended size is 144px by 144px." notification_email: "The return email address used when sending system emails such as notifying users of lost passwords, new accounts etc" diff --git a/config/locales/server.ru.yml b/config/locales/server.ru.yml index a35fb23ea..549569edd 100644 --- a/config/locales/server.ru.yml +++ b/config/locales/server.ru.yml @@ -505,7 +505,6 @@ ru: logo_url: 'Логотип вашего сайта, например: http://example.com/logo.png' logo_small_url: 'Уменьшенный логотип вашего сайта, используется при прокрутке списка тем, например: http://example.com/logo-small.png' favicon_url: 'favicon вашего сайта, дополнительная информация: http://en.wikipedia.org/wiki/Favicon' - dynamic_favicon: Отображать события на favicon apple_touch_icon_url: Иконка используемая для тач-устройств Apple. Рекомендуемый размер 144 x 144 px. notification_email: Обратный электронный адрес, используемый для отправки системных электронных писем пользователям, таких как оповещение пользователей о потерянном пароле, новой учетной записи и т.д. use_ssl: Будет ли сайт доступен по SSL? (НЕ РЕАЛИЗОВАНО, ЭКСПЕРИМЕНТАЛЬНАЯ ФУНКЦИЯ)