<%#-- copyright OpenProject is an open source project management software. Copyright (C) 2012-2020 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-2017 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 docs/COPYRIGHT.rdoc for more details. ++#%> <% show_decoration = params["layout"].nil? %> <%= output_title_and_meta_tags %> <% relative_url_root = OpenProject::Configuration['rails_relative_url_root'] || '' %> <% if @project %> <% end %> <% unless User.current.anonymous? %> <% end %> <% if OpenProject::Configuration.sentry_frontend_dsn %> <%= tag :meta, name: 'openproject_sentry', data: { dsn: OpenProject::Configuration.sentry_frontend_dsn } %> <% end %> <% if Setting.demo_projects_available %><% end %> <% if Setting.boards_demo_data_available %><% end %> <%= csrf_meta_tags %> <%= call_hook :view_layouts_base_html_meta %> <%= render 'common/favicons' %> <%= stylesheet_link_tag 'openproject', media: "all" %> <%# Include CLI assets (development) or prod build assets %> <%= include_frontend_assets %> <%# Render CSS highlighting %> <%= stylesheet_link_tag "/highlighting/styles/#{highlight_css_version_tag}", media: :all, skip_pipeline: true %> <%= javascript_include_tag 'application' %> <%= javascript_include_tag "locales/#{I18n.locale}" %> <%= text_formatting_js_includes %> <%= javascript_include_tag 'vendor/enjoyhint.js'%> <%= call_hook :view_layouts_base_html_head %> <%= content_for(:header_tags) if content_for?(:header_tags) %> <% if EnterpriseToken.allows_to?(:define_custom_style) && CustomStyle.try(:current).present? %> <% cache(CustomStyle.current) do %> <%= render partial: "custom_styles/inline_css" %> <% if CustomStyle.current.favicon.present? %> <% end %> <% if CustomStyle.current.touch_icon.present? %> <% end %> <% end %> <% end %> <%= crowdin_in_context_translation %> <%= 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 %>
<% end %>
<% if (side_displayed && show_decoration) %> <% end %>
<% if show_decoration %> <% end %> <%= render_flash_messages %> <% if show_onboarding_modal? %>
<%= render partial: '/onboarding/configuration_modal' %>
<% end %>

<%= l(:label_content) %>

<%= content_for :content_body %> <% unless local_assigns[:no_action_menu] %> <%= yield %> <% end %> <%= call_hook :view_layouts_base_content %>
<%# 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 < 680) { // force hide on load for mobile $('.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 %>