From 7b28f470bc0f3be7b2daa6c72696abe3ece42063 Mon Sep 17 00:00:00 2001
From: Arnaud Levy <contact@arnaudlevy.com>
Date: Tue, 10 May 2022 07:38:44 +0200
Subject: [PATCH] universities, static needs fixing

---
 .../imports_controller.rb                     |  8 +++---
 .../alumni}/imports_controller.rb             | 10 ++++---
 .../{person => people}/alumni_controller.rb   |  4 +--
 app/models/communication/website/git_file.rb  |  6 ++++-
 .../admin/education/cohorts/show.html.erb     |  2 +-
 .../imports/index.html.erb                    |  7 +++--
 .../imports/new.html.erb                      |  3 ++-
 .../imports/show.html.erb                     |  0
 .../university/organizations/index.html.erb   |  2 +-
 .../university/organizations/show.html.erb    | 26 ++++++++++++++-----
 .../administrators/static.html.erb            |  0
 .../{person => people}/alumni/_list.html.erb  |  2 +-
 .../alumni}/imports/index.html.erb            |  7 +++--
 .../alumni}/imports/new.html.erb              |  3 ++-
 .../alumni}/imports/show.html.erb             |  0
 .../{person => people}/alumni/index.html.erb  |  6 ++---
 .../{person => people}/alumni/show.html.erb   |  0
 .../authors/static.html.erb                   |  0
 .../researchers/static.html.erb               |  0
 .../teachers/static.html.erb                  |  0
 config/admin_navigation.rb                    |  2 +-
 config/routes/admin/university.rb             | 11 ++++----
 22 files changed, 65 insertions(+), 34 deletions(-)
 rename app/controllers/admin/university/{organization => organizations}/imports_controller.rb (72%)
 rename app/controllers/admin/university/{person/alumnus => people/alumni}/imports_controller.rb (68%)
 rename app/controllers/admin/university/{person => people}/alumni_controller.rb (89%)
 rename app/views/admin/university/{organization => organizations}/imports/index.html.erb (63%)
 rename app/views/admin/university/{organization => organizations}/imports/new.html.erb (94%)
 rename app/views/admin/university/{organization => organizations}/imports/show.html.erb (100%)
 rename app/views/admin/university/{person => people}/administrators/static.html.erb (100%)
 rename app/views/admin/university/{person => people}/alumni/_list.html.erb (93%)
 rename app/views/admin/university/{person/alumnus => people/alumni}/imports/index.html.erb (57%)
 rename app/views/admin/university/{person/alumnus => people/alumni}/imports/new.html.erb (96%)
 rename app/views/admin/university/{person/alumnus => people/alumni}/imports/show.html.erb (100%)
 rename app/views/admin/university/{person => people}/alumni/index.html.erb (69%)
 rename app/views/admin/university/{person => people}/alumni/show.html.erb (100%)
 rename app/views/admin/university/{person => people}/authors/static.html.erb (100%)
 rename app/views/admin/university/{person => people}/researchers/static.html.erb (100%)
 rename app/views/admin/university/{person => people}/teachers/static.html.erb (100%)

diff --git a/app/controllers/admin/university/organization/imports_controller.rb b/app/controllers/admin/university/organizations/imports_controller.rb
similarity index 72%
rename from app/controllers/admin/university/organization/imports_controller.rb
rename to app/controllers/admin/university/organizations/imports_controller.rb
index 493f55a44..608d208ac 100644
--- a/app/controllers/admin/university/organization/imports_controller.rb
+++ b/app/controllers/admin/university/organizations/imports_controller.rb
@@ -1,4 +1,4 @@
-class Admin::University::Organization::ImportsController < Admin::University::ApplicationController
+class Admin::University::Organizations::ImportsController < Admin::University::ApplicationController
   load_and_authorize_resource class: University::Organization::Import,
                               through: :current_university,
                               through_association: :organization_imports
@@ -32,8 +32,10 @@ class Admin::University::Organization::ImportsController < Admin::University::Ap
     add_breadcrumb  University::Organization.model_name.human(count: 2),
                     admin_university_organizations_path
     add_breadcrumb  University::Organization::Import.model_name.human(count: 2),
-                    admin_university_organization_imports_path
-    breadcrumb_for  @import
+                    admin_university_organizations_imports_path
+    return unless @import
+    @import.persisted?  ? add_breadcrumb(@import, admin_university_organizations_import_path(@import))
+                        : add_breadcrumb(t('create'))
   end
 
   def import_params
diff --git a/app/controllers/admin/university/person/alumnus/imports_controller.rb b/app/controllers/admin/university/people/alumni/imports_controller.rb
similarity index 68%
rename from app/controllers/admin/university/person/alumnus/imports_controller.rb
rename to app/controllers/admin/university/people/alumni/imports_controller.rb
index b8f7b52a1..66b44d749 100644
--- a/app/controllers/admin/university/person/alumnus/imports_controller.rb
+++ b/app/controllers/admin/university/people/alumni/imports_controller.rb
@@ -1,4 +1,4 @@
-class Admin::University::Person::Alumnus::ImportsController < Admin::University::ApplicationController
+class Admin::University::People::Alumni::ImportsController < Admin::University::ApplicationController
   load_and_authorize_resource class: University::Person::Alumnus::Import,
                               through: :current_university,
                               through_association: :person_alumnus_imports
@@ -30,10 +30,12 @@ class Admin::University::Person::Alumnus::ImportsController < Admin::University:
   def breadcrumb
     super
     add_breadcrumb  University::Person::Alumnus.model_name.human(count: 2),
-                    admin_university_person_alumni_path
+                    admin_university_people_alumni_path
     add_breadcrumb  University::Person::Alumnus::Import.model_name.human(count: 2),
-                    admin_university_person_alumnus_imports_path
-    breadcrumb_for  @import
+                    admin_university_people_alumni_imports_path
+    return unless @import
+    @import.persisted?  ? add_breadcrumb(@import, admin_university_people_alumni_import_path(@import))
+                        : add_breadcrumb(t('create'))
   end
 
   def import_params
diff --git a/app/controllers/admin/university/person/alumni_controller.rb b/app/controllers/admin/university/people/alumni_controller.rb
similarity index 89%
rename from app/controllers/admin/university/person/alumni_controller.rb
rename to app/controllers/admin/university/people/alumni_controller.rb
index 80931367b..2fd91f16d 100644
--- a/app/controllers/admin/university/person/alumni_controller.rb
+++ b/app/controllers/admin/university/people/alumni_controller.rb
@@ -1,4 +1,4 @@
-class Admin::University::Person::AlumniController < Admin::University::ApplicationController
+class Admin::University::People::AlumniController < Admin::University::ApplicationController
   load_and_authorize_resource class: University::Person::Alumnus,
                               through: :current_university,
                               through_association: :people
@@ -38,7 +38,7 @@ class Admin::University::Person::AlumniController < Admin::University::Applicati
   def breadcrumb
     super
     add_breadcrumb  University::Person::Alumnus.model_name.human(count: 2),
-                    admin_university_person_alumni_path
+                    admin_university_people_alumni_path
     breadcrumb_for  @alumnus
   end
 
diff --git a/app/models/communication/website/git_file.rb b/app/models/communication/website/git_file.rb
index 7e3dae0e4..aaee596bc 100644
--- a/app/models/communication/website/git_file.rb
+++ b/app/models/communication/website/git_file.rb
@@ -63,7 +63,7 @@ class Communication::Website::GitFile < ApplicationRecord
 
   def to_s
     @to_s ||= ApplicationController.render(
-      template: "admin/#{about.class.name.underscore.pluralize}/static",
+      template: template_static,
       layout: false,
       assigns: {
         about: about,
@@ -74,6 +74,10 @@ class Communication::Website::GitFile < ApplicationRecord
 
   protected
 
+  def template_static
+    "admin/#{about.class.name.underscore.pluralize}/static"
+  end
+
   # Real sha on the git repo
   def git_sha_for(path)
     website.git_repository.git_sha path
diff --git a/app/views/admin/education/cohorts/show.html.erb b/app/views/admin/education/cohorts/show.html.erb
index 1a73e37ce..f6e8735f6 100644
--- a/app/views/admin/education/cohorts/show.html.erb
+++ b/app/views/admin/education/cohorts/show.html.erb
@@ -12,4 +12,4 @@
 
 <h2><%= University::Person::Alumnus.model_name.human(count: 2) %></h2>
 
-<%= render 'admin/university/person/alumni/list', alumni: @cohort.people.ordered %>
+<%= render 'admin/university/people/alumni/list', alumni: @cohort.people.ordered %>
diff --git a/app/views/admin/university/organization/imports/index.html.erb b/app/views/admin/university/organizations/imports/index.html.erb
similarity index 63%
rename from app/views/admin/university/organization/imports/index.html.erb
rename to app/views/admin/university/organizations/imports/index.html.erb
index f06991e44..898580ffa 100644
--- a/app/views/admin/university/organization/imports/index.html.erb
+++ b/app/views/admin/university/organizations/imports/index.html.erb
@@ -10,7 +10,7 @@
   <tbody>
     <% @imports.each do |import| %>
       <tr>
-        <td><%= link_to import, [:admin, import] %></td>
+        <td><%= link_to import, admin_university_organizations_import_path(import) %></td>
         <td><%= import.lines %></td>
       </tr>
     <% end %>
@@ -18,5 +18,8 @@
 </table>
 
 <% content_for :action_bar_right do %>
-  <%= create_link University::Organization::Import %>
+  <%= link_to_if  can?(:create, University::Organization::Import),
+                  t('create'),
+                  new_admin_university_organizations_import_path,
+                  class: button_classes %>
 <% end %>
diff --git a/app/views/admin/university/organization/imports/new.html.erb b/app/views/admin/university/organizations/imports/new.html.erb
similarity index 94%
rename from app/views/admin/university/organization/imports/new.html.erb
rename to app/views/admin/university/organizations/imports/new.html.erb
index 18e5d067f..579fe470d 100644
--- a/app/views/admin/university/organization/imports/new.html.erb
+++ b/app/views/admin/university/organizations/imports/new.html.erb
@@ -10,7 +10,8 @@
       Les caractères doivent être encodés en UTF-8.<br>
       Les valeurs possibles pour kind sont : company, non_profit, government.
     </p>
-    <%= simple_form_for [:admin, @import] do |f| %>
+    <%= simple_form_for @import,
+                        url: admin_university_organizations_imports_path do |f| %>
       <%= f.error_notification %>
       <%= f.error_notification message: f.object.errors[:base].to_sentence if f.object.errors[:base].present? %>
 
diff --git a/app/views/admin/university/organization/imports/show.html.erb b/app/views/admin/university/organizations/imports/show.html.erb
similarity index 100%
rename from app/views/admin/university/organization/imports/show.html.erb
rename to app/views/admin/university/organizations/imports/show.html.erb
diff --git a/app/views/admin/university/organizations/index.html.erb b/app/views/admin/university/organizations/index.html.erb
index 6fc56c6f7..ad22a22de 100644
--- a/app/views/admin/university/organizations/index.html.erb
+++ b/app/views/admin/university/organizations/index.html.erb
@@ -7,7 +7,7 @@
 
 <% content_for :action_bar_left do %>
   <%= link_to t('import'),
-              new_admin_university_organization_import_path,
+              new_admin_university_organizations_import_path,
               class: button_classes if can? :manage, University::Organization::Import %>
 <% end %>
 
diff --git a/app/views/admin/university/organizations/show.html.erb b/app/views/admin/university/organizations/show.html.erb
index 7b3fbe417..4cc66d50f 100644
--- a/app/views/admin/university/organizations/show.html.erb
+++ b/app/views/admin/university/organizations/show.html.erb
@@ -24,16 +24,30 @@
         <div class="row">
           <div class="col-md-6">
             <% [:address, :zipcode, :city, :country].each do |property| %>
-              <h3 class="h5"><%= University::Organization.human_attribute_name(property) %></h3>
-              <p><%= @organization.send property %></p>
+              <% value = @organization.send property %>
+              <% next if value.blank? %>
+              <h3 class="h5">
+                <%= University::Organization.human_attribute_name(property) %>
+              </h3>
+              <p><%= value %></p>
             <% end %>
           </div>
           <div class="col-md-6">
-            <h3 class="h5"><%= University::Organization.human_attribute_name(:url) %></h3>
-            <p><%= link_to @organization.url, @organization.url, target: :_blank %></p>
+            <% unless @organization.url.blank? %>
+              <h3 class="h5">
+                <%= University::Organization.human_attribute_name(:url) %>
+              </h3>
+              <p><%= link_to  @organization.url,
+                              @organization.url,
+                              target: :_blank %></p>
+            <% end %>
             <% [:phone, :email].each do |property| %>
-              <h3 class="h5"><%= University::Organization.human_attribute_name(property) %></h3>
-              <p><%= @organization.send property %></p>
+              <% value = @organization.send property %>
+              <% next if value.blank? %>
+              <h3 class="h5">
+                <%= University::Organization.human_attribute_name(property) %>
+              </h3>
+              <p><%= value %></p>
             <% end %>
           </div>
         </div>
diff --git a/app/views/admin/university/person/administrators/static.html.erb b/app/views/admin/university/people/administrators/static.html.erb
similarity index 100%
rename from app/views/admin/university/person/administrators/static.html.erb
rename to app/views/admin/university/people/administrators/static.html.erb
diff --git a/app/views/admin/university/person/alumni/_list.html.erb b/app/views/admin/university/people/alumni/_list.html.erb
similarity index 93%
rename from app/views/admin/university/person/alumni/_list.html.erb
rename to app/views/admin/university/people/alumni/_list.html.erb
index bf9a289c1..fca4f7824 100644
--- a/app/views/admin/university/person/alumni/_list.html.erb
+++ b/app/views/admin/university/people/alumni/_list.html.erb
@@ -8,7 +8,7 @@
   </thead>
   <tbody>
     <% alumni.each do |alumnus| %>
-      <% path = admin_university_person_alumnus_path(alumnus) %>
+      <% path = admin_university_people_alumnus_path(alumnus) %>
       <tr>
         <td><%= link_to alumnus.last_name, path %></td>
         <td><%= link_to alumnus.first_name, path %></td>
diff --git a/app/views/admin/university/person/alumnus/imports/index.html.erb b/app/views/admin/university/people/alumni/imports/index.html.erb
similarity index 57%
rename from app/views/admin/university/person/alumnus/imports/index.html.erb
rename to app/views/admin/university/people/alumni/imports/index.html.erb
index 952d52da4..a376df884 100644
--- a/app/views/admin/university/person/alumnus/imports/index.html.erb
+++ b/app/views/admin/university/people/alumni/imports/index.html.erb
@@ -9,12 +9,15 @@
   <tbody>
     <% @imports.each do |import| %>
       <tr>
-        <td><%= link_to import, [:admin, import] %></td>
+        <td><%= link_to import, admin_university_people_alumni_import_path(import) %></td>
       </tr>
     <% end %>
   </tbody>
 </table>
 
 <% content_for :action_bar_right do %>
-  <%= create_link University::Person::Alumnus::Import %>
+  <%= link_to_if  can?(:create, University::Person::Alumnus::Import),
+                  t('create'),
+                  new_admin_university_people_alumni_import_path,
+                  class: button_classes %>
 <% end %>
diff --git a/app/views/admin/university/person/alumnus/imports/new.html.erb b/app/views/admin/university/people/alumni/imports/new.html.erb
similarity index 96%
rename from app/views/admin/university/person/alumnus/imports/new.html.erb
rename to app/views/admin/university/people/alumni/imports/new.html.erb
index dfdf89c5e..0749b75c5 100644
--- a/app/views/admin/university/person/alumnus/imports/new.html.erb
+++ b/app/views/admin/university/people/alumni/imports/new.html.erb
@@ -10,7 +10,8 @@
       Les caractères doivent être encodés en UTF-8.<br>
       Les valeurs pour gender peuvent être m (masculin), f (féminin) et n (non binaire).
     </p>
-    <%= simple_form_for [:admin, @import] do |f| %>
+    <%= simple_form_for @import,
+                        url: admin_university_people_alumni_imports_path do |f| %>
       <%= f.error_notification %>
       <%= f.error_notification message: f.object.errors[:base].to_sentence if f.object.errors[:base].present? %>
 
diff --git a/app/views/admin/university/person/alumnus/imports/show.html.erb b/app/views/admin/university/people/alumni/imports/show.html.erb
similarity index 100%
rename from app/views/admin/university/person/alumnus/imports/show.html.erb
rename to app/views/admin/university/people/alumni/imports/show.html.erb
diff --git a/app/views/admin/university/person/alumni/index.html.erb b/app/views/admin/university/people/alumni/index.html.erb
similarity index 69%
rename from app/views/admin/university/person/alumni/index.html.erb
rename to app/views/admin/university/people/alumni/index.html.erb
index fcc1509bd..db95e616d 100644
--- a/app/views/admin/university/person/alumni/index.html.erb
+++ b/app/views/admin/university/people/alumni/index.html.erb
@@ -1,14 +1,14 @@
 <% content_for :title, "#{University::Person::Alumnus.model_name.human(count: 2)} (#{@alumni.total_count})" %>
 
-<%= render 'filters', current_path: admin_university_person_alumni_path, filters: @filters if @filters.any?  %>
+<%= render 'filters', current_path: admin_university_people_alumni_path, filters: @filters if @filters.any?  %>
 
-<%= render 'admin/university/person/alumni/list', alumni: @alumni %>
+<%= render 'admin/university/people/alumni/list', alumni: @alumni %>
 
 <%= paginate @alumni, theme: 'bootstrap-5' %>
 
 <% content_for :action_bar_left do %>
   <%= link_to t('import'),
-              new_admin_university_person_alumnus_import_path,
+              new_admin_university_people_alumni_import_path,
               class: button_classes if can? :manage, University::Person::Alumnus::Import %>
 <% end %>
 
diff --git a/app/views/admin/university/person/alumni/show.html.erb b/app/views/admin/university/people/alumni/show.html.erb
similarity index 100%
rename from app/views/admin/university/person/alumni/show.html.erb
rename to app/views/admin/university/people/alumni/show.html.erb
diff --git a/app/views/admin/university/person/authors/static.html.erb b/app/views/admin/university/people/authors/static.html.erb
similarity index 100%
rename from app/views/admin/university/person/authors/static.html.erb
rename to app/views/admin/university/people/authors/static.html.erb
diff --git a/app/views/admin/university/person/researchers/static.html.erb b/app/views/admin/university/people/researchers/static.html.erb
similarity index 100%
rename from app/views/admin/university/person/researchers/static.html.erb
rename to app/views/admin/university/people/researchers/static.html.erb
diff --git a/app/views/admin/university/person/teachers/static.html.erb b/app/views/admin/university/people/teachers/static.html.erb
similarity index 100%
rename from app/views/admin/university/person/teachers/static.html.erb
rename to app/views/admin/university/people/teachers/static.html.erb
diff --git a/config/admin_navigation.rb b/config/admin_navigation.rb
index 4fccef355..fa7f7f9f1 100644
--- a/config/admin_navigation.rb
+++ b/config/admin_navigation.rb
@@ -10,7 +10,7 @@ SimpleNavigation::Configuration.run do |navigation|
       primary.item :university, University.model_name.human, nil, { kind: :header }
       primary.item :university, University::Person.model_name.human(count: 2), admin_university_people_path, { icon: 'users-cog' }
       primary.item :university, University::Organization.model_name.human(count: 2), admin_university_organizations_path, { icon: 'building' }
-      primary.item :communication_alumni, University::Person::Alumnus.model_name.human(count: 2), admin_university_person_alumni_path, { icon: 'users' }
+      primary.item :communication_alumni, University::Person::Alumnus.model_name.human(count: 2), admin_university_people_alumni_path, { icon: 'users' }
     end
 
     if can?(:read, Education::Program)
diff --git a/config/routes/admin/university.rb b/config/routes/admin/university.rb
index dedeb7272..fc1b270ad 100644
--- a/config/routes/admin/university.rb
+++ b/config/routes/admin/university.rb
@@ -1,12 +1,13 @@
 namespace :university do
-  resources :people, :organizations
-  namespace :organization do
+  # Resources must come after namespaces, otherwise there is a confusion with ids
+  namespace :organizations do
     resources :imports, only: [:index, :show, :new, :create]
   end
-  namespace :person do
-    resources :alumni
-    namespace :alumnus do
+  namespace :people do
+    namespace :alumni do
       resources :imports, only: [:index, :show, :new, :create]
     end
+    resources :alumni
   end
+  resources :people, :organizations
 end
-- 
GitLab