Commit 9a670b1e authored by Frank Bergmann's avatar Frank Bergmann

- Update to OpenACS 5.9.1

parent 3d4e52bd
This diff is collapsed.
......@@ -45,21 +45,21 @@
<msg key="entries_using_form">Entries for form %form%</msg>
<msg key="error-delete_entries_first">This page is still used by %count% entries. Please delete these first before deleting this page.</msg>
<msg key="error-form_constraint-invalid_characters">Form constraint contains invalid characters</msg>
<msg key="error-form_constraint-unknown_attribute">From field &#39;%name%&#39; (class %class%) has unknown attribute &#39;%entry%&#39;</msg>
<msg key="error-form_constraint-unknown_attribute">From field '%name%' (class %class%) has unknown attribute '%entry%'</msg>
<msg key="error-form_constraint-unknown_editor">Unknown editor %editor%. Possible values are: %editors%</msg>
<msg key="error-form_constraint-unknown_spec_entry">From field &#39;%name%&#39; has unknown specification &#39;%entry%&#39;</msg>
<msg key="error-form_constraint-unknown_spec_entry">From field '%name%' has unknown specification '%entry%'</msg>
<msg key="error-includelet-adp_syntax_invalid">Syntax: adp &amp;lt;name of adp-file&amp;gt; {&amp;lt;argument list&amp;gt;}&lt;br/&gt;
Invalid argument list: &#39;%adp%&#39;; must be of form: attribute value pairs (even number of elements)</msg>
Invalid argument list: '%adp%'; must be of form: attribute value pairs (even number of elements)</msg>
<msg key="error-includelet-dash_syntax_invalid">&lt;pre&gt;%errMsg%&lt;/pre&gt;
Argument list must contain attribute value pairs (attributes with dashes)</msg>
<msg key="error-includelet-error_during_adp_evaluation">evaluation of adp file returned error message: %errorMsg%</msg>
<msg key="error-includelet-error_during_render">Error in includelet &#39;%page_name%&#39;:
<msg key="error-includelet-error_during_render">Error in includelet '%page_name%':
&lt;pre&gt;%::errorInfo%&lt;/pre&gt;</msg>
<msg key="error-includelet-nesting_to_deep">Nesting of includelets is to deep</msg>
<msg key="error-includelet-unknown">Error: includelet &#39;%page_name%&#39; unknown</msg>
<msg key="error_in_includelet">Error in includelet &#39;{{%arg%}}&#39; of page %name%:</msg>
<msg key="error-includelet-nesting_to_deep">Nesting of includelets is too deep</msg>
<msg key="error-includelet-unknown">Error: includelet '%page_name%' unknown</msg>
<msg key="error_in_includelet">Error in includelet '{{%arg%}}' of page %name%:</msg>
<msg key="event">Event</msg>
<msg key="event-end_of_event">End Time</msg>
<msg key="event-end_of_lecture">End of Lecture</msg>
......@@ -106,6 +106,7 @@ Argument list must contain attribute value pairs (attributes with dashes)</msg>
<msg key="FormPage_parameters_title">Wiki parameters</msg>
<msg key="FormPage_pretty_name">Wiki FormPage</msg>
<msg key="FormPage_pretty_plural">Wiki FormPages</msg>
<msg key="future_interval">in %time%</msg>
<msg key="has_modified_this_page">has modified this page while you were editing it</msg>
<msg key="height">Height</msg>
<msg key="hour">hour</msg>
......@@ -138,9 +139,24 @@ Argument list must contain attribute value pairs (attributes with dashes)</msg>
<msg key="menu-Clipboard-Copy">Copy</msg>
<msg key="menu-Clipboard-Use-Copy">Copy</msg>
<msg key="menu-Clipboard-Use-Export">Export</msg>
<msg key="menu-New">New</msg>
<msg key="menu-New-File">File</msg>
<msg key="menu-New-Folder">Folder</msg>
<msg key="menu-New-Form">New Form</msg>
<msg key="menu-New-Page">Page</msg>
<msg key="menu-New-SymLink">Symbolic Link</msg>
<msg key="menu-Package-Admin">Admin</msg>
<msg key="menu-Package-ImportArchive">Import Archive</msg>
<msg key="menu-Package-ImportDump">Import Dump</msg>
<msg key="menu-Page">Page</msg>
<msg key="menu-Package-Notifications">Notifications</msg>
<msg key="menu-Package-Startpage">Startpage</msg>
<msg key="menu-Package-Subscribe">Subscribe</msg>
<msg key="menu-Package-Toc">Table of Contents</msg>
<msg key="menu-Page">This Page</msg>
<msg key="menu-Page-Delete">Delete Page</msg>
<msg key="menu-Page-Edit">Edit Page</msg>
<msg key="menu-Page-Revisions">Revisions</msg>
<msg key="menu-Page-Show">Show Page</msg>
<msg key="minute">minute</msg>
<msg key="minutes">minutes</msg>
<msg key="modified_page">modified page</msg>
......@@ -177,7 +193,7 @@ Argument list must contain attribute value pairs (attributes with dashes)</msg>
<msg key="Page-text">Content</msg>
<msg key="Page-title">Page Title</msg>
<msg key="Page-validate_form_constraints">%errorMsg%</msg>
<msg key="Page-validate_name">Another item with the name &#39;%value%&#39; exists already in this folder</msg>
<msg key="Page-validate_name">Another item with the name '%value%' exists already in this folder</msg>
<msg key="Page-validate_page_order">Page Order invalid; might only contain upper and lower case letters, underscore, digits and dots</msg>
<msg key="page_kind">Type</msg>
<msg key="Page_pretty_name">XoWiki Page</msg>
......@@ -208,10 +224,10 @@ Argument list must contain attribute value pairs (attributes with dashes)</msg>
<msg key="PodcastItem_pretty_plural">Podcast Items</msg>
<msg key="popular_tags_label">Popular tags</msg>
<msg key="popular_tags_link">popular tags</msg>
<msg key="portlet_name_does_not_exist_error_long">There is no page with name &#34;%page_name%&#34; available.</msg>
<msg key="portlet_name_does_not_exist_error_long">There is no page with name &quot;%page_name%&quot; available.</msg>
<msg key="portlet_page_does_not_exist_error_short">The given page does not exist</msg>
<msg key="portlet_title_exists_error_long">Please either change the existing portlets&#39; name or the title of the xowiki page you want to add to the portal.</msg>
<msg key="portlet_title_exists_error_short">A portlet with the title &#39;%page_title%&#39; already exists in this portal.</msg>
<msg key="portlet_title_exists_error_long">Please either change the existing portlets' name or the title of the xowiki page you want to add to the portal.</msg>
<msg key="portlet_title_exists_error_short">A portlet with the title '%page_title%' already exists in this portal.</msg>
<msg key="pretty_name">Wiki</msg>
<msg key="processing_objects">Processing objects:</msg>
<msg key="prompt">Prompt</msg>
......@@ -228,12 +244,12 @@ Argument list must contain attribute value pairs (attributes with dashes)</msg>
<msg key="richtext-validate_safe_html">%errorMsg%</msg>
<msg key="rss_client">RSS Client</msg>
<msg key="scoring">Scoring</msg>
<msg key="scoring_help_text">Algorithmus fr das Bewertungsschema.</msg>
<msg key="scoring_help_text">Algorithm for Evaluation Schema</msg>
<msg key="search">Search</msg>
<msg key="search_title">Search pages of this package ...</msg>
<msg key="second">second</msg>
<msg key="seconds">seconds</msg>
<msg key="select_link_target">To create a click, click on a page name </msg>
<msg key="select_link_target">To create a link, click on a page name </msg>
<msg key="Selection">Selection</msg>
<msg key="shuffle">Shuffle Answers</msg>
<msg key="shuffle_help_text">Should the order of choices be presented in randomized order?</msg>
......
This diff is collapsed.
This diff is collapsed.
......@@ -45,20 +45,20 @@
<msg key="entries_using_form">Запись для формы %form%</msg>
<msg key="error-delete_entries_first">Эта страница используется записями %count%. Перед удалением страницы удалите, пожалуйста, записи.</msg>
<msg key="error-form_constraint-invalid_characters">Ограничитель формы содержит недопустимые знаки</msg>
<msg key="error-form_constraint-unknown_attribute">Поле формы &#39;%name%&#39; (class %class%) содержит неизвестный атрибут &#39;%entry%&#39;</msg>
<msg key="error-form_constraint-unknown_attribute">Поле формы '%name%' (class %class%) содержит неизвестный атрибут '%entry%'</msg>
<msg key="error-form_constraint-unknown_editor">Неизвестный редактор %editor%. Возможные значения: %editors%</msg>
<msg key="error-form_constraint-unknown_spec_entry">Поле формы &#39;%name%&#39; содержит неизвестную спецификацю &#39;%entry%&#39;</msg>
<msg key="error-form_constraint-unknown_spec_entry">Поле формы '%name%' содержит неизвестную спецификацю '%entry%'</msg>
<msg key="error-includelet-adp_syntax_invalid">Синтаксис: adp &amp;lt;имя adp-файла&amp;gt; {&amp;lt;список аргументов&amp;gt;}&lt;br/&gt;
Недействительный список аргументов: &#39;%adp%&#39;; должен быть составлен в виде: пар применимых значений (одинакового количества элементов)</msg>
Недействительный список аргументов: '%adp%'; должен быть составлен в виде: пар применимых значений (одинакового количества элементов)</msg>
<msg key="error-includelet-dash_syntax_invalid">&lt;pre&gt;%errMsg%&lt;/pre&gt;
Список аргументов должен содержать пар применимых значений(атрибуты с тире)</msg>
<msg key="error-includelet-error_during_adp_evaluation">проверка adp файла направляет сообщение об ошибке: %errorMsg%</msg>
<msg key="error-includelet-error_during_render">Ошибка в инклуделете &#39;%page_name%&#39;: &lt;pre&gt;%::errorInfo%&lt;/pre&gt;</msg>
<msg key="error-includelet-error_during_render">Ошибка в инклуделете '%page_name%': &lt;pre&gt;%::errorInfo%&lt;/pre&gt;</msg>
<msg key="error-includelet-nesting_to_deep">Слишком глубокая вложенность инклуделетов</msg>
<msg key="error-includelet-unknown">Ошибка: неизвестный инклуделет &#39;%page_name%&#39; </msg>
<msg key="error_in_includelet">Ошибка в инклуделете &#39;{{%arg%}}&#39; на странице %name%:</msg>
<msg key="error-includelet-unknown">Ошибка: неизвестный инклуделет '%page_name%' </msg>
<msg key="error_in_includelet">Ошибка в инклуделете '{{%arg%}}' на странице %name%:</msg>
<msg key="event">Событие</msg>
<msg key="event-end_of_event">Окончание</msg>
<msg key="event-end_of_lecture">Конец лекции</msg>
......@@ -176,7 +176,7 @@
<msg key="Page-text">Содержание</msg>
<msg key="Page-title">Наименование страницы</msg>
<msg key="Page-validate_form_constraints">%errorMsg%</msg>
<msg key="Page-validate_name">Другой элемент с наименование &#39;%value%&#39; уже существует в этой директории</msg>
<msg key="Page-validate_name">Другой элемент с наименование '%value%' уже существует в этой директории</msg>
<msg key="Page-validate_page_order">Недопустимый порядок страниц; может содержать заглавные и строчные буквы, подчёркивание, цифры и точки</msg>
<msg key="page_kind">Тип</msg>
<msg key="Page_pretty_name">XoWiki страница</msg>
......@@ -207,10 +207,10 @@
<msg key="PodcastItem_pretty_plural">Пункты из подкаста</msg>
<msg key="popular_tags_label">Популярные тэги</msg>
<msg key="popular_tags_link">популярные тэги</msg>
<msg key="portlet_name_does_not_exist_error_long">Cтраница с именем &#34;%page_name%&#34; отсутствует.</msg>
<msg key="portlet_name_does_not_exist_error_long">Cтраница с именем &quot;%page_name%&quot; отсутствует.</msg>
<msg key="portlet_page_does_not_exist_error_short">Указанная страница не существует</msg>
<msg key="portlet_title_exists_error_long">Пожалуйста,измените имя существующего портлета либо название xowiki страницы, которую вы хотите добавить в портал.</msg>
<msg key="portlet_title_exists_error_short">Портлет с заголовком &#39;%page_title%&#39; уже существует в этом портале.</msg>
<msg key="portlet_title_exists_error_short">Портлет с заголовком '%page_title%' уже существует в этом портале.</msg>
<msg key="pretty_name">Вики</msg>
<msg key="prompt">Подсказка</msg>
<msg key="publish_status">Опубликованный</msg>
......
......@@ -19,7 +19,7 @@ if {[info exists url]} {
}
set html [::$package_id invoke -method $m]
set ::xowiki_head [::xo::Page header_stuff]
#set ::xowiki_head [::xo::Page header_stuff]
if {![info exists css]} {
set fn [get_server_root]/packages/xowiki/www/resources/xowiki.css
......
<master>
<property name="doc(title)">@edit_form_page_title;literal@</property>
<property name="&doc">property_doc</property>
<property name="context">@context;literal@</property>
<property name="focus">note.title</property>
<style type='text/css'>
#wikicmds {position: relative;top: -50px; right: 0px; height: 0px;
text-align: right; font-family: sans-serif; font-size: 85%;color: #7A7A78;}
#wikicmds a, #wikicmds a:visited { color: #7A7A78; text-decoration: none;}
#wikicmds a:hover {text-decoration: underline;}
#wikicmds a:active {color: rgb(255,153,51);}
</style>
<div id='wikicmds'>
<if @back_link@ not nil><a href="@back_link@" accesskey='b' >#xowiki.back#</a> &middot;</if>
<if @item_id@ not nil>
<if @view_link@ not nil><a href="@view_link@" accesskey='v' >#xowiki.view#</a> &middot;</if>
<if @rev_link@ not nil><a href="@rev_link@" accesskey='r' >#xotcl-core.revisions#</a> &middot;</if>
</if>
<if @index_link@ not nil><a href="@index_link@" accesskey='i'>#xowiki.index#</a></if>
</div>
<formtemplate id="@formTemplate;literal@"></formtemplate>
<master>
<property name="doc(title)">@title;literal@</property>
<property name="doc(title)">@title;literal@</property>
<property name="context">@context;literal@</property>
<property name="head">@header_stuff;literal@
<link rel="stylesheet" type="text/css" href="/resources/xowiki/xowiki.css" media="all" />
</property>
<div class='xowiki-content'>
<div id='wikicmds'>
<if @back_link@ not nil><a href="@back_link;noi18n@" accesskey='b'>#xowiki.back#</a> &middot; </if>
<if @index_link@ not nil><a href="@index_link;noi18n@" accesskey='i'>#xowiki.index#</a></if>
</div>
<p>&nbsp;</p>
<h3>Error:</h3>
<p>
<blockquote>
@error_msg;noquote@
<p>&nbsp;</p>
</blockquote>
</p>
</div>
<!-- Generated by ::xowiki::ADP_Generator on Sun Aug 06 12:23:50 +0200 2017 -->
<master>
<property name="context">@context;literal@</property>
<if @item_id@ not nil><property name="displayed_object_id">@item_id;literal@</property></if>
<property name="&body">body</property>
<property name="&doc">doc</property>
<property name="head">
<link rel='stylesheet' href='/resources/xowiki/cattree.css' media='all' >
<script language='javascript' src='/resources/acs-templating/mktree.js' async type='text/javascript'></script>
@header_stuff;literal@</property>
<!-- The following DIV is needed for overlib to function! -->
<div id="overDiv" style="position:absolute; visibility:hidden; z-index:1000;"></div>
<div class='xowiki-content'>
<%
if {$::::xowiki::search_mounted_p} {
template::add_event_listener -id wiki-menu-do-search-control -script {
document.getElementById('do_search').style.display = 'inline';
document.getElementById('do_search_q').focus();
}
}
%>
<div id='wikicmds'>
<if @view_link@ not nil><a href="@view_link@" accesskey='v' title='#xowiki.view_title#'>#xowiki.view#</a> &middot; </if>
<if @edit_link@ not nil><a href="@edit_link@" accesskey='e' title='#xowiki.edit_title#'>#xowiki.edit#</a> &middot; </if>
<if @rev_link@ not nil><a href="@rev_link@" accesskey='r' title='#xowiki.revisions_title#'>#xotcl-core.revisions#</a> &middot; </if>
<if @new_link@ not nil><a href="@new_link@" accesskey='n' title='#xowiki.new_title#'>#xowiki.new_page#</a> &middot; </if>
<if @delete_link@ not nil><a href="@delete_link@" accesskey='d' title='#xowiki.delete_title#'>#xowiki.delete#</a> &middot; </if>
<if @admin_link@ not nil><a href="@admin_link@" accesskey='a' title='#xowiki.admin_title#'>#xowiki.admin#</a> &middot; </if>
<if @notification_subscribe_link@ not nil><a href='/notifications/manage' title='#xowiki.notifications_title#'>#xowiki.notifications#</a>
<a href="@notification_subscribe_link@" class="notification-image-button">&nbsp;</a>&middot; </if>
<if @::xowiki::search_mounted_p@ true><a href='#' id='wiki-menu-do-search-control' title='#xowiki.search_title#'>#xowiki.search#</a> &middot; </if>
<if @index_link@ not nil><a href="@index_link@" accesskey='i' title='#xowiki.index_title#'>#xowiki.index#</a></if>
<div id='do_search' style='display: none'>
<form action='/search/search'><div><label for='do_search_q'>#xowiki.search#</label><input id='do_search_q' name='q' type='text'><input type="hidden" name="search_package_id" value="@package_id@"><if @::__csrf_token@ defined><input type="hidden" name="__csrf_token" value="@::__csrf_token;literal@"></if></div></form>
</div>
</div>
<div style="float:left; width: 25%; font-size: 85%;
background: url(/resources/xowiki/bw-shadow.png) no-repeat bottom right;
margin-left: 6px; margin-top: 6px; padding: 0px;
">
<div style="position:relative; right:6px; bottom:6px; border: 1px solid #a9a9a9; padding: 5px 5px; background: #f8f8f8;">
<include src="/packages/xowiki/www/portlets/include" &__including_page=page
portlet="categories -open_page [list @name@] -decoration plain">
</div></div>
<div style="float:right; width: 70%;">
@top_includelets;noquote@
<if @body.menubarHTML@ not nil><div class='visual-clear'><!-- --></div>@body.menubarHTML;noquote@</if>
<if @page_context@ not nil><h1>@body.title@ (@page_context@)</h1></if>
<else><h1>@body.title@</h1></else>
<if @folderhtml@ not nil>
<div class='folders' style=''>@folderhtml;noquote@</div>
<div class='content-with-folders'>@content;noquote@</div>
</if>
<else>@content;noquote@</else>
</div>
@footer;noquote@
</div> <!-- class='xowiki-content' -->
<!-- Generated by ::xowiki::ADP_Generator on Sun Aug 06 12:23:50 +0200 2017 -->
<master>
<property name="context">@context;literal@</property>
<if @item_id@ not nil><property name="displayed_object_id">@item_id;literal@</property></if>
<property name="&body">body</property>
<property name="&doc">doc</property>
<property name="head">
<link rel='stylesheet' href='/resources/xowiki/cattree.css' media='all' >
<link rel='stylesheet' href='/resources/calendar/calendar.css' media='all' >
<script language='javascript' src='/resources/acs-templating/mktree.js' async type='text/javascript'></script>
@header_stuff;literal@</property>
<!-- The following DIV is needed for overlib to function! -->
<div id="overDiv" style="position:absolute; visibility:hidden; z-index:1000;"></div>
<div class='xowiki-content'>
<%
if {$::::xowiki::search_mounted_p} {
template::add_event_listener -id wiki-menu-do-search-control -script {
document.getElementById('do_search').style.display = 'inline';
document.getElementById('do_search_q').focus();
}
}
%>
<div id='wikicmds'>
<if @view_link@ not nil><a href="@view_link@" accesskey='v' title='#xowiki.view_title#'>#xowiki.view#</a> &middot; </if>
<if @edit_link@ not nil><a href="@edit_link@" accesskey='e' title='#xowiki.edit_title#'>#xowiki.edit#</a> &middot; </if>
<if @rev_link@ not nil><a href="@rev_link@" accesskey='r' title='#xowiki.revisions_title#'>#xotcl-core.revisions#</a> &middot; </if>
<if @new_link@ not nil><a href="@new_link@" accesskey='n' title='#xowiki.new_title#'>#xowiki.new_page#</a> &middot; </if>
<if @delete_link@ not nil><a href="@delete_link@" accesskey='d' title='#xowiki.delete_title#'>#xowiki.delete#</a> &middot; </if>
<if @admin_link@ not nil><a href="@admin_link@" accesskey='a' title='#xowiki.admin_title#'>#xowiki.admin#</a> &middot; </if>
<if @notification_subscribe_link@ not nil><a href='/notifications/manage' title='#xowiki.notifications_title#'>#xowiki.notifications#</a>
<a href="@notification_subscribe_link@" class="notification-image-button">&nbsp;</a>&middot; </if>
<if @::xowiki::search_mounted_p@ true><a href='#' id='wiki-menu-do-search-control' title='#xowiki.search_title#'>#xowiki.search#</a> &middot; </if>
<if @index_link@ not nil><a href="@index_link@" accesskey='i' title='#xowiki.index_title#'>#xowiki.index#</a></if>
<div id='do_search' style='display: none'>
<form action='/search/search'><div><label for='do_search_q'>#xowiki.search#</label><input id='do_search_q' name='q' type='text'><input type="hidden" name="search_package_id" value="@package_id@"><if @::__csrf_token@ defined><input type="hidden" name="__csrf_token" value="@::__csrf_token;literal@"></if></div></form>
</div>
</div>
<div style="float:left; width: 25%; font-size: 85%;
background: url(/resources/xowiki/bw-shadow.png) no-repeat bottom right;
margin-left: 6px; margin-top: 6px; padding: 0px;
">
<div style="position:relative; right:6px; bottom:6px; border: 1px solid #a9a9a9; padding: 5px 5px; background: #f8f8f8">
<include src="/packages/xowiki/www/portlets/include" &__including_page=page
portlet="categories -open_page [list @name@] -decoration plain">
</div></div>
<div style="float:right; width: 70%;">
<style type='text/css'>
table.mini-calendar {width: 200px ! important;}
#sidebar {min-width: 220px ! important; top: 0px; overflow: visible;}
</style>
<div style='float: left; width: 62%'>
@top_includelets;noquote@
<if @body.menubarHTML@ not nil><div class='visual-clear'><!-- --></div>@body.menubarHTML;noquote@</if>
<if @page_context@ not nil><h1>@body.title@ (@page_context@)</h1></if>
<else><h1>@body.title@</h1></else>
<if @folderhtml@ not nil>
<div class='folders' style=''>@folderhtml;noquote@</div>
<div class='content-with-folders'>@content;noquote@</div>
</if>
<else>@content;noquote@</else>
</div> <!-- float left -->
<div id='sidebar' class='column'>
<div style="background: url(/resources/xowiki/bw-shadow.png) no-repeat bottom right;
margin-left: 6px; margin-top: 6px; padding: 0px;
">
<div style="position:relative; right:6px; bottom:6px; border: 1px solid #a9a9a9; padding: 5px 5px; background: #f8f8f8">
<include src="/packages/xowiki/www/portlets/weblog-mini-calendar" &__including_page=page
summary="0" noparens="0">
<include src="/packages/xowiki/www/portlets/include" &__including_page=page
portlet="tags -decoration plain">
<include src="/packages/xowiki/www/portlets/include" &__including_page=page
portlet="tags -popular 1 -limit 30 -decoration plain">
<hr>
<include src="/packages/xowiki/www/portlets/include" &__including_page=page
portlet="presence -interval {30 minutes} -decoration plain">
<hr>
<a href="/xowiki/contributors" title="Show People contributing to this XoWiki Instance">Contributors</a>
</div>
</div>
</div> <!-- sidebar -->
</div> <!-- right 70% -->
@footer;noquote@
</div> <!-- class='xowiki-content' -->
<!-- Generated by ::xowiki::ADP_Generator on Sun Aug 06 12:23:50 +0200 2017 -->
<master>
<property name="context">@context;literal@</property>
<if @item_id@ not nil><property name="displayed_object_id">@item_id;literal@</property></if>
<property name="&body">body</property>
<property name="&doc">doc</property>
<property name="head">
<style type='text/css'>
blockquote {font-size:inherit;}
div.xowiki-content {font-size:14px;}
div.xowiki-content h1,h2,h3 {margin-bottom:10px;margin-top:20px;}
div.xowiki-content h1 {border-bottom: none;font-weight:500;color:#cf8a00 !important;}
div.xowiki-content h2 {border-bottom: none;font-weight:500;}
div.xowiki-content h3 {font-weight:500;}
div.xowiki-content pre, div.code {font-size:100%;}
div.xowiki-content .item-footer {border-top:none;}
</style>
<link rel='stylesheet' href='/resources/xowiki/cattree.css' media='all' >
<link rel='stylesheet' href='/resources/calendar/calendar.css' media='all' >
<script language='javascript' src='/resources/acs-templating/mktree.js' async type='text/javascript'></script>
@header_stuff;literal@</property>
<!-- The following DIV is needed for overlib to function! -->
<div id="overDiv" style="position:absolute; visibility:hidden; z-index:1000;"></div>
<div class='xowiki-content'>
<%
if {$::::xowiki::search_mounted_p} {
template::add_event_listener -id wiki-menu-do-search-control -script {
document.getElementById('do_search').style.display = 'inline';
document.getElementById('do_search_q').focus();
}
}
%>
<div id='wikicmds'>
<if @view_link@ not nil><a href="@view_link@" accesskey='v' title='#xowiki.view_title#'>#xowiki.view#</a> &middot; </if>
<if @edit_link@ not nil><a href="@edit_link@" accesskey='e' title='#xowiki.edit_title#'>#xowiki.edit#</a> &middot; </if>
<if @rev_link@ not nil><a href="@rev_link@" accesskey='r' title='#xowiki.revisions_title#'>#xotcl-core.revisions#</a> &middot; </if>
<if @new_link@ not nil><a href="@new_link@" accesskey='n' title='#xowiki.new_title#'>#xowiki.new_page#</a> &middot; </if>
<if @delete_link@ not nil><a href="@delete_link@" accesskey='d' title='#xowiki.delete_title#'>#xowiki.delete#</a> &middot; </if>
<if @admin_link@ not nil><a href="@admin_link@" accesskey='a' title='#xowiki.admin_title#'>#xowiki.admin#</a> &middot; </if>
<if @notification_subscribe_link@ not nil><a href='/notifications/manage' title='#xowiki.notifications_title#'>#xowiki.notifications#</a>
<a href="@notification_subscribe_link@" class="notification-image-button">&nbsp;</a>&middot; </if>
<if @::xowiki::search_mounted_p@ true><a href='#' id='wiki-menu-do-search-control' title='#xowiki.search_title#'>#xowiki.search#</a> &middot; </if>
<if @index_link@ not nil><a href="@index_link@" accesskey='i' title='#xowiki.index_title#'>#xowiki.index#</a></if>
<div id='do_search' style='display: none'>
<form action='/search/search'><div><label for='do_search_q'>#xowiki.search#</label><input id='do_search_q' name='q' type='text'><input type="hidden" name="search_package_id" value="@package_id@"><if @::__csrf_token@ defined><input type="hidden" name="__csrf_token" value="@::__csrf_token;literal@"></if></div></form>
</div>
</div>
<div class="row">
<div class="col-md-9 col-sm-8 col-xs-12 col-md-push-3 col-sm-push-4"> <!-- content -->
@top_includelets;noquote@
<if @body.menubarHTML@ not nil><div class='visual-clear'><!-- --></div>@body.menubarHTML;noquote@</if>
<if @page_context@ not nil><h1>@body.title@ (@page_context@)</h1></if>
<else><h1>@body.title@</h1></else>
<if @folderhtml@ not nil>
<div class='folders' style=''>@folderhtml;noquote@</div>
<div class='content-with-folders'>@content;noquote@</div>
</if>
<else>@content;noquote@</else>
</div> <!-- content -->
<div class="col-md-3 col-sm-4 col-xs-12 home-left col-md-pull-9 col-sm-pull-8" style="font-size:small;"> <!-- left panel in full view -->
<div class="thumbnail">
<div class="caption">
<include src="/packages/xowiki/www/portlets/weblog-mini-calendar" &__including_page=page summary="0" noparens="0">
</div>
</div>
<div class="thumbnail">
<div class="caption">
<include src="/packages/xowiki/www/portlets/include" &__including_page=page portlet="tags -decoration plain">
</div>
</div>
<div class="thumbnail">
<div class="caption">
<include src="/packages/xowiki/www/portlets/include" &__including_page=page portlet="tags -popular 1 -limit 30 -decoration plain">
</div>
</div>
<div class="thumbnail">
<div class="caption">
<include src="/packages/xowiki/www/portlets/include" &__including_page=page portlet="presence -interval {30 minutes} -decoration plain">
<a href="/xowiki/contributors" title="Show People contributing to this XoWiki Instance">Contributors</a>
</div>
</div> <!-- background -->
<div class="thumbnail">
<div class="caption">
<include src="/packages/xowiki/www/portlets/include" &__including_page=page portlet="categories -open_page [list @name@] -decoration plain">
</div>
</div> <!-- background -->
</div>
</div>
<div class="row">
<div class="col-xs-12">
<hr>
@footer;noquote@
</div>
</div>
</div> <!-- class='xowiki-content' -->
<!-- Generated by ::xowiki::ADP_Generator on Sun Aug 06 12:23:50 +0200 2017 -->
<master>
<property name="context">@context;literal@</property>
<if @item_id@ not nil><property name="displayed_object_id">@item_id;literal@</property></if>
<property name="&body">body</property>
<property name="&doc">doc</property>
<property name="head">
<style type='text/css'>
table.mini-calendar {width: 227px ! important;font-size: 80%;}
div.tags h3 {font-size: 80%;}
div.tags blockquote {font-size: 80%; margin-left: 20px; margin-right: 20px;}
</style>
<link rel='stylesheet' href='/resources/xowiki/cattree.css' media='all' >
<link rel='stylesheet' href='/resources/calendar/calendar.css' media='all' >
<script language='javascript' src='/resources/acs-templating/mktree.js' async type='text/javascript'></script>
@header_stuff;literal@</property>
<!-- The following DIV is needed for overlib to function! -->
<div id="overDiv" style="position:absolute; visibility:hidden; z-index:1000;"></div>
<div class='xowiki-content'>
<%
if {$::::xowiki::search_mounted_p} {
template::add_event_listener -id wiki-menu-do-search-control -script {
document.getElementById('do_search').style.display = 'inline';
document.getElementById('do_search_q').focus();
}
}
%>
<div id='wikicmds'>
<if @view_link@ not nil><a href="@view_link@" accesskey='v' title='#xowiki.view_title#'>#xowiki.view#</a> &middot; </if>
<if @edit_link@ not nil><a href="@edit_link@" accesskey='e' title='#xowiki.edit_title#'>#xowiki.edit#</a> &middot; </if>
<if @rev_link@ not nil><a href="@rev_link@" accesskey='r' title='#xowiki.revisions_title#'>#xotcl-core.revisions#</a> &middot; </if>
<if @new_link@ not nil><a href="@new_link@" accesskey='n' title='#xowiki.new_title#'>#xowiki.new_page#</a> &middot; </if>
<if @delete_link@ not nil><a href="@delete_link@" accesskey='d' title='#xowiki.delete_title#'>#xowiki.delete#</a> &middot; </if>
<if @admin_link@ not nil><a href="@admin_link@" accesskey='a' title='#xowiki.admin_title#'>#xowiki.admin#</a> &middot; </if>
<if @notification_subscribe_link@ not nil><a href='/notifications/manage' title='#xowiki.notifications_title#'>#xowiki.notifications#</a>
<a href="@notification_subscribe_link@" class="notification-image-button">&nbsp;</a>&middot; </if>
<if @::xowiki::search_mounted_p@ true><a href='#' id='wiki-menu-do-search-control' title='#xowiki.search_title#'>#xowiki.search#</a> &middot; </if>
<if @index_link@ not nil><a href="@index_link@" accesskey='i' title='#xowiki.index_title#'>#xowiki.index#</a></if>
<div id='do_search' style='display: none'>
<form action='/search/search'><div><label for='do_search_q'>#xowiki.search#</label><input id='do_search_q' name='q' type='text'><input type="hidden" name="search_package_id" value="@package_id@"><if @::__csrf_token@ defined><input type="hidden" name="__csrf_token" value="@::__csrf_token;literal@"></if></div></form>
</div>
</div>
<div style="width: 100%"> <!-- contentwrap -->
<div style="float:left; width: 245px; font-size: 85%;">
<div style="background: url(/resources/xowiki/bw-shadow.png) no-repeat bottom right;
margin-left: 6px; margin-top: 6px; padding: 0px;
">
<div style="position:relative; right:6px; bottom:6px; border: 1px solid #a9a9a9; padding: 5px 5px; background: #f8f8f8">
<include src="/packages/xowiki/www/portlets/weblog-mini-calendar" &__including_page=page
summary="0" noparens="0">
<include src="/packages/xowiki/www/portlets/include" &__including_page=page
portlet="tags -decoration plain">
<include src="/packages/xowiki/www/portlets/include" &__including_page=page
portlet="tags -popular 1 -limit 30 -decoration plain">
<hr>
<include src="/packages/xowiki/www/portlets/include" &__including_page=page
portlet="presence -interval {30 minutes} -decoration plain">
<hr>
<a href="contributors" title="Show People contributing to this XoWiki Instance">Contributors</a>
</div>
</div> <!-- background -->
<div style="background: url(/resources/xowiki/bw-shadow.png) no-repeat bottom right;
margin-left: 6px; margin-top: 6px; padding: 0px;
">
<div style="position:relative; right:6px; bottom:6px; border: 1px solid #a9a9a9; padding: 5px 5px; background: #f8f8f8">
<include src="/packages/xowiki/www/portlets/include" &__including_page=page
portlet="categories -open_page [list @name@] -decoration plain">
</div></div> <!-- background -->
</div>
<div style="margin-left: 260px;"> <!-- content -->
@top_includelets;noquote@
<if @body.menubarHTML@ not nil><div class='visual-clear'><!-- --></div>@body.menubarHTML;noquote@</if>
<if @page_context@ not nil><h1>@body.title@ (@page_context@)</h1></if>
<else><h1>@body.title@</h1></else>
<if @folderhtml@ not nil>
<div class='folders' style=''>@folderhtml;noquote@</div>
<div class='content-with-folders'>@content;noquote@</div>
</if>
<else>@content;noquote@</else>
</div> <!-- content -->
</div> <!-- contentwrap -->
@footer;noquote@
</div> <!-- class='xowiki-content' -->
<master>
<property name="doc(title)">@title;literal@</property>
<property name="&doc">property_doc</property>
<property name="header">@title;literal@</property>
<property name="context">@context;literal@</property>
<property name="displayed_object_id">@page_id;literal@</property>
@content;noquote@
<if @gc_comments@ not nil>
<p>#file-storage.lt_Comments_on_this_file#
<ul>@gc_comments;noquote@</ul></p>
</if>
<if @gc_link@ not nil>
<p>@gc_link;noquote@</p>
</if>
<!-- Generated by ::xowiki::ADP_Generator on Sun Aug 06 12:23:50 +0200 2017 -->
<master>
<property name="context">@context;literal@</property>
<if @item_id@ not nil><property name="displayed_object_id">@item_id;literal@</property></if>
<property name="&body">body</property>
<property name="&doc">doc</property>
<property name="head">
@header_stuff;literal@</property>
<!-- The following DIV is needed for overlib to function! -->
<div id="overDiv" style="position:absolute; visibility:hidden; z-index:1000;"></div>
<div class='xowiki-content'>
<%
if {$book_prev_link ne ""} {
template::add_event_listener -id bookNavPrev.a -preventdefault=false -script [subst {TocTree.getPage("$book_prev_link");}]
}
if {$book_next_link ne ""} {
template::add_event_listener -id bookNavNext.a -preventdefault=false -script [subst {TocTree.getPage("$book_next_link");}]
}
%> <div style="float:left; width: 25%; font-size: .8em;
background: url(/resources/xowiki/bw-shadow.png) no-repeat bottom right;
margin-left: 6px; margin-top: 6px; padding: 0px;
">
<div style="position:relative; right:6px; bottom:6px; border: 1px solid #a9a9a9; padding: 5px 5px; background: #f8f8f8">
@toc;noquote@
</div></div>
<div style="float:right; width: 70%;">
<if @book_prev_link@ not nil or @book_relpos@ not nil or @book_next_link@ not nil>
<div class="book-navigation" style="background: #fff; border: 1px dotted #000; padding-top:3px; margin-bottom:0.5em;">
<table width='100%'
summary='This table provides a progress bar and buttons for next and previous pages'>
<colgroup><col width='20'><col><col width='20'>
</colgroup>
<tr>
<td>
<if @book_prev_link@ not nil>
<a href="@book_prev_link@" accesskey='p' id="bookNavPrev.a">
<img alt='Previous' src='/resources/xowiki/previous.png' width='15' id="bookNavPrev.img"></a>
</if>
<else>
<a href="" accesskey='p' id="bookNavPrev.a">
<img alt='No Previous' src='/resources/xowiki/previous-end.png' width='15' id="bookNavPrev.img"></a>
</else>
</td>
<td>
<if @book_relpos@ not nil>
<table width='100%'>
<colgroup><col></colgroup>
<tr><td style='font-size: 75%'><div style='width: @book_relpos@;' id='bookNavBar'></div></td></tr>
<tr><td style='font-size: 75%; text-align:center;'><span id='bookNavRelPosText'>@book_relpos@</span></td></tr>
</table>
</if>
</td>
<td id="bookNavNext">
<if @book_next_link@ not nil>
<a href="@book_next_link@" accesskey='n' id="bookNavNext.a">
<img alt='Next' src='/resources/xowiki/next.png' width='15' id="bookNavNext.img"></a>
</if>
<else>
<a href="" accesskey='n' id="bookNavNext.a">
<img alt='No Next' src='/resources/xowiki/next-end.png' width='15' id="bookNavNext.img"></a>
</else>
</td>
</tr>
</table>
</div>
</if>
<div id='book-page'>
<include src="view-page" &="package_id"
&="references" &="name" &="title" &="item_id" &="page" &="context" &="header_stuff" &="return_url"
&="content" &="references" &="lang_links" &="package_id"
&="rev_link" &="edit_link" &="delete_link" &="new_link" &="admin_link" &="index_link"
&="tags" &="no_tags" &="tags_with_links" &="save_tag_link" &="popular_tags_link"
&="per_object_categories_with_links"
&="digg_link" &="delicious_link" &="my_yahoo_link"
&="gc_link" &="gc_comments" &="notification_subscribe_link" &="notification_image"
&="top_includelets" &="folderhtml" &="page" &="doc" &="body">
</div>
</div>
@footer;noquote@
</div> <!-- class='xowiki-content' -->
set title [$package_id get_parameter PackageTitle [$package_id instance_name]]
#set toc [$page include [list toc -ajax 0 -open_page $name -decoration plain -remove_levels 0]]
set toc [$page include [list toc -style list -open_page $name -expand_all 1 -decoration plain]]
set i [$page set __last_includelet]
#$package_id log "--last includelet = $i, class=[$i info class] [$page exists __is_book_page]"
set book_prev_link ""
set book_next_link ""
# prevent recursive books
if {$i ne "" && ![$page exists __is_book_page]} {
set p [$i position]
set count [$i count]
if {$count > 0} {
set book_relpos [format %.2f%% [expr {100.0 * $p / $count}]]
if {$p>1} {set book_prev_link [$package_id pretty_link -parent_id [$i parent_id] [$i page_name [expr {$p - 1}]]]}
if {$p<$count} {set book_next_link [$package_id pretty_link -parent_id [$i parent_id] [$i page_name [expr {$p + 1}]]]}
set page_title "<h2>[$i current] $title</h2>"
} else {
set book_relpos 0.0%
set page_title "<h2>$title</h2>"
}
}
set header_stuff [::xo::Page header_stuff]
# Local variables:
# mode: tcl
# tcl-indent-level: 2
# indent-tabs-mode: nil
# End:
<!-- Generated by ::xowiki::ADP_Generator on Sun Aug 06 12:23:50 +0200 2017 -->
<master>
<property name="context">@context;literal@</property>
<if @item_id@ not nil><property name="displayed_object_id">@item_id;literal@</property></if>
<property name="&body">body</property>
<property name="&doc">doc</property>
<property name="head">
@header_stuff;literal@</property>
<!-- The following DIV is needed for overlib to function! -->
<div id="overDiv" style="position:absolute; visibility:hidden; z-index:1000;"></div>
<div class='xowiki-content'>
<%
if {$book_prev_link ne ""} {
template::add_event_listener -id bookNavPrev.a -preventdefault=false -script [subst {TocTree.getPage("$book_prev_link");}]
}
if {$book_next_link ne ""} {
template::add_event_listener -id bookNavNext.a -preventdefault=false -script [subst {TocTree.getPage("$book_next_link");}]
}
%> <div style="float:left; width: 25%; font-size: .8em;
background: url(/resources/xowiki/bw-shadow.png) no-repeat bottom right;
margin-left: 6px; margin-top: 6px; padding: 0px;
">
<div style="position:relative; right:6px; bottom:6px; border: 1px solid #a9a9a9; padding: 5px 5px; background: #f8f8f8">
@toc;noquote@
</div></div>
<div style="float:right; width: 70%;">
<if @book_prev_link@ not nil or @book_relpos@ not nil or @book_next_link@ not nil>
<div class="book-navigation" style="background: #fff; border: 1px dotted #000; padding-top:3px; margin-bottom:0.5em;">
<table width='100%'
summary='This table provides a progress bar and buttons for next and previous pages'>
<colgroup><col width='20'><col><col width='20'>
</colgroup>
<tr>
<td>
<if @book_prev_link@ not nil>
<a href="@book_prev_link@" accesskey='p' id="bookNavPrev.a">
<img alt='Previous' src='/resources/xowiki/previous.png' width='15' id="bookNavPrev.img"></a>
</if>
<else>
<a href="" accesskey='p' id="bookNavPrev.a">
<img alt='No Previous' src='/resources/xowiki/previous-end.png' width='15' id="bookNavPrev.img"></a>
</else>
</td>
<td>
<if @book_relpos@ not nil>
<table width='100%'>
<colgroup><col></colgroup>
<tr><td style='font-size: 75%'><div style='width: @book_relpos@;' id='bookNavBar'></div></td></tr>
<tr><td style='font-size: 75%; text-align:center;'><span id='bookNavRelPosText'>@book_relpos@</span></td></tr>
</table>
</if>
</td>
<td id="bookNavNext">
<if @book_next_link@ not nil>
<a href="@book_next_link@" accesskey='n' id="bookNavNext.a">
<img alt='Next' src='/resources/xowiki/next.png' width='15' id="bookNavNext.img"></a>
</if>
<else>
<a href="" accesskey='n' id="bookNavNext.a">
<img alt='No Next' src='/resources/xowiki/next-end.png' width='15' id="bookNavNext.img"></a>
</else>
</td>
</tr>
</table>
</div>
</if>
<div id='book-page'>
<include src="view-page" &="package_id"
&="references" &="name" &="title" &="item_id" &="page" &="context" &="header_stuff" &="return_url"
&="content" &="references" &="lang_links" &="package_id"
&="rev_link" &="edit_link" &="delete_link" &="new_link" &="admin_link" &="index_link"
&="tags" &="no_tags" &="tags_with_links" &="save_tag_link" &="popular_tags_link"
&="per_object_categories_with_links"
&="digg_link" &="delicious_link" &="my_yahoo_link"
&="gc_link" &="gc_comments" &="notification_subscribe_link" &="notification_image"
&="top_includelets" &="folderhtml" &="page" &="doc" &="body">
</div>
</div>
@footer;noquote@
</div> <!-- class='xowiki-content' -->
set title [$package_id get_parameter PackageTitle [$package_id instance_name]]
set toc [$page include [list toc -open_page $name -decoration plain -remove_levels 1]]
set i [$page set __last_includelet]
#$package_id log "--last includelet = $i, class=[$i info class] [$page exists __is_book_page]"
set book_prev_link ""
set book_next_link ""
# prevent recursive books
if {$i ne "" && ![$page exists __is_book_page]} {
set p [$i position]
set count [$i count]
if {$count > 0} {
set book_relpos [format %.2f%% [expr {100.0 * $p / $count}]]
if {$p>1} {set book_prev_link [$package_id pretty_link -parent_id [$i parent_id] [$i page_name [expr {$p - 1}]]]}
if {$p<$count} {set book_next_link [$package_id pretty_link -parent_id [$i parent_id] [$i page_name [expr {$p + 1}]]]}
set page_title "<h2>[$i current] $title</h2>"
} else {
set book_relpos 0.0%
set page_title "<h2>$title</h2>"
}
}
# Local variables:
# mode: tcl
# tcl-indent-level: 2
# indent-tabs-mode: nil
# End:
<!-- Generated by ::xowiki::ADP_Generator on Sun Aug 06 12:23:50 +0200 2017 -->
<master>
<property name="context">@context;literal@</property>
<if @item_id@ not nil><property name="displayed_object_id">@item_id;literal@</property></if>
<property name="&body">body</property>
<property name="&doc">doc</property>
<property name="head">@header_stuff;literal@</property>
<!-- The following DIV is needed for overlib to function! -->
<div id="overDiv" style="position:absolute; visibility:hidden; z-index:1000;"></div>
<div class='xowiki-content'>
<%
if {$::::xowiki::search_mounted_p} {
template::add_event_listener -id wiki-menu-do-search-control -script {
document.getElementById('do_search').style.display = 'inline';
document.getElementById('do_search_q').focus();
}
}
%>
<div id='wikicmds'>
<if @view_link@ not nil><a href="@view_link@" accesskey='v' title='#xowiki.view_title#'>#xowiki.view#</a> &middot; </if>
<if @edit_link@ not nil><a href="@edit_link@" accesskey='e' title='#xowiki.edit_title#'>#xowiki.edit#</a> &middot; </if>
<if @rev_link@ not nil><a href="@rev_link@" accesskey='r' title='#xowiki.revisions_title#'>#xotcl-core.revisions#</a> &middot; </if>
<if @new_link@ not nil><a href="@new_link@" accesskey='n' title='#xowiki.new_title#'>#xowiki.new_page#</a> &middot; </if>
<if @delete_link@ not nil><a href="@delete_link@" accesskey='d' title='#xowiki.delete_title#'>#xowiki.delete#</a> &middot; </if>
<if @admin_link@ not nil><a href="@admin_link@" accesskey='a' title='#xowiki.admin_title#'>#xowiki.admin#</a> &middot; </if>
<if @notification_subscribe_link@ not nil><a href='/notifications/manage' title='#xowiki.notifications_title#'>#xowiki.notifications#</a>
<a href="@notification_subscribe_link@" class="notification-image-button">&nbsp;</a>&middot; </if>
<if @::xowiki::search_mounted_p@ true><a href='#' id='wiki-menu-do-search-control' title='#xowiki.search_title#'>#xowiki.search#</a> &middot; </if>
<if @index_link@ not nil><a href="@index_link@" accesskey='i' title='#xowiki.index_title#'>#xowiki.index#</a></if>
<div id='do_search' style='display: none'>
<form action='/search/search'><div><label for='do_search_q'>#xowiki.search#</label><input id='do_search_q' name='q' type='text'><input type="hidden" name="search_package_id" value="@package_id@"><if @::__csrf_token@ defined><input type="hidden" name="__csrf_token" value="@::__csrf_token;literal@"></if></div></form>
</div>
</div>
@top_includelets;noquote@
<if @body.menubarHTML@ not nil><div class='visual-clear'><!-- --></div>@body.menubarHTML;noquote@</if>
<if @page_context@ not nil><h1>@body.title@ (@page_context@)</h1></if>
<else><h1>@body.title@</h1></else>
<if @folderhtml@ not nil>
<div class='folders' style=''>@folderhtml;noquote@</div>
<div class='content-with-folders'>@content;noquote@</div>
</if>
<else>@content;noquote@</else>
@footer;noquote@
</div> <!-- class='xowiki-content' -->
<!-- Generated by ::xowiki::ADP_Generator on Sun Aug 06 12:23:50 +0200 2017 -->
<!-- The following DIV is needed for overlib to function! -->
<div id="overDiv" style="position:absolute; visibility:hidden; z-index:1000;"></div>
<div class='xowiki-content'>
<%
if {$::::xowiki::search_mounted_p} {
template::add_event_listener -id wiki-menu-do-search-control -script {
document.getElementById('do_search').style.display = 'inline';
document.getElementById('do_search_q').focus();
}
}
%>
<div id='wikicmds'>
<if @view_link@ not nil><a href="@view_link@" accesskey='v' title='#xowiki.view_title#'>#xowiki.view#</a> &middot; </if>
<if @edit_link@ not nil><a href="@edit_link@" accesskey='e' title='#xowiki.edit_title#'>#xowiki.edit#</a> &middot; </if>
<if @rev_link@ not nil><a href="@rev_link@" accesskey='r' title='#xowiki.revisions_title#'>#xotcl-core.revisions#</a> &middot; </if>
<if @new_link@ not nil><a href="@new_link@" accesskey='n' title='#xowiki.new_title#'>#xowiki.new_page#</a> &middot; </if>
<if @delete_link@ not nil><a href="@delete_link@" accesskey='d' title='#xowiki.delete_title#'>#xowiki.delete#</a> &middot; </if>
<if @admin_link@ not nil><a href="@admin_link@" accesskey='a' title='#xowiki.admin_title#'>#xowiki.admin#</a> &middot; </if>
<if @notification_subscribe_link@ not nil><a href='/notifications/manage' title='#xowiki.notifications_title#'>#xowiki.notifications#</a>
<a href="@notification_subscribe_link@" class="notification-image-button">&nbsp;</a>&middot; </if>
<if @::xowiki::search_mounted_p@ true><a href='#' id='wiki-menu-do-search-control' title='#xowiki.search_title#'>#xowiki.search#</a> &middot; </if>
<if @index_link@ not nil><a href="@index_link@" accesskey='i' title='#xowiki.index_title#'>#xowiki.index#</a></if>
<div id='do_search' style='display: none'>
<form action='/search/search'><div><label for='do_search_q'>#xowiki.search#</label><input id='do_search_q' name='q' type='text'><input type="hidden" name="search_package_id" value="@package_id@"><if @::__csrf_token@ defined><input type="hidden" name="__csrf_token" value="@::__csrf_token;literal@"></if></div></form>
</div>
</div>
@top_includelets;noquote@
<if @body.menubarHTML@ not nil><div class='visual-clear'><!-- --></div>@body.menubarHTML;noquote@</if>
<if @page_context@ not nil><h1>@body.title@ (@page_context@)</h1></if>
<else><h1>@body.title@</h1></else>
<if @folderhtml@ not nil>
<div class='folders' style=''>@folderhtml;noquote@</div>
<div class='content-with-folders'>@content;noquote@</div>
</if>
<else>@content;noquote@</else>
</div> <!-- class='xowiki-content' -->
<html>
<head>
<title>XoWiki mobile view</title>
@header_stuff;literal@
</head>
<body>
<div class='xowiki-content'>
@content;noquote@
</div> <!-- class='xowiki-content' -->
</body>
\ No newline at end of file
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">#acs-kernel.common_Close#</span></button>
<h4 class="modal-title">@title@</h4>
</div>
<div class="modal-body">@content;noquote@</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">#acs-kernel.common_Close#</button>
</div>
</div><!-- /.modal-content -->
<%
template::add_body_script -script {
document.getElementById('wiki-menu-do-search-control').addEventListener('click', function (event) {
event.preventDefault();
document.getElementById('do_search').style.display = 'inline';
document.getElementById('do_search_q').focus();
}, false);
}
%>
<div>
<div style='top: -30px ! important; margin-bottom: 25px ! important;' id='wikicmds'>
<div id='wikicmds'>
<if @view_link@ not nil><a href="@view_link@" accesskey='v' title='#xowiki.view_title#'>#xowiki.view#</a> &middot; </if>
<if @edit_link@ not nil><a href="@edit_link@" accesskey='e' title='#xowiki.edit_title#'>#xowiki.edit#</a> &middot; </if>
<if @rev_link@ not nil><a href="@rev_link@" accesskey='r' title='#xowiki.revisions_title#'>#xotcl-core.revisions#</a> &middot; </if>
<if @new_link@ not nil><a href="@new_link@" accesskey='n' title='#xowiki.new_title#'>#xowiki.new_page#</a> &middot; </if>
<if @delete_link@ not nil><a href="@delete_link@" accesskey='d' title='#xowiki.delete_title#'>#xowiki.delete#</a> &middot; </if>
<if @admin_link@ not nil><a href="@admin_link@" accesskey='a' title='#xowiki.admin_title#'>#xowiki.admin#</a> &middot; </if>
<if @notification_subscribe_link@ not nil><a href='/notifications/manage' title='#xowiki.notifications_title#'>#xowiki.notifications#</a>
<a href="@notification_subscribe_link@" class="notification-image-button">&nbsp;</a> &middot; </if>
<a href='#' id='wiki-menu-do-search-control' title='#xowiki.search_title#'>#xowiki.search#</a> &middot;
<if @index_link@ not nil><a href="@index_link@" accesskey='i' title='#xowiki.index_title#'>#xowiki.index#</a></if>
<div id='do_search' style='display: none'>
<form action='/search/search'><div><label for='do_search_q'>#xowiki.search#</label><input id='do_search_q' name='q' type='text'><input type="hidden" name="search_package_id" value="@package_id@"><if @::__csrf_token@ defined><input type="hidden" name="__csrf_token" value="@::__csrf_token;literal@"></if></div></form>
</div>
</div>
</div>
<!-- @top_includelets;noquote@ -->
<if @page_title@ not nil>
<h2>@page_title@</h2>
</if>
@content;noquote@
</div>
set page_title "[$page set page_order] [$page set title]"
# Local variables:
# mode: tcl
# tcl-indent-level: 2
# indent-tabs-mode: nil
# End:
<!-- Generated by ::xowiki::ADP_Generator on Sun Aug 06 12:23:50 +0200 2017 -->
<!-- The following DIV is needed for overlib to function! -->
<div id="overDiv" style="position:absolute; visibility:hidden; z-index:1000;"></div>
<div class='xowiki-content'>
@top_includelets;noquote@
<if @body.menubarHTML@ not nil><div class='visual-clear'><!-- --></div>@body.menubarHTML;noquote@</if>
<if @page_context@ not nil><h1>@body.title@ (@page_context@)</h1></if>
<else><h1>@body.title@</h1></else>
<if @folderhtml@ not nil>
<div class='folders' style=''>@folderhtml;noquote@</div>
<div class='content-with-folders'>@content;noquote@</div>
</if>
<else>@content;noquote@</else>
</div> <!-- class='xowiki-content' -->
This diff is collapsed.
This diff is collapsed.
......@@ -44,7 +44,7 @@ namespace eval ::xowiki {
#my log "chat_id=$chat_id, path=$path"
if {$path eq ""} {
set path [lindex [site_node::get_url_from_object_id -object_id $package_id] 0]
} elseif {[string range $path end end] ne "/"} {
} elseif {[string index $path end] ne "/"} {
append path /
}
......@@ -77,7 +77,7 @@ namespace eval ::xowiki {
set mode polling
#
# Check, whether we have the tcllibthread and a sufficiently new
# aolserver/naviserver supporting bgdelivery transfers.
# aolserver/NaviServer supporting bgdelivery transfers.
#
if {[info commands ::thread::mutex] ne "" &&
![catch {ns_conn contentsentlength}]} {
......@@ -119,7 +119,7 @@ namespace eval ::xowiki {
error "mode $mode unknown, valid are: polling, streaming and scripted-streaming"
}
}
set send_url ${path}ajax/chat?m=add_msg&$context&msg=
set send_url ${path}ajax/chat?m=add_msg&$context&msg=
if { ![file exists [acs_root_dir]/$jspath] } {
return -code error "File [acs_root_dir]/$jspath does not exist"
......@@ -140,13 +140,22 @@ namespace eval ::xowiki {
overflow:auto;
}
template::add_body_script -script [subst {document.getElementById('chatMsg').focus();}]
switch $mode {
polling {return "\
<script type='text/javascript' language='javascript'>
polling {
template::add_event_listener \
-id "messages-form" \
-event "submit" \
-script [subst {
chatSendMsg(\"$send_url\",chatReceiver);
}]
return "\
<script type='text/javascript' language='javascript' nonce='$::__csp_nonce'>
$js
setInterval('$get_update',5000)
</script>
<form action='#' onsubmit='chatSendMsg(\"$send_url\",chatReceiver); return false;'>
<form id='messages-form' action='#'>
<iframe name='ichat' id='ichat' frameborder='0' src='[ns_quotehtml $login_url]'
style='width:90%;' height='150'>
</iframe>
......@@ -159,13 +168,16 @@ namespace eval ::xowiki {
::xowiki::Chat create c1 -destroy_on_cleanup -chat_id $chat_id -session_id $session_id -mode $mode
set r [ns_urldecode [c1 get_all]]
regsub -all {<[/]?div[^>]*>} $r "" r
template::add_event_listener \
-id "messages-form" -event "submit" \
-script {chatSendMsg();}
return "\
<script type='text/javascript' language='javascript'>$js
<script type='text/javascript' language='javascript' nonce='$::__csp_nonce'>$js
var send_url = \"$send_url\";
chatSubscribe(\"$subscribe_url\");
</script>
<div id='messages' style='$style'>$r</div>
<form action='#' onsubmit='chatSendMsg(); return false;'>
<form id='messages-form' action='#'>
<input type='text' size='40' name='msg' id='chatMsg'>
</form>"
}
......@@ -175,16 +187,20 @@ namespace eval ::xowiki {
::xowiki::Chat create c1 -destroy_on_cleanup -chat_id $chat_id -session_id $session_id -mode $mode
set r [ns_urldecode [c1 get_all]]
regsub -all {<[/]?div[^>]*>} $r "" r
template::add_event_listener \
-id "messages-form" -event "submit" \
-script {chatSendMsg();}
return "\
<script type='text/javascript' language='javascript'>
<script type='text/javascript' language='javascript' nonce='$::__csp_nonce'>
$js
var send_url = \"$send_url\";
</script>
<div id='messages' style='$style'></style>
<div id='messages' style='$style'>
<iframe name='ichat' id='ichat' frameborder='0' src='[ns_quotehtml $subscribe_url]'
style='width:0px; height:0px; border: 0px'>
</iframe>
<form action='#' onsubmit='chatSendMsg(); return false;'>
</div>
<form id='messages-form' action='#'>
<input type='text' size='40' name='msg' id='chatMsg'>
</form>"
}
......
This diff is collapsed.
This diff is collapsed.
......@@ -355,7 +355,8 @@ namespace eval ::xowiki {
foreach item_id $item_ids {
ns_log notice "--exporting $item_id [$item_id name]"
ns_write "# exporting $item_id [$item_id name] [$item_id pretty_link]\n"
set pretty_link [expr {[$item_id package_id] ne "" ? [$item_id pretty_link] : "(not visible)"}]
ns_write "# exporting $item_id [$item_id name] $pretty_link\n"
if {[catch {set obj [$item_id marshall]} errorMsg]} {
ns_log error "Error while exporting $item_id [$item_id name]\n$errorMsg\n$::errorInfo"
} else {
......@@ -384,7 +385,7 @@ namespace eval ::xowiki {
file mkdir [my set tmpdir]
}
ArchiveFile instproc delete {} {
file delete -force [my set tmpdir]
file delete -force -- [my set tmpdir]
next
}
ArchiveFile instproc unpack {} {
......@@ -471,7 +472,7 @@ namespace eval ::xowiki {
-creation_user [::xo::cc user_id] \
-parent_id $parent_id \
-package_id $package_id \
-instance_attributes [list image $file_name]]
-instance_attributes [list image [list name $file_name]]]
$photo_object title $file_name
$photo_object publish_status "ready"
$photo_object save_new ;# to obtain item_id needed by the form-field
......
This diff is collapsed.
......@@ -98,7 +98,7 @@ namespace eval ::xowiki {
# recursive inclusion is happening. The included content is
# added to the html output only once, with a unique id, which
# can be referenced multiple times. The link is included for
# each occurance.
# each occurrence.
#
set item_id [my item_id]
set targetId [xowiki::Includelet html_id [my item_id]-$target]
......@@ -163,6 +163,7 @@ namespace eval ::xowiki {
-name [my name] \
-nls_language $nls_language]
}
if {[$page exists __unresolved_object_type]} {
# get the desired object_type for unresoved entries
set object_type [$page set __unresolved_object_type]
......@@ -177,7 +178,9 @@ namespace eval ::xowiki {
set object_type ::xowiki::Page
}
}
return [$page new_link -name [my name] -title [my label] -parent_id [my parent_id] \
return [$page new_link \
{*}[expr {[info exists object_type] ? [list -object_type $object_type] : {}}] \
-name [my name] -title [my label] -parent_id [my parent_id] \
-nls_language $nls_language $package_id]
}
......@@ -229,7 +232,10 @@ namespace eval ::xowiki {
{-label "LABEL"}
{-href ""}
} {
set result ""
set result ""
# this can be used into templates as id to safely attach event
# handlers to elements
set timed_id [clock microseconds]
if {$with_link} {append result [subst [my link_template]]}
if {$with_body} {append result [subst [my body_template]]}
return $result
......@@ -296,7 +302,7 @@ namespace eval ::xowiki {
</div>
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->
<script>
<script type='text/javascript' nonce='$::__csp_nonce'>
\$('.modal').on('show.bs.modal', function(event) {
var idx = \$('.modal:visible').length;
\$(this).css('z-index', 1040 + (10 * idx));
......@@ -307,7 +313,8 @@ namespace eval ::xowiki {
\$('.modal-backdrop').not('.stacked').addClass('stacked');
});
</script>
}
}
#
# Large bootstrap modal using ajax
#
......@@ -321,7 +328,7 @@ namespace eval ::xowiki {
</div>
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->
<script>
<script type='text/javascript' nonce='$::__csp_nonce'>
\$('.modal').on('show.bs.modal', function(event) {
var idx = \$('.modal:visible').length;
\$(this).css('z-index', 1040 + (10 * idx));
......@@ -385,12 +392,21 @@ namespace eval ::xowiki {
Class create ::xowiki::Link::image -superclass ::xowiki::Link \
-parameter {
href
center float width height
padding padding-right padding-left padding-top padding-bottom
margin margin-left margin-right margin-top margin-bottom
border border-width position top botton left right
}
::xowiki::Link::image instproc resolve_href {href} {
set l [[my page] create_link $href]
if {[$l istype ::xowiki::ExternalLink]} {
set href [$l href]
} else {
set href_item_id [$l resolve]
set href [$l pretty_link $href_item_id]
}
return $href
}
::xowiki::Link::image instproc render {} {
my instvar name package_id label
set page [my page]
......@@ -434,7 +450,7 @@ namespace eval ::xowiki {
if {[my exists href]} {set href [my set href]} {set href ""}
set cls [my mk_css_class_and_id -default [expr {$link ne "" ? "image" : "refused-link"}]]
if {$href ne ""} {
set href [my set href]
set href [my resolve_href $href]
if {[string match "java*" $href]} {set href .}
if {[my exists revision_id]} {append href ?revision_id=[my revision_id]}
return "$pre<a $cls href='[ns_quotehtml $href]'><img $cls src='[ns_quotehtml $link]' alt='[ns_quotehtml $label]' title='[ns_quotehtml $label]' $style></a>$post"
......@@ -537,12 +553,12 @@ namespace eval ::xowiki {
}
return "<div id='[ns_quotehtml $id]'>$label</div>
<script type='text/javascript'>
<script type='text/javascript' nonce='$::__csp_nonce'>
var so = new SWFObject('[ns_quotehtml $href]', '[ns_quotehtml $name]', '[ns_quotehtml $width]', '[ns_quotehtml $height]', '[ns_quotehtml $version]');
$addParams so.write('$id');
</script>
"
}
}
#
# glossary links
......@@ -554,7 +570,7 @@ namespace eval ::xowiki {
set id [my lookup_xowiki_package_by_name [my type] \
[site_node::get_node_id_from_object_id -object_id [my package_id]]]
#my log "--LINK glossary lookup returned package_id $id"
if {$id} {
if {$id > 0} {
# set correct package id for rendering the link
my set package_id $id
#my log "-- INITIALIZE $id"
......@@ -570,8 +586,11 @@ namespace eval ::xowiki {
::xo::Page requireJS "/resources/xowiki/get-http-object.js"
::xo::Page requireJS "/resources/xowiki/popup-handler.js"
::xo::Page requireJS "/resources/xowiki/overlib/overlib.js"
return "<a href='[ns_quotehtml $href]' onclick=\"showInfo('[ns_quotehtml $href?master=0]','[ns_quotehtml $label]'); return false;\"\
[my mk_css_class_and_id -additional glossary]>$label</a>"
if {![my exists cssid]} {my cssid [::xowiki::Includelet html_id [self]]}
template::add_event_listener \
-id [my cssid] \
-script [subst {showInfo('[ns_quotehtml $href?master=0]','[ns_quotehtml $label]')}]
return "<a href='[ns_quotehtml $href]' [my mk_css_class_and_id -additional glossary]>$label</a>"
}
#
......
......@@ -5,7 +5,7 @@
implmentation generic. The original version was developed by Michael
Aram in his Master Thesis. Over the time it was simplified,
downstripped and refactored by Gustaf Neumann. The currently
prefered interface is the class
preferred interface is the class.
@author Michael Aram
@author Gustaf Neumann
......@@ -18,7 +18,7 @@ namespace eval ::xowiki {
#
::xo::tdom::Class create MenuComponent \
-superclass ::xo::tdom::Object
MenuComponent instproc js_name {} {
return [::xowiki::Includelet js_name [self]]
}
......@@ -57,6 +57,7 @@ namespace eval ::xowiki {
linkclass
target
{group ""}
{listener}
}
......@@ -108,7 +109,7 @@ namespace eval ::xowiki {
# the menu "Package":
#
# $mb add_menu_item -name Package.Startpage \
# -item [list text #xowiki.index# url $index_link]
# -item [list label t #xowiki.index# url $index_link]
#
# 4) After all updates are performed, use "render-preferred" to obtain
# the HTML rendering of the menu.
......@@ -119,7 +120,7 @@ namespace eval ::xowiki {
# 3) All menu entry names should be named after the menu name
#
# Notice: the current implementation uses interally dicts. Since the
# code should as well work with tcl 8.4 instances, we provide a
# code should as well work with Tcl 8.4 instances, we provide a
# compatibility layer. Maybe it would be better to base the code on
# an ordered composite. Ideally, the interface should stay mostly
# compatible.
......@@ -128,6 +129,8 @@ namespace eval ::xowiki {
Class create ::xowiki::MenuBar -parameter {
id
{dropzone:boolean true}
{parent_id ""}
}
if {[info commands ::dict] ne ""} {
......@@ -162,7 +165,7 @@ namespace eval ::xowiki {
}
my lappend Menues $name
if {$label eq ""} {set label $name}
my set Menu($name) [list text $label]
my set Menu($name) [list label $label]
#my log "menues: $Menues"
}
......@@ -173,14 +176,34 @@ namespace eval ::xowiki {
::xowiki::MenuBar instproc clear_menu {-menu:required} {
array set "" [my set Menu($menu)]
my set Menu($menu) [list text $(text)]
my set Menu($menu) [list label $(label)]
}
::xowiki::MenuBar instproc add_menu_item {-name:required -item:required} {
::xowiki::MenuBar instproc current_folder {} {
if {${:parent_id} ne ""} {
return ${:parent_id}
} else {
#
# If the current object is the package, use the root folder as
# current_folder; else use the parent of the current object.
#
set object [::xo::cc invoke_object]
if {[$object is_folder_page]} {
return $object
} else {
return [$object parent_id]
}
}
}
::xowiki::MenuBar instproc add_menu_item {
-name:required
-item:required
} {
#
# The provided items are of the form of attribute-value pairs
# containing at least attributes "text" and "url"
# (e.g. "text .... url ....").
# containing at least attributes "label" and "url"
# (e.g. "label .... url ....").
#
my instvar Menues
set full_name $name
......@@ -203,7 +226,7 @@ namespace eval ::xowiki {
# provide a default label
#
regsub -all {[.]} $full_name - full_name
array set "" [list text "#xowiki.menu-$full_name#" group $group_name]
array set "" [list label "#xowiki.menu-$full_name#" group $group_name]
array set "" $item
set item [array get ""]
......@@ -228,6 +251,18 @@ namespace eval ::xowiki {
}
}
::xowiki::MenuBar instproc add_extra_item {
-name:required
-type:required
-item:required
} {
if {$type ni {"DropZone" "ModeButton"}} {
error "unknown extra item type: $type"
}
my set ${type}($name) $item
}
::xowiki::MenuBar instproc update_items {
-package_id:required -nls_language:required -parent_id:required
-return_url -autoname -template_file items
......@@ -238,14 +273,21 @@ namespace eval ::xowiki {
#
# {clear_menu -menu New}
# {entry -name New.Page -label #xowiki.new# -form en:page.form}
# {entry -name New.File -label File -object_type ::xowiki::File}
# {dropzone -name DropZone -label DropZone -uploader File}
# {modebutton -name Admin -label admin -button admin}
my set parent_id $parent_id
foreach me $items {
array unset ""
set kind [lindex $me 0]
if {[string range $kind 0 0] eq "#"} continue
if {[string index $kind 0] eq "#"} continue
set properties [lrange $me 1 end]
switch $kind {
clear_menu {
my clear_menu -menu [dict get $properties -menu]
}
......@@ -254,7 +296,7 @@ namespace eval ::xowiki {
entry {
# sample entry: entry -name New.YouTubeLink -label YouTube -form en:YouTube.form
if {$kind eq "form_link"} {
my log "$me, name 'form_link' is deprecated, use 'entry' instead"
ad_log warning "$me, name 'form_link' is deprecated, use 'entry' instead"
}
if {[dict exists $properties -form]} {
set link [$package_id make_form_link \
......@@ -262,7 +304,7 @@ namespace eval ::xowiki {
-parent_id $parent_id \
-nls_language $nls_language -return_url $return_url]
} elseif {[dict exists $properties -object_type]} {
set link [$package_id make_link -with_entities 0 \
set link [$package_id make_link \
$package_id edit-new \
[list object_type [dict get $properties -object_type]] \
parent_id return_url autoname template_file]
......@@ -271,25 +313,73 @@ namespace eval ::xowiki {
set link ""
}
set item [list url $link]
if {[dict exists $properties -label]} {lappend item text [dict get $properties -label]}
if {[dict exists $properties -label]} {
lappend item label [dict get $properties -label]
}
my add_menu_item -name [dict get $properties -name] -item $item
}
default { error "unknown kind of menu entry: $kind" }
"dropzone" {
foreach {var default} {
name dropzone
uploader File
label DropZone
} {
set $var $default
if {[dict exists $properties -$var]} {
set $var [dict get $properties -$var]
}
}
set link [$package_id make_link $parent_id file-upload]
my add_extra_item -name $name -type DropZone \
-item [list url $link uploader $uploader label $label]
}
"modebutton" {
foreach {var default} {
name modebutton
button admin
label ""
} {
set $var $default
if {[dict exists $properties -$var]} {
set $var [dict get $properties -$var]
}
}
if {$label eq ""} {set label $button}
set state [::xowiki::mode::$button get]
set link [$package_id make_link $parent_id toggle-modebutton]
my add_extra_item -name $name -type ModeButton \
-item [list url $link on $state label $label]
}
default {
error "unknown kind of menu entry: $kind"
}
}
}
}
::xowiki::MenuBar instproc content {} {
set result [list id [my id]]
foreach m [my set Menues] {
lappend result $m [my set Menu($m)]
foreach e [my set Menues] {
lappend result $e [concat kind MenuButton [my set Menu($e)]]
}
foreach e [my array name ModeButton] {
lappend result $e [concat kind ModeButton [my set ModeButton($e)]]
}
foreach e [my array name DropZone] {
lappend result $e [concat kind DropZone [my set DropZone($e)]]
}
return $result
}
::xowiki::MenuBar instproc render-preferred {} {
switch [parameter::get_global_value -package_key xowiki -parameter PreferredCSSToolkit -default yui] {
switch [parameter::get_global_value -package_key xowiki -parameter PreferredCSSToolkit -default bootstrap] {
bootstrap {set menuBarRenderer render-bootstrap}
default {set menuBarRenderer render-yui}
}
......@@ -297,6 +387,41 @@ namespace eval ::xowiki {
}
# ::xo::tdom::Class create MenuDropZone \
# -superclass MenuComponent \
# -parameter {
# text
# href
# title
# {id "[my html_id]"}
# CSSclass
# }
# MenuDropZone instproc init args {
# next
# # Use computed default values when not specified
# if {![my exists title]} {
# # set the mouseover-title to the "MenuItem-Label"
# # TODO: Do we really want "text" to be required ?
# my title [my text]
# }
# if {![my exists href] || [my href] eq ""} {
# my append CSSclass " " [string tolower [namespace tail [my info class]]]-disabled
# }
# }
# MenuDropZone instproc render {} {
# html::li [my get_attributes id {CSSclass class}] {
# html::a [my get_attributes title href target] {
# html::t [my text]
# }
# }
# }
namespace export Menu
# end of namespace
}
......
......@@ -100,24 +100,51 @@ namespace eval ::xowiki::notification {
if {![info exists page]} {
set page [::xowiki::Package instantiate_page_from_id -revision_id $revision_id]
$page volatile
} else {
set revision_id [$page set revision_id]
}
#ns_log notice "--n notification proc called for page [$page name] (revision_id $revision_id) in state [$page publish_status]"
if {[$page set publish_status] eq "production"} {
# don't do notification for pages under construction
#ns_log notice "--n xowiki::notification NO NOTIFCATION due to production state"
#
# Don't do notification for pages under construction.
#
ns_log notice "--n xowiki::notification NO notification due to production state"
return
}
set pretty_link [$page pretty_link]
$page absolute_links 1
if {![info exists html]} {set html [$page render]}
if {![info exists text]} {set text [ad_html_text_convert -from text/html -to text/plain -- $html]}
if {![info exists html]} {
set html [$page notification_render]
}
if {$html eq ""} {
#
# The notification renderer returned empty. Nothing to do.
#
#ns_log notice "--n notification renderer returned emtpy for page [$page name] (revision_id $revision_id). Nothing to do"
return
}
#ns_log notice "--n xowiki::notification::do_notifications called for item_id [$page set revision_id] publish_status=[$page set publish_status] XXX"
$page instvar package_id
set link [$page pretty_link -absolute 1]
append html "<p>For more details, see <a href='[ns_quotehtml $link]'>[ns_quotehtml [$page set title]]</a></p>"
append text "\nFor more details, see $link ...<hr>\n"
#
# Turn relative URLs into absolute URLs in the HTML text such that
# links in notification still work. The function supports as well
# non-wiki links. Here we are able to provide an accurate
# pretty_link as base-url.
#
set html [ad_html_qualify_links -path [file dirname $pretty_link] $html]
if {![info exists text]} {
set text [ad_html_text_convert -from text/html -to text/plain -- $html]
}
#ns_log notice "--n xowiki do_notifications called for revision_id $revision_id publish_status=[$page set publish_status]"
set details [$page notification_detail_link]
append html [dict get $details html]
append text [dict get $details text]
$page instvar package_id
set state [expr {[$page set last_modified] eq [$page set creation_date] ? "New" : "Updated"}]
set instance_name [::$package_id instance_name]
......@@ -128,7 +155,7 @@ namespace eval ::xowiki::notification {
-type_id [notification::type::get_type_id -short_name xowiki_notif] \
-object_id [$page set package_id] \
-response_id [$page set revision_id] \
-notif_subject "\[$instance_name\] [$page set title] ($state)" \
-notif_subject [$page notification_subject -instance_name $instance_name -state $state] \
-notif_text $text \
-notif_html $html \
-notif_user $notif_user_id
......@@ -151,7 +178,7 @@ namespace eval ::xowiki::notification {
-type_id [notification::type::get_type_id -short_name xowiki_notif] \
-object_id $cat($level) \
-response_id [$page set revision_id] \
-notif_subject "\[$instance_name\] $label($level): [$page set title] ($state)" \
-notif_subject [$page notification_subject -instance_name $instance_name -category_label $label($level) -state $state] \
-notif_text $text \
-notif_html $html \
-notif_user $notif_user_id
......
This diff is collapsed.
......@@ -13,7 +13,6 @@ namespace eval ::xowiki::formfield {
# TODO:
# - improve styling (e.g. remove/deactivate controls for
# addition/deletion, when min/max is reached)
# - allow max to be open-ended (see also "addItem" in .js)
# - test for more input types
# - maybe deactivate container display for "repeat=1..1"
......@@ -68,23 +67,25 @@ namespace eval ::xowiki::formfield {
# don't propagate "repeat" and "label" properties
if { [string match "repeat=*" $s] || [string match "label=*" $s] } continue
if { "required" eq $s} {set is_required true; continue}
if { "disabled" eq $s} {my set_disabled true}
lappend result $s
}
return [list $is_required [join $result ,]]
}
repeatContainer instproc initialize {} {
::xo::Page requireJS "/resources/xowiki/repeat.js"
::xo::Page requireJS "/resources/xowiki/repeat.js"
::xo::Page requireJS "/resources/xowiki/jquery/jquery.min.js"
#::xo::Page requireJS "/resources/ajaxhelper/jquery/jquery-1.11.1.min.js"
if {[my exists __initialized_repeat]} {return}
next
my set __initialized_repeat 1
#
# Derive the spec of the contained items from the spec of the
# container.
#
set itemSpec [lindex [my item_spec] 1]
set is_required [lindex [my item_spec] 0]
lassign [my item_spec] isRequired itemSpec
#
# Use item .0 as template for other items in .js (e.g. blank an
......@@ -93,19 +94,31 @@ namespace eval ::xowiki::formfield {
# default values for subfields without knowing the detailed
# structure).
#
set components [list [list 0 $itemSpec]]
set componentItemSpecs [list [list 0 $itemSpec]]
#
# Add max content items (1 .. max) and build form fields
#
for {set i 1} {$i <= [my max]} {incr i} {
if {$i <= [my min] && $is_required} {
lappend components [list $i $itemSpec,required,label=$i]
} else {
lappend components [list $i $itemSpec,label=$i]
}
set formAction [${:object} form_parameter __form_action {}]
# TODO: we use for the time being the code for dynamic repeat field
if {0 && $formAction eq ""} {
#
# The form field is in input mode; as long there is no js
# support do incrementally add form fields in js, we have to
# generate it here.
#
set max [my max]
} else {
#set max [my max]
set max [my min] ;# use dynamic repeat fields: if set to min, repeat fields will be created on demand
}
#ns_log notice "dynamic repeat MAX=$max FORMACTION <$formAction>"
for {set i 1} {$i <= $max} {incr i} {
set componentItemSpec [my component_item_spec $i $itemSpec $isRequired]
#ns_log notice "dynamic repeat componentItemSpec $componentItemSpec"
lappend componentItemSpecs $componentItemSpec
}
my create_components $components
my create_components $componentItemSpecs
#
# Deactivate template item
......@@ -117,6 +130,47 @@ namespace eval ::xowiki::formfield {
}
}
repeatContainer instproc component_item_spec {i itemSpec isRequired} {
#
# Return a single itemspec suited for the nth component, derived
# from the repeatable formfield spec.
#
if {$i <= [my min] && $isRequired} {
set componentItemSpec [list $i $itemSpec,required,label=$i]
} else {
set componentItemSpec [list $i $itemSpec,label=$i]
}
return $componentItemSpec
}
repeatContainer instproc require_component {i} {
#
# Require the nth component of a repeat field
#
lassign [my item_spec] isRequired itemSpec
set componentItemSpec [my component_item_spec $i $itemSpec $isRequired]
#ns_log notice "dynamic repeat field: add component on the fly: $componentItemSpec"
my add_component $componentItemSpec
}
repeatContainer instproc set_compound_value value {
#
# Before setting compound values, check if we have the repeat
# strucure already set.
#
set neededComponents [expr {[llength $value] / 2}]
set availableComponents [llength ${:components}]
#ns_log notice "[self] repeatContainer set_compound_value <$value> have $availableComponents needed $neededComponents"
if {$neededComponents > $availableComponents} {
lassign [my item_spec] isRequired itemSpec
for {set i $availableComponents} {$i < $neededComponents} {incr i} {
:require_component $i
}
}
next
}
repeatContainer instproc convert_to_internal {} {
set values [my value]
my trim_values
......@@ -155,13 +209,14 @@ namespace eval ::xowiki::formfield {
return $highestCount
}
repeatContainer instproc render_input {} {
#
# Render content of the container within in a fieldset,
# without labels for the contained items.
#
html::fieldset [my get_attributes id {CSSclass class}] {
set i 1
set i 0
my instvar min max name
set clientData "{'min':$min,'max':$max, 'name':'$name'}"
set CSSclass "[my form_widget_CSSclass] repeatable"
......@@ -172,36 +227,47 @@ namespace eval ::xowiki::formfield {
set nrItems $providedValues
}
incr nrItems
set containerDisabled [expr {[my exists disabled] && [my disabled] != "false"}]
set containerIsDisabled [expr {[my exists disabled] && [my disabled] != "false"}]
set containerIsPrototype [string match "*.0*" $name]
set isPrototypeElement 0
foreach c [my components] {
set atts [list class $CSSclass]
if {$i > $nrItems || [string match "*.0" [$c name]]} {
lappend atts data-repeat $clientData
if {$i == 0 || $i >= $nrItems} {
lappend atts style "display: none;"
}
::html::div $atts {
$c render_input
# compound fields - link not shown if we are not rendering for the template and copy the template afterwards
# if {!$containerDisabled} {
::html::a -href "#" \
-id "repeat-del-link-[$c set id]" \
-class "repeat-del-link" \
-onclick "return xowiki.repeat.delItem(this,\"$clientData\")" {
html::t [my repeat_remove_label]
}
# }
if {!$containerIsDisabled || $containerIsPrototype} {
set del_id "repeat-del-link-[$c set id]"
::html::a -href "#" \
-id $del_id \
-class "repeat-del-link" {
html::t [my repeat_remove_label]
}
template::add_event_listener \
-id $del_id \
-script [subst {xowiki.repeat.delItem(this,\"$clientData\");}]
}
}
incr i
}
set hidden [expr {[my count_values [my value]] == $max ? "display: none;" : ""}]
# if {!$containerDisabled} {
html::a -href "#" \
-id "repeat-add-link-[my id]" \
-style "$hidden" \
-class "repeat-add-link" \
-onclick "return xowiki.repeat.addItem(this,\"$clientData\");" {
html::t [my repeat_add_label]
}
# }
#ns_log notice "repeat container $c [$c name] isDisabled $containerIsDisabled containerIsPrototype $containerIsPrototype"
if {!$containerIsDisabled || $containerIsPrototype } {
set hidden [expr {[my count_values [my value]] == $max ? "display: none;" : ""}]
set add_id "repeat-add-link-[my id]"
ns_log notice "... add another for $name"
html::a -href "#" \
-id $add_id \
-style $hidden \
-class "repeat-add-link" {
html::t [my repeat_add_label]
}
template::add_event_listener \
-id $add_id \
-script [subst {xowiki.repeat.newItem(this,\"$clientData\");}]
}
}
}
......@@ -230,6 +296,23 @@ namespace eval ::xowiki::formfield {
return $html
}
repeatContainer instproc value_if_nothing_is_returned_from_form {default} {
# Here we have to distinguish between two cases to:
# - edit mode: somebody has removed a mark from a check button;
# this means: clear the field
# - view mode: the fields were deactivted (made insensitive);
# this means: keep the old value
if {[my exists disabled]} {return $default} else {return ""}
}
Class create repeattest -superclass CompoundField
repeattest instproc initialize {} {
my create_components [subst {
{sub {text,repeat=1..4}}
}]
next
}
}
#
......
This diff is collapsed.
......@@ -20,9 +20,8 @@ ad_proc -public ::template::adp_include {
[list &book "bookdata" base $base style feed]]
</pre>
The [list &book "bookdata" ...] tells adp_include to pass the book array by reference to the adp in
clude, where it is
refered to via @book.field@.
The [list &book "bookdata" ...] tells adp_include to pass the book array by
reference to the adp include, where it is referred to via @book.field@.
@param uplevel how far up the stack should the adp_level be set to
(default is the calling procedures level)
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment