From b4423bd6f5facde18035b1830d20dfd3dbd8de57 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Gaya?= <sebastien.gaya@gmail.com>
Date: Thu, 20 Oct 2022 18:11:42 +0200
Subject: [PATCH] personal data

---
 .../extranet/personal_data_controller.rb      | 18 +++---
 app/views/extranet/account/show.html.erb      | 50 ++++++++++++++++-
 app/views/extranet/application/_nav.html.erb  | 16 +++++-
 .../extranet/personal_data/show.html.erb      | 56 -------------------
 config/extranet_navigation.rb                 | 30 ----------
 config/locales/extranet/en.yml                |  2 +-
 config/locales/extranet/fr.yml                |  1 +
 config/routes/extranet.rb                     |  3 +-
 8 files changed, 75 insertions(+), 101 deletions(-)
 delete mode 100644 app/views/extranet/personal_data/show.html.erb
 delete mode 100644 config/extranet_navigation.rb

diff --git a/app/controllers/extranet/personal_data_controller.rb b/app/controllers/extranet/personal_data_controller.rb
index 11c7942b9..62e632303 100644
--- a/app/controllers/extranet/personal_data_controller.rb
+++ b/app/controllers/extranet/personal_data_controller.rb
@@ -1,19 +1,19 @@
 class Extranet::PersonalDataController < Extranet::ApplicationController
   before_action :load_person
 
-  def show
-    # Superadmins don't have a person
-    breadcrumb
-  end
-
   def edit
     breadcrumb
-    add_breadcrumb t('extranet.personal_data.edit')
+    add_breadcrumb t('extranet.account.edit_personal_data')
   end
 
   def update
-    @person.update person_params
-    redirect_to personal_data_path, notice: t('extranet.personal_data.updated')
+    if @person.update person_params
+      redirect_to account_path, notice: t('extranet.personal_data.updated')
+    else
+      render :edit
+      breadcrumb
+      add_breadcrumb t('extranet.account.edit_personal_data')
+    end
   end
 
   private
@@ -35,6 +35,6 @@ class Extranet::PersonalDataController < Extranet::ApplicationController
 
   def breadcrumb
     super
-    add_breadcrumb t('extranet.personal_data.title'), personal_data_path
+    add_breadcrumb t('extranet.account.my'), account_path
   end
 end
diff --git a/app/views/extranet/account/show.html.erb b/app/views/extranet/account/show.html.erb
index 94c129d7f..b733d61aa 100644
--- a/app/views/extranet/account/show.html.erb
+++ b/app/views/extranet/account/show.html.erb
@@ -7,6 +7,52 @@
     <div class="biography">
       <p><%= @person&.biography %></p>
     </div>
+
+    <div class="row">
+      <div class="col-lg-6">
+        <h5><%= University::Person.human_attribute_name('contacts') %></h5>
+
+        <% [:phone_mobile, :phone_personal, :phone_professional].each do |attribute_name| %>
+          <% next if @person.public_send(attribute_name).blank? %>
+          <p>
+            <strong><%= University::Person.human_attribute_name(attribute_name) %> :</strong>
+            <%= @person.public_send(attribute_name) %>
+          </p>
+        <% end %>
+
+        <% if @person.full_street_address.present? %>
+          <p>
+            <strong><%= University::Person.human_attribute_name("address") %> :</strong>
+            <%= @person.full_street_address %>
+          </p>
+        <% end %>
+      </div>
+      <div class="col-lg-6">
+        <h5><%= University::Person.human_attribute_name('socials') %></h5>
+
+        <% if @person.url.present? %>
+          <p>
+            <strong><%= University::Person.human_attribute_name("url") %> :</strong>
+            <%= link_to @person.url, @person.url %>
+          </p>
+        <% end %>
+
+        <% if @person.linkedin.present? %>
+          <p>
+            <strong><%= University::Person.human_attribute_name("linkedin") %> :</strong>
+            <%= link_to @person.linkedin, @person.linkedin %>
+          </p>
+        <% end %>
+
+        <% if @person.twitter.present? %>
+          <p>
+            <strong><%= University::Person.human_attribute_name("twitter") %> :</strong>
+              <%= link_to @person.twitter, "https://twitter.com/#{@person.twitter}" %>
+          </p>
+        <% end %>
+      </div>
+    </div>
+
     <div class="experiences">
       <%= link_to University::Person::Experience.human_attribute_name('new'),
                   new_experience_path,
@@ -24,8 +70,8 @@
   </div>
   <div class="col-md-3">
     <div class="mb-4">
-      <%= link_to t('extranet.account.edit'), edit_account_path, class: 'btn btn-primary' %>
-      <%= link_to t('extranet.account.logout'), destroy_user_session_path, method: :delete, class: 'btn text-danger' %>
+      <%= link_to t('extranet.account.edit'), edit_account_path, class: 'btn btn-primary mb-2' %>
+      <%= link_to t('extranet.account.edit_personal_data'), edit_personal_data_path, class: 'btn btn-primary' %>
     </div>
     <%= render 'extranet/persons/details', person: @person unless @person.nil? %>
   </div>
diff --git a/app/views/extranet/application/_nav.html.erb b/app/views/extranet/application/_nav.html.erb
index e84721e87..7496131f9 100644
--- a/app/views/extranet/application/_nav.html.erb
+++ b/app/views/extranet/application/_nav.html.erb
@@ -7,7 +7,21 @@
       <%= t('extranet.menu') %> <span class="navbar-toggler-icon"></span>
     </button>
     <div class="collapse navbar-collapse" id="menu">
-      <%= render_navigation context: :extranet %>
+      <ul class="navbar-nav">
+        <li class="nav-item"><%= link_to University::Person::Alumnus.model_name.human(count: 2), university_persons_path, class: "nav-link" %></li>
+        <% if current_extranet.should_show_years? %>
+          <li class="nav-item"><%= link_to Education::AcademicYear.model_name.human(count: 2), education_academic_years_path, class: "nav-link" %></li>
+        <% end %>
+        <li class="nav-item"><%= link_to Education::Cohort.model_name.human(count: 2), education_cohorts_path, class: "nav-link" %></li>
+        <li class="nav-item"><%= link_to University::Organization.model_name.human(count: 2), university_organizations_path, class: "nav-link" %></li>
+        <li class="nav-item dropdown">
+          <%= link_to current_user.to_s, "#", class: "nav-link dropdown-toggle", data: { "bs-toggle": "dropdown" }, aria: { expanded: false } %>
+          <ul class="dropdown-menu dropdown-menu-end">
+            <li><%= link_to t('extranet.account.my'), account_path, class: "dropdown-item" %></li>
+            <li><%= link_to t('extranet.account.logout'), destroy_user_session_path, method: :delete, class: "dropdown-item" %></li>
+          </ul>
+        </li>
+      </ul>
     </div>
   </div>
 </nav>
diff --git a/app/views/extranet/personal_data/show.html.erb b/app/views/extranet/personal_data/show.html.erb
deleted file mode 100644
index 687b93f94..000000000
--- a/app/views/extranet/personal_data/show.html.erb
+++ /dev/null
@@ -1,56 +0,0 @@
-<% content_for :title, @person %>
-
-<%= render 'extranet/persons/header', person: @person unless @person.nil? %>
-
-<div class="row">
-  <div class="col-md-9">
-    <div class="biography">
-      <p><%= @person&.biography %></p>
-
-      <h5><%= University::Person.human_attribute_name('contacts') %></h5>
-
-      <% [:phone_mobile, :phone_personal, :phone_professional].each do |attribute_name| %>
-        <% next if @person.public_send(attribute_name).blank? %>
-        <p>
-          <strong><%= University::Person.human_attribute_name(attribute_name) %> :</strong>
-          <%= @person.public_send(attribute_name) %>
-        </p>
-      <% end %>
-
-      <% if @person.full_street_address.present? %>
-        <p>
-          <strong><%= University::Person.human_attribute_name("address") %> :</strong>
-          <%= @person.full_street_address %>
-        </p>
-      <% end %>
-
-      <h5><%= University::Person.human_attribute_name('socials') %></h5>
-
-      <% if @person.url.present? %>
-        <p>
-          <strong><%= University::Person.human_attribute_name("url") %> :</strong>
-          <%= link_to @person.url, @person.url %>
-        </p>
-      <% end %>
-
-      <% if @person.linkedin.present? %>
-        <p>
-          <strong><%= University::Person.human_attribute_name("linkedin") %> :</strong>
-          <%= link_to @person.linkedin, @person.linkedin %>
-        </p>
-      <% end %>
-
-      <% if @person.twitter.present? %>
-        <p>
-          <strong><%= University::Person.human_attribute_name("twitter") %> :</strong>
-            <%= link_to @person.twitter, "https://twitter.com/#{@person.twitter}" %>
-        </p>
-      <% end %>
-    </div>
-  </div>
-  <div class="col-md-3">
-    <div class="mb-4">
-      <%= link_to t('extranet.personal_data.edit'), edit_personal_data_path, class: 'btn btn-primary' %>
-    </div>
-  </div>
-</div>
\ No newline at end of file
diff --git a/config/extranet_navigation.rb b/config/extranet_navigation.rb
deleted file mode 100644
index 507a13af4..000000000
--- a/config/extranet_navigation.rb
+++ /dev/null
@@ -1,30 +0,0 @@
-SimpleNavigation::Configuration.run do |navigation|
-  navigation.renderer = ::SimpleNavigation::BootstrapRenderer
-  navigation.auto_highlight = true
-  navigation.highlight_on_subpath = true
-  navigation.selected_class = 'active'
-  navigation.items do |primary|
-    primary.item  :person,
-                  University::Person::Alumnus.model_name.human(count: 2),
-                  university_persons_path
-    primary.item  :years,
-                  Education::AcademicYear.model_name.human(count: 2),
-                  education_academic_years_path if current_extranet.should_show_years?
-    primary.item  :cohorts,
-                  Education::Cohort.model_name.human(count: 2),
-                  education_cohorts_path
-    primary.item  :organizations,
-                  University::Organization.model_name.human(count: 2),
-                  university_organizations_path
-    primary.item  :account,
-                  current_user.to_s,
-                  nil do |secondary|
-      secondary.item  :account,
-                    t('extranet.account.my'),
-                    account_path
-      secondary.item  :personal_data,
-                    t('extranet.personal_data.title'),
-                    personal_data_path
-    end
-  end
-end
diff --git a/config/locales/extranet/en.yml b/config/locales/extranet/en.yml
index f723b9139..2e24e05fc 100644
--- a/config/locales/extranet/en.yml
+++ b/config/locales/extranet/en.yml
@@ -3,6 +3,7 @@ en:
     account:
       my: My account
       edit: Edit
+      edit_personal_data: Edit my personal data
       updated: Updated
       logout: Log out
     errors:
@@ -18,6 +19,5 @@ en:
     organization:
       experiences: Alumni in this organization (%{count})
     personal_data:
-      edit: Edit
       title: My personal data
       updated: Your personal data has been updated!
diff --git a/config/locales/extranet/fr.yml b/config/locales/extranet/fr.yml
index 1f95f17b5..8ea70d0ae 100644
--- a/config/locales/extranet/fr.yml
+++ b/config/locales/extranet/fr.yml
@@ -3,6 +3,7 @@ fr:
     account:
       my: Mon compte
       edit: Modifier
+      edit_personal_data: Modifier mes données personnelles
       updated: Mise à jour effectuée
       logout: Déconnexion
     errors:
diff --git a/config/routes/extranet.rb b/config/routes/extranet.rb
index 4e8a53424..2b49444cb 100644
--- a/config/routes/extranet.rb
+++ b/config/routes/extranet.rb
@@ -13,7 +13,6 @@ patch 'account' => 'extranet/account#update'
 scope :account do
   resources :experiences, controller: 'extranet/experiences', except: [:index, :show]
 end
-get 'personal_data' => 'extranet/personal_data#show', as: :personal_data
 get 'personal_data/edit' => 'extranet/personal_data#edit', as: :edit_personal_data
-patch 'personal_data' => 'extranet/personal_data#update'
+patch 'personal_data' => 'extranet/personal_data#update', as: :personal_data
 root to: 'extranet/home#index'
-- 
GitLab