<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://miniscope.org/index.php?action=history&amp;feed=atom&amp;title=Template%3ACategory%2FReview_record%2FState</id>
	<title>Template:Category/Review record/State - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://miniscope.org/index.php?action=history&amp;feed=atom&amp;title=Template%3ACategory%2FReview_record%2FState"/>
	<link rel="alternate" type="text/html" href="https://miniscope.org/index.php?title=Template:Category/Review_record/State&amp;action=history"/>
	<updated>2026-05-03T17:05:46Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.5</generator>
	<entry>
		<id>https://miniscope.org/index.php?title=Template:Category/Review_record/State&amp;diff=833&amp;oldid=prev</id>
		<title>DAharoni: SchemaSync: sync from repo @ cef7b4698b6a7bf05768b7fe97b5c01c55c4b039</title>
		<link rel="alternate" type="text/html" href="https://miniscope.org/index.php?title=Template:Category/Review_record/State&amp;diff=833&amp;oldid=prev"/>
		<updated>2026-05-02T20:07:58Z</updated>

		<summary type="html">&lt;p&gt;SchemaSync: sync from repo @ cef7b4698b6a7bf05768b7fe97b5c01c55c4b039&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
Annotation emitter + Review status sidebox for [[Template:Category/Review record]].&lt;br /&gt;
Called once via &amp;lt;code&amp;gt;#ask|format=template|import-annotation=true&amp;lt;/code&amp;gt;&lt;br /&gt;
with the latest Review record&amp;#039;s date, optional per-record next-due&lt;br /&gt;
override, and the latest record&amp;#039;s reviewer(s).&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;import-annotation=true&amp;lt;/code&amp;gt; parameter on the parent&lt;br /&gt;
&amp;lt;code&amp;gt;#ask&amp;lt;/code&amp;gt; is essential — without it the &amp;lt;code&amp;gt;#set&amp;lt;/code&amp;gt; calls&lt;br /&gt;
below would not attach to the host page.&lt;br /&gt;
&lt;br /&gt;
Does three jobs in one pass:&lt;br /&gt;
# Emits page-level annotations:&lt;br /&gt;
#* &amp;lt;code&amp;gt;Has last reviewed date&amp;lt;/code&amp;gt; = ReviewDate&lt;br /&gt;
#* &amp;lt;code&amp;gt;Has next review due&amp;lt;/code&amp;gt; = Override if provided, else&lt;br /&gt;
   ReviewDate + the page&amp;#039;s &amp;lt;code&amp;gt;Has review interval&amp;lt;/code&amp;gt; (months).&lt;br /&gt;
# Renders the &amp;quot;Review status&amp;quot; sidebox top half (status table).&lt;br /&gt;
# Renders a collapsible &amp;quot;Review history&amp;quot; block at the bottom of the&lt;br /&gt;
  sidebox via a nested &amp;lt;code&amp;gt;#ask&amp;lt;/code&amp;gt; on all Review record subobjects&lt;br /&gt;
  of the host page, delegating per-row formatting to&lt;br /&gt;
  [[Template:Category/Review record/History row]].&lt;br /&gt;
&lt;br /&gt;
Date arithmetic uses Unix-timestamp &amp;lt;code&amp;gt;@&amp;lt;/code&amp;gt; form because&lt;br /&gt;
&amp;lt;code&amp;gt;{{#time: Y-m-d | DATE +N months}}&amp;lt;/code&amp;gt; is not honored on this wiki.&lt;br /&gt;
A month is approximated as &amp;lt;code&amp;gt;30.4375 × 86400 = 2,629,800&amp;lt;/code&amp;gt; seconds.&lt;br /&gt;
&lt;br /&gt;
Uses &amp;lt;code&amp;gt;{{#set:}}&amp;lt;/code&amp;gt; rather than &amp;lt;code&amp;gt;[[Has X::Y]]&amp;lt;/code&amp;gt; for&lt;br /&gt;
annotations — silent equivalent.&lt;br /&gt;
&lt;br /&gt;
Parameters (named args from the parent &amp;lt;code&amp;gt;#ask&amp;lt;/code&amp;gt;):&lt;br /&gt;
* &amp;lt;code&amp;gt;ReviewDate&amp;lt;/code&amp;gt; — ISO date of the latest review&lt;br /&gt;
* &amp;lt;code&amp;gt;Override&amp;lt;/code&amp;gt; — optional ISO date overriding the computed next&lt;br /&gt;
  review due&lt;br /&gt;
* &amp;lt;code&amp;gt;Reviewer&amp;lt;/code&amp;gt; — page link(s) to the reviewer(s) on the latest&lt;br /&gt;
  record (SMW joins multivalued with commas)&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;{{#set: Has last reviewed date={{{ReviewDate}}} }}{{#if: {{{Override|}}}|{{#set: Has next review due={{{Override}}} }}|{{#if: {{#show: {{FULLPAGENAME}} | ?Has review interval }}|{{#set: Has next review due={{#time: Y-m-d | @{{#expr: ( {{#time: U | {{{ReviewDate}}}T12:00:00Z }} ) + ( {{#show: {{FULLPAGENAME}} | ?Has review interval }} * 2629800 ) }} }} }}|}}}}&amp;lt;div class=&amp;quot;wiki-status-sidebox&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;wiki-status-sidebox__header&amp;quot;&amp;gt;Review status&amp;lt;/div&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
| Last reviewed&lt;br /&gt;
| {{{ReviewDate}}}&lt;br /&gt;
|-&lt;br /&gt;
| Reviewer&lt;br /&gt;
| {{#if: {{{Reviewer|}}} | {{{Reviewer}}} | &amp;#039;&amp;#039;(not recorded)&amp;#039;&amp;#039; }}&lt;br /&gt;
|-&lt;br /&gt;
| Next review due&lt;br /&gt;
| {{#if: {{{Override|}}}&lt;br /&gt;
   | {{{Override}}}{{#ifexpr: ( {{#time: U | {{{Override}}}T12:00:00Z }} - {{#time: U}} ) &amp;lt; 0 | &amp;amp;nbsp;&amp;#039;&amp;#039;&amp;#039;⚠ overdue&amp;#039;&amp;#039;&amp;#039; | {{#ifexpr: ( ( {{#time: U | {{{Override}}}T12:00:00Z }} - {{#time: U}} ) / 86400 ) &amp;lt;= 30 | &amp;amp;nbsp;&amp;#039;&amp;#039;&amp;#039;due soon&amp;#039;&amp;#039;&amp;#039; | }} }}&lt;br /&gt;
   | {{#if: {{#show: {{FULLPAGENAME}} | ?Has review interval }}&lt;br /&gt;
      | {{#time: Y-m-d | @{{#expr: ( {{#time: U | {{{ReviewDate}}}T12:00:00Z }} ) + ( {{#show: {{FULLPAGENAME}} | ?Has review interval }} * 2629800 ) }} }}{{#ifexpr: ( ( ( {{#time: U | {{{ReviewDate}}}T12:00:00Z }} ) + ( {{#show: {{FULLPAGENAME}} | ?Has review interval }} * 2629800 ) ) - {{#time: U}} ) &amp;lt; 0 | &amp;amp;nbsp;&amp;#039;&amp;#039;&amp;#039;⚠ overdue&amp;#039;&amp;#039;&amp;#039; | {{#ifexpr: ( ( ( ( {{#time: U | {{{ReviewDate}}}T12:00:00Z }} ) + ( {{#show: {{FULLPAGENAME}} | ?Has review interval }} * 2629800 ) ) - {{#time: U}} ) / 86400 ) &amp;lt;= 30 | &amp;amp;nbsp;&amp;#039;&amp;#039;&amp;#039;due soon&amp;#039;&amp;#039;&amp;#039; | }} }}&lt;br /&gt;
      | &amp;#039;&amp;#039;(no review interval set)&amp;#039;&amp;#039;&lt;br /&gt;
     }}&lt;br /&gt;
  }}&lt;br /&gt;
|-&lt;br /&gt;
| Review interval&lt;br /&gt;
| {{#if: {{#show: {{FULLPAGENAME}} | ?Has review interval }} | {{#show: {{FULLPAGENAME}} | ?Has review interval }} months | &amp;#039;&amp;#039;(not set)&amp;#039;&amp;#039; }}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed wiki-status-sidebox__history&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h6&amp;gt;Review history&amp;lt;/h6&amp;gt;&lt;br /&gt;
&amp;lt;ul class=&amp;quot;wiki-status-sidebox__history-list&amp;quot;&amp;gt;{{#ask:&lt;br /&gt;
 [[-Has subobject::{{FULLPAGENAME}}]]&lt;br /&gt;
 [[Category:Review record]]&lt;br /&gt;
 |?Has date#ISO=Date&lt;br /&gt;
 |?Has reviewer=Reviewer&lt;br /&gt;
 |?Has review outcome=Outcome&lt;br /&gt;
 |sort=Has date&lt;br /&gt;
 |order=desc&lt;br /&gt;
 |format=template&lt;br /&gt;
 |template=Category/Review record/History row&lt;br /&gt;
 |named args=yes&lt;br /&gt;
 |link=none&lt;br /&gt;
 |import-annotation=true&lt;br /&gt;
}}&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>DAharoni</name></author>
	</entry>
</feed>