Convert panel classes to card classes

This commit is contained in:
Andreas Nedbal 2020-04-19 23:09:41 +02:00
parent 2b39888679
commit 33cd5b57a3
28 changed files with 458 additions and 451 deletions

View file

@ -1,5 +1,5 @@
.panel.panel-default.questionbox{data: { id: u.id }}
.panel-body
.card.card-default.questionbox{data: { id: u.id }}
.card-body
.media
.pull-left
%a{href: show_user_profile_path(u.screen_name)}

View file

@ -1,5 +1,5 @@
.panel.inbox-box{class: "panel-#{i.new? ? 'primary' : 'default'}", data: { id: i.id }}
.panel-heading
.card.inbox-box{class: "panel-#{i.new? ? 'primary' : 'default'}", data: { id: i.id }}
.card-header
.media
- unless i.question.author_is_anonymous
%a.pull-left{href: show_user_profile_path(i.question.user.screen_name)}
@ -13,7 +13,7 @@
%a{href: show_user_question_path(i.question.user.screen_name, i.question.id)}
= pluralize(i.question.answer_count, t('views.inbox.entry.response'))
%p.answerbox--question-text= i.question.content
.panel-body
.card-body
%textarea.form-control{name: 'ib-answer', placeholder: t('views.placeholder.inbox'), data: { id: i.id }}
%br/
%button.btn.btn-success{name: 'ib-answer', data: { ib_id: i.id }}
@ -23,7 +23,7 @@
%button.btn.btn-default{name: 'ib-options', data: { ib_id: i.id, state: :hidden }}
%i.fa.fa-cog
%span.sr-only= t 'views.actions.options'
.panel-footer{id: "ib-options-#{i.id}", style: 'display: none'}
.card-footer{id: "ib-options-#{i.id}", style: 'display: none'}
%h4= t 'views.inbox.entry.sharing.title'
- if current_user.services.count > 0
.row

View file

@ -1,29 +1,29 @@
.panel.panel-default.inbox--panel
.panel-heading
%h3.panel-title= t 'views.inbox.sidebar.questions.title'
.panel-body
.card.card-default.inbox--panel
.card-header
%h3.card-title= t 'views.inbox.sidebar.questions.title'
.card-body
%button.btn.btn-block.btn-info{type: :button, id: 'ib-generate-question'}= t 'views.inbox.sidebar.questions.button'
.panel.panel-default.inbox--panel
.panel-heading
%h3.panel-title= t 'views.inbox.sidebar.share.title'
.panel-body
.card.card-default.inbox--panel
.card-header
%h3.card-title= t 'views.inbox.sidebar.share.title'
.card-body
%a.btn.btn-block.btn-primary{target: '_blank', href: "https://twitter.com/intent/tweet?text=Ask%20me%20anything%21&url=#{show_user_profile_url(current_user.screen_name)}"}
%i.fa.fa-fw.fa-twitter
= raw t('views.inbox.sidebar.share.button', service: "Twitter")
%a.btn.btn-block.btn-primary{target: '_blank', href: "http://www.tumblr.com/share/link?url=#{show_user_profile_url(current_user.screen_name)}&name=Ask%20me%20anything%21"}
%i.fa.fa-fw.fa-tumblr
= raw t('views.inbox.sidebar.share.button', service: "Tumblr")
.panel.panel-default.inbox--panel
.panel-heading
%h3.panel-title Show author
.panel-body
.card.card-default.inbox--panel
.card-header
%h3.card-title Show author
.card-body
%form#author_form
= bootstrap_form_tag url: inbox_path, method: :get do |f|
= f.text_field :author, value: params[:author], placeholder: "username", prepend: "@" , hide_label: true
= f.button "Show", name: nil, class: "btn btn-default btn-block btn-sm", id: "ib-author"
.panel.panel-default.warning--panel
.panel-heading
%h3.panel-title= t 'views.inbox.sidebar.actions.title'
.panel-body
.card.card-default.warning--panel
.card-header
%h3.card-title= t 'views.inbox.sidebar.actions.title'
.card-body
%button.btn.btn-block.btn-danger{type: :button, id: @delete_id , disabled: (@disabled ? 'disabled' : nil), data: { ib_count: @inbox_count }}= t 'views.inbox.sidebar.actions.button'

View file

@ -1,5 +1,5 @@
.col-md-3.col-sm-4.col-xs-12
.panel.panel-default.hidden-xs
.card.card-default.hidden-xs
.list-group
= list_group_item t('views.moderation.tabs.all'), moderation_path
= list_group_item t('views.general.answer').pluralize(2), moderation_path('answer')

View file

@ -1,9 +1,9 @@
- unless report.nil? or report.target.nil? or report.user.nil? or report.type.nil?
.panel.panel-default.moderationbox{data: { id: report.id }}
.panel-heading
.card.card-default.moderationbox{data: { id: report.id }}
.card-header
%img.img-rounded.answerbox--img{src: gravatar_url(report.user)}
= raw t('views.moderation.moderationbox.reported', user: user_screen_name(report.user), content: report.type.sub('Reports::', ''), time: time_tooltip(report))
.panel-body
.card-body
%p
- if report.type == 'Reports::User'
= user_screen_name report.target
@ -42,5 +42,5 @@
%span{id: "mod-comment-count-#{report.id}"}= report.moderation_comments.all.count
%button.btn.btn-default.btn-sm{type: :button, name: "mod-delete-report", data: { id: report.id }}
%i.fa.fa-trash-o
.panel-footer{id: "mod-comments-section-#{report.id}", style: 'display: none'}
.card-footer{id: "mod-comments-section-#{report.id}", style: 'display: none'}
%div{id: "mod-comments-#{report.id}"}= render 'moderation/discussion', report: report

View file

@ -1,8 +1,8 @@
- header_class = if user.profile_header.exists? then "userbox--header-container" else "userbox--no-header" end
.panel.panel-default
.card.card-default
%div{class: header_class}
%img.userbox--header{src: user.profile_header.url(:mobile)}
.panel-body
.card-body
%img.userbox--avatar{src: user.profile_picture.url(:small)}
%p.userbox--username
%a.profile--displayname{href: show_user_profile_path(user.screen_name)}

View file

@ -1,11 +1,11 @@
.col-md-3.col-xs-12.col-sm-4
.panel.panel-default.hidden-xs
.card.card-default.hidden-xs
.list-group
= list_group_item "New Notifications", notifications_path, badge: Notification.for(current_user).where(new: true).count
= list_group_item "All Notifications", notifications_path('all')
.panel.panel-default.hidden-xs
.panel-heading
.card.card-default.hidden-xs
.card-header
Filter by Type
.list-group
= list_group_item t('views.notifications.tabs.answer'), notifications_path('answer'), badge: Notification.for(current_user).where(target_type: "Answer", new: true).count

View file

@ -3,7 +3,7 @@
.container.j2-page
= render 'notification_tabs'
.col-md-9.col-xs-12.col-sm-8
.panel.panel-default
.card.card-default
%ul#notifications.list-group
- if @notifications.count == 0
%li.list-group-item.text-center

View file

@ -15,10 +15,10 @@
Load more
- if user_signed_in? and !current_user.answered? @question and current_user != @question.user and @question.user.privacy_allow_stranger_answers
.panel.panel-default#q-answer-box
.panel-heading
%h3.panel-title= t('views.question.title')
.panel-body
.card.card-default#q-answer-box
.card-header
%h3.card-title= t('views.question.title')
.card-body
%textarea#q-answer.form-control{placeholder: t('views.placeholder.inbox'), data: { id: @question.id }}
%br/
%button#q-answer.btn.btn-success{data: { q_id: @question.id }}

View file

@ -1,24 +1,25 @@
- provide(:title, generate_title("Service Settings"))
.container.j2-page
= render 'user/settings_tabs'
.col-md-9.col-xs-12.col-sm-8
= render 'layouts/messages'
.panel.panel-default
.panel-body
.row
= render 'user/settings_tabs'
.col-md-9.col-xs-12.col-sm-8
= render 'layouts/messages'
.card.card-default
.card-body
- if @services.count > 0
= t 'views.settings.service.enabled'
- else
= t 'views.settings.service.none'
- APP_CONFIG['sharing'].each do |service, service_options|
- if service_options['enabled'] and !@services.any? { |x| x.provider == service.to_s }
%p=link_to t('views.settings.service.connect', service: service.capitalize), "/auth/#{service}"
- if @services.count > 0
= t 'views.settings.service.enabled'
- else
= t 'views.settings.service.none'
- APP_CONFIG['sharing'].each do |service, service_options|
- if service_options['enabled'] and !@services.any? { |x| x.provider == service.to_s }
%p=link_to t('views.settings.service.connect', service: service.capitalize), "/auth/#{service}"
- if @services.count > 0
%ul.list-group
- @services.each do |service|
%li.list-group-item
%i{class: "fa fa-#{service.provider}"}
%strong= service.provider.capitalize
(#{service.nickname})
= link_to t('views.settings.service.disconnect'), service_path(service), data: { confirm: t('views.settings.service.confirm', service: service.provider.capitalize) }, method: :delete
%ul.list-group
- @services.each do |service|
%li.list-group-item
%i{class: "fa fa-#{service.provider}"}
%strong= service.provider.capitalize
(#{service.nickname})
= link_to t('views.settings.service.disconnect'), service_path(service), data: { confirm: t('views.settings.service.confirm', service: service.provider.capitalize) }, method: :delete

View file

@ -1,6 +1,6 @@
- type ||= nil
.panel.panel-default.questionbox{data: { id: q.id }}
.panel-body
.card.card-default.questionbox{data: { id: q.id }}
.card-body
.media
- if type == "discover"
.pull-left

View file

@ -1,6 +1,6 @@
.panel.panel-question{class: if hidden then 'question-hidden' end, tabindex: if hidden then '-1' end, aria: { hidden: if hidden then :true end }}
.card.card-question{class: if hidden then 'question-hidden' end, tabindex: if hidden then '-1' end, aria: { hidden: if hidden then :true end }}
.container
.panel-body
.card-body
.media.question-media
- unless question.author_is_anonymous
%a.pull-left{href: unless hidden then show_user_profile_path(question.user.screen_name) end}

View file

@ -1,11 +1,11 @@
.panel.panel-default
.panel-heading
%h3.panel-title
.card.card-default
.card-header
%h3.card-title
- if @user.motivation_header.blank?
= t 'views.questionbox.title'
- else
= @user.motivation_header
.panel-body
.card-body
- if @user.banned?
.row
.col-xs-12.text-center

View file

@ -1,8 +1,8 @@
- header_class = if current_user.profile_header.exists? then "userbox--header-container" else "userbox--no-header" end
.panel.panel-default.hidden-xs
.card.card-default.hidden-xs
%div{class: header_class}
%img.userbox--header{src: current_user.profile_header.url(:mobile)}
.panel-body
.card-body
%img.userbox--avatar{src: current_user.profile_picture.url(:small)}
%p.userbox--username
- if current_user.display_name.blank?
@ -22,7 +22,7 @@
.col-md-6.col-sm-6.col-xs-6
%h4.entry-text#friend-count= current_user.friend_count
%h6.entry-subtext= t('views.general.following')
.panel.panel-default.hidden-xs
.card.card-default.hidden-xs
.list-group
= list_group_item t('views.general.timeline'), root_path
- if APP_CONFIG.dig(:features, :public, :enabled)
@ -30,10 +30,10 @@
- current_user.groups.each do |group|
= list_group_item group.display_name, group_timeline_path(group.name)
- unless @group.nil?
.panel.panel-default.profile--panel.hidden-xs
.panel-heading
%h3.panel-title= t('views.group.members')
.panel-body
.card.card-default.profile--panel.hidden-xs
.card-header
%h3.card-title= t('views.group.members')
.card-body
- @group.members.each do |member|
%a{href: show_user_profile_path(member.user.screen_name), title: member.user.screen_name, data: { toggle: :tooltip, placement: :top }}
%img.img-rounded.answerbox--img-small{src: member.user.profile_picture.url(:medium)}

View file

@ -1,9 +1,9 @@
- type ||= @type || :nil
- header_class = if user.profile_header.exists? then "userbox--header-container" else "userbox--no-header" end
.panel.panel-default
.card.card-default
%div{class: header_class}
%img.userbox--header{src: user.profile_header.url(:mobile)}
.panel-body
.card-body
%img.userbox--avatar{src: user.profile_picture.url(:small)}
%p.userbox--username
- if user.display_name.blank?

View file

@ -5,8 +5,8 @@
%h1= APP_CONFIG['site_name']
%p= t 'views.about.subtitle'
.container
.panel.panel-default
.panel-body
.card.card-default
.card-body
.row
.col-md-4
%h3= t 'views.about.links.title'
@ -23,8 +23,8 @@
%i.fa.fa-question
%h4.heading-about.text-center
FAQ
.panel.panel-default
.panel-body
.card.card-default
.card-body
.row
.col-md-4
%h3= t 'views.about.opensource.title'
@ -45,8 +45,8 @@
- User.where(contributor: true).each do |sup|
%a{href: show_user_profile_path(sup.screen_name), title: sup.screen_name, data: { toggle: :tooltip, placement: :top }}
%img.img-rounded.answerbox--img-small{src: sup.profile_picture.url(:medium)}
.panel.panel-default
.panel-body
.card.card-default
.card-body
.row
.col-md-3.col-sm-12.col-xs-12
%h3= t 'views.about.statistics.title'

View file

@ -8,6 +8,6 @@
= succeed '!' do
= APP_CONFIG['site_name']
.container
.panel.panel-default
.panel-body
.card.card-default
.card-body
= raw_markdown_io "service-docs/en/help/faq.md"

View file

@ -1,5 +1,5 @@
- provide(:title, generate_title("Privacy Policy"))
.container.j2-page
.panel.panel-default
.panel-body
.card.card-default
.card-body
= raw_markdown_io "service-docs/en/policy/privacy.md"

View file

@ -1,5 +1,5 @@
- provide(:title, generate_title("Terms of Service"))
.container.j2-page
.panel.panel-default
.panel-body
.card.card-default
.card-body
= raw_markdown_io "service-docs/en/policy/terms.md"

View file

@ -1,45 +1,46 @@
- provide(:title, generate_title("Account Settings"))
.container.j2-page
= render 'user/settings_tabs'
.col-md-9.col-xs-12.col-sm-8
= render 'layouts/messages'
.panel.panel-default
.panel-body
= bootstrap_form_for(resource, as: resource_name, url: '/settings/account', html: { method: :put }) do |f|
/ Password field modal
#modal-passwd.modal.fade{"aria-hidden" => "true", "aria-labelledby" => "modal-passwd-label", :role => "dialog", :tabindex => "-1"}
.modal-dialog
.modal-content
.modal-header
%button.close{"data-dismiss" => "modal", :type => "button"}
%span{"aria-hidden" => "true"} ×
%span.sr-only= t 'views.actions.close'
%h4#modal-passwd-label.modal-title= t 'views.settings.account.modal.title'
.modal-body
= f.password_field :current_password, autocomplete: "off", label: t('views.settings.account.password_current'), help: t('views.settings.account.password_current_help')
.modal-footer
%button.btn.btn-default{"data-dismiss" => "modal", :type => "button"}= t 'views.actions.cancel'
%button.btn.btn-primary{:type => "submit"}= t 'views.actions.save'
.row
= render 'user/settings_tabs'
.col-md-9.col-xs-12.col-sm-8
= render 'layouts/messages'
.card.card-default
.card-body
= bootstrap_form_for(resource, as: resource_name, url: '/settings/account', html: { method: :put }) do |f|
/ Password field modal
#modal-passwd.modal.fade{"aria-hidden" => "true", "aria-labelledby" => "modal-passwd-label", :role => "dialog", :tabindex => "-1"}
.modal-dialog
.modal-content
.modal-header
%button.close{"data-dismiss" => "modal", :type => "button"}
%span{"aria-hidden" => "true"} ×
%span.sr-only= t 'views.actions.close'
%h4#modal-passwd-label.modal-title= t 'views.settings.account.modal.title'
.modal-body
= f.password_field :current_password, autocomplete: "off", label: t('views.settings.account.password_current'), help: t('views.settings.account.password_current_help')
.modal-footer
%button.btn.btn-default{"data-dismiss" => "modal", :type => "button"}= t 'views.actions.cancel'
%button.btn.btn-primary{:type => "submit"}= t 'views.actions.save'
= devise_error_messages!
= devise_error_messages!
= f.text_field :screen_name, autofocus: true, label: t('views.settings.account.username')
= f.text_field :screen_name, autofocus: true, label: t('views.settings.account.username')
= f.email_field :email, label: t('views.settings.account.email')
- if devise_mapping.confirmable? && resource.pending_reconfirmation?
%div= raw t('views.settings.account.email_confirm', resource: resource.unconfirmed_email)
= f.email_field :email, label: t('views.settings.account.email')
- if devise_mapping.confirmable? && resource.pending_reconfirmation?
%div= raw t('views.settings.account.email_confirm', resource: resource.unconfirmed_email)
= f.password_field :password, autocomplete: "off", label: t('views.settings.account.password'), help: t('views.settings.account.password_help')
= f.password_field :password_confirmation, autocomplete: "off", label: t('views.settings.account.password_confirm')
= f.password_field :password, autocomplete: "off", label: t('views.settings.account.password'), help: t('views.settings.account.password_help')
= f.password_field :password_confirmation, autocomplete: "off", label: t('views.settings.account.password_confirm')
%button.btn.btn-primary{"data-target" => "#modal-passwd", "data-toggle" => "modal", :type => "button"}
= t 'views.actions.save'
%button.btn.btn-primary{"data-target" => "#modal-passwd", "data-toggle" => "modal", :type => "button"}
= t 'views.actions.save'
%hr/
%p
= t 'views.settings.account.unsatisfied'
=button_to t('views.settings.account.delete'), '/settings/account', data: { confirm: "Are you sure?" }, method: :delete, class: "btn btn-danger btn-xs"
%hr/
%p
= t 'views.settings.account.unsatisfied'
=button_to t('views.settings.account.delete'), '/settings/account', data: { confirm: "Are you sure?" }, method: :delete, class: "btn btn-danger btn-xs"
= link_to t('views.settings.account.back'), :back
= link_to t('views.settings.account.back'), :back
.visible-xs= render "shared/links"

View file

@ -1,4 +1,4 @@
.panel.panel-default#profile
.card.card-default#profile
%img.profile--avatar{src: @user.profile_picture.url(:large)}
- if user_signed_in? && current_user.admin?
- if @user.admin?
@ -16,7 +16,7 @@
- if @user.following? current_user
.profile--panel-badge.panel-badge-default
= t 'views.user.follows_you'
.panel-body
.card-body
.profile--panel-name
- if @user.display_name.blank?
.profile--displayname

View file

@ -1,5 +1,5 @@
.col-md-3.col-xs-12.col-sm-4
.panel.panel-default
.card.card-default
.list-group
= list_group_item t('views.settings.tabs.account'), edit_user_registration_path
= list_group_item t('views.settings.tabs.profile'), edit_user_profile_path

View file

@ -1,7 +1,7 @@
.panel.panel-default.profile--panel#profile-stats
.panel-heading
%h3.panel-title Stats
.panel-body
.card.card-default.profile--panel#profile-stats
.card-header
%h3.card-title Stats
.card-body
.row
%a{href: show_user_followers_path(@user.screen_name)}
.col-md-6.col-sm-6.col-xs-6

View file

@ -1,193 +1,194 @@
- provide(:title, generate_title("Your Data"))
.container.j2-page
= render 'settings_tabs'
.col-md-9.col-xs-12.col-sm-8
.panel.panel-default
.panel-body
%h2 Your Profile Data
%p Everything we have about you! Really, not that much as you might expect.
.row
= render 'settings_tabs'
.col-md-9.col-xs-12.col-sm-8
.card.card-default
.card-body
%h2 Your Profile Data
%p Everything we have about you! Really, not that much as you might expect.
%h3 General
.row
.col-md-6.col-sm-6.col-xs-12
%h4 Profile
%h3 General
.row
.col-md-6.col-sm-6.col-xs-12
%h4 Profile
%p.data-heading User name
%p.text-muted= current_user.screen_name
%p.data-heading User name
%p.text-muted= current_user.screen_name
%p.data-heading Display name
%p.text-muted
- if current_user.display_name.blank?
None set!
- else
= current_user.display_name
%p.data-heading Display name
%p.text-muted
- if current_user.display_name.blank?
None set!
- else
= current_user.display_name
%p.data-heading Bio
%p.text-muted
- if current_user.bio.blank?
None set!
- else
= current_user.bio
%p.data-heading Bio
%p.text-muted
- if current_user.bio.blank?
None set!
- else
= current_user.bio
%p.data-heading Location
%p.text-muted
- if current_user.location.blank?
None set!
- else
= current_user.location
%p.data-heading Location
%p.text-muted
- if current_user.location.blank?
None set!
- else
= current_user.location
%p.data-heading Website
%p.text-muted
- if current_user.website.blank?
None set!
- else
= current_user.website
.col-md-6.col-sm-6.col-xs-12
%h4 Pictures
%p.data-heading Profile picture
.media
.pull-left
%img.profile--img{src: current_user.profile_picture.url(:medium)}
.media-body
%ul
%li
%a{href: current_user.profile_picture.url(:small)} Small
%li
%a{href: current_user.profile_picture.url(:medium)} Medium
%li
%a{href: current_user.profile_picture.url(:large)} Large
%li
%a{href: current_user.profile_picture.url(:original)} Original image
%p.data-heading Website
%p.text-muted
- if current_user.website.blank?
None set!
- else
= current_user.website
.col-md-6.col-sm-6.col-xs-12
%h4 Pictures
%p.data-heading Profile picture
.media
.pull-left
%img.profile--img{src: current_user.profile_picture.url(:medium)}
.media-body
%ul
%li
%a{href: current_user.profile_picture.url(:small)} Small
%li
%a{href: current_user.profile_picture.url(:medium)} Medium
%li
%a{href: current_user.profile_picture.url(:large)} Large
%li
%a{href: current_user.profile_picture.url(:original)} Original image
%p.data-heading Header picture
%img.data-header-preview{src: current_user.profile_header.url(:mobile)}
%p
%a{href: current_user.profile_header.url(:mobile)} Mobile
|
%a{href: current_user.profile_header.url(:web)} Web
|
%a{href: current_user.profile_header.url(:retina)} Retina
|
%a{href: current_user.profile_header.url(:original)} Original image
.row
.col-md-6.col-sm-6.col-xs-12
%h4 Statistics
%p.data-heading Header picture
%img.data-header-preview{src: current_user.profile_header.url(:mobile)}
%p
%a{href: current_user.profile_header.url(:mobile)} Mobile
|
%a{href: current_user.profile_header.url(:web)} Web
|
%a{href: current_user.profile_header.url(:retina)} Retina
|
%a{href: current_user.profile_header.url(:original)} Original image
.row
.col-md-6.col-sm-6.col-xs-12
%h4 Statistics
%p.data-heading Answers
%p.text-muted= current_user.answered_count
%p.data-heading Answers
%p.text-muted= current_user.answered_count
%p.data-heading Questions
%p.text-muted= current_user.asked_count
%p.data-heading Questions
%p.text-muted= current_user.asked_count
%p.data-heading Following
%p.text-muted= current_user.friend_count
%p.data-heading Following
%p.text-muted= current_user.friend_count
%p.data-heading Followers
%p.text-muted= current_user.follower_count
%p.data-heading Followers
%p.text-muted= current_user.follower_count
%p.data-heading Smiles
%p.text-muted= current_user.smiled_count + current_user.comment_smiled_count
%p.data-heading Smiles
%p.text-muted= current_user.smiled_count + current_user.comment_smiled_count
%p.data-heading Comments
%p.text-muted= current_user.commented_count
.col-md-6.col-sm-6.col-xs-12
%h4 Badges
%p.data-heading Comments
%p.text-muted= current_user.commented_count
.col-md-6.col-sm-6.col-xs-12
%h4 Badges
%p.data-heading Admin
%p
- if current_user.admin?
%span.label.label-success
%i.fa.fa-fw.fa-check
- else
%span.label.label-danger
%i.fa.fa-fw.fa-close
%p.data-heading Admin
%p
- if current_user.admin?
%span.label.label-success
%i.fa.fa-fw.fa-check
- else
%span.label.label-danger
%i.fa.fa-fw.fa-close
%p.data-heading Moderator
%p
- if current_user.mod?
%span.label.label-success
%i.fa.fa-fw.fa-check
- else
%span.label.label-danger
%i.fa.fa-fw.fa-close
%p.data-heading Moderator
%p
- if current_user.mod?
%span.label.label-success
%i.fa.fa-fw.fa-check
- else
%span.label.label-danger
%i.fa.fa-fw.fa-close
%p.data-heading Supporter
%p
- if current_user.supporter?
%span.label.label-success
%i.fa.fa-fw.fa-check
- else
%span.label.label-danger
%i.fa.fa-fw.fa-close
%p.data-heading Supporter
%p
- if current_user.supporter?
%span.label.label-success
%i.fa.fa-fw.fa-check
- else
%span.label.label-danger
%i.fa.fa-fw.fa-close
%p.data-heading Contributor
%p
- if current_user.contributor?
%span.label.label-success
%i.fa.fa-fw.fa-check
- else
%span.label.label-danger
%i.fa.fa-fw.fa-close
%p.data-heading Contributor
%p
- if current_user.contributor?
%span.label.label-success
%i.fa.fa-fw.fa-check
- else
%span.label.label-danger
%i.fa.fa-fw.fa-close
%p.data-heading Blogger
%p
- if current_user.blogger?
%span.label.label-success
%i.fa.fa-fw.fa-check
- else
%span.label.label-danger
%i.fa.fa-fw.fa-close
%p.data-heading Blogger
%p
- if current_user.blogger?
%span.label.label-success
%i.fa.fa-fw.fa-check
- else
%span.label.label-danger
%i.fa.fa-fw.fa-close
%p.data-heading Translator
%p
- if current_user.translator?
%span.label.label-success
%i.fa.fa-fw.fa-check
- else
%span.label.label-danger
%i.fa.fa-fw.fa-close
.row
.col-md-6.col-sm-6.col-xs-12
%h3 IP
%p.data-heading Current Sign In
%p.text-muted= current_user.current_sign_in_ip
%p.data-heading Translator
%p
- if current_user.translator?
%span.label.label-success
%i.fa.fa-fw.fa-check
- else
%span.label.label-danger
%i.fa.fa-fw.fa-close
.row
.col-md-6.col-sm-6.col-xs-12
%h3 IP
%p.data-heading Current Sign In
%p.text-muted= current_user.current_sign_in_ip
%p.data-heading Last Sign In
%p.text-muted= current_user.last_sign_in_ip
.col-md-6.col-sm-6.col-xs-12
%h3 Miscellaneous
%p.data-heading Last Sign In
%p.text-muted= current_user.last_sign_in_ip
.col-md-6.col-sm-6.col-xs-12
%h3 Miscellaneous
%p.data-heading Locale
%p.text-muted
- if current_user.locale.blank?
None set!
- else
= current_user.locale
%p.data-heading Locale
%p.text-muted
- if current_user.locale.blank?
None set!
- else
= current_user.locale
%p.data-heading Sign In count
%p.text-muted= current_user.sign_in_count
%h3 Dates
.row
.col-md-6.col-sm-6.col-xs-12
%h4 Sign In
%p.data-heading Sign In count
%p.text-muted= current_user.sign_in_count
%h3 Dates
.row
.col-md-6.col-sm-6.col-xs-12
%h4 Sign In
%p.data-heading Current Sign In
%p.text-muted= localize(current_user.current_sign_in_at)
%p.data-heading Current Sign In
%p.text-muted= localize(current_user.current_sign_in_at)
%p.data-heading Last Sign In
%p.text-muted= localize(current_user.last_sign_in_at)
%p.data-heading Last Sign In
%p.text-muted= localize(current_user.last_sign_in_at)
%p.data-heading Remember me set at
%p.text-muted= localize(current_user.remember_created_at)
.col-md-6.col-sm-6.col-xs-12
%h4 Create/Update
%p.data-heading Remember me set at
%p.text-muted= localize(current_user.remember_created_at)
.col-md-6.col-sm-6.col-xs-12
%h4 Create/Update
%p.data-heading Account created
%p.text-muted
= localize(current_user.created_at)
= " (#{time_ago_in_words(current_user.created_at)} ago)"
%p.data-heading Account created
%p.text-muted
= localize(current_user.created_at)
= " (#{time_ago_in_words(current_user.created_at)} ago)"
%p.data-heading Account last updated
%p.text-muted
= localize(current_user.updated_at)
= " (#{time_ago_in_words(current_user.updated_at)} ago)"
%p.data-heading Account last updated
%p.text-muted
= localize(current_user.updated_at)
= " (#{time_ago_in_words(current_user.updated_at)} ago)"

View file

@ -1,62 +1,63 @@
- provide(:title, generate_title("Profile Settings"))
.container.j2-page
= render 'settings_tabs'
.col-md-9.col-xs-12.col-sm-9
= render 'layouts/messages'
.panel.panel-default
.panel-body
= bootstrap_form_for(current_user, url: {action: "edit"}, :html => { :multipart => true }, method: "patch") do |f|
.row
= render 'settings_tabs'
.col-md-9.col-xs-12.col-sm-9
= render 'layouts/messages'
.card.card-default
.card-body
= bootstrap_form_for(current_user, url: {action: "edit"}, :html => { :multipart => true }, method: "patch") do |f|
= f.text_field :display_name, label: t('views.settings.profile.displayname')
= f.text_field :display_name, label: t('views.settings.profile.displayname')
.media#profile-picture-media
.pull-left
%img.img-rounded.profile--img{src: current_user.profile_picture.url(:medium)}
.media-body
= f.file_field :profile_picture, label: t('views.settings.profile.avatar')
.media#profile-picture-media
.pull-left
%img.img-rounded.profile--img{src: current_user.profile_picture.url(:medium)}
.media-body
= f.file_field :profile_picture, label: t('views.settings.profile.avatar')
.row#profile-picture-crop-controls{style: 'display: none;'}
.col-sm-10.col-md-8
%strong= t('views.settings.profile.avatar_adjust')
%img#profile-picture-cropper{src: current_user.profile_picture.url(:medium)}
.col-sm-2.col-md-4
.btn-group
%button#cropper-zoom-out.btn.btn-inverse{type: :button}
%i.fa.fa-search-minus
%button#cropper-zoom-in.btn.btn-inverse{type: :button}
%i.fa.fa-search-plus
.row#profile-picture-crop-controls{style: 'display: none;'}
.col-sm-10.col-md-8
%strong= t('views.settings.profile.avatar_adjust')
%img#profile-picture-cropper{src: current_user.profile_picture.url(:medium)}
.col-sm-2.col-md-4
.btn-group
%button#cropper-zoom-out.btn.btn-inverse{type: :button}
%i.fa.fa-search-minus
%button#cropper-zoom-in.btn.btn-inverse{type: :button}
%i.fa.fa-search-plus
.media#profile-header-media
.pull-left
%img.img-rounded.header--img{src: current_user.profile_header.url(:mobile)}
.media-body
= f.file_field :profile_header, label: t('views.settings.profile.header')
.media#profile-header-media
.pull-left
%img.img-rounded.header--img{src: current_user.profile_header.url(:mobile)}
.media-body
= f.file_field :profile_header, label: t('views.settings.profile.header')
.row#profile-header-crop-controls{style: 'display: none;'}
.col-sm-10.col-md-8
%strong= t('views.settings.profile.header_adjust')
%img#profile-header-cropper{src: current_user.profile_header.url(:web)}
.col-sm-2.col-md-4
.btn-group
%button#cropper-header-zoom-out.btn.btn-inverse{type: :button}
%i.fa.fa-search-minus
%button#cropper-header-zoom-in.btn.btn-inverse{type: :button}
%i.fa.fa-search-plus
.row#profile-header-crop-controls{style: 'display: none;'}
.col-sm-10.col-md-8
%strong= t('views.settings.profile.header_adjust')
%img#profile-header-cropper{src: current_user.profile_header.url(:web)}
.col-sm-2.col-md-4
.btn-group
%button#cropper-header-zoom-out.btn.btn-inverse{type: :button}
%i.fa.fa-search-minus
%button#cropper-header-zoom-in.btn.btn-inverse{type: :button}
%i.fa.fa-search-plus
= f.text_field :motivation_header, label: t('views.settings.profile.motivation'), placeholder: t('views.settings.profile.placeholder.motivation')
= f.text_field :motivation_header, label: t('views.settings.profile.motivation'), placeholder: t('views.settings.profile.placeholder.motivation')
= f.text_field :website, label: t('views.settings.profile.website'), placeholder: 'http://example.com'
= f.text_field :website, label: t('views.settings.profile.website'), placeholder: 'http://example.com'
= f.text_field :location, label: t('views.settings.profile.location'), placeholder: t('views.settings.profile.placeholder.location')
= f.text_field :location, label: t('views.settings.profile.location'), placeholder: t('views.settings.profile.placeholder.location')
= f.text_area :bio, label: t('views.settings.profile.bio'), placeholder: t('views.settings.profile.placeholder.bio')
= f.text_area :bio, label: t('views.settings.profile.bio'), placeholder: t('views.settings.profile.placeholder.bio')
= f.check_box :show_foreign_themes, label: 'Render other user themes when visiting their profile'
= f.check_box :show_foreign_themes, label: 'Render other user themes when visiting their profile'
- for attrib in %i(crop_x crop_y crop_w crop_h)
= f.hidden_field attrib, id: attrib
- for attrib in %i(crop_x crop_y crop_w crop_h)
= f.hidden_field attrib, id: attrib
- for attrib in %i(crop_h_x crop_h_y crop_h_w crop_h_h)
= f.hidden_field attrib, id: attrib
- for attrib in %i(crop_h_x crop_h_y crop_h_w crop_h_h)
= f.hidden_field attrib, id: attrib
= f.submit t('views.actions.save'), class: 'btn btn-primary'
= f.submit t('views.actions.save'), class: 'btn btn-primary'

View file

@ -1,14 +1,15 @@
- provide(:title, generate_title("Privacy Settings"))
.container.j2-page
= render 'settings_tabs'
.col-md-9.col-xs-12.col-sm-8
= render 'layouts/messages'
.panel.panel-default
.panel-body
= bootstrap_form_for(current_user, url: {action: "edit_privacy"}, method: "patch") do |f|
.row
= render 'settings_tabs'
.col-md-9.col-xs-12.col-sm-8
= render 'layouts/messages'
.card.card-default
.card-body
= bootstrap_form_for(current_user, url: {action: "edit_privacy"}, method: "patch") do |f|
= f.check_box :privacy_allow_anonymous_questions, label: t('views.settings.privacy.anonymous')
= f.check_box :privacy_allow_public_timeline, label: t('views.settings.privacy.public')
= f.check_box :privacy_allow_stranger_answers, label: t('views.settings.privacy.stranger')
= f.check_box :privacy_allow_anonymous_questions, label: t('views.settings.privacy.anonymous')
= f.check_box :privacy_allow_public_timeline, label: t('views.settings.privacy.public')
= f.check_box :privacy_allow_stranger_answers, label: t('views.settings.privacy.stranger')
= f.submit t('views.actions.save'), class: 'btn btn-primary'
= f.submit t('views.actions.save'), class: 'btn btn-primary'

View file

@ -1,72 +1,73 @@
- provide(:title, generate_title("Theme Settings"))
.container.j2-page
= render 'settings_tabs'
.col-md-9.col-xs-12.col-sm-8
= render 'layouts/messages'
.panel.panel-default
.panel-body
%b Presets:
%a{href: '#', class: 'theme_preset', data: {preset: 'rs'}} Retrospring Purple,
%a{href: '#', class: 'theme_preset', data: {preset: 'dc'}} Dark Copycat,
%a{href: '#', class: 'theme_preset', data: {preset: 'lc'}} Light Copycat
= bootstrap_form_for(current_user.theme || Theme.new, url: {action: "update_theme"}, html: {id: 'update_theme'}, method: "patch") do |f|
.row
.col-md-6
= f.text_field :primary_color, class: 'color', data: {default: 0x5E35B1}
.col-md-6
= f.text_field :primary_text, class: 'color', data: {default: 0xFFFFFF}
.row
.col-md-6
= f.text_field :danger_color, class: 'color', data: {default: 0xFF0039}
.col-md-6
= f.text_field :danger_text, class: 'color', data: {default: 0xFFFFFF}
.row
.col-md-6
= f.text_field :success_color, class: 'color', data: {default: 0x3FB618}
.col-md-6
= f.text_field :success_text, class: 'color', data: {default: 0xFFFFFF}
.row
.col-md-6
= f.text_field :warning_color, class: 'color', data: {default: 0xFF7518}
.col-md-6
= f.text_field :warning_text, class: 'color', data: {default: 0xFFFFFF}
.row
.col-md-6
= f.text_field :info_color, class: 'color', data: {default: 0x9954BB}
.col-md-6
= f.text_field :info_text, class: 'color', data: {default: 0xFFFFFF}
.row
.col-md-6
= f.text_field :default_color, class: 'color', data: {default: 0x222222}
.col-md-6
= f.text_field :default_text, class: 'color', data: {default: 0xEEEEEE}
.row
.col-md-6
= f.text_field :panel_color, class: 'color', data: {default: 0xF9F9F9}
.col-md-6
= f.text_field :panel_text, class: 'color', data: {default: 0x151515}
.row
.col-md-6
= f.text_field :link_color, class: 'color', data: {default: 0x5E35B1}
.col-md-6
= f.text_field :background_color, class: 'color', data: {default: 0xFFFFFF}
.row
.col-md-6
= f.text_field :background_text, class: 'color', data: {default: 0x222222}
.col-md-6
= f.text_field :background_muted, class: 'color', data: {default: 0xBBBBBB}
.row
.col-md-6
= f.text_field :input_color, class: 'color', data: {default: 0xFFFFFF}
.col-md-6
= f.text_field :input_text, class: 'color', data: {default: 0x000000}
.row
.col-md-6
= f.text_field :outline_color, class: 'color', data: {default: 0x5E35B1}
.col-md-6
.row
= render 'settings_tabs'
.col-md-9.col-xs-12.col-sm-8
= render 'layouts/messages'
.card.card-default
.card-body
%b Presets:
%a{href: '#', class: 'theme_preset', data: {preset: 'rs'}} Retrospring Purple,
%a{href: '#', class: 'theme_preset', data: {preset: 'dc'}} Dark Copycat,
%a{href: '#', class: 'theme_preset', data: {preset: 'lc'}} Light Copycat
= bootstrap_form_for(current_user.theme || Theme.new, url: {action: "update_theme"}, html: {id: 'update_theme'}, method: "patch") do |f|
.row
.col-md-6
= f.text_field :primary_color, class: 'color', data: {default: 0x5E35B1}
.col-md-6
= f.text_field :primary_text, class: 'color', data: {default: 0xFFFFFF}
.row
.col-md-6
= f.text_field :danger_color, class: 'color', data: {default: 0xFF0039}
.col-md-6
= f.text_field :danger_text, class: 'color', data: {default: 0xFFFFFF}
.row
.col-md-6
= f.text_field :success_color, class: 'color', data: {default: 0x3FB618}
.col-md-6
= f.text_field :success_text, class: 'color', data: {default: 0xFFFFFF}
.row
.col-md-6
= f.text_field :warning_color, class: 'color', data: {default: 0xFF7518}
.col-md-6
= f.text_field :warning_text, class: 'color', data: {default: 0xFFFFFF}
.row
.col-md-6
= f.text_field :info_color, class: 'color', data: {default: 0x9954BB}
.col-md-6
= f.text_field :info_text, class: 'color', data: {default: 0xFFFFFF}
.row
.col-md-6
= f.text_field :default_color, class: 'color', data: {default: 0x222222}
.col-md-6
= f.text_field :default_text, class: 'color', data: {default: 0xEEEEEE}
.row
.col-md-6
= f.text_field :panel_color, class: 'color', data: {default: 0xF9F9F9}
.col-md-6
= f.text_field :panel_text, class: 'color', data: {default: 0x151515}
.row
.col-md-6
= f.text_field :link_color, class: 'color', data: {default: 0x5E35B1}
.col-md-6
= f.text_field :background_color, class: 'color', data: {default: 0xFFFFFF}
.row
.col-md-6
= f.text_field :background_text, class: 'color', data: {default: 0x222222}
.col-md-6
= f.text_field :background_muted, class: 'color', data: {default: 0xBBBBBB}
.row
.col-md-6
= f.text_field :input_color, class: 'color', data: {default: 0xFFFFFF}
.col-md-6
= f.text_field :input_text, class: 'color', data: {default: 0x000000}
.row
.col-md-6
= f.text_field :outline_color, class: 'color', data: {default: 0x5E35B1}
.col-md-6
.pull-left
= f.submit t('views.actions.save'), class: 'btn btn-primary'
.pull-left
= f.submit t('views.actions.save'), class: 'btn btn-primary'
.pull-right
=button_to 'Delete Theme', delete_user_theme_path, data: { confirm: "Are you sure?" }, tabindex: -1, method: :delete, class: "btn btn-danger"
.pull-right
=button_to 'Delete Theme', delete_user_theme_path, data: { confirm: "Are you sure?" }, tabindex: -1, method: :delete, class: "btn btn-danger"

View file

@ -1,37 +1,38 @@
- provide(:title, generate_title("Export"))
.container.j2-page
= render 'settings_tabs'
.col-md-9.col-xs-12.col-sm-8
= render 'layouts/messages'
.panel.panel-default
.panel-body
%h2 Export your data
%p
With the announcement of
= succeed ',' do
%a{href: 'http://blog.retrospring.net/saying-goodbye/'} shutting down Retrospring on June 8 2016
we promised you one last feature: exporting all your data. The data is inside a
%code= ".tar.gz"
archive and available in three formats: YAML, JSON, and XML. The archive also contains a copy of your
profile picture and header picture in all sizes.
%p
Please note that you can only export your data once a week. Exporting your data
will take a while, so please be patient. You will receive a question once exporting
is done.
- if current_user.can_export?
%form{action: begin_user_export_path, method: 'POST'}
%p.centre
%button#export-btn.btn.btn-lg.btn-primary{type: :submit} Export
= hidden_field_tag :authenticity_token, form_authenticity_token
- else
%p.centre
%button.btn.btn-lg.btn-primary.disabled{disabled: :disabled} Export
%p
- if current_user.export_url.nil?
Once exporting your account is done, a download link will appear here.
.row
= render 'settings_tabs'
.col-md-9.col-xs-12.col-sm-8
= render 'layouts/messages'
.card.card-default
.card-body
%h2 Export your data
%p
With the announcement of
= succeed ',' do
%a{href: 'http://blog.retrospring.net/saying-goodbye/'} shutting down Retrospring on June 8 2016
we promised you one last feature: exporting all your data. The data is inside a
%code= ".tar.gz"
archive and available in three formats: YAML, JSON, and XML. The archive also contains a copy of your
profile picture and header picture in all sizes.
%p
Please note that you can only export your data once a week. Exporting your data
will take a while, so please be patient. You will receive a question once exporting
is done.
- if current_user.can_export?
%form{action: begin_user_export_path, method: 'POST'}
%p.centre
%button#export-btn.btn.btn-lg.btn-primary{type: :submit} Export
= hidden_field_tag :authenticity_token, form_authenticity_token
- else
Here is your export from
= succeed ':' do
= current_user.export_created_at
%a{href: current_user.export_url}
= File.basename current_user.export_url
%p.centre
%button.btn.btn-lg.btn-primary.disabled{disabled: :disabled} Export
%p
- if current_user.export_url.nil?
Once exporting your account is done, a download link will appear here.
- else
Here is your export from
= succeed ':' do
= current_user.export_created_at
%a{href: current_user.export_url}
= File.basename current_user.export_url