1 <metal:block define-macro="master">
2 <tal:block define="global main_macros here/main_template_macros/macros"/>
3 <metal:block use-macro="main_macros/global_defines"/>
4 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
6 <html xmlns="http://www.w3.org/1999/xhtml">
9 <title tal:content="here/expanded_title">Title goes here</title>
10 <meta http-equiv="content-type" content="text/html;charset=utf-8" />
11 <meta name="description" tal:attributes="content portal_object/description" />
13 tal:condition="exists:portal_object/keywords"
14 tal:attributes="content python:', '.join(portal_object.getProperty('keywords', []))" />
15 <base tal:omit-tag="" metal:define-slot="base" />
17 <link rel="Shortcut Icon" type="image/x-icon" href="favicon.ico" tal:attributes="href string:$portal_url/favicon.ico" />
18 <link rel="alternate" type="application/rss+xml"
19 tal:define="stool nocall:here/portal_syndication"
20 tal:attributes="title here/title_or_id ; href string:${here/absolute_url}/RSS"
21 tal:condition="python:stool.isSyndicationAllowed(here)" />
23 <link rel="stylesheet" media="screen" tal:attributes="href here/global_plinn_style.css/absolute_url" />
24 <style type="text/css" media="all" tal:content="string:@import url(${here/calendar-system.css/absolute_url});"></style>
26 <link metal:define-slot="css_slot" tal:replace="nothing" />
27 <script type="text/javascript" tal:attributes="src here/epoz_script_detect.js/absolute_url"></script>
28 <script type="text/javascript" tal:attributes="src here/javascript_events_api.js/absolute_url"></script>
29 <script type="text/javascript" tal:attributes="src here/sarissa.js/absolute_url"></script>
30 <script type="text/javascript">
32 function absolute_url() {
33 var e = document.getElementById("Object_URL");
37 e = document.getElementById("BC_Object_URL");
41 return document.location.href;
45 function portal_url() {
46 var e = document.getElementById("Portal_URL");
50 var startupFunctions = new Array();
52 function registerStartupFunction(fct) {
53 startupFunctions.push(fct);
56 function runAjaxStartup() {
57 for (var i = 0 ; i < startupFunctions.length ; i++)
58 startupFunctions[i]();
61 addListener(window, 'load', runAjaxStartup);
64 function _initLoadingStatus() {
65 progressImage = document.getElementById('loading_progress');
67 registerStartupFunction(_initLoadingStatus);
69 function showProgressImage() { progressImage.style.display = 'inline'; }
70 function hideProgressImage() { progressImage.style.display = 'none'; }
75 <script type="text/javascript" tal:attributes="src here/base_properties.js/absolute_url"></script>
76 <script type="text/javascript" tal:attributes="src here/fragment_importer.js/absolute_url"></script>
77 <script type="text/javascript" tal:attributes="src here/ajax_form_manager.js/absolute_url"></script>
78 <script type="text/javascript" tal:attributes="src here/root_handlers.js/absolute_url"></script>
79 <script type="text/javascript" tal:attributes="src here/plinn_script_loader.js/absolute_url"></script>
81 <script type="text/javascript" metal:define-slot="javascript_head_slot" tal:replace="nothing"></script>
85 <span style="display:none">
86 <span id="Portal_URL" tal:content="portal_url"></span>
87 <span id="ajax_config" tal:content="python:request.get('ajaxConfig', request.SESSION.get('ajaxConfig', portal_object.getProperty('ajax_config')))"></span>
88 <script type="text/javascript">
90 AJAX_CONFIG = document.getElementById('ajax_config');
91 AJAX_CONFIG = parseInt(AJAX_CONFIG.innerHTML);
95 <a href="#documentContent" i18n:translate="" i18n:domain="plinn" class="hidden">Skip to content</a>
96 <div metal:use-macro="main_macros/top_bar">Top bar</div>
97 <div metal:use-macro="main_macros/user_menu_bar">User menu bar</div>
98 <div id="Breadcrumbs"><div metal:use-macro="main_macros/Breadcrumbs">Breadcrumbs</div></div>
101 <table id="Forematter" width="100%" cellspacing="0">
103 <td id="leftCell" class="boxes_container" width="15%">
104 <span metal:use-macro="main_macros/leftCell">Left cell</span>
107 <td id="mainCell" width="70%">
109 <div class="DesktopStatusBar" tal:condition="request/portal_status_message|nothing">
110 <img src="info.gif" alt="Information" tal:attributes="src here/info.gif/absolute_url" i18n:attributes="alt" />
111 <span tal:content="request/portal_status_message" i18n:translate="">Status message.</span>
114 <a name="documentContent"></a>
115 <div metal:define-slot="main_no_tabs" tal:omit-tag="">
116 <div tal:condition="specialCtxHeader" tal:content="structure specialCtxHeader">special context header</div>
117 <div id="ContentTabs" tal:condition="not:specialCtxHeader">
118 <div class="tabs" metal:use-macro="here/tabs/macros/tabs">Content tabs</div>
119 <div metal:use-macro="here/tabs/macros/additional_tabs">Additional tabs</div>
121 <div id="ForematterCell">
123 <div tal:omit-tag="" metal:define-slot="header">
124 <h1 id="DesktopTitle">
125 <span tal:replace="here/title_or_id">Page Title</span>
127 <div id="DesktopDescription" tal:content="structure here/Description">
128 Description of the resource goes here, perhaps even wrapping lines; this is to make it long enough to test.
134 <div metal:define-slot="main">
135 <h2>Section Header</h2>
136 <p>The content of the object is <a href=".">rendered</a>
137 hre. Lorem ipsum dolorem. Nihil obstat imprimatur. Semper ubi sub ubi.
138 Non illegitimi carborundum. In vino veritas. E pluribus unam.
142 <div tal:condition="not:isAnon" tal:omit-tag="">
143 <div id="ContentByLine" metal:use-macro="here/content_byline/macros/byline">
147 <div metal:define-slot="footer" tal:replace="nothing">footer slot</div>
152 <!-- end_main_column -->
154 <td id="rightCell" class="boxes_container" width="15%">
155 <div metal:use-macro="main_macros/rightCell">Right cell</div>
159 <div id="Footer" tal:content="python:getattr(portal_object, 'copyright_notice','') or '© Benoît Pin — École des mines de Paris 2006-2009'">© Benoît Pin — École des mines de Paris 2006-2009</div>
161 <div metal:use-macro="here/widgets/macros/debug">