Skip to content

Commit 6993258

Browse files
authored
Language model 16 (#38)
1 parent a4d3af3 commit 6993258

25 files changed

+294
-84
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
# Ignore all environment files.
1111
/.env*
1212

13+
db/structure.sql
14+
1315
# Ignore all logfiles and tempfiles.
1416
/log/*
1517
/tmp/*

Gemfile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ group :development, :test do
4747
# Static analysis for security vulnerabilities [https://brakemanscanner.org/]
4848
gem "brakeman", require: false
4949
gem "factory_bot_rails"
50+
gem "faker"
5051

5152
# Omakase Ruby styling [https://github.com/rails/rubocop-rails-omakase/]
5253
gem "rubocop-rails-omakase", require: false
@@ -65,6 +66,7 @@ end
6566
group :test do
6667
# Use system testing [https://guides.rubyonrails.org/testing.html#system-testing]
6768
gem "capybara"
69+
gem "rails-controller-testing"
6870
gem "selenium-webdriver"
6971
gem "shoulda-matchers"
7072
end

Gemfile.lock

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,8 @@ GEM
121121
factory_bot_rails (6.4.4)
122122
factory_bot (~> 6.5)
123123
railties (>= 5.0.0)
124+
faker (3.5.1)
125+
i18n (>= 1.8.11, < 2)
124126
ffi (1.17.1-aarch64-linux-gnu)
125127
ffi (1.17.1-aarch64-linux-musl)
126128
ffi (1.17.1-arm-linux-gnu)
@@ -262,6 +264,10 @@ GEM
262264
activesupport (= 8.0.1)
263265
bundler (>= 1.15.0)
264266
railties (= 8.0.1)
267+
rails-controller-testing (1.0.5)
268+
actionpack (>= 5.0.1.rc1)
269+
actionview (>= 5.0.1.rc1)
270+
activesupport (>= 5.0.1.rc1)
265271
rails-dom-testing (2.2.0)
266272
activesupport (>= 5.0.0)
267273
minitest
@@ -422,6 +428,7 @@ DEPENDENCIES
422428
capybara
423429
debug
424430
factory_bot_rails
431+
faker
425432
hotwire-spark
426433
importmap-rails
427434
jbuilder
@@ -431,6 +438,7 @@ DEPENDENCIES
431438
propshaft
432439
puma (>= 5.0)
433440
rails (~> 8.0.1)
441+
rails-controller-testing
434442
rspec-rails
435443
rubocop-rails-omakase
436444
selenium-webdriver
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
class LanguagesController < ApplicationController
2+
before_action :set_language, only: [ :edit, :update ]
3+
4+
def index
5+
@languages = Language.all
6+
end
7+
8+
def new
9+
@language = Language.new
10+
end
11+
12+
def create
13+
@language = Language.new(language_params)
14+
15+
if @language.save
16+
redirect_to languages_path
17+
else
18+
render :new
19+
end
20+
end
21+
22+
def edit
23+
end
24+
25+
def update
26+
@language.update(language_params)
27+
redirect_to languages_path
28+
end
29+
30+
private
31+
32+
def language_params
33+
params.require(:language).permit(:name, :file_share_folder)
34+
end
35+
36+
def set_language
37+
@language = Language.find(params[:id])
38+
end
39+
end

app/models/language.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
class Language < ApplicationRecord
2+
validates :name, :file_share_folder, presence: true, uniqueness: true
3+
end

app/views/languages/_form.html.erb

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
2+
<%= form_for language do |f| %>
3+
<div class="form-body">
4+
<div class="row">
5+
<%= render "shared/errors", resource: language %>
6+
<div class="col-12">
7+
<div class="form-group">
8+
<%= f.label :name %>
9+
<%= f.text_field :name, class: "form-control", placeholder: "Name" %>
10+
</div>
11+
<div class="form-group">
12+
<%= f.label :file_share_folder %>
13+
<%= f.text_field :file_share_folder, class: "form-control", placeholder: "Folder" %>
14+
</div>
15+
<div class="col-12 d-flex justify-content-end">
16+
<%= f.submit "Save", class: "btn btn-primary me-1 mb-1" %>
17+
<%= link_to "Cancel", languages_path, class: "btn btn-light-secondary me-1 mb-1" %>
18+
</div>
19+
</div>
20+
</div>
21+
</div>
22+
<% end %>

app/views/languages/edit.html.erb

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<% content_for :title, "Editing language" %>
2+
3+
<section id="basic-vertical-layouts">
4+
<div class="row match-height">
5+
<div class="col-md-6 col-12">
6+
<div class="card">
7+
<div class="card-header">
8+
<h2 class="card-title">Edit language</h2>
9+
</div>
10+
<div class="card-content">
11+
<div class="card-body">
12+
<%= render "form", language: @language %>
13+
</div>
14+
</div>
15+
</div>
16+
</div>
17+
</div>
18+
</section>
19+

app/views/languages/index.html.erb

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
<% content_for :title, "Languages" %>
2+
3+
<section class="section">
4+
<div class="row" id="table-striped">
5+
<div class="col-12 cold-md-12">
6+
<div class="card">
7+
<div class="card-header d-flex justify-content-between align-items-center">
8+
<h2 class="card-title">Languages</h2>
9+
<%= link_to new_language_path, class: "btn btn-primary" do %>
10+
<i class="bi bi-plus"></i> Add New Language
11+
<% end %>
12+
</div>
13+
<div class="card-content">
14+
<div class="card-body">
15+
<p class="card-text"> Some important information or instruction can be placed here.</p>
16+
<div class="table-responsive">
17+
<table class="table table-lg table-striped mb-0">
18+
<thead>
19+
<tr>
20+
<th>Name</th>
21+
<th>File share folder</th>
22+
<th class="text-end">Actions</th>
23+
</tr>
24+
</thead>
25+
<tbody>
26+
<% @languages.each do |language| %>
27+
<tr>
28+
<td class="text-bold-500"><%= language.name %></td>
29+
<td class="text-bold-500"><%= language.file_share_folder %></td>
30+
<td class="text-end">
31+
<%= link_to edit_language_path(language), class: "btn btn-secondary btn-sm" do %>
32+
<i class="bi bi-pencil"></i> Edit
33+
<% end %>
34+
</td>
35+
</tr>
36+
<% end %>
37+
</tbody>
38+
</table>
39+
</div>
40+
</div>
41+
</div>
42+
</div>
43+
</div>
44+
</div>
45+
</section>

app/views/languages/new.html.erb

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<% content_for :title, "New language" %>
2+
3+
<section id="basic-vertical-layouts">
4+
<div class="row match-height">
5+
<div class="col-md-6 col-12">
6+
<div class="card">
7+
<div class="card-header">
8+
<h2 class="card-title">New language</h2>
9+
</div>
10+
<div class="card-content">
11+
<div class="card-body">
12+
<%= render "form", language: @language %>
13+
</div>
14+
</div>
15+
</div>
16+
</div>
17+
</div>
18+
</section>

app/views/layouts/_sidebar.html.erb

Lines changed: 11 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -42,48 +42,38 @@
4242

4343
<div class="sidebar-menu">
4444
<ul class="menu">
45-
<li class="sidebar-title">Menu</li>
46-
47-
<li class="sidebar-item ">
48-
<a href="index.html" class='sidebar-link'>
49-
<i class="bi bi-grid-fill"></i>
50-
<span>Dashboard</span>
51-
</a>
52-
53-
</li>
54-
5545
<li class="sidebar-title">Administration</li>
5646

57-
<li class="sidebar-item ">
58-
<%= link_to regions_path, class: 'sidebar-link' do %>
47+
<li class="sidebar-item">
48+
<%= link_to regions_path, class: "sidebar-link" do %>
5949
<i class="bi bi-hospital-fill"></i>
6050
<span>Regions</span>
6151
<% end %>
6252
</li>
6353

64-
<li class="sidebar-item ">
65-
<%= link_to providers_path, class: 'sidebar-link' do %>
54+
<li class="sidebar-item">
55+
<%= link_to providers_path, class: "sidebar-link" do %>
6656
<i class="bi bi-hospital-fill"></i>
6757
<span>Providers</span>
6858
<% end %>
6959
</li>
7060

71-
<li class="sidebar-item ">
72-
<a href="ui-file-uploader.html" class='sidebar-link'>
61+
<li class="sidebar-item">
62+
<a href="ui-file-uploader.html" class="sidebar-link">
7363
<i class="bi bi-tags-fill"></i>
7464
<span>Topics</span>
7565
</a>
7666
</li>
7767

78-
<li class="sidebar-item ">
79-
<a href="application-email.html" class='sidebar-link'>
68+
<li class="sidebar-item">
69+
<%= link_to languages_path, class: "sidebar-link" do %>
8070
<i class="bi bi-translate"></i>
8171
<span>Languages</span>
82-
</a>
72+
<% end %>
8373
</li>
8474

85-
<li class="sidebar-item ">
86-
<a href="application-chat.html" class='sidebar-link'>
75+
<li class="sidebar-item">
76+
<a href="application-chat.html" class="sidebar-link">
8777
<i class="bi bi-people"></i>
8878
<span>Users</span>
8979
</a>

0 commit comments

Comments
 (0)