webring-rails 1.4.4 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/controllers/webring/members_controller.rb +17 -3
- data/app/controllers/webring/navigation_controller.rb +3 -3
- data/app/models/concerns/webring/navigation.rb +20 -18
- data/app/models/webring/member.rb +3 -0
- data/lib/generators/webring/member/templates/migration.rb +1 -0
- data/lib/generators/webring/member/templates/model.rb +3 -0
- data/lib/generators/webring/navigation_controller/templates/navigation_controller.rb +10 -3
- data/lib/webring/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fab197d616f0b7c93d8689e4873d66fc86c186af7401dbd7237ba00cfeef5dcf
|
4
|
+
data.tar.gz: 9770538896f190f67b28d796b3ec58618cedb4a763f42833d610253754b8ce34
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a5827a69ce17c27f9f3ecdfb7c5bcf295e49dd2a2b3466698cc51287c77d888df2de53d6ac4eaa0b69818fb1528161a6ad13973339c17f20f0819ca430258181
|
7
|
+
data.tar.gz: 62e1d083641d38151c2787c992cccbc652ee090fb6075462f38ccfab3bce64c8dd5aa7a21710b2ddde676fedabdc4ff0b29bf7efeae7819271406df32aebfd84
|
@@ -31,9 +31,9 @@ module Webring
|
|
31
31
|
# PATCH/PUT /webring/members/1
|
32
32
|
def update
|
33
33
|
if member.update(member_params)
|
34
|
-
|
34
|
+
update_success_response
|
35
35
|
else
|
36
|
-
|
36
|
+
update_error_response
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
@@ -46,6 +46,20 @@ module Webring
|
|
46
46
|
|
47
47
|
private
|
48
48
|
|
49
|
+
def update_success_response
|
50
|
+
respond_to do |format|
|
51
|
+
format.html { redirect_to admin_panel_member_path(member), notice: 'Member was successfully updated.' }
|
52
|
+
format.json { head :ok }
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def update_error_response
|
57
|
+
respond_to do |format|
|
58
|
+
format.html { render :edit, status: :unprocessable_entity }
|
59
|
+
format.json { render json: { status: 'error', errors: member.errors }, status: :unprocessable_entity }
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
49
63
|
def members
|
50
64
|
@members ||= Member.all.order(created_at: :desc)
|
51
65
|
end
|
@@ -55,7 +69,7 @@ module Webring
|
|
55
69
|
end
|
56
70
|
|
57
71
|
def member_params
|
58
|
-
params.require(:member).permit(:name, :url, :description)
|
72
|
+
params.require(:member).permit(:name, :url, :description, :status)
|
59
73
|
end
|
60
74
|
end
|
61
75
|
end
|
@@ -35,7 +35,7 @@ module Webring
|
|
35
35
|
end
|
36
36
|
|
37
37
|
def find_member
|
38
|
-
@member = Webring::Member.find_by(uid: permitted_params[:source_member_uid])
|
38
|
+
@member = Webring::Member.active.find_by(uid: permitted_params[:source_member_uid])
|
39
39
|
return if @member
|
40
40
|
|
41
41
|
render_member_not_found
|
@@ -43,13 +43,13 @@ module Webring
|
|
43
43
|
|
44
44
|
def check_member_exists
|
45
45
|
member_uid = permitted_params[:source_member_uid]
|
46
|
-
return unless member_uid.present? && !Webring::Member.exists?(uid: member_uid)
|
46
|
+
return unless member_uid.present? && !Webring::Member.active.exists?(uid: member_uid)
|
47
47
|
|
48
48
|
render_member_not_found
|
49
49
|
end
|
50
50
|
|
51
51
|
def ensure_members_exist
|
52
|
-
return if Webring::Member.exists?
|
52
|
+
return if Webring::Member.active.exists?
|
53
53
|
|
54
54
|
render plain: 'No members in the webring', status: :not_found
|
55
55
|
end
|
@@ -4,55 +4,57 @@ module Webring
|
|
4
4
|
# Find the next member in the webring after the current one
|
5
5
|
# If current member is the last, return the first member (ring concept)
|
6
6
|
def find_next(source_member_uid)
|
7
|
-
source_member = find_by(uid: source_member_uid)
|
8
|
-
return
|
7
|
+
source_member = active.find_by(uid: source_member_uid)
|
8
|
+
return first_active_member_by_creation unless source_member
|
9
9
|
|
10
|
-
|
10
|
+
find_next_active_member(source_member) || first_active_member_by_creation
|
11
11
|
end
|
12
12
|
|
13
13
|
# Find the previous member in the webring before the current one
|
14
14
|
# If current member is the first, return the last member (ring concept)
|
15
15
|
def find_previous(source_member_uid)
|
16
|
-
source_member = find_by(uid: source_member_uid)
|
17
|
-
return
|
16
|
+
source_member = active.find_by(uid: source_member_uid)
|
17
|
+
return last_active_member_by_creation unless source_member
|
18
18
|
|
19
|
-
|
19
|
+
find_previous_active_member(source_member) || last_active_member_by_creation
|
20
20
|
end
|
21
21
|
|
22
22
|
# Find a random member, excluding the current one if provided
|
23
23
|
# If current member is the only one, return it
|
24
24
|
def find_random(source_member_uid: nil)
|
25
|
-
return order('RANDOM()').first if source_member_uid.blank?
|
25
|
+
return active.order('RANDOM()').first if source_member_uid.blank?
|
26
26
|
|
27
27
|
# Use exists? check to avoid loading records when not needed
|
28
|
-
excluded_scope = where.not(uid: source_member_uid)
|
28
|
+
excluded_scope = active.where.not(uid: source_member_uid)
|
29
29
|
|
30
30
|
if excluded_scope.exists?
|
31
31
|
excluded_scope.order('RANDOM()').first
|
32
32
|
else
|
33
|
-
# if only one member exists (the current one), return it
|
34
|
-
find_by(uid: source_member_uid)
|
33
|
+
# if only one active member exists (the current one), return it
|
34
|
+
active.find_by(uid: source_member_uid)
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
38
38
|
private
|
39
39
|
|
40
|
-
def
|
41
|
-
order(created_at: :asc).first
|
40
|
+
def first_active_member_by_creation
|
41
|
+
active.order(created_at: :asc).first
|
42
42
|
end
|
43
43
|
|
44
|
-
def
|
45
|
-
order(created_at: :desc).first
|
44
|
+
def last_active_member_by_creation
|
45
|
+
active.order(created_at: :desc).first
|
46
46
|
end
|
47
47
|
|
48
|
-
def
|
49
|
-
|
48
|
+
def find_next_active_member(source_member)
|
49
|
+
active
|
50
|
+
.where('created_at > ?', source_member.created_at)
|
50
51
|
.order(created_at: :asc)
|
51
52
|
.first
|
52
53
|
end
|
53
54
|
|
54
|
-
def
|
55
|
-
|
55
|
+
def find_previous_active_member(source_member)
|
56
|
+
active
|
57
|
+
.where('created_at < ?', source_member.created_at)
|
56
58
|
.order(created_at: :desc)
|
57
59
|
.first
|
58
60
|
end
|
@@ -5,6 +5,7 @@ class CreateWebringMembers < ActiveRecord::Migration<%= "[#{Rails::VERSION::MAJO
|
|
5
5
|
t.string :name, null: false
|
6
6
|
t.string :url, null: false
|
7
7
|
t.text :description, null: false
|
8
|
+
t.integer :status, null: false, default: 0
|
8
9
|
|
9
10
|
t.index :uid, unique: true
|
10
11
|
t.index :name, unique: true
|
@@ -35,7 +35,7 @@ module Webring
|
|
35
35
|
end
|
36
36
|
|
37
37
|
def find_member
|
38
|
-
@member = Webring::Member.find_by(uid: permitted_params[:source_member_uid])
|
38
|
+
@member = Webring::Member.active.find_by(uid: permitted_params[:source_member_uid])
|
39
39
|
return if @member
|
40
40
|
|
41
41
|
render_member_not_found
|
@@ -43,13 +43,13 @@ module Webring
|
|
43
43
|
|
44
44
|
def check_member_exists
|
45
45
|
member_uid = permitted_params[:source_member_uid]
|
46
|
-
return unless member_uid.present? && !Webring::Member.exists?(uid: member_uid)
|
46
|
+
return unless member_uid.present? && !Webring::Member.active.exists?(uid: member_uid)
|
47
47
|
|
48
48
|
render_member_not_found
|
49
49
|
end
|
50
50
|
|
51
51
|
def ensure_members_exist
|
52
|
-
return if Webring::Member.exists?
|
52
|
+
return if Webring::Member.active.exists?
|
53
53
|
|
54
54
|
render plain: 'No members in the webring', status: :not_found
|
55
55
|
end
|
@@ -57,5 +57,12 @@ module Webring
|
|
57
57
|
def render_member_not_found
|
58
58
|
render plain: 'Member not found', status: :not_found
|
59
59
|
end
|
60
|
+
|
61
|
+
def set_cors_headers
|
62
|
+
headers['Access-Control-Allow-Origin'] = '*'
|
63
|
+
headers['Access-Control-Allow-Methods'] = 'GET, OPTIONS'
|
64
|
+
headers['Access-Control-Allow-Headers'] = 'Origin, X-Requested-With, Content-Type, Accept'
|
65
|
+
headers['Access-Control-Max-Age'] = '86400'
|
66
|
+
end
|
60
67
|
end
|
61
68
|
end
|
data/lib/webring/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: webring-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nikita Shkoda
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-06-
|
11
|
+
date: 2025-06-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|