diff --git a/invenio/base/templates/_macros.html b/invenio/base/templates/_macros.html new file mode 100644 index 000000000..19f996a6d --- /dev/null +++ b/invenio/base/templates/_macros.html @@ -0,0 +1,29 @@ +{# +## This file is part of Invenio. +## Copyright (C) 2014 CERN. +## +## Invenio 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. +## +## Invenio 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 Invenio; if not, write to the Free Software Foundation, Inc., +## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. +#} + +{%- macro messages() -%} + {% block messages %} + {% for category, msg in get_flashed_messages(with_categories=True, category_filter=['', 'info', 'error', 'warning', 'success']) %} + <div class="alert alert-{{ category }}"> + <a class="close" data-dismiss="alert" href="#">×</a> + {{ msg|safe }} + </div> + {% endfor %} + {% endblock messages %} +{% endmacro %} \ No newline at end of file diff --git a/invenio/base/templates/page_base.html b/invenio/base/templates/page_base.html index e54cc8b11..f389badd9 100644 --- a/invenio/base/templates/page_base.html +++ b/invenio/base/templates/page_base.html @@ -1,206 +1,201 @@ {# ## This file is part of Invenio. ## Copyright (C) 2012, 2013 CERN. ## ## Invenio 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. ## ## Invenio 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 Invenio; if not, write to the Free Software Foundation, Inc., ## 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. #} +{% from "_macros.html" import messages %} + {# Global CSS #} {% block global_css %} {%- css 'css/bootstrap.css', '00-invenio' -%} {%- css 'css/typeahead.js-bootstrap.css', '00-invenio' -%} {%- css 'css/token-input.css', '00-invenio' -%} {%- css 'css/token-input-facebook.css', '00-invenio' -%} {%- css url_for('static', filename='css/base.css'), '00-invenio' -%} {%- css url_for('webtag.static', filename='css/tags/popover.css'), '00-invenio' -%} {%- if config.CFG_WEBSTYLE_TEMPLATE_SKIN != 'default' %} {%- css 'css/'+config.CFG_WEBSTYLE_TEMPLATE_SKIN, '00-invenio' -%} {%- endif %} {% endblock global_css %} {# Global Javascript files #} {% block global_javascript %} {%- js 'js/jquery.min.js', '00-invenio' -%} {%- js 'js/bootstrap.js', '00-invenio' -%} {%- js 'js/jquery.tokeninput.js', '00-invenio' -%} {%- js 'js/hogan.js', '00-invenio' -%} {%- js 'js/jquery.jeditable.mini.js', '00-invenio' -%} {%- js 'js/invenio.js', '00-invenio' -%} {%- js 'js/translate.js', '00-invenio' -%} {%- js 'js/typeahead.js', '00-invenio' -%} {% endblock global_javascript %} {%- if not no_pageheader -%} <!DOCTYPE html> <html lang="{{ ln|safe }}" {% if is_language_rtl(g.ln) %}dir="rtl"{% endif %}> <head> <meta charset="utf-8"> <title>{{ title+' - ' if title }}{{ config.CFG_SITE_NAME_INTL[g.ln] }}</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="description" content=""> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Language" content="{{ g.ln|safe }}" /> <meta name="description" content="{{ description }}" /> <meta name="keywords" content="{{ keywords }}" /> <meta name="author" content=""> <link rev="made" href="mailto:{{ config.CFG_SITE_SUPPORT_EMAIL }}" /> <link rel="canonical" href="{{ canonical_url }}" /> {% for alt_ln, alternate_url in alternate_urls.iteritems() %} <link rel="alternate" hreflang="{{ alt_ln }}" href="{{ alternate_url }}" /> {% endfor %} <link rel="alternate" type="application/rss+xml" title="{{ config.CFG_SITE_NAME }} RSS" href="{{ url_for('rss') }}" /> <link rel="search" type="application/opensearchdescription+xml" href="{{ url_for('opensearchdescription') }}" title="{{ config.CFG_SITE_NAME }}" /> <link rel="unapi-server" type="application/xml" title="unAPI" href="{{ url_for('unapi') }}" /> {{ linkbackTrackbackLink }} <!-- Le HTML5 shim, for IE6-8 support of HTML5 elements --> <!--[if lt IE 9]> <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> <!-- Le fav and touch icons --> <link rel="shortcut icon" href="{{ url_for('static', filename='favicon.ico') }}"> {% for size in [144, 114, 72, 57] %} {% set icon_name = 'apple-touch-icon-%d-precomposed.png'|format(size) %} <link rel="apple-touch-icon-precomposed" sizes="{{ size }}x{{ size }}" href="{{ url_for('static', filename=icon_name) }}"> {% endfor %} {% block header %} {{ metaheaderadd|safe }} {% block metaheader %} {% endblock metaheader %} {% endblock header %} {% for bundle in get_css_bundle(iterate=True) %} {% assets bundle %} <link rel="stylesheet" type="text/css" href="{{ ASSET_URL }}"></link> {% endassets %} {% endfor %} {% block _top_assets %}{% endblock _top_assets %} {% block css %}{% endblock css %} <style> legend [class*="icon-"] { vertical-align: baseline; } a.label, a.label:hover, .label a, .label a:hover { color: white;} .htmlbrief .media-heading { font-weight: 200; } .icon.muted { opacity: 0.6; } /* ----------------------- Stick footer ----------------------- */ html, body { height: 100%; } {% set footer_height = '150px' -%} /* Wrapper for page content to push down footer */ #wrap { min-height: 100%; height: auto !important; height: 100%; /* Negative indent footer by it's height */ margin: 0 auto -{{ footer_height }}; } /* Set the fixed height of the footer here */ #push, footer { min-height: {{ footer_height }}; } #push { margin-top: 60px; } footer a, footer a:hover { color: #666; } footer, footer p { font-size: 11px; color: #333; } /* Lastly, apply responsive CSS fixes as necessary */ @media (max-width: 767px) { footer { margin-left: -20px; margin-right: -20px; padding-left: 20px; padding-right: 20px; } } /* --------------- */ </style> </head> <body class="{{ body_css_classes|join(' ') if body_css_classes }}" lang="{{ g.ln.split('_', 1)[0]|safe }}" {{ rtl_direction|safe }}> <div id="wrap"> <header> <!-- replaced page header --> {% block headerbox %} {% include 'header.html' %} {% endblock headerbox %} <!-- end replaced page header --> {% block breadcrumb %} {%- include 'breadcrumbs.html' -%} {% endblock breadcrumb %} {% block pageheaderadd %}{{ pageheaderadd|safe }}{% endblock pageheaderadd %} </header> {%- endif -%} {%- if not no_pagebody -%} {%- block page_body -%} <div class="container"> {% block title %} - {% if title %} - <div class="page-header"> - <h1>{{ title }}</h1> - </div> - {% endif %} - {% endblock title %} - {% block messages %} - {% for category, msg in get_flashed_messages(with_categories=True, category_filter=['', 'info', 'error', 'warning', 'success']) %} - <div class="alert alert-{{ category }}"> - <a class="close" data-dismiss="alert" href="#">×</a> - {{ msg|safe }} + {% if title %} + <div class="page-header"> + <h1>{{ title }}</h1> </div> - {% endfor %} - {% endblock messages %} - {% block body %} + {% endif %} + {% endblock title %} + {{ messages() }} + {% block body %} {{ body }} - {% endblock body %} + {% endblock body %} </div> {%- endblock page_body -%} {%- endif -%} {%- if not no_pagefooter -%} <div id="push"></div> </div>{# end wrap #} <footer> <div class="container"> {% block pagefooteradd %}{{ pagefooteradd|safe }}{% endblock pagefooteradd %} </div> <!-- replaced page footer --> {%- include 'footer.html' -%} </footer> {% block _bottom_assets %} {% for bundle in get_js_bundle(iterate=True) %} {% assets bundle %} <script type="text/javascript" src="{{ ASSET_URL }}"></script> {% endassets %} {% endfor %} {% endblock _bottom_assets %} {% block javascript %}{% endblock javascript %} </body> </html> {%- endif -%}