<%#-- copyright OpenProject is an open source project management software. Copyright (C) 2012-2024 the OpenProject GmbH This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 3. OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: Copyright (C) 2006-2013 Jean-Philippe Lang Copyright (C) 2010-2013 the ChiliProject Team This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. See COPYRIGHT and LICENSE files for more details. ++#%> <% show_decoration = params["layout"].nil? %> <%= render partial: 'layouts/common_head' %> <%= call_hook :view_layouts_base_html_head %> <%= content_for(:header_tags) if content_for?(:header_tags) %> <%# Disable prefetching while we have data-turbo=false on body %> > <%= render partial: 'warning_bar/warning_bar' %> <% main_menu = render_main_menu(local_assigns.fetch(:menu_name, nil), @project) %> <% side_displayed = content_for?(:sidebar) || content_for?(:main_menu) || !main_menu.blank? %> <% initial_classes = initial_menu_classes(side_displayed, show_decoration) %>
<% if show_decoration %>

<%= t(:label_top_menu) %>

<%= I18n.t('js.work_packages.jump_marks.content') %> <%= render_top_menu_left %>
<%= render_top_menu_center %>
<%= call_hook :view_layouts_base_top_menu %> <%= render_top_menu_right %>
<% end %>
<% if (side_displayed && show_decoration) %> <% end %>
<%= render_primer_banner_message %> <% if show_decoration %> <% end %> <%= render_flash_messages %> <% if show_onboarding_modal? %>
<%= render partial: '/onboarding/configuration_modal' %>
<% end %> <%= content_tag :div, id: 'content', class: initial_classes, data: stimulus_content_data do %>

<%= t(:label_content) %>

<%= content_for :content_body %> <% unless local_assigns[:no_layout_yield] %> <%= yield %> <% end %> <%= call_hook :view_layouts_base_content %> <% end %>
<%# Properly decides main menu expanded state and width before its drawn. Fixes flickering side menu where menu is first expanded, then being collapsed in angular. %> <%= nonced_javascript_tag do %> // execute these lines to prevent flickering when page loads: (function($) { var wrapper = $('#wrapper'); var savedMainMenuWidth = window.OpenProject.guardedLocalStorage("openProject-mainMenuWidth"); var mainMenuCollapsed = window.OpenProject.guardedLocalStorage("openProject-mainMenuCollapsed"); if (window.innerWidth < 1012) { // force hide on load for small desktops $('.can-hide-navigation').addClass('hidden-navigation'); } if (mainMenuCollapsed === 'true') { savedMainMenuWidth = 0; } if (savedMainMenuWidth || savedMainMenuWidth === 0) { document.documentElement.style.setProperty("--main-menu-width", savedMainMenuWidth + 'px'); } wrapper.show(); // Wrapper for page-specific JS from deprecated inline functions // no longer available with CSP. <%= content_for :additional_js_dom_ready %> }(jQuery)); <% end %>
<%= call_hook :view_layouts_base_body_bottom %>