Setup haml-lint CI with todo config (#23524)
This commit is contained in:
		
							parent
							
								
									a232a1feb8
								
							
						
					
					
						commit
						75131e7bf7
					
				
					 27 changed files with 248 additions and 145 deletions
				
			
		
							
								
								
									
										17
									
								
								.github/workflows/haml-lint-problem-matcher.json
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								.github/workflows/haml-lint-problem-matcher.json
									
										
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,17 @@ | |||
| { | ||||
|   "problemMatcher": [ | ||||
|     { | ||||
|       "owner": "haml-lint", | ||||
|       "severity": "warning", | ||||
|       "pattern": [ | ||||
|         { | ||||
|           "regexp": "^(.*):(\\d+)\\s\\[W]\\s(.*):\\s(.*)$", | ||||
|           "file": 1, | ||||
|           "line": 2, | ||||
|           "code": 3, | ||||
|           "message": 4 | ||||
|         } | ||||
|       ] | ||||
|     } | ||||
|   ] | ||||
| } | ||||
							
								
								
									
										44
									
								
								.github/workflows/lint-haml.yml
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								.github/workflows/lint-haml.yml
									
										
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,44 @@ | |||
| name: Haml Linting | ||||
| on: | ||||
|   push: | ||||
|     branches-ignore: | ||||
|       - 'dependabot/**' | ||||
|     paths: | ||||
|       - '.github/workflows/haml-lint-problem-matcher.json' | ||||
|       - '.github/workflows/lint-haml.yml' | ||||
|       - '.haml-lint*.yml' | ||||
|       - '.rubocop*.yml' | ||||
|       - '.ruby-version' | ||||
|       - '**/*.haml' | ||||
|       - 'Gemfile*' | ||||
| 
 | ||||
|   pull_request: | ||||
|     paths: | ||||
|       - '.github/workflows/haml-lint-problem-matcher.json' | ||||
|       - '.github/workflows/lint-haml.yml' | ||||
|       - '.haml-lint*.yml' | ||||
|       - '.rubocop*.yml' | ||||
|       - '.ruby-version' | ||||
|       - '**/*.haml' | ||||
|       - 'Gemfile*' | ||||
| 
 | ||||
| jobs: | ||||
|   lint: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|       - name: Clone repository | ||||
|         uses: actions/checkout@v3 | ||||
| 
 | ||||
|       - name: Install native Ruby dependencies | ||||
|         run: sudo apt-get install -y libicu-dev libidn11-dev | ||||
| 
 | ||||
|       - name: Set up Ruby | ||||
|         uses: ruby/setup-ruby@v1 | ||||
|         with: | ||||
|           ruby-version: .ruby-version | ||||
|           bundler-cache: true | ||||
| 
 | ||||
|       - name: Run haml-lint | ||||
|         run: | | ||||
|           echo "::add-matcher::.github/workflows/haml-lint-problem-matcher.json" | ||||
|           bundle exec haml-lint | ||||
							
								
								
									
										103
									
								
								.haml-lint.yml
									
										
									
									
									
								
							
							
						
						
									
										103
									
								
								.haml-lint.yml
									
										
									
									
									
								
							|  | @ -1,108 +1,9 @@ | |||
| # Whether to ignore frontmatter at the beginning of HAML documents for | ||||
| # frameworks such as Jekyll/Middleman | ||||
| skip_frontmatter: false | ||||
| inherits_from: .haml-lint_todo.yml | ||||
| 
 | ||||
| exclude: | ||||
|   - 'vendor/**/*' | ||||
|   - 'spec/**/*' | ||||
|   - 'lib/templates/**/*' | ||||
|   - 'app/views/kaminari/**/*' | ||||
|   - lib/templates/haml/scaffold/_form.html.haml | ||||
| 
 | ||||
| linters: | ||||
|   AltText: | ||||
|     enabled: false | ||||
| 
 | ||||
|   ClassAttributeWithStaticValue: | ||||
|     enabled: true | ||||
| 
 | ||||
|   ClassesBeforeIds: | ||||
|     enabled: true | ||||
| 
 | ||||
|   ConsecutiveComments: | ||||
|     enabled: true | ||||
| 
 | ||||
|   ConsecutiveSilentScripts: | ||||
|     enabled: true | ||||
|     max_consecutive: 2 | ||||
| 
 | ||||
|   EmptyObjectReference: | ||||
|     enabled: true | ||||
| 
 | ||||
|   EmptyScript: | ||||
|     enabled: true | ||||
| 
 | ||||
|   FinalNewline: | ||||
|     enabled: true | ||||
|     present: true | ||||
| 
 | ||||
|   HtmlAttributes: | ||||
|     enabled: true | ||||
| 
 | ||||
|   ImplicitDiv: | ||||
|     enabled: true | ||||
| 
 | ||||
|   LeadingCommentSpace: | ||||
|     enabled: true | ||||
| 
 | ||||
|   LineLength: | ||||
|     enabled: false | ||||
|     max: 80 | ||||
| 
 | ||||
|   MultilinePipe: | ||||
|     enabled: true | ||||
| 
 | ||||
|   MultilineScript: | ||||
|     enabled: true | ||||
| 
 | ||||
|   ObjectReferenceAttributes: | ||||
|     enabled: true | ||||
| 
 | ||||
|   RuboCop: | ||||
|     enabled: true | ||||
|     # These cops are incredibly noisy when it comes to HAML templates, so we | ||||
|     # ignore them. | ||||
|     ignored_cops: | ||||
|       - Lint/BlockAlignment | ||||
|       - Lint/EndAlignment | ||||
|       - Lint/Void | ||||
|       - Metrics/BlockLength | ||||
|       - Metrics/LineLength | ||||
|       - Style/AlignParameters | ||||
|       - Style/BlockNesting | ||||
|       - Style/ElseAlignment | ||||
|       - Style/EndOfLine | ||||
|       - Style/FileName | ||||
|       - Style/FinalNewline | ||||
|       - Style/FrozenStringLiteralComment | ||||
|       - Style/IfUnlessModifier | ||||
|       - Style/IndentationWidth | ||||
|       - Style/Next | ||||
|       - Style/TrailingBlankLines | ||||
|       - Style/TrailingWhitespace | ||||
|       - Style/WhileUntilModifier | ||||
| 
 | ||||
|   RubyComments: | ||||
|     enabled: true | ||||
| 
 | ||||
|   SpaceBeforeScript: | ||||
|     enabled: true | ||||
| 
 | ||||
|   SpaceInsideHashAttributes: | ||||
|     enabled: true | ||||
|     style: space | ||||
| 
 | ||||
|   Indentation: | ||||
|     enabled: true | ||||
|     character: space # or tab | ||||
| 
 | ||||
|   TagName: | ||||
|     enabled: true | ||||
| 
 | ||||
|   TrailingWhitespace: | ||||
|     enabled: true | ||||
| 
 | ||||
|   UnnecessaryInterpolation: | ||||
|     enabled: true | ||||
| 
 | ||||
|   UnnecessaryStringOutput: | ||||
|     enabled: true | ||||
|  |  | |||
							
								
								
									
										128
									
								
								.haml-lint_todo.yml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										128
									
								
								.haml-lint_todo.yml
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,128 @@ | |||
| # This configuration was generated by | ||||
| # `haml-lint --auto-gen-config` | ||||
| # on 2023-02-11 02:16:03 -0500 using Haml-Lint version 0.45.0. | ||||
| # The point is for the user to remove these configuration records | ||||
| # one by one as the lints are removed from the code base. | ||||
| # Note that changes in the inspected code, or installation of new | ||||
| # versions of Haml-Lint, may require this file to be generated again. | ||||
| 
 | ||||
| linters: | ||||
|   # Offense count: 76 | ||||
|   RuboCop: | ||||
|     exclude: | ||||
|       - 'app/views/accounts/_og.html.haml' | ||||
|       - 'app/views/admin/account_actions/new.html.haml' | ||||
|       - 'app/views/admin/account_warnings/_account_warning.html.haml' | ||||
|       - 'app/views/admin/accounts/index.html.haml' | ||||
|       - 'app/views/admin/accounts/show.html.haml' | ||||
|       - 'app/views/admin/action_logs/index.html.haml' | ||||
|       - 'app/views/admin/announcements/edit.html.haml' | ||||
|       - 'app/views/admin/announcements/new.html.haml' | ||||
|       - 'app/views/admin/change_emails/show.html.haml' | ||||
|       - 'app/views/admin/custom_emojis/index.html.haml' | ||||
|       - 'app/views/admin/dashboard/index.html.haml' | ||||
|       - 'app/views/admin/disputes/appeals/_appeal.html.haml' | ||||
|       - 'app/views/admin/domain_blocks/edit.html.haml' | ||||
|       - 'app/views/admin/domain_blocks/new.html.haml' | ||||
|       - 'app/views/admin/ip_blocks/new.html.haml' | ||||
|       - 'app/views/admin/reports/actions/preview.html.haml' | ||||
|       - 'app/views/admin/reports/index.html.haml' | ||||
|       - 'app/views/admin/reports/show.html.haml' | ||||
|       - 'app/views/admin/roles/_form.html.haml' | ||||
|       - 'app/views/admin/settings/about/show.html.haml' | ||||
|       - 'app/views/admin/settings/appearance/show.html.haml' | ||||
|       - 'app/views/admin/settings/registrations/show.html.haml' | ||||
|       - 'app/views/admin/statuses/show.html.haml' | ||||
|       - 'app/views/application/_card.html.haml' | ||||
|       - 'app/views/application/_sidebar.html.haml' | ||||
|       - 'app/views/auth/registrations/_sessions.html.haml' | ||||
|       - 'app/views/auth/registrations/new.html.haml' | ||||
|       - 'app/views/auth/sessions/new.html.haml' | ||||
|       - 'app/views/disputes/strikes/show.html.haml' | ||||
|       - 'app/views/filters/_filter_fields.html.haml' | ||||
|       - 'app/views/invites/_form.html.haml' | ||||
|       - 'app/views/layouts/application.html.haml' | ||||
|       - 'app/views/layouts/error.html.haml' | ||||
|       - 'app/views/layouts/mailer.html.haml' | ||||
|       - 'app/views/notification_mailer/_status.html.haml' | ||||
|       - 'app/views/notification_mailer/favourite.html.haml' | ||||
|       - 'app/views/notification_mailer/follow_request.html.haml' | ||||
|       - 'app/views/oauth/authorizations/new.html.haml' | ||||
|       - 'app/views/oauth/authorized_applications/index.html.haml' | ||||
|       - 'app/views/settings/applications/_fields.html.haml' | ||||
|       - 'app/views/settings/imports/show.html.haml' | ||||
|       - 'app/views/settings/login_activities/_login_activity.html.haml' | ||||
|       - 'app/views/settings/preferences/appearance/show.html.haml' | ||||
|       - 'app/views/settings/preferences/other/show.html.haml' | ||||
|       - 'app/views/settings/preferences/other/show.html.haml' | ||||
|       - 'app/views/statuses_cleanup/show.html.haml' | ||||
|       - 'app/views/statuses/_detailed_status.html.haml' | ||||
|       - 'app/views/statuses/_og_image.html.haml' | ||||
|       - 'app/views/statuses/_poll.html.haml' | ||||
|       - 'app/views/statuses/_status.html.haml' | ||||
|       - 'app/views/statuses/show.html.haml' | ||||
|       - 'app/views/user_mailer/suspicious_sign_in.html.haml' | ||||
|       - 'app/views/user_mailer/warning.html.haml' | ||||
|       - 'app/views/user_mailer/webauthn_credential_added.html.haml' | ||||
|       - 'app/views/user_mailer/webauthn_credential_deleted.html.haml' | ||||
| 
 | ||||
|   # Offense count: 918 | ||||
|   LineLength: | ||||
|     enabled: false | ||||
| 
 | ||||
|   # Offense count: 22 | ||||
|   UnnecessaryStringOutput: | ||||
|     exclude: | ||||
|       - 'app/views/accounts/show.html.haml' | ||||
|       - 'app/views/admin/custom_emojis/_custom_emoji.html.haml' | ||||
|       - 'app/views/admin/relays/_relay.html.haml' | ||||
|       - 'app/views/admin/rules/_rule.html.haml' | ||||
|       - 'app/views/admin/statuses/index.html.haml' | ||||
|       - 'app/views/auth/registrations/_sessions.html.haml' | ||||
|       - 'app/views/disputes/strikes/show.html.haml' | ||||
|       - 'app/views/notification_mailer/_status.html.haml' | ||||
|       - 'app/views/settings/two_factor_authentication_methods/index.html.haml' | ||||
|       - 'app/views/statuses/_detailed_status.html.haml' | ||||
|       - 'app/views/statuses/_poll.html.haml' | ||||
|       - 'app/views/statuses/_simple_status.html.haml' | ||||
|       - 'app/views/user_mailer/suspicious_sign_in.html.haml' | ||||
|       - 'app/views/user_mailer/webauthn_credential_added.html.haml' | ||||
|       - 'app/views/user_mailer/webauthn_credential_deleted.html.haml' | ||||
|       - 'app/views/user_mailer/welcome.html.haml' | ||||
| 
 | ||||
|   # Offense count: 3 | ||||
|   ViewLength: | ||||
|     exclude: | ||||
|       - 'app/views/admin/accounts/show.html.haml' | ||||
|       - 'app/views/admin/reports/show.html.haml' | ||||
|       - 'app/views/disputes/strikes/show.html.haml' | ||||
| 
 | ||||
|   # Offense count: 43 | ||||
|   InstanceVariables: | ||||
|     exclude: | ||||
|       - 'app/views/admin/reports/_actions.html.haml' | ||||
|       - 'app/views/admin/roles/_form.html.haml' | ||||
|       - 'app/views/admin/webhooks/_form.html.haml' | ||||
|       - 'app/views/application/_sidebar.html.haml' | ||||
|       - 'app/views/auth/registrations/_sessions.html.haml' | ||||
|       - 'app/views/auth/registrations/_status.html.haml' | ||||
|       - 'app/views/auth/sessions/two_factor/_otp_authentication_form.html.haml' | ||||
|       - 'app/views/authorize_interactions/_post_follow_actions.html.haml' | ||||
|       - 'app/views/invites/_form.html.haml' | ||||
|       - 'app/views/relationships/_account.html.haml' | ||||
|       - 'app/views/shared/_og.html.haml' | ||||
|       - 'app/views/statuses/_status.html.haml' | ||||
| 
 | ||||
|   # Offense count: 6 | ||||
|   ConsecutiveSilentScripts: | ||||
|     exclude: | ||||
|       - 'app/views/admin/settings/shared/_links.html.haml' | ||||
|       - 'app/views/settings/login_activities/_login_activity.html.haml' | ||||
|       - 'app/views/statuses/_poll.html.haml' | ||||
| 
 | ||||
|   # Offense count: 3 | ||||
|   IdNames: | ||||
|     exclude: | ||||
|       - 'app/views/authorize_interactions/error.html.haml' | ||||
|       - 'app/views/oauth/authorizations/error.html.haml' | ||||
|       - 'app/views/shared/_error_messages.html.haml' | ||||
							
								
								
									
										1
									
								
								Gemfile
									
										
									
									
									
								
							
							
						
						
									
										1
									
								
								Gemfile
									
										
									
									
									
								
							|  | @ -139,6 +139,7 @@ group :development do | |||
|   gem 'memory_profiler' | ||||
|   gem 'brakeman', '~> 5.4', require: false | ||||
|   gem 'bundler-audit', '~> 0.9', require: false | ||||
|   gem 'haml_lint', require: false | ||||
| 
 | ||||
|   gem 'capistrano', '~> 3.17' | ||||
|   gem 'capistrano-rails', '~> 1.6' | ||||
|  |  | |||
|  | @ -308,6 +308,12 @@ GEM | |||
|       activesupport (>= 5.1) | ||||
|       haml (>= 4.0.6) | ||||
|       railties (>= 5.1) | ||||
|     haml_lint (0.45.0) | ||||
|       haml (>= 4.0, < 6.2) | ||||
|       parallel (~> 1.10) | ||||
|       rainbow | ||||
|       rubocop (>= 0.50.0) | ||||
|       sysexits (~> 1.1) | ||||
|     hashdiff (1.0.1) | ||||
|     hashie (5.0.0) | ||||
|     highline (2.0.3) | ||||
|  | @ -687,6 +693,7 @@ GEM | |||
|       activesupport (>= 3) | ||||
|       attr_required (>= 0.0.5) | ||||
|       httpclient (>= 2.4) | ||||
|     sysexits (1.2.0) | ||||
|     temple (0.10.0) | ||||
|     terminal-table (3.0.2) | ||||
|       unicode-display_width (>= 1.1.1, < 3) | ||||
|  | @ -804,6 +811,7 @@ DEPENDENCIES | |||
|   fog-openstack (~> 0.3) | ||||
|   fuubar (~> 2.5) | ||||
|   haml-rails (~> 2.0) | ||||
|   haml_lint | ||||
|   hiredis (~> 0.6) | ||||
|   htmlentities (~> 4.3) | ||||
|   http (~> 5.1) | ||||
|  |  | |||
|  | @ -206,7 +206,7 @@ | |||
|     - if @deletion_request.present? | ||||
|       = link_to t('admin.accounts.delete'), admin_account_path(@account.id), method: :delete, class: 'button button--destructive', data: { confirm: t('admin.accounts.are_you_sure') } if can?(:destroy, @account) | ||||
|   - else | ||||
|     %div.action-buttons | ||||
|     .action-buttons | ||||
|       %div | ||||
|         - if @account.local? && @account.user_approved? | ||||
|           = link_to t('admin.accounts.warn'), new_admin_account_action_path(@account.id, type: 'none'), class: 'button' if can?(:warn, @account) | ||||
|  | @ -276,9 +276,9 @@ | |||
|   %hr.spacer/ | ||||
| 
 | ||||
|   - if @account.user&.invite_request&.text&.present? | ||||
|     %div.speech-bubble | ||||
|       %div.speech-bubble__bubble | ||||
|     .speech-bubble | ||||
|       .speech-bubble__bubble | ||||
|         = @account.user&.invite_request&.text | ||||
|       %div.speech-bubble__owner | ||||
|       .speech-bubble__owner | ||||
|         = admin_account_link_to @account | ||||
|         = t('admin.accounts.invite_request_text') | ||||
|  |  | |||
|  | @ -19,7 +19,7 @@ | |||
|         = select_tag :action_type, options_for_select(Admin::ActionLogFilter::ACTION_TYPE_MAP.keys.map { |key| [I18n.t("admin.action_logs.action_types.#{key}"), key]}, params[:action_type]), prompt: I18n.t('admin.accounts.moderation.all') | ||||
| 
 | ||||
| - if @action_logs.empty? | ||||
|   %div.muted-hint.center-text | ||||
|   .muted-hint.center-text | ||||
|     = t 'admin.action_logs.empty' | ||||
| - else | ||||
|   .report-notes | ||||
|  |  | |||
|  | @ -12,7 +12,7 @@ | |||
|       %li= filter_link_to safe_join([t('admin.announcements.live'), "(#{number_with_delimiter(Announcement.published.count)})"], ' '), published: '1', unpublished: nil | ||||
| 
 | ||||
| - if @announcements.empty? | ||||
|   %div.muted-hint.center-text | ||||
|   .muted-hint.center-text | ||||
|     = t 'admin.announcements.empty' | ||||
| - else | ||||
|   .announcements-list | ||||
|  |  | |||
|  | @ -13,7 +13,7 @@ | |||
|       %li= filter_link_to t('admin.trends.rejected'), status: 'rejected' | ||||
| 
 | ||||
| - if @appeals.empty? | ||||
|   %div.muted-hint.center-text | ||||
|   .muted-hint.center-text | ||||
|     = t 'admin.disputes.appeals.empty' | ||||
| - else | ||||
|   .announcements-list | ||||
|  |  | |||
|  | @ -47,7 +47,7 @@ | |||
| %hr.spacer/ | ||||
| 
 | ||||
| - if @instances.empty? | ||||
|   %div.muted-hint.center-text | ||||
|   .muted-hint.center-text | ||||
|     = t 'admin.instances.empty' | ||||
| - else | ||||
|   = render partial: 'instance', collection: @instances | ||||
|  |  | |||
|  | @ -18,7 +18,7 @@ | |||
|   %hr.spacer/ | ||||
| 
 | ||||
| - if @rules.empty? | ||||
|   %div.muted-hint.center-text | ||||
|   .muted-hint.center-text | ||||
|     = t 'admin.rules.empty' | ||||
| - else | ||||
|   .announcements-list | ||||
|  |  | |||
|  | @ -17,7 +17,7 @@ | |||
|   %hr.spacer/ | ||||
| 
 | ||||
| - if @warning_presets.empty? | ||||
|   %div.muted-hint.center-text | ||||
|   .muted-hint.center-text | ||||
|     = t 'admin.warning_presets.empty' | ||||
| - else | ||||
|   .announcements-list | ||||
|  |  | |||
|  | @ -9,7 +9,7 @@ | |||
| %hr.spacer/ | ||||
| 
 | ||||
| - if @webhooks.empty? | ||||
|   %div.muted-hint.center-text | ||||
|   .muted-hint.center-text | ||||
|     = t 'admin.webhooks.empty' | ||||
| - else | ||||
|   .applications-list | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| - content_for :page_title do | ||||
|   = t('auth.login') | ||||
| 
 | ||||
| =javascript_pack_tag 'two_factor_authentication', crossorigin: 'anonymous' | ||||
| = javascript_pack_tag 'two_factor_authentication', crossorigin: 'anonymous' | ||||
| 
 | ||||
| - if @webauthn_enabled | ||||
|   = render partial: 'auth/sessions/two_factor/webauthn_form', locals: { hidden: @scheme_type != 'webauthn' } | ||||
|  |  | |||
|  | @ -35,6 +35,6 @@ | |||
|         = render 'keyword_fields', f: keyword | ||||
|     %tfoot | ||||
|       %tr | ||||
|         %td{ colspan: 3} | ||||
|         %td{ colspan: 3 } | ||||
|           = link_to_add_association f, :keywords, class: 'table-action-link', partial: 'keyword_fields', 'data-association-insertion-node': '.keywords-table tbody', 'data-association-insertion-method': 'append' do | ||||
|             = safe_join([fa_icon('plus'), t('filters.edit.add_keyword')]) | ||||
|  |  | |||
|  | @ -5,7 +5,7 @@ | |||
|   = link_to t('filters.new.title'), new_filter_path, class: 'button' | ||||
| 
 | ||||
| - if @filters.empty? | ||||
|   %div.muted-hint.center-text= t 'filters.index.empty' | ||||
|   .muted-hint.center-text= t 'filters.index.empty' | ||||
| - else | ||||
|   .applications-list | ||||
|     = render partial: 'filter', collection: @filters | ||||
|  |  | |||
|  | @ -1,9 +1,11 @@ | |||
| -#  Link to the "Next" page | ||||
| -#  available local variables | ||||
| -#    url:           url to the next page | ||||
| -#    current_page:  a page object for the currently displayed page | ||||
| -#    total_pages:   total number of pages | ||||
| -#    per_page:      number of items to fetch per page | ||||
| -#    remote:        data-remote | ||||
| -# | ||||
|   Link to the "Next" page | ||||
|   available local variables | ||||
|     url:           url to the next page | ||||
|     current_page:  a page object for the currently displayed page | ||||
|     total_pages:   total number of pages | ||||
|     per_page:      number of items to fetch per page | ||||
|     remote:        data-remote | ||||
| 
 | ||||
| %span.next | ||||
|   = link_to_unless current_page.last?, safe_join([t('pagination.next'), fa_icon('chevron-right')], ' '), url, rel: 'next', remote: remote | ||||
|  |  | |||
|  | @ -1,10 +1,11 @@ | |||
| -#  The container tag | ||||
| -#  available local variables | ||||
| -#    current_page:  a page object for the currently displayed page | ||||
| -#    total_pages:   total number of pages | ||||
| -#    per_page:      number of items to fetch per page | ||||
| -#    remote:        data-remote | ||||
| -#    paginator:     the paginator that renders the pagination tags inside | ||||
| -# | ||||
|   The container tag | ||||
|   available local variables | ||||
|     current_page:  a page object for the currently displayed page | ||||
|     total_pages:   total number of pages | ||||
|     per_page:      number of items to fetch per page | ||||
|     remote:        data-remote | ||||
|     paginator:     the paginator that renders the pagination tags inside | ||||
| = paginator.render do | ||||
|   %nav.pagination | ||||
|     = prev_page_tag unless current_page.first? | ||||
|  |  | |||
|  | @ -1,9 +1,10 @@ | |||
| -#  Link to the "Previous" page | ||||
| -#  available local variables | ||||
| -#    url:           url to the previous page | ||||
| -#    current_page:  a page object for the currently displayed page | ||||
| -#    total_pages:   total number of pages | ||||
| -#    per_page:      number of items to fetch per page | ||||
| -#    remote:        data-remote | ||||
| -# | ||||
|   Link to the "Previous" page | ||||
|   available local variables | ||||
|     url:           url to the previous page | ||||
|     current_page:  a page object for the currently displayed page | ||||
|     total_pages:   total number of pages | ||||
|     per_page:      number of items to fetch per page | ||||
|     remote:        data-remote | ||||
| %span.prev | ||||
|   = link_to_unless current_page.first?, safe_join([fa_icon('chevron-left'), t('pagination.prev')], ' '), url, rel: 'prev', remote: remote | ||||
|  |  | |||
|  | @ -15,6 +15,6 @@ | |||
| 
 | ||||
|   .modal-layout__mastodon | ||||
|     %div | ||||
|       %img{alt: '', draggable: 'false', src: mascot_url } | ||||
|       %img{ alt: '', draggable: 'false', src: mascot_url } | ||||
| 
 | ||||
| = render template: 'layouts/application' | ||||
|  |  | |||
|  | @ -26,11 +26,11 @@ | |||
|                                       = "@#{status.account.pretty_acct}" | ||||
| 
 | ||||
|                               - if status.spoiler_text? | ||||
|                                 %div.auto-dir | ||||
|                                 .auto-dir | ||||
|                                   %p | ||||
|                                     = status.spoiler_text | ||||
| 
 | ||||
|                               %div.auto-dir | ||||
|                               .auto-dir | ||||
|                                 = status_content_format(status) | ||||
| 
 | ||||
|                                 - if status.ordered_media_attachments.size > 0 | ||||
|  |  | |||
|  | @ -3,5 +3,5 @@ | |||
|     %p= t('doorkeeper.authorizations.show.title') | ||||
|     .input-copy | ||||
|       .input-copy__wrapper | ||||
|         %input{ type: 'text', class: 'oauth-code', spellcheck: 'false', readonly: true, value: params[:code] } | ||||
|         %input.oauth-code{ type: 'text', spellcheck: 'false', readonly: true, value: params[:code] } | ||||
|       %button{ type: :button }= t('generic.copy') | ||||
|  |  | |||
|  | @ -5,7 +5,7 @@ | |||
|   = link_to t('doorkeeper.applications.index.new'), new_settings_application_path, class: 'button' | ||||
| 
 | ||||
| - if @applications.empty? | ||||
|   %div.muted-hint.center-text=t 'doorkeeper.applications.index.empty' | ||||
|   .muted-hint.center-text= t 'doorkeeper.applications.index.empty' | ||||
| - else | ||||
|   .table-wrapper | ||||
|     %table.table | ||||
|  |  | |||
|  | @ -6,7 +6,7 @@ | |||
| .table-wrapper | ||||
|   %table.table | ||||
|     %tbody | ||||
|       %tr   | ||||
|       %tr | ||||
|         %th= t('doorkeeper.applications.show.application_id') | ||||
|         %td | ||||
|           %code= @application.uid | ||||
|  | @ -15,7 +15,7 @@ | |||
|         %td | ||||
|           %code= @application.secret | ||||
|       %tr | ||||
|         %th{ rowspan: 2}= t('applications.your_token') | ||||
|         %th{ rowspan: 2 }= t('applications.your_token') | ||||
|         %td | ||||
|           %code= current_user.token_for_app(@application).token | ||||
|       %tr | ||||
|  |  | |||
|  | @ -6,7 +6,7 @@ | |||
| %hr.spacer/ | ||||
| 
 | ||||
| - if @login_activities.empty? | ||||
|   %div.muted-hint.center-text | ||||
|   .muted-hint.center-text | ||||
|     = t 'login_activities.empty' | ||||
| - else | ||||
|   .announcements-list | ||||
|  |  | |||
|  | @ -21,7 +21,7 @@ | |||
|             %span.poll__chart | ||||
|         - else | ||||
|           %label.poll__option>< | ||||
|             %span.poll__input{ class: poll.multiple? ? 'checkbox' : nil}>< | ||||
|             %span.poll__input{ class: poll.multiple? ? 'checkbox' : nil }>< | ||||
|             %span.poll__option__text | ||||
|               = prerender_custom_emojis(h(option.title), status.emojis) | ||||
|   .poll__footer | ||||
|  |  | |||
		Reference in a new issue