first commit

This commit is contained in:
CHIEFSOFT\ameye
2024-06-08 17:09:23 -04:00
commit df3a033196
17887 changed files with 8637778 additions and 0 deletions
@@ -0,0 +1,77 @@
{**
* templates/admin/contextSettings.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* @brief Admin page for configuring high-level details about a context.
*
* @uses $editContext Context The context that is being edited.
*}
{extends file="layouts/backend.tpl"}
{block name="page"}
<h1 class="app__pageHeading">
{translate key="manager.settings.wizard"}
</h1>
<tabs :track-history="true">
<tab id="setup" label="{translate key="manager.setup"}">
<tabs :is-side-tabs="true" :track-history="true">
<tab id="context" label="{translate key="context.context"}">
<pkp-form
v-bind="components.{$smarty.const.FORM_CONTEXT}"
@set="set"
/>
</tab>
<tab id="appearance" label="{translate key="manager.website.appearance"}">
<theme-form
v-bind="components.{$smarty.const.FORM_THEME}"
@set="set"
/>
</tab>
<tab id="languages" label="{translate key="common.languages"}">
{capture assign=languagesUrl}{url router=\PKP\core\PKPApplication::ROUTE_COMPONENT context=$editContext->getPath() component="grid.settings.languages.ManageLanguageGridHandler" op="fetchGrid" escape=false}{/capture}
{load_url_in_div id="languageGridContainer" url=$languagesUrl}
</tab>
<tab id="indexing" label="{translate key="manager.setup.searchEngineIndexing"}">
<pkp-form
v-bind="components.{$smarty.const.FORM_SEARCH_INDEXING}"
@set="set"
/>
</tab>
<tab id="restrictBulkEmails" label="{translate key="admin.settings.restrictBulkEmails"}">
{if $bulkEmailsEnabled}
<pkp-form
v-bind="components.{$smarty.const.FORM_RESTRICT_BULK_EMAILS}"
@set="set"
/>
{else}
{capture assign="siteSettingsUrl"}{url router=\PKP\core\PKPApplication::ROUTE_PAGE page="admin" op="settings" anchor="setup/bulkEmails"}{/capture}
<p>{translate key="admin.settings.disableBulkEmailRoles.contextDisabled" siteSettingsUrl=$siteSettingsUrl}</p>
{/if}
</tab>
{call_hook name="Template::Settings::admin::contextSettings::setup"}
</tabs>
</tab>
<tab id="plugins" label="{translate key="common.plugins"}">
<tabs :track-history="true">
<tab id="installed" label="{translate key="manager.plugins.installed"}">
{capture assign=pluginGridUrl}{url router=\PKP\core\PKPApplication::ROUTE_COMPONENT context=$editContext->getPath() component="grid.settings.plugins.SettingsPluginGridHandler" op="fetchGrid" escape=false}{/capture}
{load_url_in_div id="pluginGridContainer" url=$pluginGridUrl}
</tab>
<tab id="gallery" label="{translate key="manager.plugins.pluginGallery"}">
{capture assign=pluginGalleryGridUrl}{url router=\PKP\core\PKPApplication::ROUTE_COMPONENT context=$editContext->getPath() component="grid.plugins.PluginGalleryGridHandler" op="fetchGrid" escape=false}{/capture}
{load_url_in_div id="pluginGalleryGridContainer" url=$pluginGalleryGridUrl}
</tab>
{call_hook name="Template::Settings::admin::contextSettings::plugins"}
</tabs>
</tab>
<tab id="users" label="{translate key="manager.users"}">
{capture assign=usersUrl}{url router=\PKP\core\PKPApplication::ROUTE_COMPONENT context=$editContext->getPath() component="grid.settings.user.UserGridHandler" op="fetchGrid" escape=false}{/capture}
{load_url_in_div id="userGridContainer" url=$usersUrl}
</tab>
{call_hook name="Template::Settings::admin::contextSettings"}
</tabs>
{/block}
+23
View File
@@ -0,0 +1,23 @@
{**
* templates/admin/contexts.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Display list of contexts in administration.
*}
{extends file="layouts/backend.tpl"}
{block name="page"}
{if $newVersionAvailable}
<notification>
{translate key="site.upgradeAvailable.admin" currentVersion=$currentVersion->getVersionString(false) latestVersion=$latestVersion}
</notification>
{/if}
{capture assign=contextsUrl}{url router=\PKP\core\PKPApplication::ROUTE_COMPONENT component="grid.admin.context.ContextGridHandler" op="fetchGrid" escape=false}{/capture}
{load_url_in_div id="contextGridContainer" url=$contextsUrl}
{/block}
+22
View File
@@ -0,0 +1,22 @@
{**
* templates/admin/editContext.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* @brief Display the form to add or edit a context
*}
<div id="editContext">
{if $isAddingNewContext}
<add-context-form
{else}
<pkp-form
{/if}
v-bind="components.{$smarty.const.FORM_CONTEXT}"
@set="set"
/>
</div>
<script type="text/javascript">
pkp.registry.init('editContext', 'AddContextContainer', {$containerData|json_encode});
</script>
@@ -0,0 +1,37 @@
{**
* templates/admin/failedJobDetails.tpl
*
* Copyright (c) 2014-2022 Simon Fraser University
* Copyright (c) 2003-2022 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Failed Jobs Details
*}
{extends file="layouts/backend.tpl"}
{block name="page"}
<h1 class="app__pageHeading">
{translate key=$pageTitle}
</h1>
<div class="app__contentPanel app__contentPanel__overflow">
<pkp-table
:columns="columns"
:rows="rows"
:label="label"
>
<template slot-scope="{ row, rowIndex }">
<table-cell
v-for="(column, columnIndex) in columns"
:key="column.name"
:column="column"
:row="row"
:tabindex="!rowIndex && !columnIndex ? 0 : -1"
>
<span v-if="column.name === 'value' && isValidJson(row.value)">
<pre>{{ row.value }}</pre>
</span>
</table-cell>
</template>
</pkp-table>
</div>
{/block}
+66
View File
@@ -0,0 +1,66 @@
{**
* templates/admin/failedJobs.tpl
*
* Copyright (c) 2014-2022 Simon Fraser University
* Copyright (c) 2003-2022 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Failed Jobs index
*}
{extends file="layouts/backend.tpl"}
{block name="page"}
<h1 class="app__pageHeading">
{translate key=$pageTitle}
</h1>
<div class="app__contentPanel">
<pkp-table
:columns="columns"
:rows="rows"
:description="description"
:label="label"
>
<template v-slot:label v-if="total > 0">
<div>
<span class="pkp_helpers_half pkp_helpers_align_left">{{ label }}</span>
<span class="pkp_helpers_half pkp_helpers_align_right pkp_helpers_text_right">
<spinner v-if="isLoadingItems"></spinner>
<pkp-button @click="requeueAll">
{translate key="admin.jobs.failed.action.redispatch.all"}
</pkp-button>
</span>
</div>
</template>
<template slot-scope="{ row, rowIndex }">
<table-cell
v-for="(column, columnIndex) in columns"
:key="column.name"
:column="column"
:row="row"
:tabindex="!rowIndex && !columnIndex ? 0 : -1"
>
<button-row v-if="column.name === 'actions'">
<pkp-button @click="redispatch(row)">
{translate key="admin.jobs.failed.action.redispatch"}
</pkp-button>
<pkp-button is-warnable @click="remove(row)">
{translate key="common.delete"}
</pkp-button>
<pkp-button element="a" is-link :href="row._hrefs._details">
{translate key="common.details"}
</pkp-button>
</button-row>
</table-cell>
</template>
</pkp-table>
<pagination
v-if="lastPage > 1"
:current-page="currentPage"
:last-page="lastPage"
:is-loading="isLoadingItems"
@set-page="handlePagination"
/>
</div>
{/block}
+119
View File
@@ -0,0 +1,119 @@
{**
* templates/admin/index.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Site administration index.
*
*}
{extends file="layouts/backend.tpl"}
{block name="page"}
<h1 class="app__pageHeading">
{translate key="navigation.admin"}
</h1>
{if $newVersionAvailable}
<notification>
{translate key="site.upgradeAvailable.admin" currentVersion=$currentVersion->getVersionString(false) latestVersion=$latestVersion}
</notification>
{/if}
<action-panel>
<h2>{translate key="admin.siteManagement"}</h2>
<p>
{translate key="admin.siteManagement.description"}
</p>
<template slot="actions">
<pkp-button
element="a"
href="{url op="contexts"}"
>
{translate key="admin.hostedContexts"}
</pkp-button>
<pkp-button
element="a"
href="{url op="settings"}"
>
{translate key="admin.siteSettings"}
</pkp-button>
</template>
</action-panel>
<action-panel>
<h2>{translate key="admin.systemInformation"}</h2>
<p>
{translate key="admin.systemInformation.description"}
</p>
<template slot="actions">
<pkp-button
element="a"
href="{url op="systemInfo"}"
>
{translate key="admin.systemInformation.view"}
</pkp-button>
</template>
</action-panel>
<action-panel>
<h2>{translate key="admin.expireSessions"}</h2>
<p>
{translate key="admin.expireSessions.description"}
</p>
<template slot="actions">
<form type="post" action="{url op="expireSessions"}">
{csrf}
<button class="pkpButton pkpButton--isWarnable" onclick="return confirm({translate|json_encode|escape key="admin.confirmExpireSessions"})">{translate key="admin.expireSessions"}</button>
</form>
</template>
</action-panel>
<action-panel>
<h2>{translate key="admin.deleteCache"}</h2>
<p>
{translate key="admin.deleteCache.description"}
</p>
<template slot="actions">
<form type="post" action="{url op="clearDataCache"}">
{csrf}
<button class="pkpButton pkpButton--isWarnable">{translate key="admin.clearDataCache"}</button>
</form>
<form type="post" action="{url op="clearTemplateCache"}">
{csrf}
<button class="pkpButton pkpButton--isWarnable" onclick="return confirm({translate|json_encode|escape key="admin.confirmClearTemplateCache"})">{translate key="admin.clearTemplateCache"}</button>
</form>
</template>
</action-panel>
<action-panel>
<h2>{translate key="admin.scheduledTask.clearLogs"}</h2>
<p>
{translate key="admin.scheduledTask.clearLogs.description"}
</p>
<template slot="actions">
<form type="post" action="{url op="clearScheduledTaskLogFiles"}">
{csrf}
<button class="pkpButton pkpButton--isWarnable" onclick="return confirm({translate|json_encode|escape key="admin.scheduledTask.confirmClearLogs"})">{translate key="admin.scheduledTask.clearLogs.delete"}</button>
</form>
</template>
</action-panel>
<action-panel>
<h2>{translate key="navigation.tools.jobs"}</h2>
<p>
{translate key="navigation.tools.jobs.description"}
</p>
<template slot="actions">
<pkp-button
element="a"
href="{url op="jobs"}"
>
{translate key="navigation.tools.jobs.view"}
</pkp-button>
<pkp-button
element="a"
href="{url op="failedJobs"}"
>
{translate key="navigation.tools.jobs.failed.view"}
</pkp-button>
</template>
</action-panel>
{call_hook name="Templates::Admin::Index::AdminFunctions"}
{/block}
+31
View File
@@ -0,0 +1,31 @@
{**
* templates/admin/jobs.tpl
*
* Copyright (c) 2014-2022 Simon Fraser University
* Copyright (c) 2003-2022 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Jobs index
*}
{extends file="layouts/backend.tpl"}
{block name="page"}
<h1 class="app__pageHeading">
{translate key=$pageTitle}
</h1>
<div class="app__contentPanel">
<pkp-table
:columns="columns"
:rows="rows"
:description="description"
:label="label"
></pkp-table>
<pagination v-if="lastPage > 1"
:current-page="currentPage"
:last-page="lastPage"
:is-loading="isLoadingItems"
@set-page="handlePagination"
/>
</div>
{/block}
+147
View File
@@ -0,0 +1,147 @@
{**
* templates/admin/settings.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Administration settings page.
*}
{extends file="layouts/backend.tpl"}
{block name="page"}
<h1 class="app__pageHeading">
{translate key="admin.siteSettings"}
</h1>
{if $newVersionAvailable}
<notification>
{translate key="site.upgradeAvailable.admin" currentVersion=$currentVersion->getVersionString(false) latestVersion=$latestVersion}
</notification>
{/if}
<tabs :track-history="true">
{if $componentAvailability['siteSetup']}
<tab id="setup" label="{translate key="admin.siteSetup"}">
<tabs :is-side-tabs="true" :track-history="true">
{if $componentAvailability['siteConfig']}
<tab id="settings" label="{translate key="admin.settings"}">
<pkp-form
v-bind="components.{$smarty.const.FORM_SITE_CONFIG}"
@set="set"
/>
</tab>
{/if}
{if $componentAvailability['siteInfo']}
<tab id="info" label="{translate key="manager.setup.information"}">
<pkp-form
v-bind="components.{$smarty.const.FORM_SITE_INFO}"
@set="set"
/>
</tab>
{/if}
{if $componentAvailability['languages']}
<tab id="languages" label="{translate key="common.languages"}">
{capture assign=languagesUrl}{url router=\PKP\core\PKPApplication::ROUTE_COMPONENT component="grid.admin.languages.AdminLanguageGridHandler" op="fetchGrid" escape=false}{/capture}
{load_url_in_div id="languageGridContainer" url=$languagesUrl}
</tab>
{/if}
{if $componentAvailability['navigationMenus']}
<tab id="nav" label="{translate key="manager.navigationMenus"}">
{capture assign=navigationMenusGridUrl}{url router=\PKP\core\PKPApplication::ROUTE_COMPONENT component="grid.navigationMenus.NavigationMenusGridHandler" op="fetchGrid" escape=false}{/capture}
{load_url_in_div id="navigationMenuGridContainer" url=$navigationMenusGridUrl}
{capture assign=navigationMenuItemsGridUrl}{url router=\PKP\core\PKPApplication::ROUTE_COMPONENT component="grid.navigationMenus.NavigationMenuItemsGridHandler" op="fetchGrid" escape=false}{/capture}
{load_url_in_div id="navigationMenuItemsGridContainer" url=$navigationMenuItemsGridUrl}
</tab>
{/if}
{if $componentAvailability['highlights']}
<tab id="highlights" label="{translate key="common.highlights"}">
<highlights-list-panel
v-bind="components.highlights"
@set="set"
/>
</tab>
{/if}
{if $componentAvailability['bulkEmails']}
<tab id="bulkEmails" label="{translate key="admin.settings.enableBulkEmails.label"}">
<pkp-form
v-bind="components.{$smarty.const.FORM_SITE_BULK_EMAILS}"
@set="set"
/>
</tab>
{/if}
{if $componentAvailability['statistics']}
<tab id="statistics" label="{translate key="manager.setup.statistics"}">
<pkp-form
v-bind="components.{$smarty.const.FORM_SITE_STATISTICS}"
@set="set"
/>
</tab>
{/if}
{call_hook name="Template::Settings::admin::setup"}
</tabs>
</tab>
{/if}
{if $componentAvailability['siteAppearance']}
<tab id="appearance" label="{translate key="manager.website.appearance"}">
<tabs :is-side-tabs="true" :track-history="true">
{if $componentAvailability['siteTheme']}
<tab id="theme" label="{translate key="manager.setup.theme"}">
<theme-form
v-bind="components.{$smarty.const.FORM_THEME}"
@set="set"
/>
</tab>
{/if}
{if $componentAvailability['siteAppearanceSetup']}
<tab id="setup" label="{translate key="navigation.setup"}">
<pkp-form
v-bind="components.{$smarty.const.FORM_SITE_APPEARANCE}"
@set="set"
/>
</tab>
{/if}
{call_hook name="Template::Settings::admin::appearance"}
</tabs>
</tab>
{/if}
{if $componentAvailability['announcements']}
<tab id="announcements" label="{translate key="announcement.announcements"}">
<tabs :is-side-tabs="true" :track-history="true">
<tab id="announcement-settings" label="{translate key="admin.settings"}">
<pkp-form
v-bind="components.{$smarty.const.FORM_ANNOUNCEMENT_SETTINGS}"
@set="set"
></pkp-form>
</tab>
<tab id="announcement-items" label="{translate key="announcement.announcements"}">
<announcements-list-panel
v-if="announcementsEnabled"
v-bind="components.announcements"
@set="set"
></announcements-list-panel>
<p v-else>
{translate key="manager.announcements.notEnabled"}
</p>
</tab>
<tab id="announcement-types" label="{translate key="manager.announcementTypes"}">
<template v-if="announcementsEnabled">
{capture assign=announcementTypeGridUrl}{url router=\PKP\core\PKPApplication::ROUTE_COMPONENT component="grid.announcements.AnnouncementTypeGridHandler" op="fetchGrid" escape=false}{/capture}
{load_url_in_div id="announcementTypeGridContainer" url=$announcementTypeGridUrl inVueEl=true}
</template>
<p v-else>
{translate key="manager.announcements.notEnabled"}
</p>
</tab>
</tabs>
</tab>
{/if}
{if $componentAvailability['sitePlugins']}
<tab id="plugins" label="{translate key="common.plugins"}">
{capture assign=pluginGridUrl}{url router=\PKP\core\PKPApplication::ROUTE_COMPONENT component="grid.admin.plugins.AdminPluginGridHandler" op="fetchGrid" escape=false}{/capture}
{load_url_in_div id="pluginGridContainer" url=$pluginGridUrl}
</tab>
{/if}
{call_hook name="Template::Settings::admin"}
</tabs>
{/block}
+115
View File
@@ -0,0 +1,115 @@
{**
* systemInfo.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Display system information.
*}
{extends file="layouts/backend.tpl"}
{block name="page"}
<h1 class="app__pageHeading">
{translate key="admin.systemInformation"}
</h1>
{if $newVersionAvailable}
<notification>
{translate key="site.upgradeAvailable.admin" currentVersion=$currentVersion->getVersionString(false) latestVersion=$latestVersion}
</notification>
{/if}
<div class="app__contentPanel">
<h2>{translate key="admin.currentVersion"}: {$currentVersion->getVersionString(false)} ({$currentVersion->getDateInstalled()|date_format:$datetimeFormatLong})</h2>
{if $latestVersionInfo}
<p>{translate key="admin.version.latest"}: {$latestVersionInfo.release|escape} ({$latestVersionInfo.date|date_format:$dateFormatLong})</p>
{if $currentVersion->compare($latestVersionInfo.version) < 0}
<p><strong>{translate key="admin.version.updateAvailable"}</strong>: <a href="{$latestVersionInfo.package|escape}">{translate key="admin.version.downloadPackage"}</a> | {if $latestVersionInfo.patch}<a href="{$latestVersionInfo.patch|escape}">{translate key="admin.version.downloadPatch"}</a>{else}{translate key="admin.version.downloadPatch"}{/if} | <a href="{$latestVersionInfo.info|escape}">{translate key="admin.version.moreInfo"}</a></p>
{else}
<p><strong>{translate key="admin.version.upToDate"}</strong></p>
{/if}
{else}
<p><a href="{url versionCheck=1}">{translate key="admin.version.checkForUpdates"}</a></p>
{/if}
<h2 id="versionHistory">{translate key="admin.versionHistory"}</h2>
<table class="pkpTable" aria-labelledby="versionHistory">
<thead>
<tr>
<th>{translate key="admin.version"}</th>
<th>{translate key="admin.versionMajor"}</th>
<th>{translate key="admin.versionMinor"}</th>
<th>{translate key="admin.versionRevision"}</th>
<th>{translate key="admin.versionBuild"}</th>
<th>{translate key="admin.dateInstalled"}</th>
</tr>
</thead>
<tbody>
{foreach from=$versionHistory item="version"}
<tr>
<td>{$version->getVersionString(false)}</td>
<td>{$version->getMajor()}</td>
<td>{$version->getMinor()}</td>
<td>{$version->getRevision()}</td>
<td>{$version->getBuild()}</td>
<td>{$version->getDateInstalled()|date_format:$dateFormatShort}</td>
</tr>
{/foreach}
</tbody>
</table>
<h2 id="serverInformation">{translate key="admin.serverInformation"}</h2>
<table class="pkpTable" aria-labelledby="serverInformation">
<thead>
<tr>
<th>{translate key="admin.systemInfo.settingName"}</th>
<th>{translate key="admin.systemInfo.settingValue"}</th>
</tr>
</thead>
<tbody>
{foreach from=$serverInfo item="value" key="name"}
<tr>
<td>{translate key=$name}</td>
<td>{$value|escape}</td>
</tr>
{/foreach}
</tbody>
</table>
<h2>{translate key="admin.systemConfiguration"}</h2>
<table class="pkpTable" aria-labelledby="systemConfiguration{$key}">
<thead>
<tr>
<th>{translate key="admin.systemInfo.settingName"}</th>
<th>{translate key="admin.systemInfo.settingValue"}</th>
</tr>
</thead>
{foreach from=$configData item="settings" key="category"}
<tbody>
<tr>
<td colspan="2" class="app--admin__systemInfoGroup">{$category}</td>
</tr>
{foreach from=$settings item="value" key="name"}
<tr>
<td>{$name|escape}</td>
{if $name === "password"}
<td>**************</td>
{else}
<td>{$value|escape}</td>
{/if}
</tr>
{/foreach}
</tbody>
{/foreach}
</table>
<a href="{url op="phpinfo"}" target="_blank">{translate key="admin.phpInfo"}</a>
</div><!-- .pkp_page_content -->
{/block}
@@ -0,0 +1,31 @@
{**
* templates/authorDashboard/reviewRoundInfo.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Display submission review details in author dashboard page.
*}
<!-- Display round status -->
{include file="controllers/notification/inPlaceNotification.tpl" notificationId="reviewRoundNotification_"|concat:$reviewRoundId requestOptions=$reviewRoundNotificationRequestOptions}
<!-- Display editor's message to the author -->
{include file="authorDashboard/submissionEmails.tpl" submissionEmails=$submissionEmails}
{* Reviewer grid *}
{if $showReviewerGrid}
{capture assign="reviewersGridUrl"}{url router=\PKP\core\PKPApplication::ROUTE_COMPONENT component="grid.users.reviewer.AuthorReviewerGridHandler" op="fetchGrid" submissionId=$submission->getId() stageId=$stageId reviewRoundId=$reviewRoundId escape=false}{/capture}
{load_url_in_div id="reviewersGrid-round_"|concat:$reviewRoundId url=$reviewersGridUrl}
{/if}
<!-- Display review attachments grid -->
{if $showReviewAttachments}
{** need to use the stage id in the div because two of these grids can appear in the dashboard at the same time (one for each stage). *}
{capture assign=reviewAttachmentsGridUrl}{url router=\PKP\core\PKPApplication::ROUTE_COMPONENT component="grid.files.attachment.AuthorReviewAttachmentsGridHandler" op="fetchGrid" submissionId=$submission->getId() stageId=$stageId reviewRoundId=$reviewRoundId escape=false}{/capture}
{load_url_in_div id="reviewAttachmentsGridContainer-`$stageId`-`$reviewRoundId`" url=$reviewAttachmentsGridUrl}
{capture assign=revisionsGridUrl}{url router=\PKP\core\PKPApplication::ROUTE_COMPONENT component="grid.files.review.AuthorReviewRevisionsGridHandler" op="fetchGrid" submissionId=$submission->getId() stageId=$stageId reviewRoundId=$reviewRoundId escape=false}{/capture}
{load_url_in_div id="revisionsGrid-`$stageId`-`$reviewRoundId`" url=$revisionsGridUrl}
{/if}
@@ -0,0 +1,28 @@
{**
* templates/authorDashboard/reviewRoundTab.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Build a review round tab markup (for any review stage).
*}
<script type="text/javascript">
// Attach the JS file tab handler.
$(function() {ldelim}
$('#{$reviewRoundTabsId}').pkpHandler(
'$.pkp.controllers.TabHandler',
{ldelim}
{assign var=roundIndex value=$lastReviewRoundNumber-1}
selected: {$roundIndex}
{rdelim}
);
{rdelim});
</script>
<div id="{$reviewRoundTabsId}" class="pkp_controllers_tab">
<ul>
{foreach from=$reviewRounds item=reviewRound}
<li><a href="{url router=\PKP\core\PKPApplication::ROUTE_COMPONENT component="tab.authorDashboard.AuthorDashboardReviewRoundTabHandler" op="fetchReviewRoundInfo" submissionId=$submission->getId() stageId=$reviewRound->getStageId() reviewRoundId=$reviewRound->getId() escape=false}">{translate key="submission.round" round=$reviewRound->getRound()}</a></li>
{/foreach}
</ul>
</div>
@@ -0,0 +1,20 @@
{**
* templates/authorDashboard/submissionEmail.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Render a single submission email.
*}
<div class="pkp_submission_email">
<h2>
{$submissionEmail->getSubject()|escape}
</h2>
<div class="date">
{$submissionEmail->getDateSent()|date_format:$datetimeFormatShort}
</div>
<div class="email_entry">
{$submissionEmail->getBody()|strip_unsafe_html}
</div>
</div>
@@ -0,0 +1,51 @@
{**
* templates/authorDashboard/submissionEmails.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Display submission emails to authors.
*}
{if $submissionEmails && $submissionEmails->getCount()}
<div class="pkp_submission_emails">
<h3>{translate key="notification.notifications"}</h3>
<ul>
{iterate from=submissionEmails item=submissionEmail}
{capture assign=submissionEmailLinkId}submissionEmail-{$submissionEmail->getId()}{/capture}
<script type="text/javascript">
// Initialize JS handler.
$(function() {ldelim}
$('#{$submissionEmailLinkId|escape:"javascript"}').pkpHandler(
'$.pkp.pages.authorDashboard.SubmissionEmailHandler',
{ldelim}
{* Parameters for parent LinkActionHandler *}
actionRequest: '$.pkp.classes.linkAction.ModalRequest',
actionRequestOptions: {ldelim}
titleIcon: 'modal_information',
title: {translate|json_encode key="notification.notifications"},
modalHandler: '$.pkp.controllers.modal.AjaxModalHandler',
url: {url|json_encode router=\PKP\core\PKPApplication::ROUTE_PAGE page="authorDashboard" op="readSubmissionEmail" submissionId=$submission->getId() stageId=$stageId reviewRoundId=$reviewRoundId submissionEmailId=$submissionEmail->getId() escape=false}
{rdelim}
{rdelim}
);
{rdelim});
</script>
<li>
<span class="message">
<a href="#" id="{$submissionEmailLinkId|escape}">{$submissionEmail->getSubject()|escape}</a>
</span>
<span class="date">
{$submissionEmail->getDateSent()|date_format:$datetimeFormatShort}
</span>
</li>
{/iterate}
</ul>
</div>
{/if}
+25
View File
@@ -0,0 +1,25 @@
{**
* lib/pkp/templates/common/formErrors.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2000-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* List errors that occurred during form processing.
*}
{if $isError}
<div id="formErrors">
<span class="pkp_form_error">{translate key="form.errorsOccurred"}:</span>
<ul class="pkp_form_error_list">
{foreach key=field item=message from=$errors}
<li><a href="#{$field|escape}">{$message}</a></li>
{/foreach}
</ul>
</div>
<script>{literal}
<!--
// Jump to form errors.
window.location.hash="formErrors";
// -->
{/literal}</script>
{/if}
+24
View File
@@ -0,0 +1,24 @@
{**
* templates/common/helpLink.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2000-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* @brief A link which can request the help panel open to a specific chapter
* and section
*
* @uses $helpFile string Markdown filename, eg - chapter_6_submissions.md
* @uses $helpSection string Section reference, eg - second
* @uses $helpText string Text for the link
* @uses $helpTextKey string Locale key for the link text
* @uses $helpClass string Class to add to the help link
*}
<button class="requestHelpPanel pkp_help_link {$helpClass|escape}" data-topic="{$helpFile|escape}"{if $helpSection} data-section="{$helpSection|escape}"{/if}>
<span class="fa fa-info-circle pkpIcon--inline" aria-hidden="true"></span>
{if $helpText}
{$text|escape}
{else}
{translate key=$helpTextKey}
{/if}
</button>
@@ -0,0 +1,15 @@
{**
* loadingContainer.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2000-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* The default HTML to display in a grid before it is loaded.
*
*}
<div class="pkp_loading">
<span class="pkp_spinner"></span>
<span class="message">{translate key="common.loading"}</span>
</div>
+36
View File
@@ -0,0 +1,36 @@
{**
* templates/common/urlInEl.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2000-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Include the contents of a URL in a DIV, AJAX-style.
*
* @param ?bool $inVueEl Whether or not this div is used in HTML code that is
* processed by Vue.js's template compiler.
*
*}
{if $inVueEl}
<component is="script">
{else}
<script>
{/if}
// Initialize JS handler.
$(function() {ldelim}
$('#{$inElElId|escape:javascript}').pkpHandler(
'$.pkp.controllers.UrlInDivHandler',
{ldelim}
sourceUrl: {$inElUrl|json_encode},
refreshOn: {$refreshOn|json_encode}
{rdelim}
);
{rdelim});
{if $inVueEl}
</component>
{else}
</script>
{/if}
<{$inEl} id="{$inElElId|escape}"{if $inElClass} class="{$inElClass|escape}"{/if}>{$inElPlaceholder}</{$inEl}>
+172
View File
@@ -0,0 +1,172 @@
{**
* templates/common/userDetails.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Common user details form.
*
* Parameters:
* $disableUserNameSection: Disable UserName section
* $disableEmailSection: Disable Email section
* $disablePasswordSection: Disable Password section
* $disableSendNotifySection: Disable SendNotify section
* $disablePhoneSection: Disable Phone section
* $disableLocaleSection: Disable Locale section
* $disableInterestsSection: Disable Interests section
* $disableMailingSection: Disable Mailing section
* $disableSignatureSection: Disable Signature section
*
* $countryRequired: Whether or not the country select is a required field
* $extraContentSectionUnfolded: Whether or not the extra content section is unfolded by default
*}
{fbvFormArea id="userDetails"}
{fbvFormSection title="user.name"}
{fbvElement type="text" label="user.givenName" multilingual="true" name="givenName" id="givenName" value=$givenName maxlength="255" inline=true size=$fbvStyles.size.MEDIUM required="true"}
{fbvElement type="text" label="user.familyName" multilingual="true" name="familyName" id="familyName" value=$familyName maxlength="255" inline=true size=$fbvStyles.size.MEDIUM}
{/fbvFormSection}
{fbvFormSection for="preferredPublicName" description="user.preferredPublicName.description"}
{fbvElement type="text" label="user.preferredPublicName" multilingual="true" name="preferredPublicName" id="preferredPublicName" value=$preferredPublicName size=$fbvStyles.size.LARGE}
{/fbvFormSection}
{if !$disableUserNameSection}
{if !$userId}{capture assign="usernameInstruction"}{translate key="user.register.usernameRestriction"}{/capture}{/if}
{fbvFormSection for="username" description=$usernameInstruction translate=false}
{if !$userId}
{fbvElement type="text" label="user.username" id="username" required="true" value=$username maxlength="32" inline=true size=$fbvStyles.size.MEDIUM}
{fbvElement type="button" label="common.suggest" id="suggestUsernameButton" inline=true class="default"}
{else}
{fbvFormSection title="user.username" suppressId="true"}
{$username|escape}
{/fbvFormSection}
{/if}
{/fbvFormSection}
{/if}
{if !$disableEmailSection}
{fbvFormSection title="about.contact"}
{fbvElement type="email" label="user.email" id="email" required="true" value=$email maxlength="90" size=$fbvStyles.size.MEDIUM}
{/fbvFormSection}
{/if}
{if !$disablePasswordSection}
{if $userId}{capture assign="passwordInstruction"}{translate key="user.profile.leavePasswordBlank"} {translate key="user.register.form.passwordLengthRestriction" length=$minPasswordLength}{/capture}{/if}
{fbvFormArea id="passwordSection" title="user.password"}
{fbvFormSection for="password" description=$passwordInstruction translate=false}
{fbvElement type="text" label="user.password" required=$passwordRequired name="password" id="password" password="true" value=$password maxlength="32" inline=true size=$fbvStyles.size.MEDIUM}
{fbvElement type="text" label="user.repeatPassword" required=$passwordRequired name="password2" id="password2" password="true" value=$password2 maxlength="32" inline=true size=$fbvStyles.size.MEDIUM}
{/fbvFormSection}
{if !$userId}
{fbvFormSection title="grid.user.generatePassword" for="generatePassword" list=true}
{if $generatePassword}
{assign var="checked" value=true}
{else}
{assign var="checked" value=false}
{/if}
{fbvElement type="checkbox" name="generatePassword" id="generatePassword" checked=$checked label="grid.user.generatePasswordDescription" translate="true"}
{/fbvFormSection}
{/if}
{fbvFormSection title="grid.user.mustChangePassword" for="mustChangePassword" list=true}
{if $mustChangePassword}
{assign var="checked" value=true}
{else}
{assign var="checked" value=false}
{/if}
{fbvElement type="checkbox" name="mustChangePassword" id="mustChangePassword" checked=$checked label="grid.user.mustChangePasswordDescription" translate="true"}
{/fbvFormSection}
{/fbvFormArea}
{/if}
{if $countryRequired}
{assign var="countryRequired" value=true}
{else}
{assign var="countryRequired" value=false}
{/if}
{fbvFormSection for="country" title="common.country"}
{fbvElement type="select" label="common.country" name="country" id="country" required=$countryRequired defaultLabel="" defaultValue="" from=$countries selected=$country translate="0" size=$fbvStyles.size.MEDIUM}
{/fbvFormSection}
{if !$disableSendNotifySection}
{fbvFormSection title="grid.user.notifyUser" for="sendNotify" list=true}
{if $sendNotify}
{assign var="checked" value=true}
{else}
{assign var="checked" value=false}
{/if}
{fbvElement type="checkbox" name="sendNotify" id="sendNotify" checked=$checked label="grid.user.notifyUserDescription" translate="true"}
{/fbvFormSection}
{/if}
{/fbvFormArea}
{call_hook name="Common::UserDetails::AdditionalItems"}
{capture assign="extraContent"}
{fbvFormArea id="userFormExtendedLeft"}
{fbvFormSection}
{fbvElement type="text" label="user.url" name="userUrl" id="userUrl" value=$userUrl maxlength="255" inline=true size=$fbvStyles.size.SMALL}
{if !$disablePhoneSection}
{fbvElement type="tel" label="user.phone" name="phone" id="phone" value=$phone maxlength="24" inline=true size=$fbvStyles.size.SMALL}
{/if}
{fbvElement type="text" label="user.orcid" name="orcid" id="orcid" value=$orcid maxlength="46" inline=true size=$fbvStyles.size.SMALL}
{/fbvFormSection}
{if !$disableLocaleSection && count($availableLocales) > 1}
{fbvFormSection title="user.workingLanguages" list=true}
{foreach from=$availableLocales key=localeKey item=localeName}
{if $locales && in_array($localeKey, $locales)}
{assign var="checked" value=true}
{else}
{assign var="checked" value=false}
{/if}
{fbvElement type="checkbox" name="locales[]" id="locales-$localeKey" value=$localeKey checked=$checked label=$localeName|escape translate=false}
{/foreach}
{/fbvFormSection}
{/if}
{if !$disableInterestsSection}
{fbvFormSection for="interests"}
{fbvElement type="interests" id="interests" interests=$interests label="user.interests"}
{/fbvFormSection}
{/if}
{fbvFormSection for="affiliation"}
{fbvElement type="text" label="user.affiliation" multilingual="true" name="affiliation" id="affiliation" value=$affiliation inline=true size=$fbvStyles.size.LARGE}
{/fbvFormSection}
{fbvFormSection}
{fbvElement type="textarea" label="user.biography" multilingual="true" name="biography" id="biography" rich=true value=$biography}
{/fbvFormSection}
{if !$disableMailingSection}
{fbvFormSection}
{fbvElement type="textarea" label="common.mailingAddress" name="mailingAddress" id="mailingAddress" rich=true value=$mailingAddress}
{/fbvFormSection}
{/if}
{if !$disableSignatureSection}
{fbvFormSection}
{fbvElement type="textarea" label="user.signature" multilingual="true" name="signature" id="signature" value=$signature rich=true}
{/fbvFormSection}
{/if}
{/fbvFormArea}
{/capture}
{fbvFormSection}
{if $extraContentSectionUnfolded}
{fbvFormSection title="grid.user.userDetails"}
{$extraContent}
{/fbvFormSection}
{else}
<div id="userExtraFormFields" class="left full">
{include file="controllers/extrasOnDemand.tpl"
id="userExtras"
widgetWrapper="#userExtraFormFields"
moreDetailsText="grid.user.moreDetails"
lessDetailsText="grid.user.lessDetails"
extraContent=$extraContent
}
</div>
{/if}
{/fbvFormSection}
@@ -0,0 +1,41 @@
{**
* templates/common/userDetailsReadOnly.tpl
*
* Copyright (c) 2014-2022 Simon Fraser University
* Copyright (c) 2003-2022 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* User details view only
*}
<h4>{translate key="grid.user.userDetails"}</h4>
<div id="userDetailsReadOnly">
<div class="section">
<div class="inline pkp_helpers_third">
<span class="pkp_helpers_form_input_title_text">{translate key="user.givenName"}</span><br />
<span>{$user->getLocalizedData('givenName', $site->getPrimaryLocale())|escape}</span>
</div>
<div class="inline pkp_helpers_third">
<span class="pkp_helpers_form_input_title_text">{translate key="user.familyName"}</span><br />
<span>{$user->getLocalizedData('familyName', $site->getPrimaryLocale())|escape}</span>
</div>
<div class="inline pkp_helpers_third">
<span class="pkp_helpers_form_input_title_text">{translate key="user.preferredPublicName"}</span><br />
<span>{$user->getLocalizedData('preferredPublicName', $site->getPrimaryLocale())|escape}</span>
</div>
</div>
<div class="section">
<div class="inline pkp_helpers_third">
<span class="pkp_helpers_form_input_title_text">{translate key="user.email"}</span><br />
<span>{$email|escape}</span>
</div>
<div class="inline pkp_helpers_third">
<span class="pkp_helpers_form_input_title_text">{translate key="common.country"}</span><br />
<span>{$countries[$user->getCountry()]|escape}</span>
</div>
<div class="inline pkp_helpers_third">
<span class="pkp_helpers_form_input_title_text">{translate key="user.phone"}</span><br />
<span>{$user->getPhone()|escape}</span>
</div>
</div>
</div>
@@ -0,0 +1,23 @@
{**
* templates/controllers/api/file/editMetadata.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* The "edit proof submission file" tabset.
*}
<script type="text/javascript">
// Attach the JS file tab handler.
$(function() {ldelim}
$('#editFileMetadataTabs').pkpHandler('$.pkp.controllers.TabHandler');
{rdelim});
</script>
<div id="editFileMetadataTabs">
<ul>
<li><a href="{url router=\PKP\core\PKPApplication::ROUTE_COMPONENT op="editMetadataTab" submissionFileId=$submissionFile->getId() submissionId=$submissionFile->getData('submissionId') stageId=$stageId}">{translate key="grid.action.editMetadata"}</a></li>
{if $showIdentifierTab}
<li><a href="{url router=\PKP\core\PKPApplication::ROUTE_COMPONENT op="identifiers" submissionFileId=$submissionFile->getId() submissionId=$submissionFile->getData('submissionId') stageId=$stageId}">{translate key="submission.identifiers"}</a></li>
{/if}
</ul>
</div>
@@ -0,0 +1,26 @@
{**
* controllers/extrasOnDemand.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Basic markup for extras on demand widget.
*}
<script>
// Initialise JS handler.
$(function() {ldelim}
$('#{$id}').pkpHandler(
'$.pkp.controllers.ExtrasOnDemandHandler');
{rdelim});
</script>
<div id="{$id}" class="pkp_controllers_extrasOnDemand">
<a href="#" class="toggleExtras">
<span class="toggleExtras-inactive">{translate key=$moreDetailsText}</span>
<span class="toggleExtras-active">{translate key=$lessDetailsText}</span>
<span class="fa fa-plus"></span>
</a>
<div class="extrasContainer container">
{$extraContent}
</div>
</div>
@@ -0,0 +1,81 @@
{**
* controllers/fileUploadContainer.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Markup for file uploader widget.
*
* @uses $id string ID for the HTML element wrapper. Typically used by parent
* forms to instantiate the plupload utility.
* @uses $stringDragFile string (optional) Translation key for the drag and
* drop zone label
* @uses $stringAddFile string (optional) Translation key for the add file
* button
* @uses $stringChangeFile string (optional) Translation key for the change
* file button
* @uses $browseButton string (optional) Element id for the browse button. When
* a custom id is used, FileUploadFormHandler must pass this id in the
* `uploaderOptions`.
*}
{if !$stringDragFile}
{assign var=stringDragFile value="common.upload.dragFile"}
{/if}
{if !$stringAddFile}
{assign var=stringAddFile value="common.upload.addFile"}
{/if}
{if !$stringChangeFile}
{assign var=stringChangeFile value="common.upload.changeFile"}
{/if}
{if !$browseButton}
{assign var=browseButton value="pkpUploaderButton"}
{/if}
<div id="{$id}" class="pkp_controller_fileUpload loading">
<div class="pkp_uploader_loading">
{**
* This wrapper div is a hack to emulate the inPlaceNotification.tpl
* structure. There's currently not a way to use these notifications
* without loading the JavaScript handler, but in this case we don't
* have the required settings.
*}
<div class="pkp_notification">
{include file="controllers/notification/inPlaceNotificationContent.tpl" notificationId=$id
notificationStyleClass="notifyWarning" notificationContents=$warningMessage
warningTitle="common.warning"|translate warningMessage="common.fileUploaderError"|translate}
</div>
</div>
{* The file upload and drag-and-drop area *}
<div id="{$id}-pkpUploaderDropZone" class="pkp_uploader_drop_zone">
<div class="pkp_uploader_drop_zone_label">
{translate key=$stringDragFile}
</div>
<div class="pkp_uploader_details">
<span class="pkpUploaderProgress">
{translate key="common.percentage" percentage='<span class="percentage">0</span>'}
</span>{* Live progress (%) *}
<div class="pkp_uploader_progress_bar_wrapper">
<span class="pkpUploaderProgressBar"></span>{* Live progress bar*}
</div>
<span class="pkpUploaderFilename"></span>{* Uploaded file name *}
</div>
{* Placeholder for errors during upload *}
<div class="pkpUploaderError"></div>
{* Button to add/change file *}
<button id="{$browseButton|escape}" class="pkp_uploader_button pkp_button" tabindex="-1">
<span class="pkp_uploader_button_add">
{translate key=$stringAddFile}
</span>
<span class="pkp_uploader_button_change">
{translate key=$stringChangeFile}
</span>
</button>
</div>
</div>
@@ -0,0 +1,31 @@
{**
* templates/controllers/grid/announcements/form/announcementTypeForm.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Form to read/create/edit announcement types.
*}
<script>
$(function() {ldelim}
// Attach the form handler.
$('#announcementTypeForm').pkpHandler('$.pkp.controllers.form.AjaxFormHandler');
{rdelim});
</script>
<form class="pkp_form" id="announcementTypeForm" method="post" action="{url router=\PKP\core\PKPApplication::ROUTE_COMPONENT component="grid.announcements.AnnouncementTypeGridHandler" op="updateAnnouncementType"}">
{csrf}
{include file="controllers/notification/inPlaceNotification.tpl" notificationId="announcementTypeFormNotification"}
{fbvFormArea id="announcementTypeInfo"}
{if $typeId}
<input type="hidden" name="announcementTypeId" value="{$typeId|escape}" />
{/if}
{fbvFormSection title="manager.announcementTypes.form.typeName" for="title" required="true"}
{fbvElement type="text" multilingual="true" id="name" value=$name maxlength="255" required="true"}
{/fbvFormSection}
{/fbvFormArea}
<p><span class="formRequired">{translate key="common.requiredField"}</span></p>
{fbvFormButtons id="announcementTypeFormSubmit" submitText="common.save"}
</form>
@@ -0,0 +1,22 @@
{**
* templates/controllers/grid/columnGroup.tpl
*
* Copyright (c) 2016-2021 Simon Fraser University
* Copyright (c) 2000-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Column group HTML markup for grids.
*}
<colgroup>
{foreach from=$columns item=column}
{* @todo indent columns should be killed at their source *}
{if $column->hasFlag('indent')}
{continue}
{/if}
<col class="grid-column column-{$column->getId()}"
{if $column->hasFlag('width')}
style="width: {$column->getFlag('width')}%;"
{/if} />
{/foreach}
</colgroup>
@@ -0,0 +1,16 @@
{**
* templates/controllers/grid/common/cell/checkMarkCell.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Cell to represent a boolean true with a check mark.
*
*}
{if $isChecked}
<div id="isChecked"><div href="#" class='pkp_helpers_container_center checked'></div></div>
{else}
<div id="notChecked"><div href="#" class='pkp_helpers_container_center notChecked'></div></div>
{/if}
@@ -0,0 +1,18 @@
{**
* templates/controllers/grid/common/cell/radioButtonCell.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2000-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* a regular grid cell (with or without actions)
*}
{assign var=cellId value="cell-"|concat:$id}
<span id="{$cellId}">
{if count($actions) gt 0}
{assign var=defaultCellAction value=$actions[0]}
{include file="linkAction/buttonGenericLinkAction.tpl" action=$defaultCellAction buttonSelector="#select-"|concat:$cellId}
{/if}
<input type="radio" id="select-{$cellId}" style="height: 15px; width: 15px;" {if $selected}checked="checked"{/if} {if $disabled}disabled="disabled"{/if}/>
</span>
@@ -0,0 +1,17 @@
{**
* templates/controllers/grid/common/cell/selectStatusCell.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2000-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* a regular grid cell (with or without actions)
*}
{assign var=cellId value="cell-"|concat:$id|uniqid}
<span id="{$cellId}">
{if count($actions) gt 0}
{assign var=defaultCellAction value=$actions[0]}
{include file="linkAction/buttonGenericLinkAction.tpl" action=$defaultCellAction buttonSelector="#select-"|concat:$cellId}
{/if}
<input type="checkbox" id="select-{$cellId}" {if $name}name="{$name|escape}"{/if} {if $value}value="{$value|escape}"{/if} style="height: 15px; width: 15px;" {if $selected}checked="checked"{/if} {if $disabled}disabled="disabled"{/if}/>
</span>
@@ -0,0 +1,21 @@
{**
* templates/controllers/grid/common/cell/statusCell.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2000-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* a regular grid cell (with or without actions)
*}
{assign var=cellId value="cell-"|concat:$id}
<span id="{$cellId}" class="pkp_linkActions">
{if count($actions) gt 0}
{assign var=defaultCellAction value=$actions[0]}
{* TODO imageClass doesn't appear to be used. Perhaps it should be image,
or maybe it can be removed. *}
{include file="linkAction/linkAction.tpl" action=$defaultCellAction contextId=$cellId imageClass="task"}
{elseif $status}
{capture assign="statusTitle"}{translate key="grid.task.status."|concat:$status}{/capture}
<a title="{$statusTitle|escape}" class="task {$status|escape}">status</a>
{/if}
</span>
@@ -0,0 +1,21 @@
{**
* controllers/grid/eventLog/eventLogGridFilter.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2000-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Filter template for the event log entry list grid.
*}
<script type="text/javascript">
// Attach the form handler to the form.
$('#eventLogFilterForm').pkpHandler('$.pkp.controllers.form.ToggleFormHandler');
</script>
<form class="pkp_form" id="eventLogFilterForm" action="{url router=\PKP\core\PKPApplication::ROUTE_COMPONENT op="fetchGrid"}" method="post">
{csrf}
{fbvFormArea id="allEventsFilterArea"}
{fbvFormSection list="true"}
{fbvElement type="checkbox" id="allEvents" checked=$filterSelectionData.allEvents label="submission.informationCenter.history.allEvents" size=$fbvStyles.size.LARGE}
{/fbvFormSection}
{/fbvFormArea}
</form>
@@ -0,0 +1,10 @@
{**
* templates/controllers/grid/feature/collapsibleGridFeature.tpl
*
* Copyright (c) 2016-2021 Simon Fraser University
* Copyright (c) 2000-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Control for the collpsible grid functionality.
*}
{include file="linkAction/linkAction.tpl" action=$controlLink contextId='collapsibleGridControl'}
@@ -0,0 +1,21 @@
{**
* templates/controllers/grid/feature/featuresOptions.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2000-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Grid features js options.
*}
{ldelim}
{foreach name=features from=$features item=feature}
{$feature->getId()|json_encode}: {ldelim}
JSClass: {$feature->getJSClass()|json_encode},
options: {ldelim}
{foreach name=featureOptions from=$feature->getOptions() key=optionName item=optionValue}
{$optionName}: {if $optionValue}'{$optionValue|escape:javascript}'{else}false{/if}{if !$smarty.foreach.featureOptions.last},{/if}
{/foreach}
{rdelim}
{rdelim}{if !$smarty.foreach.features.last},{/if}
{/foreach}
{rdelim}
@@ -0,0 +1,17 @@
{**
* templates/controllers/grid/feature/gridOrderFinishControls.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2000-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Controls (button and link) to finish the ordering action in grids.
*}
<div class="grid_controls order_finish_controls">
<a href="#" id="{$gridId|concat}-saveButton" class="saveButton">
{translate key="common.done"}
</a>
<a href="#" id="{$gridId|concat}-cancel" class="cancelFormButton">
{translate key="grid.action.cancelOrdering"}
</a>
</div>
@@ -0,0 +1,11 @@
{**
* templates/controllers/grid/feature/gridOrderNonOrderableMessage.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2000-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Message to be presented while hovering for non orderable grid rows in ordering mode.
*}
<div class="order_message">{$orderMessage}</div>
@@ -0,0 +1,19 @@
{**
* templates/controllers/grid/feature/gridPaging.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2000-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Grid paging markup.
*}
<div class="gridPaging">
<div class="gridItemsPerPage">
{translate key="common.itemsPerPage"}:<select class="itemsPerPage"></select>
</div>
<div class="gridPages">
{page_info iterator=$iterator itemsPerPage=$currentItemsPerPage}
{page_links name=$grid->getId() iterator=$iterator}
</div>
</div>
@@ -0,0 +1,20 @@
{**
* templates/controllers/grid/feature/infiniteScrolling.tpl
*
* Copyright (c) 2016-2021 Simon Fraser University
* Copyright (c) 2000-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Grid infinite scrolling markup.
*}
{if $iterator->getCount()}
<div class="gridPagingScrolling">
{if $moreItemsLinkAction}
{include file="linkAction/linkAction.tpl" action=$moreItemsLinkAction}
{/if}
<span class="item_count">
{translate key="navigation.items.shownTotal" shown=$shown total=$iterator->getCount()}
</span>
{include file="common/loadingContainer.tpl"}
</div>
{/if}
@@ -0,0 +1,31 @@
{**
* templates/controllers/grid/files/copyedit/manageCopyeditFiles.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Allows users to manage the list of copyedit files, potentially adding more
*}
<script>
$(function() {ldelim}
// Attach the form handler.
$('#manageCopyeditFilesForm').pkpHandler('$.pkp.controllers.form.AjaxFormHandler');
{rdelim});
</script>
<form class="pkp_form" id="manageCopyeditFilesForm" action="{url component="grid.files.copyedit.ManageCopyeditFilesGridHandler" op="updateCopyeditFiles" submissionId=$submissionId stageId=$smarty.const.WORKFLOW_STAGE_ID_EDITING}" method="post">
<!-- Current copyedited files -->
<div id="existingFilesContainer">
{csrf}
{fbvFormArea id="manageCopyeditFiles"}
{fbvFormSection}
{capture assign=manageCopyeditFilesGridUrl}{url router=\PKP\core\PKPApplication::ROUTE_COMPONENT component="grid.files.copyedit.ManageCopyeditFilesGridHandler" op="fetchGrid" submissionId=$submissionId escape=false}{/capture}
{load_url_in_div id="manageCopyeditFilesGrid" url=$manageCopyeditFilesGridUrl}
{/fbvFormSection}
{fbvFormButtons}
{/fbvFormArea}
</div>
</form>
@@ -0,0 +1,28 @@
{**
* templates/controllers/grid/files/filesGridFilter.tpl
*
* Copyright (c) 2016-2021 Simon Fraser University
* Copyright (c) 2000-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Filter template for submission file lists.
*}
{assign var="formId" value="submissionFilesListFilter-"|concat:$filterData.gridId:"-"|uniqid}
<script type="text/javascript">
// Attach the form handler to the form.
$('#{$formId}').pkpHandler('$.pkp.controllers.form.ClientFormHandler',
{ldelim}
trackFormChanges: false
{rdelim}
);
</script>
<form class="pkp_form filter" id="{$formId}" action="{url op="fetchGrid"}" method="post">
{csrf}
{fbvFormArea id="submissionFilesSearchFormArea"|concat:$filterData.gridId}
{fbvFormSection}
{fbvElement type="search" name="search" id="search"|concat:$filterData.gridId value=$filterSelectionData.search size=$fbvStyles.size.MEDIUM inline="true"}
{fbvElement type="select" name="column" id="column"|concat:$filterData.gridId from=$filterData.columns selected=$filterSelectionData.column size=$fbvStyles.size.SMALL translate=false inline="true"}
{/fbvFormSection}
{fbvFormButtons hideCancel=true submitText="common.search"}
{/fbvFormArea}
</form>
@@ -0,0 +1,33 @@
{**
* templates/controllers/grid/files/final/manageFinalDraftFiles.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Allows editor to add more file to the review (that weren't added when the submission was sent to review)
*}
<script>
$(function() {ldelim}
// Attach the form handler.
$('#manageFinalDraftFilesForm').pkpHandler('$.pkp.controllers.form.AjaxFormHandler');
{rdelim});
</script>
<form class="pkp_form" id="manageFinalDraftFilesForm" action="{url component="grid.files.final.ManageFinalDraftFilesGridHandler" op="updateFinalDraftFiles" submissionId=$submissionId}" method="post">
<!-- Current final draft files -->
<div id="existingFilesContainer">
{csrf}
{fbvFormArea id="manageFinalDraftFiles"}
{fbvFormSection}
<input type="hidden" name="submissionId" value="{$submissionId|escape}" />
<input type="hidden" name="stageId" value="{$smarty.const.WORKFLOW_STAGE_ID_EDITING}" />
{capture assign=availableReviewFilesGridUrl}{url router=\PKP\core\PKPApplication::ROUTE_COMPONENT component="grid.files.final.ManageFinalDraftFilesGridHandler" op="fetchGrid" submissionId=$submissionId escape=false}{/capture}
{load_url_in_div id="availableReviewFilesGrid" url=$availableReviewFilesGridUrl}
{/fbvFormSection}
{fbvFormButtons}
{/fbvFormArea}
</div>
</form>
@@ -0,0 +1,39 @@
{**
* templates/controllers/grid/files/proof/manageProofFiles.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Allows editor to add more files to the publication format
*}
<script>
$(function() {ldelim}
// Attach the form handler.
$('#manageProofFilesForm').pkpHandler('$.pkp.controllers.form.AjaxFormHandler');
{rdelim});
</script>
<form class="pkp_form" id="manageProofFilesForm" action="{url component="grid.files.proof.ManageProofFilesGridHandler" op="updateProofFiles" submissionId=$submissionId}" method="post">
<!-- Current proof files -->
<p>{translate key="editor.submission.proof.manageProofFilesDescription"}</p>
<div id="existingFilesContainer">
{csrf}
{fbvFormArea id="manageProofFiles"}
{fbvFormSection}
<input type="hidden" name="submissionId" value="{$submissionId|escape}" />
<input type="hidden" name="stageId" value="{$smarty.const.WORKFLOW_STAGE_ID_PRODUCTION}" />
<input type="hidden" name="representationId" value="{$representationId|escape}" />
{if $publicationId}
<input type="hidden" name="publicationId" value="{$publicationId|escape}">
{/if}
{capture assign=availableReviewFilesGridUrl}{url router=\PKP\core\PKPApplication::ROUTE_COMPONENT component="grid.files.proof.ManageProofFilesGridHandler" op="fetchGrid" submissionId=$submissionId publicationId=$publicationId representationId=$representationId escape=false}{/capture}
{load_url_in_div id="availableReviewFilesGrid" url=$availableReviewFilesGridUrl}
{/fbvFormSection}
{fbvFormButtons}
{/fbvFormArea}
</div>
</form>
@@ -0,0 +1,33 @@
{**
* templates/controllers/grid/files/query/manageQueryNoteFiles.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Allows users to manage the list of files available to a query.
*}
<script>
$(function() {ldelim}
// Attach the form handler.
$('#manageQueryNoteFilesForm').pkpHandler('$.pkp.controllers.form.AjaxFormHandler');
{rdelim});
</script>
<form class="pkp_form" id="manageQueryNoteFilesForm" action="{url component="grid.files.query.ManageQueryNoteFilesGridHandler" op="updateQueryNoteFiles" params=$actionArgs submissionId=$submissionId queryId=$queryId noteId=$noteId stageId=$smarty.const.WORKFLOW_STAGE_ID_EDITING}" method="post">
<!-- Current query files -->
<p>{translate key="editor.submission.query.manageQueryNoteFilesDescription"}</p>
<div id="existingFilesContainer">
{csrf}
{fbvFormArea id="manageQueryNoteFiles"}
{fbvFormSection}
{capture assign=manageQueryNoteFilesGridUrl}{url router=\PKP\core\PKPApplication::ROUTE_COMPONENT component="grid.files.query.ManageQueryNoteFilesGridHandler" op="fetchGrid" params=$actionArgs submissionId=$submissionId queryId=$queryId noteId=$noteId escape=false}{/capture}
{load_url_in_div id="manageQueryNoteFilesGrid" url=$manageQueryNoteFilesGridUrl}
{/fbvFormSection}
{fbvFormButtons}
{/fbvFormArea}
</div>
</form>
@@ -0,0 +1,26 @@
{**
* templates/controllers/grid/files/review/manageReviewFiles.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Allows editor to add more file to the review (that weren't added when the submission was sent to review)
*}
<script>
$(function() {ldelim}
// Attach the form handler.
$('#manageReviewFilesForm').pkpHandler('$.pkp.controllers.form.AjaxFormHandler');
{rdelim});
</script>
<form class="pkp_form" id="manageReviewFilesForm" action="{url component="grid.files.review.ManageReviewFilesGridHandler" op="updateReviewFiles" submissionId=$submissionId|escape stageId=$stageId|escape reviewRoundId=$reviewRoundId|escape}" method="post">
<!-- Current review files -->
<div id="existingFilesContainer">
{csrf}
<!-- Available submission files -->
{capture assign=availableReviewFilesGridUrl}{url router=\PKP\core\PKPApplication::ROUTE_COMPONENT component="grid.files.review.ManageReviewFilesGridHandler" op="fetchGrid" submissionId=$submissionId stageId=$stageId reviewRoundId=$reviewRoundId escape=false}{/capture}
{load_url_in_div id="availableReviewFilesGrid" url=$availableReviewFilesGridUrl}
{fbvFormButtons}
</div>
</form>
@@ -0,0 +1,21 @@
{**
* templates/controllers/grid/files/selectableSubmissionFileListCategoryGridFilter.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2000-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Filter template for selectable submission file list category grid.
*}
<script type="text/javascript">
// Attach the form handler to the form.
$('#fileListFilterForm').pkpHandler('$.pkp.controllers.form.ToggleFormHandler');
</script>
<form class="pkp_form filter" id="fileListFilterForm" action="{url router=\PKP\core\PKPApplication::ROUTE_COMPONENT op="fetchGrid"}" method="post">
{csrf}
{fbvFormArea id="includeAllStagesArea"}
{fbvFormSection list="true"}
{fbvElement type="checkbox" id="allStages" checked=$filterSelectionData.allStages label="editor.submission.fileList.includeAllStages"}
{/fbvFormSection}
{/fbvFormArea}
</form>
@@ -0,0 +1,57 @@
{**
* templates/controllers/grid/files/submissionDocuments/form/editFileForm.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Library Files form for editing an existing file
*}
<script type="text/javascript">
// Attach the file upload form handler.
$(function() {ldelim}
$('#uploadForm').pkpHandler(
'$.pkp.controllers.form.AjaxFormHandler'
);
{rdelim});
</script>
<form class="pkp_form" id="uploadForm" action="{url op="updateFile" fileId=$libraryFile->getId()}" method="post">
{csrf}
<input type="hidden" name="submissionId" value="{$submissionId|escape}" />
{fbvFormArea id="name"}
{fbvFormSection title="common.name" required=true}
{fbvElement type="text" id="libraryFileName" value=$libraryFileName maxlength="255" multilingual=true required=true}
{/fbvFormSection}
{/fbvFormArea}
{fbvFormArea id="type"}
{fbvFormSection title="common.type" required=true}
{fbvElement type="select" from=$fileTypes id="fileType" selected=$libraryFile->getType() defaultValue="" defaultLabel="common.chooseOne"|translate required=true}
{/fbvFormSection}
{/fbvFormArea}
{fbvFormArea id="file"}
{fbvFormSection title="common.file"}
<table id="fileInfo" class="data" width="100%">
<tr valign="top">
<td width="20%" class="label">{translate key="common.fileName"}</td>
<td width="80%" class="value">{$libraryFile->getOriginalFileName()|escape}</a></td>
</tr>
<tr valign="top">
<td class="label">{translate key="common.fileSize"}</td>
<td class="value">{$libraryFile->getNiceFileSize()}</td>
</tr>
<tr valign="top">
<td class="label">{translate key="common.dateUploaded"}</td>
<td class="value">{$libraryFile->getDateUploaded()|date_format:$datetimeFormatShort}</td>
</tr>
</table>
{/fbvFormSection}
{/fbvFormArea}
<p><span class="formRequired">{translate key="common.requiredField"}</span></p>
{fbvFormButtons}
</form>
@@ -0,0 +1,55 @@
{**
* templates/controllers/grid/files/submissionDocuments/form/newFileForm.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Library Files form
*}
<script type="text/javascript">
// Attach the file upload form handler.
$(function() {ldelim}
$('#uploadForm').pkpHandler(
'$.pkp.controllers.form.FileUploadFormHandler',
{ldelim}
$uploader: $('#plupload'),
uploaderOptions: {ldelim}
uploadUrl: {url|json_encode op="uploadFile" fileType=$fileType submissionId=$submissionId escape=false},
baseUrl: {$baseUrl|json_encode}
{rdelim}
{rdelim}
);
{rdelim});
</script>
<form class="pkp_form" id="uploadForm" action="{url op="saveFile"}" method="post">
{csrf}
{include file="controllers/notification/inPlaceNotification.tpl" notificationId="libraryFileUploadNotification"}
<input type="hidden" name="temporaryFileId" id="temporaryFileId" value="" />
<input type="hidden" name="submissionId" value="{$submissionId|escape}" />
{fbvFormArea id="name"}
{fbvFormSection title="common.name" required=true}
{fbvElement type="text" multilingual="true" id="libraryFileName" value=$libraryFileName maxlength="255" required=true}
{/fbvFormSection}
{/fbvFormArea}
{fbvFormArea id="type"}
{fbvFormSection title="common.type" required=true}
{fbvElement type="select" from=$fileTypes id="fileType" selected=$fileType defaultValue="" defaultLabel="common.chooseOne"|translate required=true}
{/fbvFormSection}
{/fbvFormArea}
{fbvFormArea id="file"}
{fbvFormSection title="common.file" required=true}
{include file="controllers/fileUploadContainer.tpl" id="plupload"}
{/fbvFormSection}
{/fbvFormArea}
<p><span class="formRequired">{translate key="common.requiredField"}</span></p>
{fbvFormButtons}
</form>
+114
View File
@@ -0,0 +1,114 @@
{**
* templates/controllers/grid/grid.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2000-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Grid HTML markup and construction
*}
{assign var=staticId value="component-"|concat:$grid->getId()}
{assign var=gridId value=$staticId|concat:'-'|uniqid}
{assign var=gridTableId value=$gridId|concat:"-table"}
{assign var=gridActOnId value=$gridTableId}
<script>
$(function() {ldelim}
{foreach from=$gridConstants key=$constant item=$value}
$.pkp.cons.{$constant} = {$value};
{/foreach}
$('#{$gridId|escape:javascript}').pkpHandler(
'{$grid->getJSHandler()|escape:javascript}',
{ldelim}
gridId: {$grid->getId()|json_encode},
{foreach from=$grid->getUrls() key=key item=itemUrl name=gridUrls}
{$key|json_encode}: {$itemUrl|json_encode},
{/foreach}
bodySelector: '#{$gridActOnId|escape:javascript}',
{if $grid->getPublishChangeEvents()}
publishChangeEvents: {$grid->getPublishChangeEvents()|@json_encode},
{/if}
features: {include file='controllers/grid/feature/featuresOptions.tpl' features=$features},
csrfToken: {csrf type="json"}
{rdelim}
);
{rdelim});
</script>
<div id="{$gridId|escape}" class="pkp_controllers_grid{if is_a($grid, 'CategoryGridHandler')} pkp_grid_category{/if}{if !$grid->getTitle()} pkp_grid_no_title{/if}">
{include file="controllers/grid/gridHeader.tpl"}
<table id="{$gridTableId|escape}">
{include file="controllers/grid/columnGroup.tpl" columns=$columns}
<thead>
{** build the column headers **}
<tr>
{foreach name=columns from=$columns item=column}
{* @todo indent columns should be killed at their source *}
{if $column->hasFlag('indent')}
{continue}
{/if}
{if $column->hasFlag('alignment')}
{assign var=alignment value=$column->getFlag('alignment')}
{else}
{assign var=alignment value=\PKP\controllers\grid\GridColumn::COLUMN_ALIGNMENT_LEFT}
{/if}
<th scope="col" style="text-align: {$alignment};">
{$column->getLocalizedTitle()}
{* TODO: Remove this stuff. Actions should not ever appear in the TH of a grid. *}
{if $smarty.foreach.columns.last && $grid->getActions(\PKP\controllers\grid\GridHandler::GRID_ACTION_POSITION_LASTCOL)}
<span class="options pkp_linkActions">
{foreach from=$grid->getActions(\PKP\controllers\grid\GridHandler::GRID_ACTION_POSITION_LASTCOL) item=action}
{include file="linkAction/linkAction.tpl" action=$action contextId=$staticId}
{/foreach}
</span>
{/if}
</th>
{/foreach}
</tr>
</thead>
{if $grid->getIsSubcomponent() && !is_a($grid, 'CategoryGridHandler')}
{* Create two separate tables so that the body part
can be scrolled independently from the header in a
cross-browser compatible way using only CSS. *}
</table>
<div class="scrollable">
<table>
{include file="controllers/grid/columnGroup.tpl" columns=$columns}
{/if}
{foreach from=$gridBodyParts item=bodyPart}
{$bodyPart}
{foreachelse}
<tbody></tbody>
{/foreach}
<tbody class="empty"{if count($gridBodyParts) > 0} style="display: none;"{/if}>
{**
We need the last (=empty) line even if we have rows
so that we can restore it if the user deletes all rows.
**}
<tr>
<td colspan="{$grid->getColumnsCount('indent')}">{translate key=$grid->getEmptyRowText()}</td>
</tr>
</tbody>
</table>
{if $grid->getIsSubcomponent() && !is_a($grid, 'CategoryGridHandler')}
</div>
{/if}
{if $grid->getActions(\PKP\controllers\grid\GridHandler::GRID_ACTION_POSITION_BELOW) || $grid->getFootNote()}
<div class="footer">
{if $grid->getActions(\PKP\controllers\grid\GridHandler::GRID_ACTION_POSITION_BELOW)}
{include file="controllers/grid/gridActionsBelow.tpl" actions=$grid->getActions(\PKP\controllers\grid\GridHandler::GRID_ACTION_POSITION_BELOW) gridId=$staticId}
{/if}
{if $grid->getFootNote()}
<div class="footnote">
{translate key=$grid->getFootNote()}
</div>
{/if}
</div>
{/if}
</div>
@@ -0,0 +1,17 @@
{**
* templates/controllers/grid/gridActionsAbove.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2000-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Actions markup for upper grid actions
*}
<ul class="actions">
{foreach from=$actions item=action}
<li>
{include file="linkAction/linkAction.tpl" action=$action contextId=$gridId}
</li>
{/foreach}
</ul>
@@ -0,0 +1,17 @@
{**
* templates/controllers/grid/gridActionsBelow.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2000-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Grid actions in bottom position
*}
<ul class="actions btm">
{foreach from=$grid->getActions(\PKP\controllers\grid\GridHandler::GRID_ACTION_POSITION_BELOW) item=action}
<li>
{include file="linkAction/linkAction.tpl" action=$action contextId=$gridId}
</li>
{/foreach}
</ul>
@@ -0,0 +1,16 @@
{**
* templates/controllers/grid/gridBodyPart.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2000-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* a set of grid rows within a tbody
*}
<tbody>
{foreach from=$rows item=row}
{$row}
{/foreach}
<tr></tr>
</tbody>
@@ -0,0 +1,36 @@
{**
* templates/controllers/grid/gridBodyPartWithCategory.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2000-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* a set of grid rows with a category row at the beginning
*}
{assign var=categoryId value="component-"|concat:$categoryRow->getGridId():"-category-":$categoryRow->getId()|escape}
<tbody id="{$categoryId|escape}" class="element{$categoryRow->getId()|escape} category_grid_body">
{$renderedCategoryRow}
{if $grid->getIsSubcomponent()}
</tbody></table>
<div class="scrollable"><table>
{include file="controllers/grid/columnGroup.tpl" columns=$grid->getColumns()}
<tbody>
{/if}
{** the regular data rows **}
{foreach from=$rows item=row}
{$row}
{/foreach}
</tbody>
<tbody id="{$categoryId|concat:'-emptyPlaceholder'|escape}" class="empty category_placeholder"{if count($rows) > 0} style="display: none;"{/if}>
{**
We need the last (=empty) line even if we have rows
so that we can restore it if the user deletes all rows.
**}
<tr>
<td colspan="{$grid->getColumnsCount('indent')}">{translate key=$grid->getEmptyCategoryRowText()}</td>
</tr>
</tbody>
{if $grid->getIsSubcomponent()}
</table></div><table>
{include file="controllers/grid/columnGroup.tpl" columns=$grid->getColumns()}
{/if}
@@ -0,0 +1,18 @@
{**
* templates/controllers/grid/gridCell.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2000-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* a regular grid cell (with or without actions)
*}
{if $id}
{assign var=cellId value="cell-"|concat:$id}
{else}
{assign var=cellId value=""}
{/if}
<span {if $cellId}id="{$cellId|escape}" {/if}class="gridCellContainer">
{include file="controllers/grid/gridCellContents.tpl"}
</span>
@@ -0,0 +1,57 @@
{**
* templates/controllers/grid/gridCellContents.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2000-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* a regular grid cell's contents
*}
{* Preserve the value in case it's used externally *}
{assign var=_label value=$label}
{* Prepare multilingual content for display *}
{if $column->hasFlag('multilingual')}
{* Multilingual column *}
{if isset($_label.$currentLocale)}
{assign var=_label value=$_label.$currentLocale}
{else}
{assign var=_primaryLocale value=\PKP\facades\Locale::getPrimaryLocale()}
{assign var=_label value=$_label.$_primaryLocale}
{/if}
{/if}
{if $column->hasFlag('format')}
{assign var=_format value=$column->getFlag('format')|lower}
{else}
{assign var=_format value='text'|lower}
{/if}
{* Handle escaping as needed *}
{if $column->hasFlag('anyhtml')}
{* Any HTML is allowed; do not escape anything *}
{elseif $column->hasFlag('html')}
{* Limited HTML is allowed *}
{assign var=_label value=$_label|strip_unsafe_html}
{else}
{* No HTML allowed; escape the label. *}
{assign var=_label value=$_label|escape}
{/if}
{if $_label != ''}
<span class="label{if count($actions) gt 0} before_actions{/if}">
{if $column->hasFlag('maxLength')}
{assign var="maxLength" value=$column->getFlag('maxLength')}
{$_label|truncate:$maxLength}
{else}
{$_label}
{/if}
</span>
{/if}
{if count($actions) gt 0}
{foreach from=$actions item=action}
{include file="linkAction/linkAction.tpl" action=$action contextId=$cellId anyhtml=$column->hasFlag('anyhtml') html=$column->hasFlag('html')}
{/foreach}
{/if}
@@ -0,0 +1,25 @@
{**
* templates/controllers/grid/gridHeader.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2000-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Grid header HTML markup
*}
<div class="header">
{if $grid->getTitle()}
<h4>
{$grid->getTitle()|translate}
</h4>
{/if}
{if $grid->getActions(\PKP\controllers\grid\GridHandler::GRID_ACTION_POSITION_ABOVE)}
{if $grid->getActions(\PKP\controllers\grid\GridHandler::GRID_ACTION_POSITION_ABOVE)}
{include file="controllers/grid/gridActionsAbove.tpl" actions=$grid->getActions(\PKP\controllers\grid\GridHandler::GRID_ACTION_POSITION_ABOVE) gridId=$staticId}
{/if}
{/if}
</div>
{$gridFilterForm}
@@ -0,0 +1,86 @@
{**
* templates/controllers/grid/gridRow.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2000-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* A grid row.
*}
{if !is_null($row->getId())}
{assign var=rowIdPrefix value="component-"|concat:$row->getGridId()}
{if $categoryId|@strlen > 0}
{assign var=rowIdPrefix value=$rowIdPrefix|concat:"-category-":$categoryId|escape}
{/if}
{assign var=rowId value=$rowIdPrefix|concat:"-row-":$row->getId()}
{else}
{assign var=rowId value=""}
{/if}
{assign var="row_class" value="gridRow"}
{if is_a($row, 'GridCategoryRow')}
{assign var="row_class" value=$row_class|cat:' category'}
{if !$row->hasFlag('gridRowStyle')}
{assign var="row_class" value=$row_class|cat:' default_category_style'}
{/if}
{/if}
{if $row->getActions(\PKP\controllers\grid\GridHandler::GRID_ACTION_POSITION_DEFAULT)}
{assign var="row_class" value=$row_class|cat:' has_extras'}
{/if}
<tr {if $rowId}id="{$rowId|escape|replace:" ":"_"}" {/if} class="{$row_class}">
{foreach name=columnLoop from=$columns key=columnId item=column}
{* @todo indent columns should be killed at their source *}
{if $column->hasFlag('indent')}
{continue}
{/if}
{assign var=col_class value=""}
{if $column->hasFlag('firstColumn')}
{assign var="col_class" value=$col_class|cat:'first_column'}
{/if}
{if $column->hasFlag('alignment')}
{assign var="col_class" value=$col_class|cat:' pkp_helpers_text_'}
{assign var="col_class" value=$col_class|cat:$column->getFlag('alignment')}
{/if}
<td{if $col_class} class="{$col_class}"{/if}>
{if $row->hasActions() && $column->hasFlag('firstColumn')}
{if $row->getActions(\PKP\controllers\grid\GridHandler::GRID_ACTION_POSITION_DEFAULT)}
<a href="#" class="show_extras">
<span class="pkp_screen_reader">{translate key="grid.settings"}</span>
</a>
{/if}
{$cells[$smarty.foreach.columnLoop.index]}
{if is_a($row, 'GridCategoryRow') && $column->hasFlag('showTotalItemsNumber')}
<span class="category_items_number">({$grid->getCategoryItemsCount($categoryRow->getData(), $request)})</span>
{/if}
<div class="row_actions">
{if $row->getActions(\PKP\controllers\grid\GridRow::GRID_ACTION_POSITION_ROW_LEFT)}
{foreach from=$row->getActions(\PKP\controllers\grid\GridRow::GRID_ACTION_POSITION_ROW_LEFT) item=action}
{include file="linkAction/linkAction.tpl" action=$action contextId=$rowId|replace:" ":"_"}
{/foreach}
{/if}
</div>
{else}
{$cells[$smarty.foreach.columnLoop.index]}
{if is_a($row, 'GridCategoryRow') && $column->hasFlag('showTotalItemsNumber')}
<span class="category_items_number">({$grid->getCategoryItemsCount($categoryRow->getData(), $request)})</span>
{/if}
{/if}
</td>
{/foreach}
</tr>
{if $row->getActions(\PKP\controllers\grid\GridHandler::GRID_ACTION_POSITION_DEFAULT)}
<tr id="{$rowId|escape|replace:" ":"_"}-control-row" class="row_controls{if is_a($row, 'GridCategoryRow')} category_controls{/if}">
<td colspan="{$grid->getColumnsCount('indent')}">
{if $row->getActions(\PKP\controllers\grid\GridHandler::GRID_ACTION_POSITION_DEFAULT)}
{foreach from=$row->getActions(\PKP\controllers\grid\GridHandler::GRID_ACTION_POSITION_DEFAULT) item=action}
{include file="linkAction/linkAction.tpl" action=$action contextId=$rowId|replace:" ":"_"}
{/foreach}
{/if}
</td>
</tr>
{/if}
@@ -0,0 +1,10 @@
{**
* templates/controllers/grid/gridRowSelectInput.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2000-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Display a checkbox that allows users to select a grid row when ticked
*}
<input type="checkbox" id="select-{$elementId|escape}" name="{$selectName|escape}[]" style="height: 15px; width: 15px;" value="{$elementId|escape}" {if $selected}checked="checked"{/if} />
@@ -0,0 +1,35 @@
{**
* controllers/grid/languages/installLanguageForm.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Form to install languages.
*}
<script>
$(function() {ldelim}
// Attach the form handler.
$('#installLanguageForm').pkpHandler('$.pkp.controllers.form.AjaxFormHandler');
{rdelim});
</script>
<form class="pkp_form" id="installLanguageForm" method="post" action="{url router=\PKP\core\PKPApplication::ROUTE_COMPONENT component="grid.admin.languages.AdminLanguageGridHandler" op="saveInstallLocale"}">
{csrf}
{include file="controllers/notification/inPlaceNotification.tpl" notificationId="installLanguageFormNotification"}
{fbvFormArea id="availableLocalesFormArea" title="admin.languages.availableLocales"}
{fbvFormSection list="true" description="admin.languages.installNewLocalesInstructions"}
{foreach name=locales from=$notInstalledLocales item=locale}
{fbvElement type="checkbox" id="locale-$locale" name="localesToInstall[$locale]" value=$locale label=$allLocales.$locale|escape translate=false}
{foreachelse}
<p>{translate key="admin.languages.noLocalesAvailable"}</p>
{/foreach}
{/fbvFormSection}
{/fbvFormArea}
{if not empty($notInstalledLocales)}
{fbvFormButtons id="installLanguageFormSubmit" submitText="common.save"}
{/if}
</form>
@@ -0,0 +1,22 @@
{**
* templates/controllers/grid/languages/localeNameCell.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2000-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Language grid handler locale name cell.
*}
{if $id}
{assign var=cellId value="cell-"|concat:$id}
{else}
{assign var=cellId value=""}
{/if}
<span {if $cellId}id="{$cellId|escape}" {/if}class="gridCellContainer">
{$label}
</span>
{if $incomplete}
<span class="pkp_form_error">*</span>
{/if}
@@ -0,0 +1,28 @@
{**
* templates/controllers/grid/navigationMenus/customNMIType.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2000-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Custom Custom NMI Type edit form part
*}
<div id="NMI_TYPE_CUSTOM" class="NMI_TYPE_CUSTOM_EDIT">
{fbvFormSection}
{fbvFormSection title="manager.navigationMenus.form.path" for="path" required="true"}
{fbvElement type="text" id="path" value=$path required="true"}
<p>
{capture assign=exampleUrl}{url|replace:"REPLACEME":"%PATH%" router=\PKP\core\PKPApplication::ROUTE_PAGE page="REPLACEME"}{/capture}
{translate key="manager.navigationMenus.form.viewInstructions" pagesPath=$exampleUrl}
</p>
{/fbvFormSection}
{fbvFormSection label="manager.navigationMenus.form.content" for="content"}
{fbvElement type="textarea" multilingual=true name="content" id="content" value=$content rich=true height=$fbvStyles.height.TALL variables=$allowedVariables}
{/fbvFormSection}
{/fbvFormSection}
{fbvFormSection class="formButtons"}
{fbvElement type="button" class="pkp_button_link" id="previewButton" label="common.preview"}
{/fbvFormSection}
</div>
@@ -0,0 +1,149 @@
{**
* templates/controllers/grid/navigationMenus/form/navigationMenuForm.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Form to read/create/edit NavigationMenus.
*}
<script>
$(function() {ldelim}
// Attach the form handler.
$('#navigationMenuForm').pkpHandler('$.pkp.controllers.grid.navigationMenus.form.NavigationMenuFormHandler',
{ldelim}
submenuWarning: {translate|json_encode key="manager.navigationMenus.form.submenuWarning"},
itemTypeConditionalWarnings: {$navigationMenuItemTypeConditionalWarnings},
okButton: {translate|json_encode key="common.ok"},
warningModalTitle: {translate|json_encode key="common.notice"}
{rdelim}
);
{rdelim});
</script>
<form class="pkp_form" id="navigationMenuForm" method="post" action="{url router=\PKP\core\PKPApplication::ROUTE_COMPONENT component="grid.navigationMenus.NavigationMenusGridHandler" op="updateNavigationMenu"}">
{csrf}
{include file="controllers/notification/inPlaceNotification.tpl" notificationId="navigationMenuFormNotification"}
{fbvFormArea id="navigationMenuInfo"}
{if $navigationMenuId}
<input type="hidden" name="navigationMenuId" value="{$navigationMenuId|escape}" />
{/if}
{fbvFormSection title="manager.navigationMenus.form.title" for="title" required="true"}
{fbvElement type="text" id="title" value=$title maxlength="255" required="true"}
{/fbvFormSection}
{fbvFormSection title="manager.navigationMenus.form.navigationMenuArea" for="areaName"}
{fbvElement type="select" id="areaName" from=$activeThemeNavigationAreas selected=$navigationMenuArea label="manager.navigationMenus.form.navigationMenuAreaMessage" translate=false}
{/fbvFormSection}
{/fbvFormArea}
{fbvFormArea id="navigationMenuItems"}
<div id="pkpNavManagement" class="pkp_nav_management">
<div class="pkp_nav_assigned">
<div class="pkp_nav_management_header">
{translate key="manager.navigationMenus.assignedMenuItems"}
</div>
<ul id="pkpNavAssigned">
{foreach from=$menuTree item="assignment"}
{assign var="itemType" value=$assignment->navigationMenuItem->getType()}
{if !empty($navigationMenuItemTypes.$itemType.conditionalWarning)}
{assign var="hasConditionalDisplay" value=true}
{else}
{assign var="hasConditionalDisplay" value=false}
{/if}
<li data-id="{$assignment->getMenuItemId()|escape}" data-type="{$itemType|escape}">
<div class="item">
<div class="item_title">
<span class="fa fa-sort"></span>
{$assignment->navigationMenuItem->getLocalizedTitle()|escape}
</div>
<div class="item_buttons">
{if $hasConditionalDisplay}
<button class="btnConditionalDisplay">
<span class="fa fa-eye-slash"></span>
<span class="-screenReader">
{translate key="manager.navigationMenus.form.conditionalDisplay"}
</span>
</button>
{/if}
</div>
</div>
{if !empty($assignment->children)}
<ul>
{foreach from=$assignment->children item="childAssignment"}
{assign var="itemType" value=$childAssignment->navigationMenuItem->getType()}
{if !empty($navigationMenuItemTypes.$itemType.conditionalWarning)}
{assign var="hasConditionalDisplay" value=true}
{else}
{assign var="hasConditionalDisplay" value=false}
{/if}
<li data-id="{$childAssignment->getMenuItemId()|escape}" data-type="{$itemType|escape}">
<div class="item">
<div class="item_title">
<span class="fa fa-sort"></span>
{$childAssignment->navigationMenuItem->getLocalizedTitle()|escape}
</div>
<div class="item_buttons">
{if $hasConditionalDisplay}
<button class="btnConditionalDisplay">
<span class="fa fa-eye-slash"></span>
<span class="-screenReader">
{translate key="manager.navigationMenus.form.conditionalDisplay"}
</span>
</button>
{/if}
</div>
</div>
</li>
{/foreach}
</ul>
{/if}
</li>
{/foreach}
</ul>
</div>
<div class="pkp_nav_unassigned">
<div class="pkp_nav_management_header">
{translate key="manager.navigationMenus.unassignedMenuItems"}
</div>
<ul id="pkpNavUnassigned">
{foreach from=$unassignedItems item="unassignedItem"}
{assign var="itemType" value=$unassignedItem->getType()}
{if !empty($navigationMenuItemTypes.$itemType.conditionalWarning)}
{assign var="hasConditionalDisplay" value=true}
{else}
{assign var="hasConditionalDisplay" value=false}
{/if}
<li data-id="{$unassignedItem->getId()|escape}" data-type="{$itemType|escape}">
<div class="item">
<div class="item_title">
<span class="fa fa-sort"></span>
{$unassignedItem->getLocalizedTitle()|escape}
</div>
<div class="item_buttons">
{if $hasConditionalDisplay}
<button class="btnConditionalDisplay">
<span class="fa fa-eye-slash"></span>
<span class="-screenReader">
{translate key="manager.navigationMenus.form.conditionalDisplay"}
</span>
</button>
{/if}
</div>
</div>
</li>
{/foreach}
</ul>
</div>
{foreach from=$menuTree item="assignment"}
<input type="hidden" name="menuTree[{$assignment->getMenuItemId()|escape}][seq]" value="{$assignment->getSequence()|escape}">
{foreach from=$assignment->children item="childAssignment"}
<input type="hidden" name="menuTree[{$childAssignment->getMenuItemId()|escape}][seq]" value="{$childAssignment->getSequence()|escape}">
<input type="hidden" name="menuTree[{$childAssignment->getMenuItemId()|escape}][parentId]" value="{$childAssignment->getParentId()|escape}">
{/foreach}
{/foreach}
</div>
{/fbvFormArea}
<p><span class="formRequired">{translate key="common.requiredField"}</span></p>
{fbvFormButtons id="navigationMenuFormSubmit" submitText="common.save"}
</form>
@@ -0,0 +1,49 @@
{**
* templates/controllers/grid/navigationMenus/form/navigationMenuItemsForm.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Form to read/create/edit navigation menu Items.
*}
<script>
$(function() {ldelim}
// Attach the form handler.
$('#navigationMenuItemsForm').pkpHandler(
'$.pkp.controllers.grid.navigationMenus.form.NavigationMenuItemsFormHandler',
{ldelim}
previewUrl: {url|json_encode router=\PKP\core\PKPApplication::ROUTE_PAGE page="navigationMenu" op="preview"},
itemTypeDescriptions: {$navigationMenuItemTypeDescriptions},
itemTypeConditionalWarnings: {$navigationMenuItemTypeConditionalWarnings}
{rdelim});
{rdelim});
</script>
<form class="pkp_form" id="navigationMenuItemsForm" method="post" action="{url router=\PKP\core\PKPApplication::ROUTE_COMPONENT component="grid.navigationMenus.NavigationMenuItemsGridHandler" op="updateNavigationMenuItem"}">
{csrf}
{include file="controllers/notification/inPlaceNotification.tpl" notificationId="navigationMenuItemFormNotification"}
{fbvFormArea id="navigationMenuItemInfo"}
{if $navigationMenuItemId}
<input type="hidden" name="navigationMenuItemId" value="{$navigationMenuItemId|escape}" />
{/if}
{fbvFormSection title="manager.navigationMenus.form.title" for="title" required="true"}
{fbvElement type="text" multilingual="true" id="title" value=$title maxlength="255" required="true"}
{/fbvFormSection}
{fbvFormSection id="menuItemTypeSection" title="manager.navigationMenus.form.navigationMenuItemType" for="menuItemType"}
{fbvElement type="select" id="menuItemType" required=true from=$navigationMenuItemTypeTitles selected=$menuItemType label="manager.navigationMenus.form.navigationMenuItemTypeMessage" translate=false}
{/fbvFormSection}
{foreach from=$customTemplates key=nmiType item=customTemplate}
{include file=$customTemplate.template}
{/foreach}
{/fbvFormArea}
{fbvFormSection class="formButtons"}
{fbvElement type="submit" class="submitFormButton pkp_helpers_align_left pkp_button_primary" id="saveButton" label="common.save"}
{assign var=buttonId value="submitFormButton"|concat:"-"|uniqid}
{/fbvFormSection}
</form>
@@ -0,0 +1,13 @@
{**
* templates/controllers/grid/navigationMenus/remoteUrlNMIType.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2000-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Custom remote Url NMI Type edit form part
*}
{fbvFormSection id="NMI_TYPE_REMOTE_URL" class="NMI_TYPE_CUSTOM_EDIT" title="manager.navigationMenus.form.url" for="remoteUrl" list=true required="true"}
{fbvElement type="text" multilingual=true id="remoteUrl" value=$remoteUrl maxlength="255" required="true"}
{/fbvFormSection}
@@ -0,0 +1,44 @@
{**
* templates/controllers/grid/plugins/uploadPluginForm.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Form to upload plugin files.
*}
<script>
$(function() {ldelim}
// Attach the upload form handler.
$('#uploadPluginForm').pkpHandler(
'$.pkp.controllers.form.FileUploadFormHandler',
{ldelim}
$uploader: $('#plupload'),
uploaderOptions: {ldelim}
uploadUrl: {url|json_encode router=\PKP\core\PKPApplication::ROUTE_COMPONENT op="uploadPluginFile" function=$function escape=false},
baseUrl: {$baseUrl|json_encode}
{rdelim}
{rdelim});
{rdelim});
</script>
<form class="pkp_form" id="uploadPluginForm" action="{url router=\PKP\core\PKPApplication::ROUTE_COMPONENT op="saveUploadPlugin" function=$function category=$category plugin=$plugin}" method="post">
{csrf}
{include file="controllers/notification/inPlaceNotification.tpl" notificationId="uploadPluginNotification"}
{fbvFormArea id="file"}
{if $function == 'install'}
<p>{translate key="manager.plugins.uploadDescription"}</p>
{elseif $function == 'upgrade'}
<p>{translate key="manager.plugins.upgradeDescription"}</p>
{/if}
{fbvFormSection title="manager.plugins.uploadPluginDir" required=true}
{fbvElement type="hidden" id="temporaryFileId" value=""}
{* The uploader widget *}
{include file="controllers/fileUploadContainer.tpl" id="plupload"}
{/fbvFormSection}
{/fbvFormArea}
{fbvFormButtons id="uploadPluginFormSubmit" submitText="common.save"}
</form>
<p><span class="formRequired">{translate key="common.requiredField"}</span></p>
@@ -0,0 +1,28 @@
{**
* templates/controllers/grid/plugins/pluginGalleryGridFilter.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2000-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Filter template for plugin gallery grid.
*}
<script>
// Attach the form handler to the form.
$('#pluginGallerySearchForm').pkpHandler('$.pkp.controllers.form.ClientFormHandler',
{ldelim}
trackFormChanges: false
{rdelim}
);
</script>
<form class="pkp_form filter" id="pluginGallerySearchForm" action="{url router=\PKP\core\PKPApplication::ROUTE_COMPONENT op="fetchGrid"}" method="post">
{csrf}
{fbvFormArea id="userSearchFormArea"}
{fbvFormSection}
{fbvElement type="select" id="category" from=$filterData.categories selected=$filterSelectionData.category translate=false size=$fbvStyles.size.SMALL inline=true}
{fbvElement type="text" id="pluginText" value=$filterSelectionData.pluginText size=$fbvStyles.size.LARGE inline=true}
{/fbvFormSection}
{* Buttons generate their own section *}
{fbvFormButtons hideCancel=true submitText="common.search"}
{/fbvFormArea}
</form>
@@ -0,0 +1,28 @@
{**
* templates/controllers/grid/plugins/pluginGridFilter.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2000-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Filter template for plugin grid.
*}
<script>
// Attach the form handler to the form.
$('#pluginSearchForm').pkpHandler('$.pkp.controllers.form.ClientFormHandler',
{ldelim}
trackFormChanges: false
{rdelim}
);
</script>
<form class="pkp_form filter" id="pluginSearchForm" action="{url router=\PKP\core\PKPApplication::ROUTE_COMPONENT op="fetchGrid"}" method="post">
{csrf}
{fbvFormArea id="userSearchFormArea"}
{fbvFormSection}
{fbvElement type="select" id="category" from=$filterData.categories selected=$filterSelectionData.category translate=false size=$fbvStyles.size.SMALL inline=true}
{fbvElement type="text" id="pluginName" value=$filterSelectionData.pluginName size=$fbvStyles.size.LARGE inline=true}
{/fbvFormSection}
{* Buttons generate their own section *}
{fbvFormButtons hideCancel=true submitText="common.search"}
{/fbvFormArea}
</form>
@@ -0,0 +1,88 @@
{**
* templates/controllers/grid/plugins/viewPlugin.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2000-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* @brief View a plugin gallery plugin's details.
*
* @uses $plugin Plugin The plugin being displayed
* @uses $statusKey string The locale string describing the plugin's install
* status
* @uses $statusClass string A class corresponding to the status
*}
<div class="pkp_plugin_details">
<div class="status {$statusClass|escape}">
<div class="pkp_screen_reader">
{translate key="manager.plugins.pluginGallery.latestCompatible"}
</div>
{if $installAction && ($statusClass == 'older' || $statusClass == 'notinstalled')}
<div class="action_button">
{include file="linkAction/linkAction.tpl" action=$installAction contextId="pluginGallery"}
</div>
{else}
<div class="status_notice">
{translate key=$statusKey}
</div>
{/if}
{if $statusClass != 'incompatible'}
<ul class="certifications">
{foreach from=$plugin->getReleaseCertifications() item=certification}
<li class="certification_{$certification|escape}">
<span class="label">
{translate key="manager.plugins.pluginGallery.certifications.$certification"}
</span>
<span class="description">
{translate key="manager.plugins.pluginGallery.certifications.$certification.description"}
</span>
</li>
{/foreach}
</ul>
<div class="release">
{translate key="manager.plugins.pluginGallery.version" version=$plugin->getVersion()|escape date=$plugin->getDate()|date_format:$dateFormatShort}
</div>
<div class="release_description">
{$plugin->getLocalizedReleaseDescription()|strip_unsafe_html}
</div>
{/if}
</div>
<h4 class="pkp_screen_reader">
{translate key="manager.plugins.pluginGallery.summary"}
</h4>
<div class="maintainer">
<div class="author">
{if $plugin->getContactEmail()}
<a href="mailto:{$plugin->getContactEmail()|escape}">
{$plugin->getContactName()|escape}
</a>
{else}
{$plugin->getContactName()|escape}
{/if}
</div>
<div class="institution">
{$plugin->getContactInstitutionName()|escape}
</div>
</div>
<div class="url">
<a href="{$plugin->getHomepage()|escape}" target="_blank">{$plugin->getHomepage()|escape}</a>
</div>
<div class="description">
{include file="controllers/revealMore.tpl" content=$plugin->getLocalizedDescription()|strip_unsafe_html}
</div>
{if $plugin->getLocalizedInstallationInstructions()}
<div class="installation">
{include file="controllers/revealMore.tpl" content=$plugin->getLocalizedInstallationInstructions()|strip_unsafe_html}
</div>
{/if}
</div>
@@ -0,0 +1,71 @@
{**
* templates/controllers/grid/queries/form/queryForm.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* @brief Query grid form
*
*}
{if !count($allParticipants)}
{translate key="submission.query.noParticipantOptions"}
{else}
<script>
// Attach the handler.
$(function() {ldelim}
$('#queryForm').pkpHandler(
'$.pkp.controllers.grid.queries.QueryFormHandler',
{ldelim}
cancelUrl: {if $isNew}{url|json_encode op="deleteQuery" queryId=$queryId csrfToken=$csrfToken params=$actionArgs escape=false}{else}null{/if},
templateUrl: {url|json_encode router=$smarty.const.ROUTE_COMPONENT component='grid.queries.QueriesGridHandler' op='fetchTemplateBody' stageId=$stageId submissionId=$assocId escape=false},
{rdelim}
);
{rdelim});
</script>
<form class="pkp_form" id="queryForm" method="post" action="{url op="updateQuery" queryId=$queryId params=$actionArgs wasNew=$isNew}">
{csrf}
{include file="controllers/notification/inPlaceNotification.tpl" notificationId="queryFormNotification"}
{fbvFormSection list=true title="editor.submission.stageParticipants"}
{foreach from=$allParticipants item="participant" key="id"}
{fbvElement type="checkbox" id="users[]" value=$id checked=in_array($id, $assignedParticipants) label=$participant|escape translate=false}
{/foreach}
{/fbvFormSection}
{if count($templates)}
{fbvFormArea id="queryTemplateArea"}
{fbvFormSection title="stageParticipants.notify.chooseMessage" for="template" size=$fbvStyles.size.medium}
{fbvElement type="select" from=$templates translate=false id="template" selected=$template defaultValue="" defaultLabel=""}
{/fbvFormSection}
{/fbvFormArea}
{/if}
{fbvFormArea id="queryContentsArea"}
{fbvFormSection title="common.subject" for="subject" required="true"}
{fbvElement type="text" id="subject" value=$subject required="true"}
{/fbvFormSection}
{fbvFormSection title="stageParticipants.notify.message" for="comment" required="true"}
{fbvElement type="textarea" id="comment" rich=true value=$comment required="true"}
{/fbvFormSection}
{/fbvFormArea}
{fbvFormArea id="queryNoteFilesArea"}
{capture assign=queryNoteFilesGridUrl}{url router=\PKP\core\PKPApplication::ROUTE_COMPONENT component="grid.files.query.QueryNoteFilesGridHandler" op="fetchGrid" params=$actionArgs queryId=$queryId noteId=$noteId escape=false}{/capture}
{load_url_in_div id="queryNoteFilesGrid" url=$queryNoteFilesGridUrl}
{/fbvFormArea}
<p><span class="formRequired">{translate key="common.requiredField"}</span></p>
{if $allowedEditTimeNotice['show']}
<p><span class="sub_label">{translate key="submission.query.allowedEditTime" allowedEditTimeNoticeLimit=$allowedEditTimeNotice['limit']}</span></p>
{/if}
{fbvFormButtons id="addQueryButton"}
</form>
{/if}
@@ -0,0 +1,37 @@
{**
* templates/controllers/grid/queries/queryNoteForm.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Read a query.
*
*}
<script>
// Attach the handler.
$(function() {ldelim}
$('#noteForm').pkpHandler(
'$.pkp.controllers.form.CancelActionAjaxFormHandler',
{ldelim}
cancelUrl: {url|json_encode op="deleteNote" params=$actionArgs csrfToken=$csrfToken noteId=$noteId escape=false}
{rdelim}
);
{rdelim});
</script>
<form class="pkp_form" id="noteForm" action="{url op="insertNote" params=$actionArgs noteId=$noteId escape=false}" method="post">
{csrf}
{include file="controllers/notification/inPlaceNotification.tpl" notificationId="queryNoteFormNotification"}
{fbvFormSection title="stageParticipants.notify.message" for="comment" required="true"}
{fbvElement type="textarea" id="comment" rich=true value=$comment required="true"}
{/fbvFormSection}
{fbvFormArea id="queryNoteFilesArea"}
{capture assign=queryNoteFilesGridUrl}{url router=\PKP\core\PKPApplication::ROUTE_COMPONENT component="grid.files.query.QueryNoteFilesGridHandler" op="fetchGrid" params=$actionArgs noteId=$noteId escape=false}{/capture}
{load_url_in_div id="queryNoteFilesGrid" url=$queryNoteFilesGridUrl}
{/fbvFormArea}
{fbvFormButtons id="addNoteButton"}
</form>
@@ -0,0 +1,13 @@
{**
* templates/controllers/grid/queries/participants.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Show the list of participants.
*
*}
{foreach from=$participants item=user}
<li>{$user->getFullName()|escape} ({$user->getUsername()|escape})</li>
{/foreach}
@@ -0,0 +1,48 @@
{**
* templates/controllers/grid/queries/readQuery.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Read a query.
*
*}
<script>
$(function() {ldelim}
$('#readQueryContainer').pkpHandler(
'$.pkp.controllers.grid.queries.ReadQueryHandler',
{ldelim}
fetchNoteFormUrl: {url|json_encode router=\PKP\core\PKPApplication::ROUTE_COMPONENT component=$queryNotesGridHandlerName op="addNote" params=$requestArgs queryId=$query->getId() escape=false},
fetchParticipantsListUrl: {url|json_encode router=\PKP\core\PKPApplication::ROUTE_COMPONENT component="grid.queries.QueriesGridHandler" op="participants" params=$requestArgs queryId=$query->getId() escape=false}
{rdelim}
);
{rdelim});
</script>
<div id="readQueryContainer" class="pkp_controllers_query">
<h4>
{translate key="editor.submission.stageParticipants"}
{if $editAction}
{include file="linkAction/linkAction.tpl" action=$editAction contextId="editQuery"}
{/if}
</h4>
<ul id="participantsListPlaceholder" class="participants"></ul>
{capture assign=queryNotesGridUrl}{url router=\PKP\core\PKPApplication::ROUTE_COMPONENT component=$queryNotesGridHandlerName op="fetchGrid" params=$requestArgs queryId=$query->getId() escape=false}{/capture}
{load_url_in_div id="queryNotesGrid" url=$queryNotesGridUrl}
<div class="queryEditButtons">
<div class="openNoteForm add_note">
<a href="#">
{translate key="submission.query.addNote"}
</a>
</div>
<div class="leaveQueryForm leave_query" {if !$showLeaveQueryButton}style="display: none;"{/if}">
{include file="linkAction/linkAction.tpl" action=$leaveQueryLinkAction contextId="leaveQueryForm"}
</div>
<div class="pkp_spinner"></div>
</div>
<div id="newNotePlaceholder"></div>
</div>
@@ -0,0 +1,99 @@
{**
* lib/pkp/templates/controllers/grid/settings/category/form/categoryForm.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Form to edit or create a category
*}
<script type="text/javascript">
$(function() {ldelim}
// Attach the form handler.
$('#categoryForm').pkpHandler(
'$.pkp.controllers.form.FileUploadFormHandler',
{ldelim}
publishChangeEvents: ['updateSidebar'],
$uploader: $('#plupload'),
uploaderOptions: {ldelim}
uploadUrl: {url|json_encode op="uploadImage" escape=false},
baseUrl: {$baseUrl|json_encode},
filters: {ldelim}
mime_types : [
{ldelim} title : "Image files", extensions : "jpg,jpeg,png" {rdelim}
]
{rdelim}
{rdelim}
{rdelim}
);
{rdelim});
</script>
<form class="pkp_form" id="categoryForm" method="post" action="{url router=\PKP\core\PKPApplication::ROUTE_COMPONENT component="grid.settings.category.CategoryCategoryGridHandler" op="updateCategory" categoryId=$categoryId}">
{csrf}
{include file="controllers/notification/inPlaceNotification.tpl" notificationId="categoryFormNotification"}
{fbvFormArea id="categoryDetails"}
<h3>{translate key="grid.category.categoryDetails"}</h3>
{fbvFormSection title="grid.category.name" for="name" required="true"}
{fbvElement type="text" multilingual="true" name="name" value=$name id="name" required="true"}
{/fbvFormSection}
{fbvFormSection title="grid.category.parentCategory" for="context"}
{fbvElement type="select" id="parentId" from=$rootCategories selected=$parentId translate=false disabled=$cannotSelectChild}
{/fbvFormSection}
{fbvFormSection title="grid.category.path" required=true for="path"}
{capture assign="instruct"}
{url router=\PKP\core\PKPApplication::ROUTE_PAGE page="catalog" op="category" path="path"}
{translate key="grid.category.urlWillBe" sampleUrl=$sampleUrl}
{/capture}
{fbvElement type="text" id="path" value=$path maxlength="32" label=$instruct subLabelTranslate=false}
{/fbvFormSection}
{fbvFormSection title="grid.category.description" for="context"}
{fbvElement type="textarea" multilingual="true" id="description" value=$description rich=true}
{/fbvFormSection}
{fbvFormSection label="catalog.sortBy" description="catalog.sortBy.categoryDescription" for="sortOption"}
{fbvElement type="select" id="sortOption" from=$sortOptions selected=$sortOption translate=false}
{/fbvFormSection}
{fbvFormSection title="category.coverImage"}
{include file="controllers/fileUploadContainer.tpl" id="plupload"}
<input type="hidden" name="temporaryFileId" id="temporaryFileId" value="" />
{/fbvFormSection}
{if $image}
{fbvFormSection}
{capture assign="altTitle"}{translate key="submission.currentCoverImage"}{/capture}
<img class="pkp_helpers_container_center" height="{$image.thumbnailHeight}" width="{$image.thumbnailWidth}" src="{url router=\PKP\core\PKPApplication::ROUTE_PAGE page="catalog" op="thumbnail" type="category" id=$categoryId}" alt="{$altTitle|escape}" />
{/fbvFormSection}
{/if}
{fbvFormSection list=true title="manager.sections.form.assignEditors"}
<div>{translate key="manager.categories.form.assignEditors.description"}</div>
{foreach from=$assignableUserGroups item="assignableUserGroup"}
{assign var="role" value=$assignableUserGroup.userGroup->getLocalizedName()}
{assign var="userGroupId" value=$assignableUserGroup.userGroup->getId()}
{foreach from=$assignableUserGroup.users item=$username key="id"}
{fbvElement
type="checkbox"
id="subEditors[{$userGroupId}][]"
value=$id
checked=(isset($subeditorUserGroups[$id]) && in_array($userGroupId, $subeditorUserGroups[$id]))
label={translate key="manager.sections.form.assignEditorAs" name=$username|escape role=$role|escape}
translate=false
}
{/foreach}
{/foreach}
{/fbvFormSection}
<p><span class="formRequired">{translate key="common.requiredField"}</span></p>
{fbvFormButtons}
{/fbvFormArea}
</form>
@@ -0,0 +1,53 @@
{**
* templates/controllers/grid/settings/genre/form/genreForm.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Genre form under context management.
*}
<script type="text/javascript">
$(function() {ldelim}
// Attach the form handler.
$('#genreForm').pkpHandler('$.pkp.controllers.form.AjaxFormHandler');
{rdelim});
</script>
<form class="pkp_form" id="genreForm" method="post" action="{url router=\PKP\core\PKPApplication::ROUTE_COMPONENT component="grid.settings.genre.GenreGridHandler" op="updateGenre"}">
{csrf}
{include file="controllers/notification/inPlaceNotification.tpl" notificationId="genreFormNotification"}
{fbvFormArea id="genreInfo"}
{fbvFormSection title="common.name" for="name" required="true"}
{fbvElement type="text" multilingual="true" id="name" value=$name maxlength="80" required="true"}
{/fbvFormSection}
{fbvFormSection list="true" title="manager.setup.genres.label"}
{fbvElement type="checkbox" id="dependent" checked=$dependent label="manager.setup.genres.dependent"}
{fbvElement type="checkbox" id="supplementary" checked=$supplementary label="manager.setup.genres.supplementary"}
{/fbvFormSection}
{fbvFormSection label="manager.setup.genres.metatadata" description="manager.setup.genres.metatadata.description" for="category"}
{fbvElement type="select" id="category" from=$submissionFileCategories selected=$category translate=false}
{/fbvFormSection}
{fbvFormSection list="true" label="manager.setup.genres.submitRequired.label" description="manager.setup.genres.submitRequired.description"}
{fbvElement type="radio" id="required1" name="required" value=1 checked=$required label="manager.setup.genres.submitRequired.yes"}
{fbvElement type="radio" id="required0" name="required" value=0 checked=!$required label="manager.setup.genres.submitRequired.no"}
{/fbvFormSection}
{fbvFormSection label="manager.setup.genres.key" description="manager.setup.genres.key.description" for="key"}
{fbvElement type="text" id="key" value=$key maxlength="30" readonly=$keyReadOnly size=$fbvStyles.size.SMALL}
{/fbvFormSection}
{/fbvFormArea}
{if $gridId}
<input type="hidden" name="gridId" value="{$gridId|escape}" />
{/if}
{if $rowId}
<input type="hidden" name="rowId" value="{$rowId|escape}" />
{/if}
{if $genreId}
<input type="hidden" name="genreId" value="{$genreId|escape}" />
{/if}
<p><span class="formRequired">{translate key="common.requiredField"}</span></p>
{fbvFormButtons submitText="common.save"}
</form>
@@ -0,0 +1,77 @@
{**
* templates/controllers/grid/settings/library/form/editFileForm.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Library Files form for editing an existing file
*}
<script type="text/javascript">
// Attach the file upload form handler.
$(function() {ldelim}
$('#uploadForm').pkpHandler(
'$.pkp.controllers.form.FileUploadFormHandler',
{ldelim}
$uploader: $('#plupload'),
uploaderOptions: {ldelim}
uploadUrl: {url|json_encode op="uploadFile" fileType=$fileType escape=false},
baseUrl: {$baseUrl|json_encode}
{rdelim}
{rdelim}
);
{rdelim});
</script>
<form class="pkp_form" id="uploadForm" action="{url op="updateFile" fileId=$libraryFile->getId()}" method="post">
{csrf}
<input type="hidden" name="temporaryFileId" id="temporaryFileId" value="" />
{fbvFormArea id="name"}
{fbvFormSection title="common.name" required=true}
{fbvElement type="text" id="libraryFileName" value=$libraryFileName maxlength="255" multilingual=true required=true}
{/fbvFormSection}
{/fbvFormArea}
{fbvFormArea id="type"}
{fbvFormSection title="common.type" required=true}
{fbvElement type="select" from=$fileTypes id="fileType" selected=$libraryFile->getType() defaultValue="" defaultLabel="common.chooseOne"|translate required=true}
{/fbvFormSection}
{/fbvFormArea}
{fbvFormArea id="file"}
{fbvFormSection title="common.file"}
<table id="fileInfo" class="data" width="100%">
<tr valign="top">
<td width="20%" class="label">{translate key="common.fileName"}</td>
<td width="80%" class="value">{$libraryFile->getOriginalFileName()|escape}</a></td>
</tr>
<tr valign="top">
<td class="label">{translate key="common.fileSize"}</td>
<td class="value">{$libraryFile->getNiceFileSize()}</td>
</tr>
<tr valign="top">
<td class="label">{translate key="common.dateUploaded"}</td>
<td class="value">{$libraryFile->getDateUploaded()|date_format:$datetimeFormatShort}</td>
</tr>
<tr valign="top">
<td class="label">{translate key="common.replaceFile"}</td>
<td class="value">{include file="controllers/fileUploadContainer.tpl" id="plupload"}</td>
</tr>
</table>
{/fbvFormSection}
{/fbvFormArea}
{fbvFormSection list="true" translate=false}
{capture assign=enablePublicAccess}{translate key="common.publicAccess"}{/capture}
{fbvElement type="checkbox" id="publicAccess" value="1" checked=$publicAccess label=$enablePublicAccess translate=false}
<p>
{capture assign=downloadUrl}{url router=\PKP\core\PKPApplication::ROUTE_PAGE page="libraryFiles" op="downloadPublic" path=$libraryFile->getId()}{/capture}
{translate key="settings.libraryFiles.public.viewInstructions" downloadUrl=$downloadUrl}
</p>
{/fbvFormSection}
<p><span class="formRequired">{translate key="common.requiredField"}</span></p>
{fbvFormButtons}
</form>
@@ -0,0 +1,61 @@
{**
* templates/controllers/grid/settings/library/form/newFileForm.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Library Files form
*}
<script type="text/javascript">
// Attach the file upload form handler.
$(function() {ldelim}
$('#uploadForm').pkpHandler(
'$.pkp.controllers.form.FileUploadFormHandler',
{ldelim}
$uploader: $('#plupload'),
uploaderOptions: {ldelim}
uploadUrl: {url|json_encode op="uploadFile" fileType=$fileType escape=false},
baseUrl: {$baseUrl|json_encode}
{rdelim}
{rdelim}
);
{rdelim});
</script>
<form class="pkp_form" id="uploadForm" action="{url op="saveFile"}" method="post">
{csrf}
{include file="controllers/notification/inPlaceNotification.tpl" notificationId="libraryFileUploadNotification"}
<input type="hidden" name="temporaryFileId" id="temporaryFileId" value="" />
{fbvFormArea id="name"}
{fbvFormSection title="common.name" required=true}
{fbvElement type="text" multilingual="true" id="libraryFileName" value=$libraryFileName maxlength="255" required=true}
{/fbvFormSection}
{/fbvFormArea}
{fbvFormArea id="type"}
{fbvFormSection title="common.type" required=true}
{fbvElement type="select" from=$fileTypes id="fileType" selected=$fileType defaultValue="" defaultLabel="common.chooseOne"|translate required=true}
{/fbvFormSection}
{/fbvFormArea}
{fbvFormArea id="file"}
{fbvFormSection title="common.file" required=true}
{include file="controllers/fileUploadContainer.tpl" id="plupload"}
{/fbvFormSection}
{/fbvFormArea}
{fbvFormSection list="true" translate=false}
{capture assign=enablePublicAccess}{translate key="common.publicAccess"}{/capture}
{fbvElement type="checkbox" id="publicAccess" value="1" checked=false label=$enablePublicAccess translate=false}
<p>
{capture assign=downloadUrl}{url router=\PKP\core\PKPApplication::ROUTE_PAGE page="libraryFiles" op="downloadPublic" path="id"}{/capture}
{translate key="settings.libraryFiles.public.viewInstructions" downloadUrl=$downloadUrl}
</p>
{/fbvFormSection}
<p><span class="formRequired">{translate key="common.requiredField"}</span></p>
{fbvFormButtons}
</form>
@@ -0,0 +1,28 @@
{**
* templates/controllers/grid/settings/reviewForms/editReviewForm.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* The edit/preview a review form tabset.
*}
<script type="text/javascript">
// Attach the JS file tab handler.
$(function() {ldelim}
$('#editReviewFormTabs').pkpHandler(
'$.pkp.controllers.TabHandler',
{ldelim}
{if !$canEdit}disabled: [0, 1],{/if}
selected: {if $preview}2{else}0{/if}
{rdelim}
);
{rdelim});
</script>
<div id="editReviewFormTabs" class="pkp_controllers_tab">
<ul>
<li><a href="{url router=\PKP\core\PKPApplication::ROUTE_COMPONENT op="reviewFormBasics" reviewFormId=$reviewFormId}">{translate key="manager.reviewForms.edit"}</a></li>
<li><a href="{url router=\PKP\core\PKPApplication::ROUTE_COMPONENT op="reviewFormElements" reviewFormId=$reviewFormId}">{translate key="manager.reviewFormElements"}</a></li>
<li><a href="{url router=\PKP\core\PKPApplication::ROUTE_COMPONENT op="reviewFormPreview" reviewFormId=$reviewFormId}">{translate key="manager.reviewForms.preview"}</a></li>
</ul>
</div>
@@ -0,0 +1,65 @@
{**
* templates/controllers/grid/settings/roles/form/userGroupForm.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Form to edit or create a user group
*}
<script type="text/javascript">
$(function() {ldelim}
// Attach the form handler.
$('#userGroupForm').pkpHandler(
'$.pkp.controllers.grid.settings.roles.form.UserGroupFormHandler', {ldelim}
selfRegistrationRoleIds: {$selfRegistrationRoleIds|@json_encode},
recommendOnlyRoleIds: {$recommendOnlyRoleIds|@json_encode},
roleForbiddenStagesJSON: {$roleForbiddenStagesJSON},
notChangeMetadataEditPermissionRoles: {$notChangeMetadataEditPermissionRoles|@json_encode},
stagesSelector: '[id^="assignedStages"]'
{rdelim});
{rdelim});
</script>
<form class="pkp_form" id="userGroupForm" method="post" action="{url router=\PKP\core\PKPApplication::ROUTE_COMPONENT component="grid.settings.roles.UserGroupGridHandler" op="updateUserGroup"}">
{csrf}
{include file="controllers/notification/inPlaceNotification.tpl" notificationId="userGroupFormNotification"}
{if $userGroupId}
<input type="hidden" id="userGroupId" name="userGroupId" value="{$userGroupId|escape}" />
{/if}
{fbvFormArea id="userGroupDetails"}
<h3>{translate key="settings.roles.roleDetails"}</h3>
{fbvFormSection title="settings.roles.from" for="roleId" required="true"}
{fbvElement type="select" name="roleId" from=$roleOptions id="roleId" selected=$roleId disabled=$disableRoleSelect required="true"}
{/fbvFormSection}
{fbvFormSection title="settings.roles.roleName" for="name" required="true"}
{fbvElement type="text" multilingual="true" name="name" value=$name id="name" required="true"}
{/fbvFormSection}
{fbvFormSection title="settings.roles.roleAbbrev" for="abbrev" required="true"}
{fbvElement type="text" multilingual="true" name="abbrev" value=$abbrev id="abbrev" required="true"}
{/fbvFormSection}
{/fbvFormArea}
<div id="userGroupStageContainer" class="full left">
{fbvFormArea id="userGroupRoles"}
{fbvFormSection title="grid.roles.stageAssignment" for="assignedStages[]" list="true"}
{fbvElement type="checkboxgroup" name="assignedStages" id="assignedStages" from=$stages selected=$assignedStages}
{/fbvFormSection}
<label for="stages[]" class="error pkp_form_hidden">{translate key="settings.roles.stageIdRequired"}</label>
{/fbvFormArea}
</div>
<div id="userGroupOptionsContainer" class="full left">
{fbvFormArea id="userGroupOptions"}
{fbvFormSection title="settings.roles.roleOptions" list="true"}
{fbvElement type="checkbox" name="showTitle" id="showTitle" checked=$showTitle label="settings.roles.showTitles"}
{fbvElement type="checkbox" name="permitSelfRegistration" id="permitSelfRegistration" checked=$permitSelfRegistration label="settings.roles.permitSelfRegistration"}
{fbvElement type="checkbox" name="recommendOnly" id="recommendOnly" checked=$recommendOnly label="settings.roles.recommendOnly"}
{fbvElement type="checkbox" name="permitMetadataEdit" id="permitMetadataEdit" checked=$permitMetadataEdit label="settings.roles.permitMetadataEdit"}
{/fbvFormSection}
{/fbvFormArea}
</div>
<p><span class="formRequired">{translate key="common.requiredField"}</span></p>
{fbvFormButtons}
</form>
@@ -0,0 +1,24 @@
{**
* templates/controllers/grid/settings/roles/userGroupsGridFilter.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
*}
<script type="text/javascript">
// Attach the form handler to the form.
$('#userGroupSearchForm').pkpHandler('$.pkp.controllers.form.ToggleFormHandler');
</script>
<form class="pkp_form filter" id="userGroupSearchForm" action="{url router=\PKP\core\PKPApplication::ROUTE_COMPONENT component="grid.settings.roles.UserGroupGridHandler" op="fetchGrid"}" method="post">
{csrf}
{fbvFormArea id="userGroupSearchFormArea"}
{fbvFormSection description="grid.userGroup.filter.listRoles" size=$fbvStyles.size.SMALL inline=true}
{fbvElement type="select" id="selectedStageId" from=$filterData.stageOptions selected=$filterSelectionData.selectedStageId}
{/fbvFormSection}
{fbvFormSection description="grid.userGroup.filter.permissionLevel" size=$fbvStyles.size.SMALL inline=true}
{fbvElement type="select" id="selectedRoleId" from=$filterData.roleOptions selected=$filterSelectionData.selectedRoleId}
{/fbvFormSection}
{/fbvFormArea}
</form>
@@ -0,0 +1,78 @@
{**
* templates/controllers/grid/settings/user/form/userDetailsForm.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Form for creating/editing a user.
*}
<script type="text/javascript">
$(function() {ldelim}
// Attach the form handler.
$('#userDetailsForm').pkpHandler('$.pkp.controllers.grid.settings.user.form.UserDetailsFormHandler',
{ldelim}
fetchUsernameSuggestionUrl: {url|json_encode router=\PKP\core\PKPApplication::ROUTE_COMPONENT component="api.user.UserApiHandler" op="suggestUsername" givenName="GIVEN_NAME_PLACEHOLDER" familyName="FAMILY_NAME_PLACEHOLDER" escape=false},
usernameSuggestionTextAlert: {translate|json_encode key="grid.user.mustProvideName"}
{rdelim}
);
{rdelim});
</script>
{if !$userId}
{assign var="passwordRequired" value="true"}
{/if}{* !$userId *}
<form class="pkp_form" id="userDetailsForm" method="post" action="{url router=\PKP\core\PKPApplication::ROUTE_COMPONENT component="grid.settings.user.UserGridHandler" op="updateUser"}">
{csrf}
<input type="hidden" id="sitePrimaryLocale" name="sitePrimaryLocale" value="{$sitePrimaryLocale|escape}" />
<div id="userDetailsFormContainer">
<div id="userDetails" class="full left">
{if !$userGroupUpdateOnly}
{if $userId}
<h3>{translate key="grid.user.userDetails"}</h3>
{else}
<h3>{translate key="grid.user.step1"}</h3>
{/if}
{/if}
{if $userId}
<input type="hidden" id="userId" name="userId" value="{$userId|escape}" />
{/if}
{include file="controllers/notification/inPlaceNotification.tpl" notificationId="userDetailsFormNotification"}
</div>
{if !$userGroupUpdateOnly}
{if $userId}
{assign var="disableSendNotifySection" value=true}
{/if}
{include
file="common/userDetails.tpl"
disableSendNotifySection=$disableSendNotifySection
}
{if $canCurrentUserGossip}
{fbvFormSection label="user.gossip" description="user.gossip.description"}
{fbvElement type="textarea" name="gossip" id="gossip" rich=true value=$gossip}
{/fbvFormSection}
{/if}
{/if}
{if $userGroupUpdateOnly}
{include file="common/userDetailsReadOnly.tpl"}
{/if}
{if $userId}
{fbvFormSection}
{fbvFormSection list=true title="grid.user.userRoles"}
{foreach from=$allUserGroups item="userGroup" key="id"}
{fbvElement type="checkbox" id="userGroupIds[]" value=$id checked=in_array($id, $assignedUserGroups) label=$userGroup|escape translate=false}
{/foreach}
{/fbvFormSection}
{/fbvFormSection}
{/if}
<p><span class="formRequired">{translate key="common.requiredField"}</span></p>
{fbvFormButtons}
</div>
</form>
@@ -0,0 +1,33 @@
{**
* templates/controllers/grid/settings/user/form/userDisableForm.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Display form to enable/disable a user.
*}
<script type="text/javascript">
$(function() {ldelim}
// Attach the form handler.
$('#userDisableForm').pkpHandler('$.pkp.controllers.form.AjaxFormHandler');
{rdelim});
</script>
<form class="pkp_form" id="userDisableForm" method="post" action="{url router=\PKP\core\PKPApplication::ROUTE_COMPONENT component="grid.settings.user.UserGridHandler" op="disableUser"}">
{csrf}
<input type="hidden" name="userId" value="{$userId|escape}" />
<input type="hidden" name="enable" value="{$enable|escape}" />
{if $enable}
{fbvFormSection title="grid.user.enableReason" for="disableReason"}
{fbvElement type="textarea" id="disableReason" value=$disableReason size=$fbvStyles.size.LARGE}
{/fbvFormSection}
{else}
{fbvFormSection title="grid.user.disableReason" for="disableReason"}
{fbvElement type="textarea" id="disableReason" value=$disableReason size=$fbvStyles.size.LARGE}
{/fbvFormSection}
{/if}
{fbvFormButtons}
</form>
@@ -0,0 +1,36 @@
{**
* templates/controllers/grid/settings/user/form/userEmailForm.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Display form to send user an email.
*}
<script>
$(function() {ldelim}
// Attach the form handler.
$('#sendEmailForm').pkpHandler('$.pkp.controllers.form.AjaxFormHandler');
{rdelim});
</script>
<form class="pkp_form" id="sendEmailForm" method="post" action="{url router=\PKP\core\PKPApplication::ROUTE_COMPONENT component="grid.settings.user.UserGridHandler" op="sendEmail"}" >
{csrf}
<input type="hidden" name="userId" value="{$userId|escape}" />
{fbvFormSection title="email.subject" for="subject" required="true" size=$fbvStyles.size.MEDIUM inline=true}
{fbvElement type="text" id="subject" value=$subject required="true"}
{/fbvFormSection}
{fbvFormSection title="email.to" size=$fbvStyles.size.MEDIUM inline=true}
{fbvElement type="text" id="user" value=$userFullName|concat:" <":$userEmail:">" disabled="true"}
{/fbvFormSection}
{fbvFormSection title="email.body" for="message" required="true"}
{fbvElement type="textarea" id="message" value=$message rich=true required="true"}
{/fbvFormSection}
{fbvFormButtons submitText="common.sendEmail"}
<p><span class="formRequired">{translate key="common.requiredField"}</span></p>
</form>
@@ -0,0 +1,34 @@
{**
* templates/controllers/grid/settings/user/form/userRoleForm.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Form for managing roles for a newly created user.
*}
<script type="text/javascript">
$(function() {ldelim}
// Attach the form handler.
$('#userRoleForm').pkpHandler('$.pkp.controllers.form.AjaxFormHandler');
{rdelim});
</script>
<form class="pkp_form" id="userRoleForm" method="post" action="{url router=\PKP\core\PKPApplication::ROUTE_COMPONENT component="grid.settings.user.UserGridHandler" op="updateUserRoles"}">
{csrf}
{include file="controllers/notification/inPlaceNotification.tpl" notificationId="userRoleFormNotification"}
<h3>{translate key="grid.user.step2" userFullName=$userFullName|escape}</h3>
<input type="hidden" id="userId" name="userId" value="{$userId|escape}" />
{fbvFormSection}
{fbvFormSection list=true title="grid.user.userRoles"}
{foreach from=$allUserGroups item="userGroup" key="id"}
{fbvElement type="checkbox" id="userGroupIds[]" value=$id checked=in_array($id, $assignedUserGroups) label=$userGroup|escape translate=false}
{/foreach}
{/fbvFormSection}
{/fbvFormSection}
{fbvFormButtons submitText="common.save"}
</form>
@@ -0,0 +1,46 @@
{**
* templates/controllers/grid/settings/user/userGridFilter.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2000-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* @brief Filter template for user grid.
*
* @uses int|null $filterData.oldUserId The user grid is re-used when merging
* users. During the process, an $oldUserId is passed representing the user to
* be merged. This is used to distinguish the grid filter IDs. The $oldUserId
* must be submitted with the client form in order to ensure that the unique
* IDs are used when the grid is refreshed. This ensures the filter form
* binds to the correct grid when the filter is submitted and refreshed.
*}
{assign var=filterId value="userSearchForm"}
{if $filterData.oldUserId}
{assign var=filterId value=$filterId|concat:"-userMerge"}
{/if}
<script type="text/javascript">
// Attach the form handler to the form.
$('#{$filterId}').pkpHandler('$.pkp.controllers.form.ClientFormHandler',
{ldelim}
trackFormChanges: false
{rdelim}
);
</script>
<form class="pkp_form filter" id="{$filterId}" action="{url router=\PKP\core\PKPApplication::ROUTE_COMPONENT component="grid.settings.user.UserGridHandler" op="fetchGrid"}" method="post">
{csrf}
{if $filterData.oldUserId}
<input type="hidden" name="oldUserId" value="{$filterData.oldUserId|escape}">
{/if}
{fbvFormArea id="userSearchFormArea"}
{fbvFormSection title="common.search" for="search"}
{fbvElement type="search" name="search" id="search" value=$filterSelectionData.search size=$fbvStyles.size.LARGE inline="true"}
{fbvElement type="select" name="userGroup" id="userGroup" from=$filterData.userGroupOptions selected=$filterSelectionData.userGroup size=$fbvStyles.size.SMALL translate=false inline="true"}
{/fbvFormSection}
{fbvFormSection list=true}
{if $filterSelectionData.includeNoRole}{assign var="checked" value="checked"}{/if}
{fbvElement type="checkbox" name="includeNoRole" id="includeNoRole" value="1" checked=$checked label="user.noRoles.selectUsersWithoutRoles" translate="true"}
{/fbvFormSection}
{fbvFormButtons hideCancel=true submitText="common.search"}
{/fbvFormArea}
</form>
@@ -0,0 +1,35 @@
{**
* templates/controllers/grid/tasks/task.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* @brief A single task appearing in the task grid
*
* @uses $notificationMgr NotificationManager
* @uses $notification Notification The notification object
* @uses $context Journal|Press The journal or press which this notification
* comes from.
* @uses $notificationObjectTitle string The title of the object this
* notification is about.
* @uses $message string The message of the notification
* @uses $isMultiContext bool Do we have multiple contexts?
*}
<div class="task{if !$notification->getDateRead()} unread{/if}">
<span class="message">
{$message}
</span>
<div class="details">
{if $isMultiContext}
<span class="acronym">
{$context->getLocalizedAcronym()|escape}
</span>
{/if}
{if $notificationObjectTitle && $notificationObjectTitle !== '—'}
<span class="submission">
{$notificationObjectTitle|escape}
</span>
{/if}
</div>
</div>
@@ -0,0 +1,75 @@
{**
* templates/controllers/grid/users/author/form/authorForm.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Submission Contributor grid form
* @deprecated 3.4
*
*}
<script>
$(function() {ldelim}
$('#editAuthor').pkpHandler(
'$.pkp.controllers.form.AjaxFormHandler'
);
{rdelim});
</script>
<form class="pkp_form" id="editAuthor" method="post" action="{url op="updateAuthor" authorId=$authorId}">
{csrf}
{include file="controllers/notification/inPlaceNotification.tpl" notificationId="authorFormNotification"}
{include
file="common/userDetails.tpl"
disableUserNameSection=true
disablePasswordSection=true
disableSendNotifySection=true
disableSalutationSection=true
disableInitialsSection=true
disablePhoneSection=true
disableLocaleSection=true
disableInterestsSection=true
disableMailingSection=true
disableSignatureSection=true
extraContentSectionUnfolded=true
countryRequired=true
}
{fbvFormArea id="submissionSpecific"}
{if $requireAuthorCompetingInterests}
{fbvFormSection title="author.competingInterests"}
{fbvElement id="competingInterests" type="textarea" multilingual=true rich=true label="author.competingInterests.description" value=$competingInterests}
{/fbvFormSection}
{/if}
{fbvFormSection id="userGroupId" title="submission.submit.contributorRole" list=true required=true}
{foreach from=$authorUserGroups item=$userGroup}
{if $userGroupId == $userGroup->getId()}{assign var="checked" value=true}{else}{assign var="checked" value=false}{/if}
{fbvElement type="radio" id="userGroup"|concat:$userGroup->getId() name="userGroupId" value=$userGroup->getId() checked=$checked label=$userGroup->getLocalizedName() translate=false}
{/foreach}
{/fbvFormSection}
{fbvFormSection list="true"}
{fbvElement type="checkbox" label="submission.submit.selectPrincipalContact" id="primaryContact" checked=$primaryContact}
{fbvElement type="checkbox" label="submission.submit.includeInBrowse" id="includeInBrowse" checked=$includeInBrowse}
{$additionalCheckboxes}
{/fbvFormSection}
{/fbvFormArea}
{if $submissionId}
<input type="hidden" name="submissionId" value="{$submissionId|escape}" />
{/if}
{if $publicationId}
<input type="hidden" name="publicationId" value="{$publicationId|escape}" />
{/if}
{if $gridId}
<input type="hidden" name="gridId" value="{$gridId|escape}" />
{/if}
{if $rowId}
<input type="hidden" name="rowId" value="{$rowId|escape}" />
{/if}
<p><span class="formRequired">{translate key="common.requiredField"}</span></p>
{fbvFormButtons id="step2Buttons" submitText="common.save"}
</form>
@@ -0,0 +1,15 @@
{**
* templates/controllers/grid/users/author/includeInBrowse.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* User is included in browse lists cell
*
* @deprecated 3.4
*}
{if $includeInBrowse}
<div id="isChecked"><div href="#" class='pkp_helpers_container_center checked'></div></div>
{/if}
@@ -0,0 +1,15 @@
{**
* templates/controllers/grid/users/author/principalContact.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Principal contact cell
*
* @deprecated 3.4
*}
{if $isPrincipalContact}
<div id="isChecked"><div href="#" class='pkp_helpers_container_center checked'></div></div>
{/if}
@@ -0,0 +1,27 @@
{**
* templates/controllers/grid/settings/user/userGridFilter.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2000-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Filter template for user grid.
*}
<script type="text/javascript">
// Attach the form handler to the form.
$('#userSearchForm').pkpHandler('$.pkp.controllers.form.ClientFormHandler',
{ldelim}
trackFormChanges: false
{rdelim}
);
</script>
<form class="pkp_form filter" id="userSearchForm" action="{url router=\PKP\core\PKPApplication::ROUTE_COMPONENT component="grid.settings.user.UserGridHandler" op="fetchGrid"}" method="post">
{csrf}
{fbvFormArea id="userSearchFormArea"}
{fbvFormSection title="common.search" for="search"}
{fbvElement type="search" name="search" id="search" value=$filterSelectionData.search size=$fbvStyles.size.LARGE inline="true"}
{fbvElement type="select" name="userGroup" id="userGroup" from=$filterData.userGroupOptions selected=$filterSelectionData.userGroup size=$fbvStyles.size.SMALL translate=false inline="true"}
{/fbvFormSection}
{fbvFormButtons hideCancel=true submitText="common.search"}
{/fbvFormArea}
</form>
@@ -0,0 +1,60 @@
{**
* templates/controllers/grid/users/reviewer/authorReadReview.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Screen to let an author read an open review.
*
*}
{* Form handler attachment implemented in application-specific versions of this template. *}
<form class="pkp_form" id="readReviewForm" method="post" action="">
{csrf}
{fbvFormSection}
<div id="reviewAssignment-{$reviewAssignment->getId()|escape}">
<h2>{$reviewAssignment->getReviewerFullName()|escape}</h2>
{if $reviewAssignment->getDateCompleted()}
{fbvFormSection}
<div class="pkp_controllers_informationCenter_itemLastEvent">
{translate key="common.completed.date" dateCompleted=$reviewAssignment->getDateCompleted()|date_format:$datetimeFormatShort}
</div>
{/fbvFormSection}
{if $reviewAssignment->getRecommendation()}
{fbvFormSection}
<div class="pkp_controllers_informationCenter_itemLastEvent">
{translate key="submission.recommendation" recommendation=$reviewAssignment->getLocalizedRecommendation()}
</div>
{/fbvFormSection}
{/if}
{if $reviewAssignment->getReviewFormId()}
{include file="reviewer/review/reviewFormResponse.tpl"}
{elseif $comments->getCount()}
<h3>{translate key="editor.review.reviewerComments"}</h3>
{iterate from=comments item=comment}
<h4>{translate key="submission.comments.canShareWithAuthor"}</h4>
{include file="controllers/revealMore.tpl" content=$comment->getComments()|strip_unsafe_html}
{/iterate}
{/if}
{/if}
</div>
{/fbvFormSection}
<div class="pkp_notification" id="noFilesWarning" style="display: none;">
{include file="controllers/notification/inPlaceNotificationContent.tpl" notificationId=noFilesWarningContent notificationStyleClass=notifyWarning notificationTitle="editor.review.noReviewFilesUploaded"|translate notificationContents="editor.review.noReviewFilesUploaded.details"|translate}
</div>
{fbvFormArea id="readReview"}
{fbvFormSection title="reviewer.submission.reviewerFiles"}
{capture assign="reviewAttachmentsGridUrl"}{url router=\PKP\core\PKPApplication::ROUTE_COMPONENT component="grid.files.attachment.AuthorOpenReviewAttachmentsGridHandler" op="fetchGrid" submissionId=$submission->getId() reviewId=$reviewAssignment->getId() stageId=$reviewAssignment->getStageId() reviewRoundId=$reviewAssignment->getReviewRoundId() escape=false}{/capture}
{load_url_in_div id="readReviewAttachmentsGridContainer" url=$reviewAttachmentsGridUrl}
{/fbvFormSection}
{/fbvFormArea}
</form>
@@ -0,0 +1,30 @@
{**
* templates/controllers/grid/user/reviewer/form/advancedSearchReviewerAssignmentForm.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Assigns the reviewer (selected from the reviewerSelect grid) to review the submission.
*
*}
<script type="text/javascript">
$(function() {ldelim}
// Attach the form handler for second form.
$('#advancedSearchReviewerForm').pkpHandler('$.pkp.controllers.grid.users.reviewer.form.AddReviewerFormHandler',
{ldelim}
templateUrl: {url|json_encode router=\PKP\core\PKPApplication::ROUTE_COMPONENT component='grid.users.reviewer.ReviewerGridHandler' op='fetchTemplateBody' stageId=$stageId reviewRoundId=$reviewRoundId submissionId=$submissionId escape=false}
{rdelim}
);
{rdelim});
</script>
{* The form that will create the review assignment. A reviewer ID must be loaded in here via the grid above. *}
<form class="pkp_form" id="advancedSearchReviewerForm" method="post" action="{url op="updateReviewer"}" >
{csrf}
{fbvElement type="hidden" id="reviewerId"}
{include file="controllers/grid/users/reviewer/form/reviewerFormFooter.tpl"}
{fbvFormButtons submitText="editor.submission.addReviewer"}
</form>
@@ -0,0 +1,70 @@
{**
* templates/controllers/grid/user/reviewer/form/advancedSearchReviewerForm.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Advanced Search and assignment reviewer form.
*
*}
<script type="text/javascript">
$(function() {ldelim}
// Handle moving the reviewer ID from the grid to the second form
$('#advancedReviewerSearch').pkpHandler(
'$.pkp.controllers.grid.users.reviewer.AdvancedReviewerSearchHandler',
{ldelim}
lastRoundReviewerIds: {$lastRoundReviewerIds|json_encode},
reviewerMessages: {$reviewerMessages|json_encode}
{rdelim}
);
{rdelim});
</script>
<div id="advancedReviewerSearch" class="pkp_form pkp_form_advancedReviewerSearch">
<div id="searchGridAndButton">
{assign var="uuid" value=""|uniqid|escape}
<div id="select-reviewer-{$uuid}">
<select-reviewer-list-panel
v-bind="components.selectReviewer"
@set="set"
/>
</div>
<script type="text/javascript">
pkp.registry.init('select-reviewer-{$uuid}', 'Container', {$selectReviewerListData|@json_encode});
</script>
{** This button will get the reviewer selected in the grid and insert their ID into the form below **}
{fbvFormSection class="form_buttons"}
{foreach from=$reviewerActions item=action}
{if $action->getId() == 'advancedSearch'}
{continue}
{/if}
{include file="linkAction/linkAction.tpl" action=$action contextId="createReviewerForm"}
{/foreach}
{/fbvFormSection}
</div>
<div id="regularReviewerForm" class="pkp_reviewer_form">
{** Display the name of the selected reviewer **}
<div class="selected_reviewer">
<div class="label">
{translate key="editor.submission.selectedReviewer"}
</div>
<div class="value">
<span id="selectedReviewerName" class="name"></span>
<span class="actions">
{foreach from=$reviewerActions item=action}
{if $action->getId() == 'advancedSearch'}
{include file="linkAction/linkAction.tpl" action=$action contextId="createReviewerForm"}
{/if}
{/foreach}
</span>
</div>
</div>
{include file="controllers/grid/users/reviewer/form/advancedSearchReviewerAssignmentForm.tpl"}
</div>
</div>
@@ -0,0 +1,76 @@
{**
* templates/controllers/grid/users/reviewer/createReviewerForm.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Create a reviewer and assign to a submission form.
*
*}
<script type="text/javascript">
$(function() {ldelim}
// Attach the form handler.
$('#createReviewerForm').pkpHandler('$.pkp.controllers.grid.users.reviewer.form.AddReviewerFormHandler',
{ldelim}
fetchUsernameSuggestionUrl: {url|json_encode router=\PKP\core\PKPApplication::ROUTE_COMPONENT component="api.user.UserApiHandler" op="suggestUsername" givenName="GIVEN_NAME_PLACEHOLDER" familyName="FAMILY_NAME_PLACEHOLDER" escape=false},
usernameSuggestionTextAlert: {translate|json_encode key="grid.user.mustProvideName"},
templateUrl: {url|json_encode router=\PKP\core\PKPApplication::ROUTE_COMPONENT component='grid.users.reviewer.ReviewerGridHandler' op='fetchTemplateBody' stageId=$stageId reviewRoundId=$reviewRoundId submissionId=$submissionId escape=false}
{rdelim}
);
{rdelim});
</script>
<form class="pkp_form" id="createReviewerForm" method="post" action="{url op="createReviewer"}" >
<input type="hidden" name="sitePrimaryLocale" value="{$sitePrimaryLocale|escape}">
{csrf}
{include file="controllers/notification/inPlaceNotification.tpl" notificationId="createReviewerFormNotification"}
<div class="action_links">
{foreach from=$reviewerActions item=action}
{include file="linkAction/linkAction.tpl" action=$action contextId="createReviewerForm"}
{/foreach}
</div>
<h3>{translate key="editor.review.createReviewer"}</h3>
{if count($userGroups)>1}
{fbvFormSection title="user.group" required="true"}
{fbvElement type="select" name="userGroupId" id="userGroupId" from=$userGroups translate=false label="editor.review.userGroupSelect" required="true"}
{/fbvFormSection}
{elseif count($userGroups)==1}
{foreach from=$userGroups key=userGroupId item=userGroupName}
{fbvElement type="hidden" id="userGroupId" value=$userGroupId}
{/foreach}
{/if}
{fbvFormSection title="common.name"}
{fbvElement type="text" label="user.givenName" multilingual="true" name="givenName" id="givenName" value=$givenName maxlength="255" inline=true size=$fbvStyles.size.MEDIUM required="true"}
{fbvElement type="text" label="user.familyName" multilingual="true" name="familyName" id="familyName" value=$familyName maxlength="255" inline=true size=$fbvStyles.size.MEDIUM}
{/fbvFormSection}
{fbvFormSection title="user.username" required="true"}
{fbvElement type="text" label="user.register.usernameRestriction" id="username" required="true" value=$username size=$fbvStyles.size.MEDIUM inline=true}
{fbvElement type="button" label="common.suggest" id="suggestUsernameButton" inline=true class="default"}
{/fbvFormSection}
{fbvFormSection title="user.email" required="true"}
{fbvElement type="email" id="email" required="true" value=$email maxlength="90" size=$fbvStyles.size.MEDIUM}
{/fbvFormSection}
{fbvFormSection title="manager.reviewerSearch.interests" for="interests"}
{fbvElement type="interests" id="interests" interests=$interests}
{/fbvFormSection}
{fbvFormSection title="user.affiliation"}
{fbvElement type="text" multilingual="true" name="affiliation" id="affiliation" value=$affiliation size=$fbvStyles.size.LARGE}
{/fbvFormSection}
{include file="controllers/grid/users/reviewer/form/reviewerFormFooter.tpl"}
<p><span class="formRequired">{translate key="common.requiredField"}</span></p>
{fbvFormButtons submitText="editor.submission.addReviewer"}
</form>
@@ -0,0 +1,29 @@
{**
* templates/controllers/grid/user/reviewer/form/defaultReviewerForm.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* A default reviewer selection form.
*
*}
<script type="text/javascript">
$(function() {ldelim}
// Attach the form handler.
$('#defaultReviewerForm').pkpHandler('$.pkp.controllers.grid.users.reviewer.form.AddReviewerFormHandler',
{ldelim}
templateUrl: {url|json_encode router=\PKP\core\PKPApplication::ROUTE_COMPONENT component='grid.users.reviewer.ReviewerGridHandler' op='fetchTemplateBody' stageId=$stageId reviewRoundId=$reviewRoundId submissionId=$submissionId escape=false}
{rdelim}
);
{rdelim});
</script>
<form class="pkp_form" id="defaultReviewerForm" method="post" action="{url op="updateReviewer"}" >
{csrf}
{include file="controllers/grid/users/reviewer/form/reviewerFormFooter.tpl"}
{fbvFormButtons submitText="editor.submission.addReviewer"}
</form>
@@ -0,0 +1,58 @@
{**
* templates/controllers/grid/user/reviewer/form/editReviewForm.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Limit the review files available to a reviewer who has already been
* assigned to a submission.
*
*}
<script type="text/javascript">
$(function() {ldelim}
// Attach the form handler.
$('#editReviewForm').pkpHandler('$.pkp.controllers.grid.users.reviewer.form.EditReviewFormHandler');
{rdelim});
</script>
<form class="pkp_form" id="editReviewForm" method="post" action="{url op="updateReview"}">
{csrf}
<input type="hidden" name="reviewAssignmentId" value="{$reviewAssignmentId|escape}" />
<input type="hidden" name="stageId" value="{$stageId|escape}" />
<input type="hidden" name="submissionId" value="{$submissionId|escape}" />
<input type="hidden" name="reviewRoundId" value="{$reviewRoundId|escape}" />
{fbvFormSection title="editor.review.importantDates"}
{fbvElement type="text" id="responseDueDate" name="responseDueDate" label="submission.task.responseDueDate" value=$responseDueDate inline=true size=$fbvStyles.size.MEDIUM class="datepicker"}
{fbvElement type="text" id="reviewDueDate" name="reviewDueDate" label="editor.review.reviewDueDate" value=$reviewDueDate inline=true size=$fbvStyles.size.MEDIUM class="datepicker"}
{/fbvFormSection}
{fbvFormSection list=true title="editor.submissionReview.reviewType"}
{foreach from=$reviewMethods key=methodId item=methodTranslationKey}
{assign var=elementId value="reviewMethod"|concat:"-"|concat:$methodId}
{if $reviewMethod == $methodId}
{assign var=elementChecked value=true}
{else}
{assign var=elementChecked value=false}
{/if}
{fbvElement type="radio" name="reviewMethod" id=$elementId value=$methodId checked=$elementChecked label=$methodTranslationKey}
{/foreach}
{/fbvFormSection}
{include file="controllers/grid/users/reviewer/form/noFilesWarning.tpl"}
<h3>{translate key="editor.submissionReview.restrictFiles"}</h3>
{capture assign=limitReviewFilesGridUrl}{url router=\PKP\core\PKPApplication::ROUTE_COMPONENT component="grid.files.review.LimitReviewFilesGridHandler" op="fetchGrid" submissionId=$submissionId stageId=$stageId reviewRoundId=$reviewRoundId reviewAssignmentId=$reviewAssignmentId escape=false}{/capture}
{load_url_in_div id="limitReviewFilesGrid" url=$limitReviewFilesGridUrl}
{if $reviewForms}
{if count($reviewForms)>0}
{fbvFormSection title="submission.reviewForm"}
{fbvElement type="select" name="reviewFormId" id="reviewFormId" defaultLabel="manager.reviewForms.noneChosen"|translate defaultValue="0" translate=false from=$reviewForms selected=$reviewFormId}
{/fbvFormSection}
{/if}
{/if}
{fbvFormButtons}
</form>
@@ -0,0 +1,34 @@
{**
* templates/controllers/grid/users/reviewer/form/emailReviewerForm.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Display form to send user an email.
*}
<script type="text/javascript">
$(function() {ldelim}
// Attach the form handler.
$('#emailReviewerForm').pkpHandler('$.pkp.controllers.form.AjaxFormHandler');
{rdelim});
</script>
<form class="pkp_form" id="emailReviewerForm" method="post" action="{url op="sendEmail" params=$requestArgs}" >
{csrf}
<input type="hidden" name="reviewAssignmentId" value="{$reviewAssignmentId|escape}" />
{fbvFormSection title="email.to" size=$fbvStyles.size.MEDIUM}
{fbvElement type="text" id="user" value=$userFullName disabled="true"}
{/fbvFormSection}
{fbvFormSection title="email.subject" for="subject" required="true"}
{fbvElement type="text" id="subject" value=$subject required="true"}
{/fbvFormSection}
{fbvFormSection title="email.body" for="message" required="true"}
{fbvElement type="textarea" id="message" value=$message rich=true required="true"}
{/fbvFormSection}
<p><span class="formRequired">{translate key="common.requiredField"}</span></p>
{fbvFormButtons submitText="common.sendEmail"}
</form>
@@ -0,0 +1,48 @@
{**
* templates/controllers/grid/user/reviewer/form/enrollExistingReviewerForm.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Enroll existing user and assignment reviewer form.
*
*}
<script type="text/javascript">
$(function() {ldelim}
// Attach the form handler.
$('#enrollExistingReviewerForm').pkpHandler('$.pkp.controllers.grid.users.reviewer.form.AddReviewerFormHandler',
{ldelim}
templateUrl: {url|json_encode router=\PKP\core\PKPApplication::ROUTE_COMPONENT component='grid.users.reviewer.ReviewerGridHandler' op='fetchTemplateBody' stageId=$stageId reviewRoundId=$reviewRoundId submissionId=$submissionId escape=false}
{rdelim}
);
{rdelim});
</script>
<form class="pkp_form" id="enrollExistingReviewerForm" method="post" action="{url op="enrollReviewer"}" >
{csrf}
{include file="controllers/notification/inPlaceNotification.tpl" notificationId="enrollExistingReviewerFormNotification"}
<div class="action_links">
{foreach from=$reviewerActions item=action}
{include file="linkAction/linkAction.tpl" action=$action contextId="enrollExistingReviewerForm"}
{/foreach}
</div>
<h3>{translate key="editor.review.enrollReviewer"}</h3>
{fbvFormSection}
{fbvElement type="select" name="userGroupId" id="userGroupId" from=$userGroups translate=false label="editor.review.userGroupSelect" required="true"}
{/fbvFormSection}
{fbvFormSection}
{capture assign=autocompleteUrl}{url op="getUsersNotAssignedAsReviewers" submissionId=$submissionId stageId=$stageId reviewRoundId=$reviewRoundId escape=false}{/capture}
{fbvElement type="autocomplete" disableSync="true" required="true" autocompleteUrl=$autocompleteUrl id="userId" label="manager.reviewerSearch.searchByName.short"}
{/fbvFormSection}
{include file="controllers/grid/users/reviewer/form/reviewerFormFooter.tpl"}
<p><span class="formRequired">{translate key="common.requiredField"}</span></p>
{fbvFormButtons submitText="editor.submission.addReviewer"}
</form>
@@ -0,0 +1,13 @@
{**
* templates/controllers/grid/user/reviewer/form/noFilesWarning.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Warning indicating that no files were selected.
*
*}
<div class="pkp_notification" id="noFilesWarning" style="display: none;">
{include file="controllers/notification/inPlaceNotificationContent.tpl" notificationId=noFilesWarningContent notificationStyleClass=notifyWarning notificationTitle="editor.submission.noReviewerFilesSelected"|translate notificationContents="editor.submission.noReviewerFilesSelected.details"|translate}
</div>
@@ -0,0 +1,39 @@
{**
* templates/controllers/grid/user/reviewer/form/reinstateReviewerForm.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Enroll existing user and assignment reviewer form.
*
*}
<script type="text/javascript">
$(function() {ldelim}
// Attach the form handler.
$('#reinstateReviewerForm').pkpHandler('$.pkp.controllers.form.AjaxFormHandler');
{rdelim});
</script>
<form class="pkp_form" id="reinstateReviewerForm" method="post" action="{url op="updateReinstateReviewer"}" >
{csrf}
<input type="hidden" name="reviewAssignmentId" value="{$reviewAssignmentId|escape}" />
<input type="hidden" name="reviewRoundId" value="{$reviewRoundId|escape}" />
<input type="hidden" name="reviewerId" value="{$reviewerId|escape}" />
<input type="hidden" name="stageId" value="{$stageId|escape}" />
<input type="hidden" name="submissionId" value="{$submissionId|escape}" />
<!-- Message to reviewer textarea -->
{fbvFormSection title="editor.review.personalMessageToReviewer" for="personalMessage"}
{fbvElement type="textarea" name="personalMessage" id="personalMessage" value=$personalMessage rich=true}
{/fbvFormSection}
<!-- Skip email checkbox -->
{fbvFormSection for="skipEmail" size=$fbvStyles.size.MEDIUM list=true}
{fbvElement type="checkbox" id="skipEmail" name="skipEmail" label="editor.review.skipEmail"}
{/fbvFormSection}
{fbvFormButtons submitText="editor.review.reinstateReviewer"}
</form>
@@ -0,0 +1,39 @@
{**
* templates/controllers/grid/user/reviewer/form/resendRequestReviewerForm.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Enroll existing user and assignment reviewer form.
*
*}
<script type="text/javascript">
$(function() {ldelim}
// Attach the form handler.
$('#resendRequestReviewerForm').pkpHandler('$.pkp.controllers.form.AjaxFormHandler');
{rdelim});
</script>
<form class="pkp_form" id="resendRequestReviewerForm" method="post" action="{url op="updateResendRequestReviewer"}" >
{csrf}
<input type="hidden" name="reviewAssignmentId" value="{$reviewAssignmentId|escape}" />
<input type="hidden" name="reviewRoundId" value="{$reviewRoundId|escape}" />
<input type="hidden" name="reviewerId" value="{$reviewerId|escape}" />
<input type="hidden" name="stageId" value="{$stageId|escape}" />
<input type="hidden" name="submissionId" value="{$submissionId|escape}" />
<!-- Message to reviewer textarea -->
{fbvFormSection title="editor.review.personalMessageToReviewer" for="personalMessage"}
{fbvElement type="textarea" name="personalMessage" id="personalMessage" value=$personalMessage rich=true}
{/fbvFormSection}
<!-- Skip email checkbox -->
{fbvFormSection for="skipEmail" size=$fbvStyles.size.MEDIUM list=true}
{fbvElement type="checkbox" id="skipEmail" name="skipEmail" label="editor.review.skipEmail"}
{/fbvFormSection}
{fbvFormButtons submitText="editor.review.resendRequestReviewer"}
</form>
@@ -0,0 +1,43 @@
{**
* templates/controllers/grid/users/reviewer/reviewReminderForm.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Display the form to send a review reminder--Contains a user-editable message field (all other fields are static)
*
*}
<script type="text/javascript">
$(function() {ldelim}
// Attach the form handler.
$('#sendReminderForm').pkpHandler('$.pkp.controllers.form.AjaxFormHandler');
{rdelim});
</script>
<form class="pkp_form" id="sendReminderForm" method="post" action="{url op="sendReminder"}" >
{csrf}
{fbvFormArea id="sendReminder"}
<input type="hidden" name="submissionId" value="{$submissionId|escape}" />
<input type="hidden" name="stageId" value="{$stageId|escape}" />
<input type="hidden" name="reviewAssignmentId" value="{$reviewAssignmentId|escape}" />
{fbvFormSection title="user.role.reviewer"}
{fbvElement type="text" id="reviewerName" value=$reviewerName disabled="true"}
{/fbvFormSection}
{fbvFormSection title="editor.review.personalMessageToReviewer" for="message"}
{fbvElement type="textarea" id="message" value=$message variables=$emailVariables rich=true}
{/fbvFormSection}
{fbvFormSection title="reviewer.submission.reviewSchedule"}
{fbvElement type="text" id="dateNotified" label="reviewer.submission.reviewRequestDate" value=$reviewAssignment->getDateNotified()|date_format:$dateFormatShort readonly=true inline=true size=$fbvStyles.size.SMALL}
{if $reviewAssignment->getDateConfirmed()}
{fbvElement type="text" id="dateConfirmed" label="editor.review.dateAccepted" value=$reviewAssignment->getDateConfirmed()|date_format:$dateFormatShort readonly=true inline=true size=$fbvStyles.size.SMALL}
{else}
{fbvElement type="text" id="responseDue" label="reviewer.submission.responseDueDate" value=$reviewAssignment->getDateResponseDue()|date_format:$dateFormatShort readonly=true inline=true size=$fbvStyles.size.SMALL}
{/if}
{fbvElement type="text" id="reviewDueDate" label="reviewer.submission.reviewDueDate" value=$reviewDueDate readonly=true inline=true size=$fbvStyles.size.SMALL}
{/fbvFormSection}
{fbvFormButtons submitText="editor.review.sendReminder"}
{/fbvFormArea}
</form>
@@ -0,0 +1,77 @@
{**
* templates/controllers/grid/user/reviewer/form/reviewerFormFooter.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* The non-searching part of the add reviewer form
*
*}
<div id="reviewerFormFooter" class="reviewerFormFooterContainer">
<!-- message template choice -->
{if $hasCustomTemplates}
{fbvFormSection title="stageParticipants.notify.chooseMessage" for="template" size=$fbvStyles.size.medium}
{fbvElement type="select" from=$templates translate=false id="template"}
{/fbvFormSection}
{else}
<!-- REVIEW_REQUEST or REVIEW_REQUEST_SUBSEQUENT -->
<input type="hidden" name="template" value="{$templates|array_key_first}"/>
{/if}
<!-- Message to reviewer textarea -->
{fbvFormSection title="editor.review.personalMessageToReviewer" for="personalMessage"}
{fbvElement type="textarea" name="personalMessage" id="personalMessage" value=$personalMessage variables=$emailVariables rich=true rows=25}
{/fbvFormSection}
<!-- skip email checkbox -->
{fbvFormSection for="skipEmail" size=$fbvStyles.size.MEDIUM list=true}
{fbvElement type="checkbox" id="skipEmail" name="skipEmail" label="editor.review.skipEmail"}
{/fbvFormSection}
{fbvFormSection title="editor.review.importantDates"}
{fbvElement type="text" id="responseDueDate" name="responseDueDate" label="submission.task.responseDueDate" value=$responseDueDate inline=true size=$fbvStyles.size.MEDIUM class="datepicker"}
{fbvElement type="text" id="reviewDueDate" name="reviewDueDate" label="editor.review.reviewDueDate" value=$reviewDueDate inline=true size=$fbvStyles.size.MEDIUM class="datepicker"}
{/fbvFormSection}
{include file="controllers/grid/users/reviewer/form/noFilesWarning.tpl"}
{capture assign="extraContent"}
<!-- Available review files -->
{capture assign=limitReviewFilesGridUrl}{url router=\PKP\core\PKPApplication::ROUTE_COMPONENT component="grid.files.review.LimitReviewFilesGridHandler" op="fetchGrid" submissionId=$submissionId stageId=$stageId reviewRoundId=$reviewRoundId escape=false}{/capture}
{load_url_in_div id="limitReviewFilesGrid" url=$limitReviewFilesGridUrl}
{/capture}
<div id="filesAccordian" class="section">
{include file="controllers/extrasOnDemand.tpl"
id="filesAccordianController"
widgetWrapper="#filesAccordian"
moreDetailsText="editor.submissionReview.restrictFiles"
lessDetailsText="editor.submissionReview.restrictFiles.hide"
extraContent=$extraContent
}
</div>
{fbvFormSection list=true title="editor.submissionReview.reviewType"}
{foreach from=$reviewMethods key=methodId item=methodTranslationKey}
{assign var=elementId value="reviewMethod"|concat:"-"|concat:$methodId}
{if $reviewMethod == $methodId}
{assign var=elementChecked value=true}
{else}
{assign var=elementChecked value=false}
{/if}
{fbvElement type="radio" name="reviewMethod" id=$elementId value=$methodId checked=$elementChecked label=$methodTranslationKey}
{/foreach}
{/fbvFormSection}
{if count($reviewForms)>0}
{fbvFormSection title="submission.reviewForm"}
{fbvElement type="select" name="reviewFormId" id="reviewFormId" defaultLabel="manager.reviewForms.noneChosen"|translate defaultValue="0" translate=false from=$reviewForms selected=$reviewFormId}
{/fbvFormSection}
{/if}
<!-- All of the hidden inputs -->
<input type="hidden" name="selectionType" value="{$selectionType|escape}" />
<input type="hidden" name="submissionId" value="{$submissionId|escape}" />
<input type="hidden" name="stageId" value="{$stageId|escape}" />
<input type="hidden" name="reviewRoundId" value="{$reviewRoundId|escape}" />
</div>
@@ -0,0 +1,24 @@
{**
* templates/controllers/grid/users/reviewer/form/reviewerGossipForm.tpl
*
* Copyright (c) 2013-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Display form to gossip about a user.
*}
<script type="text/javascript">
$(function() {ldelim}
// Attach the form handler.
$('#reviewerGossipForm').pkpHandler('$.pkp.controllers.form.AjaxFormHandler');
{rdelim});
</script>
<form class="pkp_form" id="reviewerGossipForm" method="post" action="{url op="gossip" params=$requestArgs}" >
{csrf}
{fbvFormSection}
{fbvElement type="textarea" name="gossip" id="gossip" label="user.gossip.description" rich=true value=$gossip}
{/fbvFormSection}
{fbvFormButtons}
</form>
@@ -0,0 +1,40 @@
{**
* templates/controllers/grid/users/reviewer/thankReviewerForm.tpl
*
* Copyright (c) 2014-2021 Simon Fraser University
* Copyright (c) 2003-2021 John Willinsky
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
*
* Display the form to send a thank you -- Contains a user-editable message field.
*
*}
<script type="text/javascript">
$(function() {ldelim}
// Attach the form handler.
$('#sendThankYouForm').pkpHandler('$.pkp.controllers.form.AjaxFormHandler');
{rdelim});
</script>
<form class="pkp_form" id="sendThankYouForm" method="post" action="{url op="thankReviewer"}" >
{csrf}
{fbvFormArea id="sendReminder"}
<input type="hidden" name="submissionId" value="{$submissionId|escape}" />
<input type="hidden" name="stageId" value="{$stageId|escape}" />
<input type="hidden" name="reviewAssignmentId" value="{$reviewAssignmentId|escape}" />
{fbvFormSection title="user.role.reviewer"}
{fbvElement type="text" id="reviewerName" value=$reviewerName disabled="true"}
{/fbvFormSection}
{fbvFormSection title="editor.review.personalMessageToReviewer" for="message"}
{fbvElement type="textarea" id="message" value=$message rich=true}
{/fbvFormSection}
<!-- skip email checkbox -->
{fbvFormSection for="skipEmail" size=$fbvStyles.size.MEDIUM list=true}
{fbvElement type="checkbox" id="skipEmail" name="skipEmail" label="editor.review.skipEmail"}
{/fbvFormSection}
{fbvFormButtons submitText="editor.review.thankReviewer"}
{/fbvFormArea}
</form>

Some files were not shown because too many files have changed in this diff Show More