summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/controllers/nodes_controller.rb4
-rw-r--r--app/controllers/users_controller.rb2
-rw-r--r--app/models/node.rb4
-rw-r--r--app/models/user.rb18
-rw-r--r--app/views/events/index.html.erb10
-rw-r--r--app/views/nodes/_node_list.html.erb40
-rw-r--r--app/views/nodes/index.html.erb33
-rw-r--r--app/views/users/_user.html.erb18
-rw-r--r--app/views/users/edit.html.erb4
9 files changed, 54 insertions, 79 deletions
diff --git a/app/controllers/nodes_controller.rb b/app/controllers/nodes_controller.rb
index ca30976f..447d596d 100644
--- a/app/controllers/nodes_controller.rb
+++ b/app/controllers/nodes_controller.rb
@@ -20,9 +20,7 @@ class NodesController < ApplicationController
20 ] 20 ]
21 21
22 def index 22 def index
23 @nodes = Node.root.descendants.includes(:head, :draft) 23 @nodes = index_matching(Node.root.descendants)
24 .order('id DESC')
25 .paginate(:page => params[:page], :per_page => 25)
26 end 24 end
27 25
28 def new 26 def new
diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb
index b06d11fd..20355aa8 100644
--- a/app/controllers/users_controller.rb
+++ b/app/controllers/users_controller.rb
@@ -140,7 +140,7 @@ class UsersController < ApplicationController
140 140
141 def verify_status 141 def verify_status
142 @user ||= User.new 142 @user ||= User.new
143 unless @user.id == current_user.id || current_user.admin 143 unless @user.id == current_user.id || current_user.is_admin?
144 deny_user_access 144 deny_user_access
145 end 145 end
146 end 146 end
diff --git a/app/models/node.rb b/app/models/node.rb
index d6fe32ff..f8c29b48 100644
--- a/app/models/node.rb
+++ b/app/models/node.rb
@@ -648,6 +648,10 @@ class Node < ApplicationRecord
648 ) 648 )
649 end 649 end
650 650
651 def embargoed?
652 head&.published_at.present? && head.published_at > Time.zone.now
653 end
654
651 # Nodes are never destroyed recursively 655 # Nodes are never destroyed recursively
652 # Descendants must be removed or reparented individually first. 656 # Descendants must be removed or reparented individually first.
653 # The Trash feature will be the ordinary path to deletion. 657 # The Trash feature will be the ordinary path to deletion.
diff --git a/app/models/user.rb b/app/models/user.rb
index 786f8d14..95706f86 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -70,24 +70,6 @@ class User < ApplicationRecord
70 roles.include?("admin") 70 roles.include?("admin")
71 end 71 end
72 72
73 # Compatibility shims for the users form, which posts user[admin] as a
74 # checkbox. Goes away when that form learns about roles.
75 def admin
76 is_admin?
77 end
78
79 def admin?
80 is_admin?
81 end
82
83 def admin=(value)
84 if ActiveModel::Type::Boolean.new.cast(value)
85 self.roles = (roles | ["admin"])
86 else
87 self.roles = (roles - ["admin"])
88 end
89 end
90
91 def redaktion? 73 def redaktion?
92 roles.include?("redaktion") 74 roles.include?("redaktion")
93 end 75 end
diff --git a/app/views/events/index.html.erb b/app/views/events/index.html.erb
index a2710c2a..cc3f163d 100644
--- a/app/views/events/index.html.erb
+++ b/app/views/events/index.html.erb
@@ -22,10 +22,12 @@
22<% @events.each do |event| %> 22<% @events.each do |event| %>
23 <tr> 23 <tr>
24 <td> 24 <td>
25 <span class="flag_stack"> 25 <div class="title_with_flags">
26 <%= flag("clock-off", Event.human_attribute_name(:allday)) if event.allday %> 26 <span class="flag_stack">
27 </span> 27 <%= flag("clock-off", Event.human_attribute_name(:allday)) if event.allday %>
28 <%= link_to event.display_title, event %> 28 </span>
29 <div class="title_body"><%= link_to event.display_title, event %></div>
30 </div>
29 </td> 31 </td>
30 <td><%= admin_datetime(event.start_time) %></td> 32 <td><%= admin_datetime(event.start_time) %></td>
31 <td><%= admin_datetime(event.end_time) %></td> 33 <td><%= admin_datetime(event.end_time) %></td>
diff --git a/app/views/nodes/_node_list.html.erb b/app/views/nodes/_node_list.html.erb
index 0dc3c5a0..458ab1ae 100644
--- a/app/views/nodes/_node_list.html.erb
+++ b/app/views/nodes/_node_list.html.erb
@@ -15,26 +15,46 @@
15<%= will_paginate @nodes %> 15<%= will_paginate @nodes %>
16<table class="node_table"> 16<table class="node_table">
17 <tr class="header"> 17 <tr class="header">
18 <th class="node_id"><%= t("admin.columns.id") %></th>
19 <th class="title"><%= t("admin.columns.title") %></th> 18 <th class="title"><%= t("admin.columns.title") %></th>
20 <th class="actions"><%= t("admin.columns.actions") %></th> 19 <th class="actions"><%= t("admin.columns.actions") %></th>
21 <th class="editor"><%= t("admin.columns.locked_by") %></th>
22 <th class="revision"><%= t("admin.columns.rev") %></th> 20 <th class="revision"><%= t("admin.columns.rev") %></th>
23 </tr> 21 </tr>
24 <% @nodes.each do |node| %> 22 <% @nodes.each do |node| %>
25 <tr class="<%= cycle("even", "odd") %>"> 23 <tr class="<%= cycle("even", "odd") %>">
26 <td class="node_id"><%= node.id %></td>
27 <td class="title"> 24 <td class="title">
28 <h4><%= link_to title_for_node(node), node_path(node) %></h4> 25 <div class="title_with_flags">
29 <p><%= link_to_path(node.unique_name, node.unique_name) %></p> 26 <span class="flag_stack">
27 <%= flag("lock", t(".flag_locked", :login => node.lock_owner.login),
28 :tier => :attention) if node.lock_owner %>
29 <%= flag("calendar-clock",
30 t(".flag_embargo", :date => admin_datetime(node.head.published_at)),
31 :tier => :attention) if node.embargoed? %>
32 <%= flag("file-pencil", t(".flag_draft")) if node.draft %>
33 <%= flag("file-off", t(".flag_no_head")) unless node.head %>
34 </span>
35 <div class="title_body">
36 <div class="node_title"><%= link_to title_for_node(node), node_path(node) %></div>
37 <div class="node_path"><%= link_to_path(node.unique_name, node.unique_name) %></div>
38 </div>
39 </div>
30 </td> 40 </td>
31 <td class="actions"> 41 <td class="actions">
32 <%= link_to 'show', node_path(node) %> 42 <div class="action_grid">
33 <%= link_to 'edit', edit_node_path(node) %> 43 <span class="action_item">
34 <%= link_to 'revisions', node_revisions_path(node) %> 44 <%= link_to node_path(node), "aria-label" => t("admin.common.show"),
45 title: t("admin.common.show") do %>
46 <%= icon("eye", library: "tabler", "aria-hidden": true) %>
47 <% end %>
48 </span>
49 <span class="action_item">
50 <%= link_to node_revisions_path(node), "aria-label" => t("admin.common.revisions"),
51 title: t("admin.common.revisions") do %>
52 <%= icon("history", library: "tabler", "aria-hidden": true) %>
53 <% end %>
54 </span>
55 </div>
35 </td> 56 </td>
36 <td><%= node.lock_owner.login if node.lock_owner %></td> 57 <td><%= node.head ? node.head.revision : t(".no_revision") %></td>
37 <td><%= node.draft ? node.draft.revision : (node.head ? node.head.revision : t(".no_revision")) %></td>
38 </tr> 58 </tr>
39 <% end %> 59 <% end %>
40</table> 60</table>
diff --git a/app/views/nodes/index.html.erb b/app/views/nodes/index.html.erb
index 7ab5679e..357c938b 100644
--- a/app/views/nodes/index.html.erb
+++ b/app/views/nodes/index.html.erb
@@ -7,35 +7,4 @@
7 <span class="field_hint"><%= t(".create_hint") %></span> 7 <span class="field_hint"><%= t(".create_hint") %></span>
8</div> 8</div>
9 9
10<%= will_paginate @nodes %> 10<%= render 'node_list' %>
11 <table class="node_table">
12 <tr class="header">
13 <th class="node_id"><%= t("admin.columns.id") %></th>
14 <th class="title"><%= t("admin.columns.title") %></th>
15 <th class="actions"><%= t("admin.columns.actions") %></th>
16 <th class="editor"><%= t("admin.columns.locked_by") %></th>
17 <th class="revision"><%= t("admin.columns.rev") %></th>
18 </tr>
19 <% @nodes.each do |node| %>
20 <tr class="<%= cycle("even", "odd") %>">
21 <td class="node_id"><%= node.id %></td>
22 <td class="title">
23 <h4><%= link_to title_for_node(node), node_path(node) %></h4>
24 <p><%= link_to_path(node.unique_name, node.unique_name) %></p>
25 </td>
26 <td class="actions">
27 <%= link_to 'show', node_path(node) %>
28 <%= link_to 'edit', edit_node_path(node) %>
29 <%= link_to 'revisions', node_revisions_path(node) %>
30 </td>
31 <td>
32 <%= node.lock_owner.login if node.lock_owner %>
33 </td>
34 <td>
35 <%= node.draft ? node.draft.revision : (node.head ? node.head.revision : "EMPTY") %>
36 </td>
37 </tr>
38 <% end %>
39 </table>
40<%= will_paginate @nodes %>
41
diff --git a/app/views/users/_user.html.erb b/app/views/users/_user.html.erb
index be92ad1d..028ee02f 100644
--- a/app/views/users/_user.html.erb
+++ b/app/views/users/_user.html.erb
@@ -27,17 +27,17 @@
27 <span class="field_hint"><%= t(".no_roles") %></span> 27 <span class="field_hint"><%= t(".no_roles") %></span>
28 <% end %> 28 <% end %>
29 </td> 29 </td>
30 <td class="user_actions"> 30 <td class="actions">
31 <div class="user_action_grid"> 31 <div class="action_grid">
32 <span class="user_action"> 32 <span class="action_item">
33 <%= link_to user_path(user), "aria-label" => t("admin.common.show"), 33 <%= link_to user_path(user), "aria-label" => t("admin.common.show"),
34 title: t("admin.common.show") do %> 34 title: t("admin.common.show") do %>
35 <%= icon("eye", library: "tabler", "aria-hidden": true) %> 35 <%= icon("eye", library: "tabler", "aria-hidden": true) %>
36 <% end %> 36 <% end %>
37 </span> 37 </span>
38 38
39 <span class="user_action"> 39 <span class="action_item">
40 <% if current_user.admin? || current_user == user %> 40 <% if current_user.is_admin? || current_user == user %>
41 <%= link_to edit_user_path(user), "aria-label" => t("admin.common.edit"), 41 <%= link_to edit_user_path(user), "aria-label" => t("admin.common.edit"),
42 title: t("admin.common.edit") do %> 42 title: t("admin.common.edit") do %>
43 <%= icon("edit", library: "tabler", "aria-hidden": true) %> 43 <%= icon("edit", library: "tabler", "aria-hidden": true) %>
@@ -45,15 +45,15 @@
45 <% end %> 45 <% end %>
46 </span> 46 </span>
47 47
48 <span class="user_action"> 48 <span class="action_item">
49 <%= link_to admin_log_path(:user_id => user.id), 49 <%= link_to admin_log_path(:user_id => user.id),
50 "aria-label" => t(".action_log"), title: t(".action_log") do %> 50 "aria-label" => t(".action_log"), title: t(".action_log") do %>
51 <%= icon("history", library: "tabler", "aria-hidden": true) %> 51 <%= icon("history", library: "tabler", "aria-hidden": true) %>
52 <% end %> 52 <% end %>
53 </span> 53 </span>
54 54
55 <span class="user_action"> 55 <span class="action_item">
56 <% if current_user.admin? && current_user != user %> 56 <% if current_user.is_admin? && current_user != user %>
57 <% if user.alumni? %> 57 <% if user.alumni? %>
58 <%= button_to reactivate_user_path(user), method: :put, 58 <%= button_to reactivate_user_path(user), method: :put,
59 form: { class: 'button_to state_changing' }, 59 form: { class: 'button_to state_changing' },
@@ -71,7 +71,7 @@
71 <% end %> 71 <% end %>
72 </span> 72 </span>
73 73
74 <span class="user_action"> 74 <span class="action_item">
75 <% if current_user.redaktion? && !user.alumni? %> 75 <% if current_user.redaktion? && !user.alumni? %>
76 <% if user.redaktion? %> 76 <% if user.redaktion? %>
77 <% unless user == current_user %> 77 <% unless user == current_user %>
diff --git a/app/views/users/edit.html.erb b/app/views/users/edit.html.erb
index ad2e0891..1763394d 100644
--- a/app/views/users/edit.html.erb
+++ b/app/views/users/edit.html.erb
@@ -20,7 +20,7 @@
20 <div class="layout_row_label"><%= t("users.labels.confirm") %></div> 20 <div class="layout_row_label"><%= t("users.labels.confirm") %></div>
21 <div class="layout_row_content"><%= f.password_field :password_confirmation, :autocomplete => "new-password" %></div> 21 <div class="layout_row_content"><%= f.password_field :password_confirmation, :autocomplete => "new-password" %></div>
22 22
23 <% if current_user.admin? %> 23 <% if current_user.is_admin? %>
24 <div class="layout_row_label"><%= t("users.labels.roles") %></div> 24 <div class="layout_row_label"><%= t("users.labels.roles") %></div>
25 <div class="layout_row_content"> 25 <div class="layout_row_content">
26 <% User::ROLES.each do |role| %> 26 <% User::ROLES.each do |role| %>
@@ -62,7 +62,7 @@
62 <% end %> 62 <% end %>
63 <% end %> 63 <% end %>
64 </div> 64 </div>
65 <% elsif current_user.admin? && @user.otp_enrolled? %> 65 <% elsif current_user.is_admin? && @user.otp_enrolled? %>
66 <div class="layout_row_label"><%= t(".second_factor") %></div> 66 <div class="layout_row_label"><%= t(".second_factor") %></div>
67 <div class="layout_row_content"> 67 <div class="layout_row_content">
68 <%= t(".enabled") %> 68 <%= t(".enabled") %>