• Home
  • Meet our team
  • Recruiting Trials
    • Recruiting Trials
    • DEFINE
    • OPTiMISE
    • DURATION
    • ECRAID-BASE
    • ECRAID-PRIME
    • OPTIMISE 2
    • PANORAMIC
    • TOUCAN
    • SNAP-2
  • Diversity and Inclusivity
Oxford University - Primary Care Clinical Trials Unit
Advanced Search…
  • Site Map
  • Accessibility
  • Contact
  • Cookies
  • Contact us
  • Log in
University of Oxford
Nuffield Department of Primary Care Health Sciences, University of Oxford
  • About
  • Research
  • Study with us
  • Team
  • Public involvement
  • News
  • Blogs
  • Events
  • Home
  • Meet our team
  • Recruiting Trials
  • Diversity and Inclusivity
  1. Home

Search results

Found 12 matches for

  • News Items (12)

Celebrating collaboration and resilience: The PRINCIPLE PANORAMIC art exhibition

  • General

Mar 21, 2024

Celebrate the resilience and collaboration behind Oxford's groundbreaking PANORAMIC and PRINCIPLE COVID-19 trials through "The PANORAMIC PRINCIPLE" exhibition. Artist Tanya Poole's powerful portraits honour the diverse array of participants, researchers, and medical professionals whose inclusive efforts set global benchmarks and transformed lives. An inspiring tribute to human determination in the face of adversity.

CTU members attend annual UK Trial Managers’ Network Conference

  • General

Jun 15, 2023

On Tuesday, members from the Nuffield Department of Primary Care Health Sciences Clinical Trials Unit attended the UK Trial Managers' Network (UKTMN) Annual Conference 2023.

Clinical Trials Day 2023

  • General
  • Research

May 19, 2023

Tomorrow, Saturday 20 May, is Clinical Trials Day, an excellent opportunity to reflect on the immense value that trials hold in advancing medical knowledge and improving healthcare outcomes. Trials such as those run out of the PC-CTU are the cornerstone of scientific progress, enabling researchers to test new treatments, therapies, and interventions in a controlled environment.

CTU presents at the NIHR 7th Annual Primary Care Research Symposium

  • General
  • Research

May 18, 2023

On Tuesday the 16th of May, members of the CTU attended the 7th Annual Primary Care Research Symposium organised by the NIHR’s Thames Valley and South Midland’s Clinical Research Network. Held at Milton Hill House Hotel in Abingdon, the symposium was an opportunity for researchers from all backgrounds to network, learn about opportunities to take part in current trials, and discuss the future of primary care research.

International Nurses Day

  • General

May 12, 2023

Today, Friday 12th May, is International Nurses Day. This annual day is an excellent opportunity to honour the hard work and dedication of nurses who provide essential care to patients in hospitals, clinics, and other healthcare settings. It also serves as a reminder of the important role nurses play in improving global health outcomes

Reflecting on PANORAMIC and PRINCIPLE, three years into the COVID-19 Pandemic

  • General
  • Research

Mar 30, 2023

Earlier this month—Saturday 11 March 2023—we marked the third anniversary of the World Health Organization (WHO) declaring the COVID-19 pandemic. This anniversary is an opportunity to reflect on the lessons learned from the pandemic and renew efforts to strengthen health systems and ensure equitable access to vaccines and treatments.

Professor Chris Butler addresses the UN on PANORAMIC - BAPS UK & Europe collaboration

  • General

Jan 24, 2023

Recently, Professor Chris Butler addressed the United Nations regarding the PANORAMIC Trial and the assistance of BAPS UK & Europe.

PANORAMIC and PRINCIPLE Pharmacy, and Diversity and Inclusivity Lead made an Officer of the Order of the British Empire (OBE)

  • General

Nov 5, 2022

PANORAMIC wins big at the Thames Valley Health Research Awards 2022

  • General

Sep 29, 2022

Largest Hindu temple in Europe opens new health hub whilst providing continued support for PANORAMIC and PRINCIPLE trials

  • General

Sep 5, 2022

Europe’s BAPS Swaminarayan Sanstha, with the Neasden Temple, one of the largest Hindu temples outside of India, has opened a new community health hub in west London. Following their continued support of the PANORAMIC and PRINCIPLE trials, the temple’s interactive health hub will engage visitors around health awareness and wellbeing.

Clinical Trials Day 20 May 2022 - “We couldn’t do it without you.”

  • General
  • Research

May 17, 2022

Clinical Trials Day gives us an opportunity to reflect on, and appreciate, recent achievements and the people who have made these achievements possible. So, this year we want to say a big thank you to everyone involved, “we couldn’t do it without you”.

Britain’s most influential Hindu temple spreads awareness of the PRINCIPLE trial among Indian Community

  • General
  • Research

Oct 21, 2020

  • failed to load external entity "/++theme++bootstrap/rules/components/site-search.xml" [0:0]
  • could not load /++theme++bootstrap/rules/components/site-search.xml, and no fallback was found [13:0]
  • failed to load external entity "/++theme++bootstrap/rules/components/site-actions.xml" [0:0]
  • could not load /++theme++bootstrap/rules/components/site-actions.xml, and no fallback was found [14:0]
  • failed to load external entity "/++theme++bootstrap/rules/components/site-sections.xml" [0:0]
  • could not load /++theme++bootstrap/rules/components/site-sections.xml, and no fallback was found [15:0]
  • failed to load external entity "/++theme++bootstrap/rules/messages.xml" [0:0]
  • could not load /++theme++bootstrap/rules/messages.xml, and no fallback was found [18:0]
  • failed to load external entity "/++theme++bootstrap/rules/breadcrumbs.xml" [0:0]
  • could not load /++theme++bootstrap/rules/breadcrumbs.xml, and no fallback was found [19:0]
  • failed to load external entity "/++theme++bootstrap/rules/content.xml" [0:0]
  • could not load /++theme++bootstrap/rules/content.xml, and no fallback was found [20:0]
  • failed to load external entity "/++theme++bootstrap/rules/footer.xml" [0:0]
  • could not load /++theme++bootstrap/rules/footer.xml, and no fallback was found [21:0]
  • failed to load external entity "/++theme++bootstrap/rules/bottom.xml" [0:0]
  • could not load /++theme++bootstrap/rules/bottom.xml, and no fallback was found [22:0]
  • failed to load external entity "/++theme++bootstrap/rules/forms.xml" [0:0]
  • could not load /++theme++bootstrap/rules/forms.xml, and no fallback was found [24:0]
  • failed to load external entity "/++theme++bootstrap/rules/addons.xml" [0:0]
  • could not load /++theme++bootstrap/rules/addons.xml, and no fallback was found [25:0]
<rules xml:id="r0">

    <rules xml:id="r1">

    <notheme css:if-not-content="#visual-portal-wrapper" xml:id="r2"/>
    <theme href="++theme++bootstrap/themes/haiku/index.html" xml:id="r3"/>
    
    <rules css:if-content="#visual-portal-wrapper" xml:id="r4">

        <rules xml:id="r5">

	<!-- HTML header -->

	<!-- copy HTML and BODY attributes -->
	<copy attributes="*" css:theme="html" css:content="html" xml:id="r6"/>
	<copy attributes="*" css:theme="body" css:content="body" xml:id="r7"/>

	<!-- pull in Plone meta tags -->
    <before css:theme-children="head" css:content="meta:not([itemprop]):not([name='generator'])" xml:id="r8"/>

	<!-- replace title -->
    <replace css:theme="head title" css:content="head title" xml:id="r9"/>

    <!-- 1 cover pages -->
    <before css:theme="#bootstrap-barceloneta" css:content="head link[href*='collective.cover']" xml:id="r10"/>
    <before css:theme="#bootstrap-barceloneta" css:content="head script[src*='collective.cover']" xml:id="r11"/>   
        
    <!-- 2 registered resources -->
    <after css:theme="title" css:content="head link[href*='++webresource++']:not([href$='custom.css'])" xml:id="r12"/>
    <after css:theme="title" css:content="head script[src*='++webresource++']" xml:id="r13"/>   

    <!-- 3 un-registered resources -->
    <after css:theme-children="head" css:content="head link:not([href*='++webresource++']):not(link[href*='collective.cover'])" xml:id="r14"/>
    <after css:theme-children="head" css:content="head style:not([id='global-extra-css'])" xml:id="r15"/>
    <after css:theme-children="head" css:content="head script:not([src*='++webresource++']):not(script[src*='collective.cover'])" xml:id="r16"/>

    <!-- 4 theme custom -->
    <after css:theme-children="head" css:content="link[href$='custom.css']" xml:id="r17"/>

    <!-- 5 Haiku custom (JS is deployed a the bootom, see: page-bottom.xml) -->
    <after css:theme-children="head" css:content="style[id='global-extra-css']" xml:id="r18"/>


</rules>
    
        <rules xml:id="r19">

    <!-- edit bar rules copied from Barcelonetta theme -->

    <replace css:theme="#portal-toolbar" css:content="#edit-bar" css:if-not-content=".ajax_load" css:if-content=".userrole-authenticated" xml:id="r20"/>

    <drop css:theme="#portal-toolbar" css:if-content=".userrole-anonymous" xml:id="r21"/>

    <replace css:theme="#anonymous-actions" css:content-children="#portal-personaltools-wrapper" css:if-not-content=".ajax_load" css:if-content=".userrole-anonymous" xml:id="r22"/>

    <!-- Add label to History action link  -->
    <replace css:content="#edit-bar a.nav-link:not(.dropdown-toggle)" xml:id="r23">
        <a class="nav-link">
            <xsl:copy-of select="@*"/>
            <xsl:attribute name="title">
                <xsl:if test=".//time">History</xsl:if>
                <xsl:value-of select="normalize-space(./span/text())"/>
            </xsl:attribute>
            <xsl:apply-templates/>
        </a>
    </replace>

    <!-- Remove ID from 'Add new item...' links to not interfere with tabbed search tabs  -->
    <replace css:content="#edit-bar li#plone-contentmenu-factories a.dropdown-item" xml:id="r24">
        <a class="nav-link">
            <xsl:copy-of select="@*[not(name()='id')]"/>
            <xsl:apply-templates/>
        </a>
    </replace>

    <!-- Add some margin to SVG icons  -->
    <replace css:content="#edit-bar svg" xml:id="r25">
        <svg>
            <xsl:copy-of select="@*"/>
            <xsl:attribute name="class">
                <xsl:value-of select="concat(@class,' me-1')"/>
            </xsl:attribute>
            <xsl:apply-templates/>
        </svg>
    </replace>
            
</rules>
        <rules xml:id="r26">

	<!-- site header with edit bar, logo and global nav -->

    <rules xml:id="r27">

	<!-- haiku mmenu: http://mmenu.frebsite.nl -->
   
    <replace css:theme=".navbar-header button" css:if-content="#haiku-mmenu" xml:id="r28">
        <a href="#mmenu" class="navbar-toggle btn btn-default btn-block">
            <span>Menu</span>
        </a>
    </replace>

</rules>
    <rules xml:id="r29">

	<!-- parent site navigation -->

    <replace css:content="#site-parent__header" css:theme="#site-parent__header" xml:id="r30"/>

</rules>
	<rules xml:id="r31">

    <!-- replaces primary site logo -->

    <replace css:content="#primary-logo" css:theme="#site-logo" xml:id="r32"/>

    <replace css:content-children="#secondary-logo" css:theme="#secondary-logo" xml:id="r33"/>

</rules>
    <rules xml:id="r34">

    <copy css:content="div#portal-searchbox form" css:theme="div#site-header form#site-search" attributes="action" xml:id="r35"/>

</rules>
	<rules xml:id="r36">
    
    <!-- site actions container e.g., 'Add new...', 'Display' etc.. -->

    <replace css:content="#site-actions" css:theme="#site-actions" xml:id="r37"/>

</rules>
	<rules xml:id="r38">

	<!-- global navigation -->

    <replace css:content="#site-bar" css:theme="#site-bar" xml:id="r39"/>

</rules>

</rules>
        <rules xml:id="r40">

    <append css:theme="#site-messages" css:content-children="#global_statusmessage" xml:id="r41"/>
    <append css:theme="#site-messages" css:content="#haiku-notifications" xml:id="r42"/>
    <append css:theme="#site-messages" css:content="#plone-lock-status" xml:id="r43"/>

    <!-- old Plone alerts -->
    <replace content="dl[contains(@class, 'portalMessage')]" xml:id="r44">
        <div>
            <xsl:attribute name="class">
	           <xsl:choose>
	               <xsl:when test="self::node()[contains(@class, 'info')]">alert alert-info</xsl:when>
	               <xsl:when test="self::node()[contains(@class, 'error')]">alert alert-danger</xsl:when>
	               <xsl:when test="self::node()[contains(@class, 'success')]">alert alert-success</xsl:when>
	               <xsl:otherwise>alert alert-warning</xsl:otherwise>
	           </xsl:choose>
            </xsl:attribute>
			<xsl:attribute name="id">
			    <xsl:value-of select="@id"/>
			</xsl:attribute>
			<strong>
			    <xsl:apply-templates select="dt/text()"/>
			    <xsl:text> </xsl:text>
			</strong>
			<xsl:for-each select="dd">
			    <xsl:apply-templates/>
			</xsl:for-each>
        </div>
    </replace>
    
</rules>
        <rules xml:id="r45">

	<!-- Site wide breadcrumbs (below main navigation) -->

	<replace css:theme="#site-breadcrumbs" css:content="#portal-breadcrumbs" xml:id="r46"/>
	<drop css:theme="#site-breadcrumbs" css:if-not-content="#portal-breadcrumbs" xml:id="r47"/>
	
	<replace content="//*[@id='portal-breadcrumbs']" xml:id="r48">
        <xsl:variable name="crumbs" select="//*[@id='portal-breadcrumbs']//ol/li"/>
        <xsl:if test="count($crumbs) > 1">
			<ol class="breadcrumb" id="site-breadcrumbs">
				<xsl:for-each css:select="#portal-breadcrumbs ol > li">
	                <xsl:if test="position()=1">
	                    <li class="breadcrumb-item">
	                        <a title="Home">
	                            <xsl:attribute name="href"><xsl:value-of select="a/@href"/></xsl:attribute>
	                            <svg width="16" height="16" fill="currentColor" class="bi bi-house-door-fill" viewBox="0 0 16 16">
  									<path d="M6.5 14.5v-3.505c0-.245.25-.495.5-.495h2c.25 0 .5.25.5.5v3.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5v-7a.5.5 0 0 0-.146-.354L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293L8.354 1.146a.5.5 0 0 0-.708 0l-6 6A.5.5 0 0 0 1.5 7.5v7a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5"/>
								</svg>
	                        </a>
	                    </li>
	                </xsl:if>
	                <xsl:if test="position()>1">
	  					<li class="breadcrumb-item">
	                        <xsl:if test="position()=last()">
	                            <xsl:attribute name="class">active breadcrumb-item</xsl:attribute>
	                            <xsl:attribute name="aria-current">page</xsl:attribute>
	                        </xsl:if>
	  						<xsl:apply-templates select="./a|text()"/>
	  					</li>
	      			</xsl:if>
				</xsl:for-each>
			</ol>
		</xsl:if>
	</replace>

</rules>
        <rules xml:id="r49">

    <!-- hero unit -->

    <before css:theme="#content" css:content-children="#hero-wrapper" mode="raw" xml:id="r50"/>
    <drop css:content="#content #hero-wrapper" xml:id="r51"/>

	<!-- elements inside page content area -->

	<replace css:content-children="#portal-column-content" css:theme-children="#content" css:if-content="#portal-column-content" xml:id="r52"/>
    <merge attributes="class" css:content="#portal-column-content" css:theme="#content" xml:id="r53"/>

	<rules xml:id="r54">
    
    <!-- page header -->

	<replace content="//div[not(contains(@class, 'modal-body'))]//h1[contains(@class, 'documentFirstHeading')]" xml:id="r55">
		<div class="row">
			<div class="col-md-12">
				<div class="page-header">
					<h1>
						<xsl:apply-templates/>
					</h1>
				</div>
			</div>
		</div>
	</replace>


</rules>
	<rules xml:id="r56">
	
	<!-- page description -->

	<replace content="//*[contains(@class, 'documentDescription')]" xml:id="r57">
		<p class="lead">
			<xsl:copy-of select="node()"/>
		</p>
	</replace>

</rules>
	<rules xml:id="r58">
    
    <!-- remove #content ID duplicates -->

    <replace content="//*[@id='content']" xml:id="r59">
        <div class="row">
            <div class="col-md-12">
                <xsl:apply-templates/>
            </div>
        </div>
    </replace>

</rules>
    <rules xml:id="r60">
	
    <!-- remove Manage Portlets action -->

	<drop css:content=".managePortlets-row" xml:id="r61"/>

</rules>
    <rules xml:id="r62">

    
    <!-- TinyMCE images -->
    <!-- Updated resolveuid filter instead 

    <replace content="//div[contains(@class, 'rich-text')]//img">
        <span class="figure {@class}">
            <xsl:attribute name="style">width:<xsl:value-of select="@*[name()='width']" />px;</xsl:attribute>
            <img>
                <xsl:copy-of select="@*[not(name()='height' or name()='width' or name()='class')]" />
            </img>
            <xsl:if test="@data-copyright">
                <small>
                    <xsl:attribute name="class">
                        <xsl:value-of select="@data-copyright-style" />
                    </xsl:attribute>
                    <xsl:text disable-output-escaping="yes"><![CDATA[&copy;]]> </xsl:text>
                    <xsl:value-of select="@data-copyright" />
                </small>
            </xsl:if>
            <xsl:if test=".//figcaption">
                <span class="image-caption">
                    <strong><xsl:copy-of select=".//figcaption/node()" /></strong>
                </span>
            </xsl:if>
        </span>
    </replace>-->


</rules>
	<!-- TODO review <xi:include href="/++theme++bootstrap/rules/components/typography.xml" /> -->
	<!-- TODO review <xi:include href="/++theme++bootstrap/rules/components/workflow-states.xml" /> -->
	<rules xml:id="r63">

    <!--  
       Page information viewlet including modified date, page author
       and link to page history view
    -->
    
    <replace content="//*[@id='section-byline']" xml:id="r64"/>

</rules>
    <!-- TODO review <xi:include href="/++theme++bootstrap/rules/components/commenting.xml" /> -->

    <!-- analytics body part (haiku.analytics) -->

    <before css:theme-children="body" css:content-children="#haiku-analytics-body" xml:id="r65"/>

</rules>
        <rules xml:id="r66">

	<!-- site footer -->

    <replace css:content="#site-footer" css:theme="#site-footer" xml:id="r67"/>

</rules>
        <rules xml:id="r68">

    <!-- elements just before body tag closing -->

    <!-- site bottom actions e.g., Google Analytics -->
    <after theme-children="/html/body" css:content="#site-bottom" xml:id="r69"/>

    <!-- haiku mmenu: http://mmenu.frebsite.nl -->
    <after theme-children="/html/body" css:content="#haiku-mmenu" xml:id="r70"/>
    
	<!-- google analytics -->
	<after theme-children="/html/body" css:content-children="#google-analytics" xml:id="r71"/>

    <!-- social sharing -->
    <after theme-children="/html/body" css:content-children="#social-sharing-code" xml:id="r72"/>

	<!-- haiku feedback tab -->
	<after theme-children="/html/body" css:content="#haiku-feedback-tab" xml:id="r73"/>

    <!-- bottom js customizations -->
    <after theme-children="/html/body" css:content-children="#bottom-js" xml:id="r74"/>
	
	<!-- extra resources js -->
    <after theme-children="/html/body" css:content-children="#extra-resources-js" xml:id="r75"/>

    <!-- cookielaw js -->
    <after theme-children="/html/body" css:content-children="#cookielaw-deleter" xml:id="r76"/>
    
</rules>
    
        <rules xml:id="r77">

    <!-- form elements -->
    <rules xml:id="r78">

    <!-- ********** General ********** -->
    
    <!-- SUCCESS -->
    <!-- Add/Apply/Approve/Comment/Done/Enable/Export/Import/Install/Log in/Modify/Publish/Reply/Save/Send/Upload -->
    <replace content="button[@value='Add' or @value='Apply' or @value='Approve' or @value='Comment'          or @value='Done' or @value='Enable' or @value='Export' or @value='Import' or @value='Install'          or @value='Log in' or @value='Modify' or @value='Publish' or @value='Rename' or @value='Reply'          or @value='Save' or @value='Send' or @value='Upload']" xml:id="r79">
        <button class="btn btn-success">
            <xsl:copy-of select="@*[not(name()='class')]"/>
            <xsl:apply-templates/>
        </button>
        <xsl:text> </xsl:text>
    </replace>
    <replace content="button[text()='Add' or text()='Apply' or text()='Approve' or text()='Comment'          or text()='Done' or text()='Enable' or text()='Export' or text()='Import' or text()='Install'         or text()='Log in' or text()='Modify' or text()='Publish' or text()='Rename' or text()='Reply'         or text()='Save' or text()='Send' or text()='Upload']" xml:id="r80">
        <button class="btn btn-success">
            <xsl:copy-of select="@*[not(name()='class')]"/>
            <xsl:apply-templates/>
        </button>
        <xsl:text> </xsl:text>
    </replace>
    <replace content="input[@value='Add' or @value='Apply' or @value='Approve' or @value='Comment'         or @value='Done' or @value='Export' or @value='Enable' or @value='Import' or @value='Install'         or @value='Log in' or @value='Modify' or @value='Publish' or @value='Rename' or @value='Reply'         or @value='Save' or @value='Send' or @value='Upload']" xml:id="r81">
        <input class="btn btn-success">
            <xsl:copy-of select="@*[not(name()='class')]"/>
        </input>
        <xsl:text> </xsl:text>
    </replace>

    <!-- Easy Forms -->
    <replace css:content=".easyformForm .formControls #form-buttons-submit" xml:id="r82">
        <button class="btn btn-success">
            <xsl:copy-of select="@*[not(name()='class')]"/>
            <xsl:apply-templates/>
        </button>
        <xsl:text> </xsl:text>
    </replace>
    <replace css:content=".easyformForm .formControls #form-buttons-reset" xml:id="r83">
        <button class="btn btn-warning">
            <xsl:copy-of select="@*[not(name()='class')]"/>
            <xsl:apply-templates/>
        </button>
        <xsl:text> </xsl:text>
    </replace>

    <!-- INFO -->
    <!-- Edit/Filter/Install-->
    <replace content="button[@value='Edit' or @value='Filter']" xml:id="r84">
        <button class="btn btn-info">
            <xsl:copy-of select="@*[not(name()='class')]"/>
            <xsl:apply-templates/>
        </button>
        <xsl:text> </xsl:text>
    </replace>
    <replace content="button[text()='Edit' or text()='Filter']" xml:id="r85">
        <button class="btn btn-info">
            <xsl:copy-of select="@*[not(name()='class')]"/>
            <xsl:apply-templates/>
        </button>
        <xsl:text> </xsl:text>
    </replace>
    <replace content="input[@value='Edit' or @value='Filter']" xml:id="r86">
        <input class="btn btn-info">
            <xsl:copy-of select="@*[not(name()='class')]"/>
        </input>
        <xsl:text> </xsl:text>
    </replace>

    <!-- WARNING -->
    <!-- Cancel/Disable-->
    <replace content="button[@value='Cancel' or @value='Disable']" xml:id="r87">
        <button class="btn btn-warning">
            <xsl:copy-of select="@*[not(name()='class')]"/>
            <xsl:apply-templates/>
        </button>
        <xsl:text> </xsl:text>
    </replace>
    <replace content="button[text()='Cancel' or text()='Disable']" xml:id="r88">
        <button class="btn btn-warning">
            <xsl:copy-of select="@*[not(name()='class')]"/>
            <xsl:apply-templates/>
        </button>
        <xsl:text> </xsl:text>
    </replace>
    <replace content="input[@value='Cancel' or @value='Disable']" xml:id="r89">
        <input class="btn btn-warning">
            <xsl:copy-of select="@*[not(name()='class')]"/>
        </input>
        <xsl:text> </xsl:text>
    </replace> 


    <!-- DANGER -->
    <!-- Delete/Remove -->
    <replace content="button[@value='Delete' or @value='Remove']" xml:id="r90">
        <button class="btn btn-danger">
            <xsl:copy-of select="@*[not(name()='class')]"/>
            <xsl:apply-templates/>
        </button>
        <xsl:text> </xsl:text>
    </replace>
    <replace content="button[text()='Delete' or text()='Remove']" xml:id="r91">
        <button class="btn btn-danger">
            <xsl:copy-of select="@*[not(name()='class')]"/>
            <xsl:apply-templates/>
        </button>
        <xsl:text> </xsl:text>
    </replace>
    <replace content="input[@value='Delete' or @value='Remove']" xml:id="r92">
        <input class="btn btn-danger">
            <xsl:copy-of select="@*[not(name()='class')]"/>
        </input>
        <xsl:text> </xsl:text>
    </replace>

    <!-- ********** UI elements ********** -->

    <!-- Edit bar -> Rules /@@manage-content-rules -->
    <replace content="//body[contains(@class, 'template-manage-content-rules')]//button[@name='form.button.NoBubble']" xml:id="r93">
        <button class="btn btn-warning">
            <xsl:copy-of select="@*[not(name()='class')]"/>
            <xsl:apply-templates/>
        </button>
        <xsl:text> </xsl:text>
    </replace>
    <replace content="//body[contains(@class, 'template-manage-content-rules')]//button[@name='form.button.Bubble']" xml:id="r94">
        <button class="btn btn-info">
            <xsl:copy-of select="@*[not(name()='class')]"/>
            <xsl:apply-templates/>
        </button>
        <xsl:text> </xsl:text>
    </replace>

    <!-- Edit bar -> Rules RULE/@@manage-elements -->
    <replace content="//body[contains(@class, 'template-manage-elements')]//a[@class='pat-plone-modal btn btn-sm btn-primary']" xml:id="r95">
        <a class="pat-plone-modal btn btn-info">
            <xsl:copy-of select="@*[not(name()='class')]"/>
            <xsl:apply-templates/>
        </a>
        <xsl:text> </xsl:text>
    </replace>
    <replace content="//body[contains(@class, 'template-manage-elements')]//button[@class='context btn btn-sm btn-primary']" xml:id="r96">
        <button class="context btn btn-info">
            <xsl:copy-of select="@*[not(name()='class')]"/>
            <xsl:apply-templates/>
        </button>
        <xsl:text> </xsl:text>
    </replace>

    <!-- Edit bar -> Notifications /@@manage_haiku_context_notifications -->
    <replace content="//body[contains(@class, 'template-manage_haiku_context_notifications')]//a[@class='btn btn-info btn-sm pat-plone-modal']" xml:id="r97">
        <xsl:copy><xsl:apply-templates select="@*|node()"/></xsl:copy>
    </replace>
    <replace content="//body[contains(@class, 'template-manage_haiku_context_notifications')]//button[@value='delete']" xml:id="r98">
        <xsl:copy><xsl:apply-templates select="@*|node()"/></xsl:copy>
    </replace>
    
    <!-- ********** Control Panel ********** -->

    <!-- Site setup -> Portal actions /@@actions-controlpanel -->
    <replace content="//body[contains(@class, 'template-actions-controlpanel')]//a[@class='pat-plone-modal btn btn-sm btn-primary standalone']" xml:id="r99">
        <a class="pat-plone-modal btn btn-info standalone">
            <xsl:copy-of select="@*[not(name()='class')]"/>
            <xsl:apply-templates/>
        </a>
        <xsl:text> </xsl:text>
    </replace>
    
    <!-- Site setup -> Add-ons /prefs_install_products_form -->
    <replace content="//body[contains(@class, 'template-prefs_install_products_form')]//button[@value='Install']" xml:id="r100">
        <button class="btn btn-sm btn-success">
            <xsl:copy-of select="@*[not(name()='class')]"/>
            <xsl:apply-templates/>
        </button>
        <xsl:text> </xsl:text>
    </replace>

    <!-- Site setup -> Mail Settings /@@mail-controlpanel -->
    <replace content="//body[contains(@class, 'template-mail-controlpanel')]//button[@value='Save and send test e-mail']" xml:id="r101">
        <button class="btn btn-info submit-widget button-field">
            <xsl:copy-of select="@*[not(name()='class')]"/>
            <xsl:apply-templates/>
        </button>
        <xsl:text> </xsl:text>
    </replace>
    
    <!-- Site setup -> Content Rules /@@rules-controlpanel -->
    <replace content="//body[contains(@class, 'template-rules-controlpanel')]//a[@class='btn btn-sm btn-primary']" xml:id="r102">
        <a class="btn btn-info">
            <xsl:copy-of select="@*[not(name()='class')]"/>
            <xsl:apply-templates/>
        </a>
        <xsl:text> </xsl:text>
    </replace>
    <replace content="//body[contains(@class, 'template-rules-controlpanel')]//a[@class='btn btn-sm btn-secondary']" xml:id="r103">
        <a class="btn btn-info">
            <xsl:copy-of select="@*[not(name()='class')]"/>
            <xsl:apply-templates/>
        </a>
        <xsl:text> </xsl:text>
    </replace>    

    <!-- Site setup -> Content Types /@@dexterity-types -->
    <replace content="//body[contains(@class, 'section-dexterity-types')]//button[@class='btn btn-primary']" xml:id="r104">
        <button class="btn btn-success">
            <xsl:copy-of select="@*[not(name()='class')]"/>
            <xsl:apply-templates/>
        </button>
        <xsl:text> </xsl:text>
    </replace>
    <replace content="//body[contains(@class, 'section-dexterity-types')]//button[@value='Clone']" xml:id="r105">
        <button class="btn btn-info submit-widget button-field">
            <xsl:copy-of select="@*[not(name()='class')]"/>
            <xsl:apply-templates/>
        </button>
        <xsl:text> </xsl:text>
    </replace>

    <!-- Site setup -> Inspect relations /@@inspect-relations -->
    <replace content="//body[contains(@class, 'template-inspect-relations')]//button[text()='Inspect']" xml:id="r106">
        <button class="context btn btn-info">
            <xsl:copy-of select="@*[not(name()='class')]"/>
            <xsl:apply-templates/>
        </button>
        <xsl:text> </xsl:text>
    </replace>
            
    <!-- Site setup -> Groups /@@usergroup-groupprefs -->
    <replace content="//body[contains(@class, 'template-usergroup-groupprefs')]//a[@id='add-group']" xml:id="r107">
        <a class="pat-plone-modal btn btn-success">
            <xsl:copy-of select="@*[not(name()='class')]"/>
            <xsl:apply-templates/>
        </a>
        <xsl:text> </xsl:text>
    </replace>
    <replace content="//body[contains(@class, 'template-usergroup-groupprefs')]//button[@name='form.button.Search']" xml:id="r108">
        <button class="btn btn-info">
            <xsl:copy-of select="@*[not(name()='class')]"/>
            <xsl:apply-templates/>
        </button>
        <xsl:text> </xsl:text>
    </replace>
    <replace content="//body[contains(@class, 'template-usergroup-groupprefs')]//button[@name='form.button.FindAll']" xml:id="r109">
        <button class="btn btn-success">
            <xsl:copy-of select="@*[not(name()='class')]"/>
            <xsl:apply-templates/>
        </button>
        <xsl:text> </xsl:text>
    </replace>

    <!-- Site setup -> Group: XXX @@usergroup-groupmembership?groupname=XXX -->
    <replace content="//body[contains(@class, 'template-usergroup-groupmembership')]//button[@name='form.button.Search']" xml:id="r110">
        <button class="btn btn-info">
            <xsl:copy-of select="@*[not(name()='class')]"/>
            <xsl:apply-templates/>
        </button>
        <xsl:text> </xsl:text>
    </replace>
    <replace content="//body[contains(@class, 'template-usergroup-groupmembership')]//button[@name='form.button.FindAll']" xml:id="r111">
        <button class="btn btn-success">
            <xsl:copy-of select="@*[not(name()='class')]"/>
            <xsl:apply-templates/>
        </button>
        <xsl:text> </xsl:text>
    </replace>
    
    <!-- Site setup -> Groups /@@usergroup-groupprefs -->
    <replace content="//body[contains(@class, 'template-usergroup-userprefs')]//a[@id='add-user']" xml:id="r112">
        <a class="pat-plone-modal btn btn-success">
            <xsl:copy-of select="@*[not(name()='class')]"/>
            <xsl:apply-templates/>
        </a>
        <xsl:text> </xsl:text>
    </replace>
    <replace content="//body[contains(@class, 'template-usergroup-userprefs')]//button[@name='form.button.Search']" xml:id="r113">
        <button class="btn btn-info">
            <xsl:copy-of select="@*[not(name()='class')]"/>
            <xsl:apply-templates/>
        </button>
        <xsl:text> </xsl:text>
    </replace>
    <replace content="//body[contains(@class, 'template-usergroup-userprefs')]//button[@name='form.button.FindAll']" xml:id="r114">
        <button class="btn btn-success">
            <xsl:copy-of select="@*[not(name()='class')]"/>
            <xsl:apply-templates/>
        </button>
        <xsl:text> </xsl:text>
    </replace>
 
    <!-- Site setup -> Import caching profiles /@@caching-controlpanel-import -->
    <replace content="//body[contains(@class, 'template-caching-controlpanel-import')]//button[text()='Import']" xml:id="r115">
        <button class="btn btn-success">
            <xsl:copy-of select="@*[not(name()='class')]"/>
            <xsl:apply-templates/>
        </button>
        <xsl:text> </xsl:text>
    </replace>

    <!-- Site setup -> Purge caching proxy /@@caching-controlpanel-purge -->
    <replace content="//body[contains(@class, 'template-caching-controlpanel-purge')]//button[text()='Purge']" xml:id="r116">
        <button class="btn btn-warning">
            <xsl:copy-of select="@*[not(name()='class')]"/>
            <xsl:apply-templates/>
        </button>
        <xsl:text> </xsl:text>
    </replace>

    <!-- Site setup -> RAM cache statistics /@@caching-controlpanel-ramcache -->
    <replace content="//body[contains(@class, 'template-caching-controlpanel-ramcache')]//button[text()='Purge']" xml:id="r117">
        <button class="btn btn-warning">
            <xsl:copy-of select="@*[not(name()='class')]"/>
            <xsl:apply-templates/>
        </button>
        <xsl:text> </xsl:text>
    </replace>
    
    <!-- Site setup -> Configuration Registry /portal_registry -->
    <replace content="//body[contains(@class, 'section-portal_registry')]//div[@class='input-group-append']" xml:id="r118">
        <xsl:apply-templates/>
    </replace>
    <replace content="//body[contains(@class, 'section-portal_registry')]//button[text()='Clear filter']" xml:id="r119">
        <button class="btn btn-warning">
            <xsl:copy-of select="@*[not(name()='class')]"/>
            <xsl:apply-templates/>
        </button>
        <xsl:text> </xsl:text>
    </replace>
    <replace content="//body[contains(@class, 'section-portal_registry')]//button[text()='Export Now']" xml:id="r120">
        <button class="btn btn-info">
            <xsl:copy-of select="@*[not(name()='class')]"/>
            <xsl:apply-templates/>
        </button>
        <xsl:text> </xsl:text>
    </replace>
    <replace content="//body[contains(@class, 'section-portal_registry')]//button[text()='Import File']" xml:id="r121">
        <button class="btn btn-success">
            <xsl:copy-of select="@*[not(name()='class')]"/>
            <xsl:apply-templates/>
        </button>
        <xsl:text> </xsl:text>
    </replace>
    <replace content="//body[contains(@class, 'section-portal_registry')]//button[text()='Add field']" xml:id="r122">
        <button class="btn btn-success">
            <xsl:copy-of select="@*[not(name()='class')]"/>
            <xsl:apply-templates/>
        </button>
        <xsl:text> </xsl:text>
    </replace>
                       
    <!-- exclude tabs from transformation -->
    <replace content="button[@role='tab']" xml:id="r123">
        <button>
            <xsl:copy-of select="@*"/>
            <xsl:apply-templates/>
        </button>
    </replace>
    
</rules>
    <rules xml:id="r124">
    
    <!-- 
        Add Bootstrap 5 'is-invalid' validation CSS class and 
        attribute 'aria-labelledby' for screen readers to inputs
    -->

    <replace content="div[contains(@class, 'error')]//input" xml:id="r125">
        <input>
            <xsl:copy-of select="@*"/>
            <xsl:attribute name="class">
                <xsl:value-of select="concat(@class,' is-invalid')"/>
            </xsl:attribute>
            <xsl:attribute name="aria-labelledby">
                <xsl:value-of select="concat(@id, '-error')"/>
            </xsl:attribute>
            <xsl:apply-templates/>
        </input>
    </replace>

    <replace content="div[contains(@class, 'error')]//div[@class='invalid-feedback']" xml:id="r126">
        <xsl:variable name="prev" select="preceding-sibling::input[1]"/>
        <div>
            <xsl:copy-of select="@*"/>
            <xsl:if test="$prev">
                <xsl:attribute name="id">
                    <xsl:value-of select="concat($prev/@id, '-error')"/>
                </xsl:attribute>
            </xsl:if>
            <xsl:apply-templates/>
        </div>
    </replace>
    
</rules>

    <!-- remove HTML5 required -->
	<replace content="select" xml:id="r127">
		<select>
			<xsl:copy-of select="@*[not(name()='required')]"/>
			<xsl:apply-templates/>
		</select>
	</replace>
    <replace content="textarea[@id='form-widgets-comment-text']" xml:id="r128">
        <textarea>
            <xsl:copy-of select="@*[not(name()='required')]"/>
            <xsl:apply-templates/>
        </textarea>
    </replace>

    <!-- remove autofocus from commenting form-->
    <replace content="div[@id='commenting']//form" xml:id="r129">
        <form class="rowlike pat-formunloadalert pat-validation">
            <xsl:copy-of select="@*[not(name()='class')]"/>
            <xsl:apply-templates/>
        </form>
    </replace>
    
</rules>
        <rules xml:id="r130">

    <rules xml:id="r131">

  <before css:content="div#cookienotification" theme-children="/html/body" xml:id="r132"/>

</rules>
    <rules xml:id="r133">

    <!-- cover pages -->

    <replace css:content=".cover-fluid > .row" xml:id="r134">
        <div>
            <xsl:copy-of select="@*"/>
            <div class="row-content">
                <xsl:apply-templates/>
            </div>
        </div>
    </replace>


    <replace css:content="body.template-layoutedit #tile-configure" xml:id="r135">
        <!-- drop 'hide' class from the div -->
        <div id="tile-configure" class="modal"/>
    </replace>

    <replace css:content="body.template-layoutedit #export-layout" xml:id="r136">
        <!-- drop 'hide' class from the div -->
        <div id="export-layout" class="modal"><xsl:apply-templates/></div>
    </replace>

    <replace css:content="body.template-compose #internalpath" xml:id="r137">
        <!-- originally contains .formHelp but that's replaced by .help-block in widgets.xml
             and id attribute is removed. We need it to make javascript work -->
        <div id="internalpath"/>
    </replace>

    <replace css:content="body.template-compose #internalpath" xml:id="r138">
        <!-- originally contains .formHelp but that's replaced by .help-block in widgets.xml
             and id attribute is removed. We need it to make javascript work -->
        <div id="internalpath"/>
    </replace>

    <replace css:content="a.edit-tile-link" xml:id="r139">
        <a class="{@class} btn btn-info">
            <xsl:copy-of select="@*[not(name()='class')]"/>
            <xsl:value-of select="text()"/>
        </a>
    </replace>

    <replace css:content="body.template-haiku-coverpage div#formfield-form-widgets-template_layout" xml:id="r140">
        <div class="form-group" id="{@id}">
            <xsl:apply-templates/>
        </div>
    </replace>

</rules>
    <rules xml:id="r141">
    
    <!-- social sharing buttons -->

    <after css:theme="#site-actions" css:content="#portal-header .social-following" xml:id="r142"/>
    <after css:theme="#site-footer" css:content="#portal-footer .social-following" xml:id="r143"/>
    
</rules>
    <!-- TODO review <xi:include href="/++theme++bootstrap/rules/components/cover-page.xml" /> -->
    
</rules>
    
    </rules>

</rules>

</rules>
The Plone® Open Source CMS/WCM is © 2000-2025 by the Plone Foundation and friends. Distributed under the GNU GPL license.
  • Site Map
  • Accessibility
  • Contact
  • Cookies
  • Contact us
  • Log in
Powered by Plone

Blue and white logo reads 'Nuffield Department of Primary Care Health Sciences'
© 2025 University of Oxford
  • Freedom of Information
  • Privacy Policy
  • Copyright Statement
  • Media
  • Site Map
  • Accessibility
  • Contact
  • Cookies
  • Contact us
  • Log in
powered by Haiku