mirror of
https://github.com/TracksApp/tracks.git
synced 2025-09-21 21:40:48 +02:00
Upgrade to RoR 7.0
This commit is contained in:
parent
7d9c5786be
commit
e77b83683a
13 changed files with 153 additions and 94 deletions
6
Gemfile
6
Gemfile
|
@ -3,7 +3,7 @@ source 'https://rubygems.org'
|
|||
gem 'actionpack-xml_parser', '~> 2.0'
|
||||
gem 'activemodel-serializers-xml', '~> 1.0.3'
|
||||
|
||||
gem 'rails', '~> 6.1'
|
||||
gem 'rails', '~> 7.0'
|
||||
|
||||
gem 'font-awesome-sass', '~> 6.7.2'
|
||||
gem 'jquery-rails', '~> 4.6'
|
||||
|
@ -30,9 +30,11 @@ gem 'pg', '~> 1.5', group: :postgresql
|
|||
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
|
||||
gem 'mini_racer', group: :therubyracer
|
||||
|
||||
gem 'sprockets-rails'
|
||||
|
||||
group :assets do
|
||||
gem 'coffee-rails', '~> 5.0.0'
|
||||
gem 'sassc-rails', '~> 2.1.2'
|
||||
gem 'dartsass-sprockets'
|
||||
gem 'bootstrap-sass', '3.4.1'
|
||||
gem 'uglifier', '>=1.3.0'
|
||||
gem 'listen'
|
||||
|
|
218
Gemfile.lock
218
Gemfile.lock
|
@ -4,81 +4,101 @@ GEM
|
|||
RedCloth (4.3.4)
|
||||
aasm (5.5.0)
|
||||
concurrent-ruby (~> 1.0)
|
||||
actioncable (6.1.7.9)
|
||||
actionpack (= 6.1.7.9)
|
||||
activesupport (= 6.1.7.9)
|
||||
actioncable (7.1.5.1)
|
||||
actionpack (= 7.1.5.1)
|
||||
activesupport (= 7.1.5.1)
|
||||
nio4r (~> 2.0)
|
||||
websocket-driver (>= 0.6.1)
|
||||
actionmailbox (6.1.7.9)
|
||||
actionpack (= 6.1.7.9)
|
||||
activejob (= 6.1.7.9)
|
||||
activerecord (= 6.1.7.9)
|
||||
activestorage (= 6.1.7.9)
|
||||
activesupport (= 6.1.7.9)
|
||||
zeitwerk (~> 2.6)
|
||||
actionmailbox (7.1.5.1)
|
||||
actionpack (= 7.1.5.1)
|
||||
activejob (= 7.1.5.1)
|
||||
activerecord (= 7.1.5.1)
|
||||
activestorage (= 7.1.5.1)
|
||||
activesupport (= 7.1.5.1)
|
||||
mail (>= 2.7.1)
|
||||
actionmailer (6.1.7.9)
|
||||
actionpack (= 6.1.7.9)
|
||||
actionview (= 6.1.7.9)
|
||||
activejob (= 6.1.7.9)
|
||||
activesupport (= 6.1.7.9)
|
||||
net-imap
|
||||
net-pop
|
||||
net-smtp
|
||||
actionmailer (7.1.5.1)
|
||||
actionpack (= 7.1.5.1)
|
||||
actionview (= 7.1.5.1)
|
||||
activejob (= 7.1.5.1)
|
||||
activesupport (= 7.1.5.1)
|
||||
mail (~> 2.5, >= 2.5.4)
|
||||
rails-dom-testing (~> 2.0)
|
||||
actionpack (6.1.7.9)
|
||||
actionview (= 6.1.7.9)
|
||||
activesupport (= 6.1.7.9)
|
||||
rack (~> 2.0, >= 2.0.9)
|
||||
net-imap
|
||||
net-pop
|
||||
net-smtp
|
||||
rails-dom-testing (~> 2.2)
|
||||
actionpack (7.1.5.1)
|
||||
actionview (= 7.1.5.1)
|
||||
activesupport (= 7.1.5.1)
|
||||
nokogiri (>= 1.8.5)
|
||||
racc
|
||||
rack (>= 2.2.4)
|
||||
rack-session (>= 1.0.1)
|
||||
rack-test (>= 0.6.3)
|
||||
rails-dom-testing (~> 2.0)
|
||||
rails-html-sanitizer (~> 1.0, >= 1.2.0)
|
||||
rails-dom-testing (~> 2.2)
|
||||
rails-html-sanitizer (~> 1.6)
|
||||
actionpack-xml_parser (2.0.1)
|
||||
actionpack (>= 5.0)
|
||||
railties (>= 5.0)
|
||||
actiontext (6.1.7.9)
|
||||
actionpack (= 6.1.7.9)
|
||||
activerecord (= 6.1.7.9)
|
||||
activestorage (= 6.1.7.9)
|
||||
activesupport (= 6.1.7.9)
|
||||
actiontext (7.1.5.1)
|
||||
actionpack (= 7.1.5.1)
|
||||
activerecord (= 7.1.5.1)
|
||||
activestorage (= 7.1.5.1)
|
||||
activesupport (= 7.1.5.1)
|
||||
globalid (>= 0.6.0)
|
||||
nokogiri (>= 1.8.5)
|
||||
actionview (6.1.7.9)
|
||||
activesupport (= 6.1.7.9)
|
||||
actionview (7.1.5.1)
|
||||
activesupport (= 7.1.5.1)
|
||||
builder (~> 3.1)
|
||||
erubi (~> 1.4)
|
||||
rails-dom-testing (~> 2.0)
|
||||
rails-html-sanitizer (~> 1.1, >= 1.2.0)
|
||||
activejob (6.1.7.9)
|
||||
activesupport (= 6.1.7.9)
|
||||
erubi (~> 1.11)
|
||||
rails-dom-testing (~> 2.2)
|
||||
rails-html-sanitizer (~> 1.6)
|
||||
activejob (7.1.5.1)
|
||||
activesupport (= 7.1.5.1)
|
||||
globalid (>= 0.3.6)
|
||||
activemodel (6.1.7.9)
|
||||
activesupport (= 6.1.7.9)
|
||||
activemodel (7.1.5.1)
|
||||
activesupport (= 7.1.5.1)
|
||||
activemodel-serializers-xml (1.0.3)
|
||||
activemodel (>= 5.0.0.a)
|
||||
activesupport (>= 5.0.0.a)
|
||||
builder (~> 3.1)
|
||||
activerecord (6.1.7.9)
|
||||
activemodel (= 6.1.7.9)
|
||||
activesupport (= 6.1.7.9)
|
||||
activestorage (6.1.7.9)
|
||||
actionpack (= 6.1.7.9)
|
||||
activejob (= 6.1.7.9)
|
||||
activerecord (= 6.1.7.9)
|
||||
activesupport (= 6.1.7.9)
|
||||
activerecord (7.1.5.1)
|
||||
activemodel (= 7.1.5.1)
|
||||
activesupport (= 7.1.5.1)
|
||||
timeout (>= 0.4.0)
|
||||
activestorage (7.1.5.1)
|
||||
actionpack (= 7.1.5.1)
|
||||
activejob (= 7.1.5.1)
|
||||
activerecord (= 7.1.5.1)
|
||||
activesupport (= 7.1.5.1)
|
||||
marcel (~> 1.0)
|
||||
mini_mime (>= 1.1.0)
|
||||
activesupport (6.1.7.9)
|
||||
activesupport (7.1.5.1)
|
||||
base64
|
||||
benchmark (>= 0.3)
|
||||
bigdecimal
|
||||
concurrent-ruby (~> 1.0, >= 1.0.2)
|
||||
connection_pool (>= 2.2.5)
|
||||
drb
|
||||
i18n (>= 1.6, < 2)
|
||||
logger (>= 1.4.2)
|
||||
minitest (>= 5.1)
|
||||
mutex_m
|
||||
securerandom (>= 0.3)
|
||||
tzinfo (~> 2.0)
|
||||
zeitwerk (~> 2.3)
|
||||
acts_as_list (1.2.4)
|
||||
activerecord (>= 6.1)
|
||||
activesupport (>= 6.1)
|
||||
ast (2.4.2)
|
||||
autoprefixer-rails (10.4.7.0)
|
||||
autoprefixer-rails (10.4.21.0)
|
||||
execjs (~> 2)
|
||||
backport (1.2.0)
|
||||
base64 (0.3.0)
|
||||
bcrypt (3.1.20)
|
||||
benchmark (0.4.0)
|
||||
bigdecimal (3.2.2)
|
||||
bootstrap-sass (3.4.1)
|
||||
autoprefixer-rails (>= 5.2.1)
|
||||
sassc (>= 2.0.0)
|
||||
|
@ -98,16 +118,25 @@ GEM
|
|||
execjs
|
||||
coffee-script-source (1.12.2)
|
||||
concurrent-ruby (1.3.4)
|
||||
connection_pool (2.5.3)
|
||||
crass (1.0.6)
|
||||
dartsass-sprockets (3.2.1)
|
||||
railties (>= 4.0.0)
|
||||
sassc-embedded (~> 1.80.1)
|
||||
sprockets (> 3.0)
|
||||
sprockets-rails
|
||||
tilt
|
||||
database_cleaner (2.1.0)
|
||||
database_cleaner-active_record (>= 2, < 3)
|
||||
database_cleaner-active_record (2.2.0)
|
||||
activerecord (>= 5.a)
|
||||
database_cleaner-core (~> 2.0.0)
|
||||
database_cleaner-core (2.0.1)
|
||||
date (3.4.0)
|
||||
date (3.4.1)
|
||||
diff-lcs (1.5.1)
|
||||
docile (1.1.5)
|
||||
drb (2.2.3)
|
||||
erb (5.0.1)
|
||||
erubi (1.13.0)
|
||||
execjs (2.10.0)
|
||||
factory_bot (6.5.0)
|
||||
|
@ -120,6 +149,9 @@ GEM
|
|||
sassc (~> 2.0)
|
||||
globalid (1.2.1)
|
||||
activesupport (>= 6.1)
|
||||
google-protobuf (4.31.1)
|
||||
bigdecimal
|
||||
rake (>= 13)
|
||||
highline (3.0.1)
|
||||
htmlentities (4.3.4)
|
||||
i18n (1.14.6)
|
||||
|
@ -134,6 +166,11 @@ GEM
|
|||
rails-i18n
|
||||
rainbow (>= 2.2.2, < 4.0)
|
||||
terminal-table (>= 1.5.1)
|
||||
io-console (0.8.0)
|
||||
irb (1.15.2)
|
||||
pp (>= 0.6.0)
|
||||
rdoc (>= 4.0.0)
|
||||
reline (>= 0.4.2)
|
||||
jaro_winkler (1.6.0)
|
||||
jquery-rails (4.6.0)
|
||||
rails-dom-testing (>= 1, < 3)
|
||||
|
@ -167,7 +204,6 @@ GEM
|
|||
net-pop
|
||||
net-smtp
|
||||
marcel (1.0.4)
|
||||
method_source (1.1.0)
|
||||
mime-types (3.4.1)
|
||||
mime-types-data (~> 3.2015)
|
||||
mime-types-data (3.2023.0218.1)
|
||||
|
@ -179,15 +215,16 @@ GEM
|
|||
minitest-stub-const (0.6)
|
||||
mocha (2.7.1)
|
||||
ruby2_keywords (>= 0.0.5)
|
||||
mutex_m (0.3.0)
|
||||
mysql2 (0.5.6)
|
||||
net-imap (0.4.17)
|
||||
net-imap (0.5.9)
|
||||
date
|
||||
net-protocol
|
||||
net-pop (0.1.2)
|
||||
net-protocol
|
||||
net-protocol (0.2.2)
|
||||
timeout
|
||||
net-smtp (0.5.0)
|
||||
net-smtp (0.5.1)
|
||||
net-protocol
|
||||
nio4r (2.7.4)
|
||||
nokogiri (1.17.2)
|
||||
|
@ -200,29 +237,39 @@ GEM
|
|||
ast (~> 2.4.1)
|
||||
racc
|
||||
pg (1.5.9)
|
||||
pp (0.6.2)
|
||||
prettyprint
|
||||
prettyprint (0.2.0)
|
||||
psych (5.2.6)
|
||||
date
|
||||
stringio
|
||||
puma (6.5.0)
|
||||
nio4r (~> 2.0)
|
||||
racc (1.8.1)
|
||||
rack (2.2.10)
|
||||
rack-mini-profiler (3.3.1)
|
||||
rack (>= 1.2.0)
|
||||
rack-session (1.0.2)
|
||||
rack (< 3)
|
||||
rack-test (2.1.0)
|
||||
rack (>= 1.3)
|
||||
rails (6.1.7.9)
|
||||
actioncable (= 6.1.7.9)
|
||||
actionmailbox (= 6.1.7.9)
|
||||
actionmailer (= 6.1.7.9)
|
||||
actionpack (= 6.1.7.9)
|
||||
actiontext (= 6.1.7.9)
|
||||
actionview (= 6.1.7.9)
|
||||
activejob (= 6.1.7.9)
|
||||
activemodel (= 6.1.7.9)
|
||||
activerecord (= 6.1.7.9)
|
||||
activestorage (= 6.1.7.9)
|
||||
activesupport (= 6.1.7.9)
|
||||
rackup (1.0.1)
|
||||
rack (< 3)
|
||||
webrick
|
||||
rails (7.1.5.1)
|
||||
actioncable (= 7.1.5.1)
|
||||
actionmailbox (= 7.1.5.1)
|
||||
actionmailer (= 7.1.5.1)
|
||||
actionpack (= 7.1.5.1)
|
||||
actiontext (= 7.1.5.1)
|
||||
actionview (= 7.1.5.1)
|
||||
activejob (= 7.1.5.1)
|
||||
activemodel (= 7.1.5.1)
|
||||
activerecord (= 7.1.5.1)
|
||||
activestorage (= 7.1.5.1)
|
||||
activesupport (= 7.1.5.1)
|
||||
bundler (>= 1.15.0)
|
||||
railties (= 6.1.7.9)
|
||||
sprockets-rails (>= 2.0.0)
|
||||
railties (= 7.1.5.1)
|
||||
rails-controller-testing (1.0.5)
|
||||
actionpack (>= 5.0.1.rc1)
|
||||
actionview (>= 5.0.1.rc1)
|
||||
|
@ -241,12 +288,14 @@ GEM
|
|||
actionview (> 3.1)
|
||||
activesupport (> 3.1)
|
||||
railties (> 3.1)
|
||||
railties (6.1.7.9)
|
||||
actionpack (= 6.1.7.9)
|
||||
activesupport (= 6.1.7.9)
|
||||
method_source
|
||||
railties (7.1.5.1)
|
||||
actionpack (= 7.1.5.1)
|
||||
activesupport (= 7.1.5.1)
|
||||
irb
|
||||
rackup (>= 1.0.0)
|
||||
rake (>= 12.2)
|
||||
thor (~> 1.0)
|
||||
thor (~> 1.0, >= 1.2.2)
|
||||
zeitwerk (~> 2.6)
|
||||
rainbow (3.1.1)
|
||||
rake (13.2.1)
|
||||
rb-fsevent (0.11.2)
|
||||
|
@ -254,7 +303,12 @@ GEM
|
|||
ffi (~> 1.0)
|
||||
rbs (3.6.1)
|
||||
logger
|
||||
rdoc (6.14.1)
|
||||
erb
|
||||
psych (>= 4.0.0)
|
||||
regexp_parser (2.10.0)
|
||||
reline (0.6.1)
|
||||
io-console (~> 0.5)
|
||||
reverse_markdown (3.0.0)
|
||||
nokogiri
|
||||
rexml (3.4.0)
|
||||
|
@ -280,14 +334,14 @@ GEM
|
|||
sanitize (6.1.3)
|
||||
crass (~> 1.0.2)
|
||||
nokogiri (>= 1.12.0)
|
||||
sass-embedded (1.89.2)
|
||||
google-protobuf (~> 4.31)
|
||||
rake (>= 13)
|
||||
sassc (2.4.0)
|
||||
ffi (~> 1.9)
|
||||
sassc-rails (2.1.2)
|
||||
railties (>= 4.0.0)
|
||||
sassc (>= 2.0)
|
||||
sprockets (> 3.0)
|
||||
sprockets-rails
|
||||
tilt
|
||||
sassc-embedded (1.80.4)
|
||||
sass-embedded (~> 1.80)
|
||||
securerandom (0.4.1)
|
||||
simplecov (0.13.0)
|
||||
docile (~> 1.1.0)
|
||||
json (>= 1.8, < 3)
|
||||
|
@ -321,6 +375,7 @@ GEM
|
|||
sprockets (>= 3.0.0)
|
||||
sqlite3 (1.7.3)
|
||||
mini_portile2 (~> 2.8.0)
|
||||
stringio (3.1.7)
|
||||
stripe (13.3.1)
|
||||
terminal-table (3.0.2)
|
||||
unicode-display_width (>= 1.1.1, < 3)
|
||||
|
@ -328,7 +383,7 @@ GEM
|
|||
climate_control (>= 0.0.3, < 1.0)
|
||||
thor (1.3.2)
|
||||
tilt (2.6.0)
|
||||
timeout (0.4.1)
|
||||
timeout (0.4.3)
|
||||
tolk (5.0.2)
|
||||
rails (>= 6.0, < 7.2)
|
||||
safe_yaml (>= 0.8.6)
|
||||
|
@ -341,7 +396,9 @@ GEM
|
|||
execjs (>= 0.3.0, < 3)
|
||||
unicode-display_width (2.6.0)
|
||||
uniform_notifier (1.16.0)
|
||||
websocket-driver (0.7.6)
|
||||
webrick (1.9.1)
|
||||
websocket-driver (0.8.0)
|
||||
base64
|
||||
websocket-extensions (>= 0.1.0)
|
||||
websocket-extensions (0.1.5)
|
||||
will_paginate (4.0.1)
|
||||
|
@ -363,6 +420,7 @@ DEPENDENCIES
|
|||
byebug
|
||||
codeclimate-test-reporter (= 1.0.9)
|
||||
coffee-rails (~> 5.0.0)
|
||||
dartsass-sprockets
|
||||
database_cleaner (~> 2)
|
||||
factory_bot_rails
|
||||
font-awesome-sass (~> 6.7.2)
|
||||
|
@ -379,7 +437,7 @@ DEPENDENCIES
|
|||
pg (~> 1.5)
|
||||
puma (~> 6.5)
|
||||
rack-mini-profiler
|
||||
rails (~> 6.1)
|
||||
rails (~> 7.0)
|
||||
rails-controller-testing
|
||||
rails-dom-testing (~> 2.2.0)
|
||||
rails_autolink
|
||||
|
@ -387,10 +445,10 @@ DEPENDENCIES
|
|||
rspec-expectations
|
||||
rubocop (~> 1.70)
|
||||
sanitize (~> 6.1)
|
||||
sassc-rails (~> 2.1.2)
|
||||
simplecov
|
||||
solargraph
|
||||
spring (~> 4)
|
||||
sprockets-rails
|
||||
sqlite3 (~> 1.4)
|
||||
stripe
|
||||
tolk (~> 5.0.2)
|
||||
|
|
|
@ -10,9 +10,9 @@
|
|||
// Read Sprockets README (https://github.com/sstephenson/sprockets#sprockets-directives) for details
|
||||
// about supported directives.
|
||||
//
|
||||
//= require jquery
|
||||
//= require jquery_ujs
|
||||
//= require bootstrap-sprockets
|
||||
//= require jquery3
|
||||
//= require bootstrap
|
||||
|
||||
//= require jquery-ui/widgets/autocomplete
|
||||
//= require jquery-ui/widgets/datepicker
|
||||
|
|
|
@ -21,7 +21,6 @@
|
|||
}
|
||||
|
||||
.bootstrap {
|
||||
@import "bootstrap-sprockets";
|
||||
@import "bootstrap";
|
||||
@import "tracks-logo";
|
||||
@import "login";
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
require_dependency "login_system"
|
||||
require_dependency "tracks/source_view"
|
||||
require_dependency "tracks/source_view_switching"
|
||||
|
||||
class ApplicationController < ActionController::Base
|
||||
# Prevent CSRF attacks by raising an exception.
|
||||
|
|
|
@ -21,7 +21,7 @@ module Tracksapp
|
|||
|
||||
# Custom directories with classes and modules you want to be autoloadable.
|
||||
# config.autoload_paths += %W(#{config.root}/extras)
|
||||
config.autoload_paths += %W(#{config.root}/lib)
|
||||
# config.autoload_paths += %W(#{config.root}/lib)
|
||||
config.eager_load_paths += %W(#{config.root}/lib)
|
||||
|
||||
# Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
|
||||
|
|
|
@ -472,7 +472,7 @@ de:
|
|||
)'"
|
||||
'3': 'Go to %{preferences_link} and enter your incoming Mailgun email address
|
||||
(e.g. tracks@user.mailgun.com) in the "%{sms_email_name}" box.'
|
||||
'4': 'Select a default context for emails to be put in with "%{sms_context_name"'
|
||||
'4': 'Select a default context for emails to be put in with "%{sms_context_name}"'
|
||||
'5': "Add your Mailgun API key (not the Public API key) to the Tracks 'site.yml'"
|
||||
'6': "Update the mailmap in 'site.yml' to define which senders can send emails\
|
||||
\ to which incoming addresses. For example, to send emails from your work\
|
||||
|
|
|
@ -1268,7 +1268,7 @@ fi:
|
|||
tickler_items_due:
|
||||
one: Yksi muistilistan merkintä on nyt ajankohtainen – päivitä sivu nähdäksesi
|
||||
sen.
|
||||
other: '{%count} muistilistan merkintää on nyt ajankohtaisia – päivitä sivu
|
||||
other: '%{count} muistilistan merkintää on nyt ajankohtaisia – päivitä sivu
|
||||
nähdäksesi ne.'
|
||||
to_tickler: muistilistaan
|
||||
unable_to_add_dependency: Riippuvuuden lisääminen epäonnistui
|
||||
|
|
|
@ -921,7 +921,7 @@ fr:
|
|||
delete: Supprimer
|
||||
delete_action: Supprimer action
|
||||
delete_recurring_action_confirm: Êtes-vous sûr·e de vouloir supprimer l'action
|
||||
récurrente « % {description} » ?
|
||||
récurrente « %{description} » ?
|
||||
delete_recurring_action_title: Supprimer l'action récurrente
|
||||
deleted_success: Action supprimée avec succès.
|
||||
depends_on: Dépend de
|
||||
|
|
|
@ -424,7 +424,7 @@ nl:
|
|||
)'"
|
||||
'3': 'Go to %{preferences_link} and enter your incoming Mailgun email address
|
||||
(e.g. tracks@user.mailgun.com) in the "%{sms_email_name}" box.'
|
||||
'4': 'Select a default context for emails to be put in with "%{sms_context_name"'
|
||||
'4': 'Select a default context for emails to be put in with "%{sms_context_name}"'
|
||||
'5': "Add your Mailgun API key (not the Public API key) to the Tracks 'site.yml'"
|
||||
'6': "Update the mailmap in 'site.yml' to define which senders can send emails
|
||||
to which incoming addresses. For example, to send emails from your work
|
||||
|
|
|
@ -459,7 +459,7 @@ ru:
|
|||
интернета. Тогда Mailgun сможет отправлять на него данные.
|
||||
description: Если вы хотите отправлять письма в Tracks, но не можете запустить
|
||||
почтовый сервер на том же сервере, то можно использовать встроенную в Tracks
|
||||
поддержку {mailgun_link}.
|
||||
поддержку %{mailgun_link}.
|
||||
example_names:
|
||||
tag:
|
||||
'2': метка2
|
||||
|
|
|
@ -35,7 +35,7 @@ tr:
|
|||
etiketlerinizi ve notlarınızı içerir
|
||||
csv_notes_title: CSV dosyası (sadece notlar)
|
||||
xml_link_title: XML dosyası (sadece eylemler)
|
||||
yaml_description: ':{yaml}: Dışarı aktarmak için en iyisidir.'
|
||||
yaml_description: '%{yaml}: Dışarı aktarmak için en iyisidir.'
|
||||
download_link: İndirme bağlantısı
|
||||
yaml_link_title: YAML dosyası
|
||||
xml_description: '%{xml}: Veri aktarımı ve düzenleme için en iyisidir'
|
||||
|
@ -148,7 +148,7 @@ tr:
|
|||
other: Günler
|
||||
note:
|
||||
one: Not yok
|
||||
other: 1 not var
|
||||
other: '%{count} not var'
|
||||
actions_midsentence:
|
||||
one: eylem
|
||||
other: eylemler
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue