diff --git a/Classes/Controller/BackendController.php b/Classes/Controller/BackendController.php index 472e17c4a450ea6825931d4ddf5d2d35090f6a4b..66f51b7c2a262023daa183acb409ae020aa1dae1 100644 --- a/Classes/Controller/BackendController.php +++ b/Classes/Controller/BackendController.php @@ -28,11 +28,11 @@ namespace SGalinski\SgJobs\Controller; use Doctrine\DBAL\Exception; use Psr\Http\Message\ResponseInterface; +use SGalinski\SgAccount\Domain\Repository\FrontendUserRepository; use SGalinski\SgJobs\Domain\Repository\CompanyRepository; use SGalinski\SgJobs\Domain\Repository\JobRepository; use SGalinski\SgJobs\Pagination\Pagination; use SGalinski\SgJobs\Service\BackendService; -use TYPO3\CMS\Backend\Template\Components\DocHeaderComponent; use TYPO3\CMS\Backend\Template\ModuleTemplate; use TYPO3\CMS\Backend\Template\ModuleTemplateFactory; use TYPO3\CMS\Backend\Utility\BackendUtility; @@ -48,13 +48,6 @@ use TYPO3\CMS\Extbase\Utility\LocalizationUtility; * The backend module controller */ class BackendController extends ActionController { - /** - * DocHeaderComponent - * - * @var DocHeaderComponent - */ - protected DocHeaderComponent $docHeaderComponent; - /** * @var CompanyRepository * @@ -77,14 +70,21 @@ class BackendController extends ActionController { */ protected ModuleTemplate $moduleTemplate; + /** + * @var FrontendUserRepository + */ + protected FrontendUserRepository $frontendUserRepository; + public function __construct( CompanyRepository $companyRepository, JobRepository $jobRepository, - ModuleTemplateFactory $moduleTemplateFactory + ModuleTemplateFactory $moduleTemplateFactory, + FrontendUserRepository $frontendUserRepository, ) { $this->companyRepository = $companyRepository; $this->jobRepository = $jobRepository; $this->moduleTemplateFactory = $moduleTemplateFactory; + $this->frontendUserRepository = $frontendUserRepository; } public function initializeAction(): void { @@ -103,7 +103,7 @@ class BackendController extends ActionController { */ public function indexAction(array $filters = [], int $currentPage = 1): ResponseInterface { $pageUid = $this->request->getQueryParams()['id'] ?? 0; - $itemsPerPage = 10; + /** @var BackendUserAuthentication $backendUser */ $backendUser = $GLOBALS['BE_USER']; if ($filters === []) { @@ -112,16 +112,28 @@ class BackendController extends ActionController { $backendUser->pushModuleData('web_SgJobsBackend_filters', $filters); } + $itemsPerPage = (int) ( + $this->request->getQueryParams()['itemsPerPage'] + ?? $this->request->getParsedBody()['itemsPerPage'] + ?? $backendUser->getModuleData('itemsPerPage', 'ses') // Retrieve from session if available + ?? 10 + ); + // Ensure at least 1 item per page + $itemsPerPage = max($itemsPerPage, 1); + + // Store itemsPerPage in the session + $backendUser->pushModuleData('itemsPerPage', $itemsPerPage); + // create docheader + buttons $pageInfo = BackendUtility::readPageAccess($pageUid, $GLOBALS['BE_USER']->getPagePermsClause(1)); if ($pageInfo === FALSE) { $pageInfo = ['uid' => $pageUid]; } - $this->docHeaderComponent = GeneralUtility::makeInstance(DocHeaderComponent::class); - $this->docHeaderComponent->setMetaInformation($pageInfo); - BackendService::makeButtons($this->docHeaderComponent, $this->request); - $this->moduleTemplate->assign('docHeader', $this->docHeaderComponent->docHeaderContent()); + $docHeaderComponent = $this->moduleTemplate->getDocHeaderComponent(); + $docHeaderComponent->setMetaInformation($pageInfo); + BackendService::makeButtons($docHeaderComponent, $this->request); + $this->moduleTemplate->assign('docHeader', $docHeaderComponent->docHeaderContent()); $this->moduleTemplate->assign('pageUid', $pageUid); $this->moduleTemplate->assign('pages', BackendService::getPagesWithJobRecords()); diff --git a/Classes/Pagination/Pagination.php b/Classes/Pagination/Pagination.php index 07e191d7e6019774ebf652e0f7653344c07614d4..6178390de58578dc0a4ac40b76552ec41c415611 100644 --- a/Classes/Pagination/Pagination.php +++ b/Classes/Pagination/Pagination.php @@ -85,8 +85,8 @@ class Pagination { $this->lastPage = (int) ceil($this->totalItems / $this->limit); // correct current page if out of bounds $this->currentPage = $this->currentPage < 1 ? 1 : min($this->currentPage, $this->lastPage); - $this->nextPage = $this->currentPage >= $this->lastPage ? $this->lastPage : $this->currentPage + 1; - $this->previousPage = $this->currentPage <= 1 ? 1 : $this->currentPage - 1; + $this->previousPage = ($this->currentPage > 1) ? $this->currentPage - 1 : NULL; + $this->nextPage = ($this->currentPage < $this->lastPage) ? $this->currentPage + 1 : NULL; $this->startItem = ($this->currentPage - 1) * $this->limit + 1; // correct startItem if out of bounds $this->startItem = max($this->startItem, 1); @@ -118,6 +118,11 @@ class Pagination { return $query->execute(TRUE); } + public function getItemsPerPage(): int { + return $this->limit; + } + + /** * @return int */ diff --git a/Resources/Private/Language/de.locallang.xlf b/Resources/Private/Language/de.locallang.xlf index 76684cd2fa4e1238e7dd87a039bfb91fb698236d..4c5c8efdcd0f91c4a927a8219b958d4a78be4d7f 100644 --- a/Resources/Private/Language/de.locallang.xlf +++ b/Resources/Private/Language/de.locallang.xlf @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2"> - <file source-language="en" target-language="de" datatype="plaintext" original="EXT:sg_jobs/Resources/Private/Language/locallang.xlf" date="2024-01-18T20:23:37Z"> + <file source-language="en" target-language="de" datatype="plaintext" + original="EXT:sg_jobs/Resources/Private/Language/locallang.xlf" date="2024-01-18T20:23:37Z"> <header> <type>module</type> <description>General language labels used in frontend and backend.</description> @@ -9,7 +10,8 @@ <authorEmail>fabian@sgalinski.de</authorEmail> </header> <body> - <trans-unit id="application_mail.marker.birthdate" resname="application_mail.marker.birthdate" approved="yes"> + <trans-unit id="application_mail.marker.birthdate" resname="application_mail.marker.birthdate" + approved="yes"> <source><![CDATA[Date of birth]]></source> <target><![CDATA[Geburtsdatum]]></target> </trans-unit> @@ -21,7 +23,8 @@ <source><![CDATA[Country]]></source> <target><![CDATA[Land]]></target> </trans-unit> - <trans-unit id="application_mail.marker.education" resname="application_mail.marker.education" approved="yes"> + <trans-unit id="application_mail.marker.education" resname="application_mail.marker.education" + approved="yes"> <source><![CDATA[Education]]></source> <target><![CDATA[Höchster Bildungsabschluss]]></target> </trans-unit> @@ -29,27 +32,33 @@ <source><![CDATA[Email]]></source> <target><![CDATA[E-Mail]]></target> </trans-unit> - <trans-unit id="application_mail.marker.firstname" resname="application_mail.marker.firstname" approved="yes"> + <trans-unit id="application_mail.marker.firstname" resname="application_mail.marker.firstname" + approved="yes"> <source><![CDATA[First name]]></source> <target><![CDATA[Vorname]]></target> </trans-unit> - <trans-unit id="application_mail.marker.freetextField1" resname="application_mail.marker.freetextField1" approved="yes"> + <trans-unit id="application_mail.marker.freetextField1" resname="application_mail.marker.freetextField1" + approved="yes"> <source><![CDATA[Free text field 1]]></source> <target><![CDATA[Freitextfeld 1]]></target> </trans-unit> - <trans-unit id="application_mail.marker.freetextField2" resname="application_mail.marker.freetextField2" approved="yes"> + <trans-unit id="application_mail.marker.freetextField2" resname="application_mail.marker.freetextField2" + approved="yes"> <source><![CDATA[Free text field 2]]></source> <target><![CDATA[Freitextfeld 2]]></target> </trans-unit> - <trans-unit id="application_mail.marker.freetextField3" resname="application_mail.marker.freetextField3" approved="yes"> + <trans-unit id="application_mail.marker.freetextField3" resname="application_mail.marker.freetextField3" + approved="yes"> <source><![CDATA[Free text field 3]]></source> <target><![CDATA[Freitextfeld 3]]></target> </trans-unit> - <trans-unit id="application_mail.marker.freetextField4" resname="application_mail.marker.freetextField4" approved="yes"> + <trans-unit id="application_mail.marker.freetextField4" resname="application_mail.marker.freetextField4" + approved="yes"> <source><![CDATA[Free text field 4]]></source> <target><![CDATA[Freitextfeld 4]]></target> </trans-unit> - <trans-unit id="application_mail.marker.freetextField5" resname="application_mail.marker.freetextField5" approved="yes"> + <trans-unit id="application_mail.marker.freetextField5" resname="application_mail.marker.freetextField5" + approved="yes"> <source><![CDATA[Free text field 5]]></source> <target><![CDATA[Freitextfeld 5]]></target> </trans-unit> @@ -77,7 +86,8 @@ <source><![CDATA[Mobile]]></source> <target><![CDATA[Mobil]]></target> </trans-unit> - <trans-unit id="application_mail.marker.nationality" resname="application_mail.marker.nationality" approved="yes"> + <trans-unit id="application_mail.marker.nationality" resname="application_mail.marker.nationality" + approved="yes"> <source><![CDATA[Nationality]]></source> <target><![CDATA[Nationalität]]></target> </trans-unit> @@ -85,7 +95,8 @@ <source><![CDATA[Phone]]></source> <target><![CDATA[Telefon]]></target> </trans-unit> - <trans-unit id="application_mail.marker.salutation" resname="application_mail.marker.salutation" approved="yes"> + <trans-unit id="application_mail.marker.salutation" resname="application_mail.marker.salutation" + approved="yes"> <source><![CDATA[Salutation]]></source> <target><![CDATA[Anrede]]></target> </trans-unit> @@ -121,7 +132,8 @@ <source><![CDATA[Locations]]></source> <target><![CDATA[Arbeitsorte]]></target> </trans-unit> - <trans-unit id="backend.filters.locations.description" resname="backend.filters.locations.description" approved="yes" xml:space="preserve"> + <trans-unit id="backend.filters.locations.description" resname="backend.filters.locations.description" + approved="yes" xml:space="preserve"> <source><![CDATA[(Use the ctrl or cmd keys to deselect an option or to select multiple options) ]]></source> <target><![CDATA[Benutze die STRG oder CMD-Tasten, um eine Option abzuwählen oder mehrere anzuwählen ]]></target> @@ -164,33 +176,40 @@ </trans-unit> <trans-unit id="configuration.applicantMail" resname="configuration.applicantMail" approved="yes"> <source><![CDATA[Send confirmation e-mail to applicants (sg_mail template "applicant_mail")]]></source> - <target><![CDATA[Bestätigungs-E-Mail an Bewerber versenden (sg_mail Template "applicant_mail")]]></target> + <target> + <![CDATA[Bestätigungs-E-Mail an Bewerber versenden (sg_mail Template "applicant_mail")]]></target> </trans-unit> <trans-unit id="configuration.jobFolderPath" resname="configuration.jobFolderPath" approved="yes"> <source><![CDATA[Job Folder Path (Relative to fileadmin, defaults to "JobApplication")]]></source> - <target><![CDATA[Job-Verzeichnis-Pfad (relativ zu fileadmin, Standardwert ist "JobApplication")]]></target> + <target> + <![CDATA[Job-Verzeichnis-Pfad (relativ zu fileadmin, Standardwert ist "JobApplication")]]></target> </trans-unit> <trans-unit id="error.NoSuchArgumentException" resname="error.NoSuchArgumentException" approved="yes"> <source><![CDATA[Some file could not be uploaded. Is it too large?]]></source> <target><![CDATA[Einige Dateien konnten nicht hochgeladen werden. Ist eine Datei zu groß?]]></target> </trans-unit> - <trans-unit id="error.TypeConverterException.missing." resname="error.TypeConverterException.missing." approved="yes"> + <trans-unit id="error.TypeConverterException.missing." resname="error.TypeConverterException.missing." + approved="yes"> <source><![CDATA[Missing some file]]></source> <target><![CDATA[Eine Datei fehlt]]></target> </trans-unit> - <trans-unit id="error.TypeConverterException.missing.certificate" resname="error.TypeConverterException.missing.certificate" approved="yes"> + <trans-unit id="error.TypeConverterException.missing.certificate" + resname="error.TypeConverterException.missing.certificate" approved="yes"> <source><![CDATA[Missing certificate file]]></source> <target><![CDATA[Datei für Zeugnis fehlt]]></target> </trans-unit> - <trans-unit id="error.TypeConverterException.missing.coverLetter" resname="error.TypeConverterException.missing.coverLetter" approved="yes"> + <trans-unit id="error.TypeConverterException.missing.coverLetter" + resname="error.TypeConverterException.missing.coverLetter" approved="yes"> <source><![CDATA[Missing coverletter file]]></source> <target><![CDATA[Datei für Motivationsschreiben fehlt]]></target> </trans-unit> - <trans-unit id="error.TypeConverterException.missing.cv" resname="error.TypeConverterException.missing.cv" approved="yes"> + <trans-unit id="error.TypeConverterException.missing.cv" resname="error.TypeConverterException.missing.cv" + approved="yes"> <source><![CDATA[Missing cv file]]></source> <target><![CDATA[Datei für Lebenslauf fehlt]]></target> </trans-unit> - <trans-unit id="error.TypeConverterException.type" resname="error.TypeConverterException.type" approved="yes"> + <trans-unit id="error.TypeConverterException.type" resname="error.TypeConverterException.type" + approved="yes"> <source><![CDATA[File extension is not allowed!]]></source> <target><![CDATA[Dateityp nicht erlaubt!]]></target> </trans-unit> @@ -202,7 +221,8 @@ <source><![CDATA[All vacancies]]></source> <target><![CDATA[Alle offenen Stellen]]></target> </trans-unit> - <trans-unit id="frontend.apply.allowed_file_extensions" resname="frontend.apply.allowed_file_extensions" approved="yes"> + <trans-unit id="frontend.apply.allowed_file_extensions" resname="frontend.apply.allowed_file_extensions" + approved="yes"> <source><![CDATA[File types: ]]></source> <target><![CDATA[Datentypen: ]]></target> </trans-unit> @@ -319,10 +339,13 @@ <target><![CDATA[Telefon *]]></target> </trans-unit> <trans-unit id="frontend.apply.privacyPolicy" resname="frontend.apply.privacyPolicy" approved="yes"> - <source><![CDATA[I have read the %s and confirm the usage of my personal data according to it. *]]></source> - <target><![CDATA[Ich habe die %s zur Kenntnis genommen und bin mit der dort beschriebenen Verwendung meiner Daten einverstanden. *]]></target> + <source> + <![CDATA[I have read the %s and confirm the usage of my personal data according to it. *]]></source> + <target> + <![CDATA[Ich habe die %s zur Kenntnis genommen und bin mit der dort beschriebenen Verwendung meiner Daten einverstanden. *]]></target> </trans-unit> - <trans-unit id="frontend.apply.privacyPolicy.link" resname="frontend.apply.privacyPolicy.link" approved="yes"> + <trans-unit id="frontend.apply.privacyPolicy.link" resname="frontend.apply.privacyPolicy.link" + approved="yes"> <source><![CDATA[privacy policy]]></source> <target><![CDATA[Datenschutzinformationen]]></target> </trans-unit> @@ -350,7 +373,8 @@ <source><![CDATA[Job title *]]></source> <target><![CDATA[Job-Titel *]]></target> </trans-unit> - <trans-unit id="frontend.apply.unsolicitedApplication" resname="frontend.apply.unsolicitedApplication" approved="yes"> + <trans-unit id="frontend.apply.unsolicitedApplication" resname="frontend.apply.unsolicitedApplication" + approved="yes"> <source><![CDATA[Unsolicited Application]]></source> <target><![CDATA[Initiativbewerbung]]></target> </trans-unit> @@ -362,7 +386,8 @@ <source><![CDATA[Apply online now]]></source> <target><![CDATA[Jetzt online bewerben]]></target> </trans-unit> - <trans-unit id="frontend.applyNow.emptyApplication" resname="frontend.applyNow.emptyApplication" approved="yes"> + <trans-unit id="frontend.applyNow.emptyApplication" resname="frontend.applyNow.emptyApplication" + approved="yes"> <source><![CDATA[Apply to an unlisted position]]></source> <target><![CDATA[Initiativ-Bewerbung]]></target> </trans-unit> @@ -414,7 +439,8 @@ <source><![CDATA[Country]]></source> <target><![CDATA[Land]]></target> </trans-unit> - <trans-unit id="frontend.filter.countriesfunctions" resname="frontend.filter.countriesfunctions" approved="yes"> + <trans-unit id="frontend.filter.countriesfunctions" resname="frontend.filter.countriesfunctions" + approved="yes"> <source><![CDATA[Function]]></source> <target><![CDATA[Funktion]]></target> </trans-unit> @@ -542,6 +568,22 @@ <source><![CDATA[Previous]]></source> <target><![CDATA[Zurück]]></target> </trans-unit> + <trans-unit id="backend.job.page" resname="backend.job.page"> + <source><![CDATA[Page]]></source> + <target><![CDATA[Seite]]></target> + </trans-unit> + <trans-unit id="backend.job.records" resname="backend.job.records"> + <source><![CDATA[Records]]></source> + <target><![CDATA[Einträge]]></target> + </trans-unit> + <trans-unit id="backend.job.itemsPerPage" resname="backend.job.itemsPerPage"> + <source><![CDATA[Max.]]></source> + <target><![CDATA[Max.]]></target> + </trans-unit> + <trans-unit id="backend.job.of" resname="backend.job.of"> + <source><![CDATA[of]]></source> + <target><![CDATA[von]]></target> + </trans-unit> </body> </file> </xliff> diff --git a/Resources/Private/Language/locallang.xlf b/Resources/Private/Language/locallang.xlf index 6fa35a5feb4eed825cb080b3e9806f488712814e..7bad5c24ff0f527672b48b2bb0af5c2d493c210c 100644 --- a/Resources/Private/Language/locallang.xlf +++ b/Resources/Private/Language/locallang.xlf @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2"> - <file source-language="en" datatype="plaintext" original="EXT:sg_jobs/Resources/Private/Language/locallang.xlf" date="2024-01-18T20:23:37Z"> + <file source-language="en" datatype="plaintext" original="EXT:sg_jobs/Resources/Private/Language/locallang.xlf" + date="2024-01-18T20:23:37Z"> <header> <type>module</type> <description>General language labels used in frontend and backend.</description> @@ -94,7 +95,8 @@ <source><![CDATA[Locations]]></source> </trans-unit> <trans-unit id="backend.filters.locations.description" resname="backend.filters.locations.description"> - <source><![CDATA[(Use the ctrl or cmd keys to deselect an option or to select multiple options) ]]></source> + <source> + <![CDATA[(Use the ctrl or cmd keys to deselect an option or to select multiple options) ]]></source> </trans-unit> <trans-unit id="backend.filters.search" resname="backend.filters.search"> <source><![CDATA[Search]]></source> @@ -109,7 +111,8 @@ <source><![CDATA[Item]]></source> </trans-unit> <trans-unit id="backend.manualSortingBug" resname="backend.manualSortingBug"> - <source><![CDATA[Manual sorting is currently not working. You can do that in the List module.]]></source> + <source> + <![CDATA[Manual sorting is currently not working. You can do that in the List module.]]></source> </trans-unit> <trans-unit id="backend.message.error" resname="backend.message.error"> <source><![CDATA[Something went wrong. Please reload.]]></source> @@ -138,10 +141,12 @@ <trans-unit id="error.TypeConverterException.missing." resname="error.TypeConverterException.missing."> <source><![CDATA[Missing some file]]></source> </trans-unit> - <trans-unit id="error.TypeConverterException.missing.certificate" resname="error.TypeConverterException.missing.certificate"> + <trans-unit id="error.TypeConverterException.missing.certificate" + resname="error.TypeConverterException.missing.certificate"> <source><![CDATA[Missing certificate file]]></source> </trans-unit> - <trans-unit id="error.TypeConverterException.missing.coverLetter" resname="error.TypeConverterException.missing.coverLetter"> + <trans-unit id="error.TypeConverterException.missing.coverLetter" + resname="error.TypeConverterException.missing.coverLetter"> <source><![CDATA[Missing coverletter file]]></source> </trans-unit> <trans-unit id="error.TypeConverterException.missing.cv" resname="error.TypeConverterException.missing.cv"> @@ -256,7 +261,8 @@ <source><![CDATA[Phone *]]></source> </trans-unit> <trans-unit id="frontend.apply.privacyPolicy" resname="frontend.apply.privacyPolicy"> - <source><![CDATA[I have read the %s and confirm the usage of my personal data according to it. *]]></source> + <source> + <![CDATA[I have read the %s and confirm the usage of my personal data according to it. *]]></source> </trans-unit> <trans-unit id="frontend.apply.privacyPolicy.link" resname="frontend.apply.privacyPolicy.link"> <source><![CDATA[privacy policy]]></source> @@ -432,6 +438,18 @@ <trans-unit id="pagebrowser.previous" resname="pagebrowser.previous"> <source><![CDATA[Previous]]></source> </trans-unit> + <trans-unit id="backend.job.records" resname="backend.job.records"> + <source><![CDATA[Records]]></source> + </trans-unit> + <trans-unit id="backend.job.page" resname="backend.job.page"> + <source><![CDATA[Page]]></source> + </trans-unit> + <trans-unit id="backend.job.itemsPerPage" resname="backend.job.itemsPerPage"> + <source><![CDATA[Max.]]></source> + </trans-unit> + <trans-unit id="backend.job.of" resname="backend.job.of"> + <source><![CDATA[of]]></source> + </trans-unit> </body> </file> </xliff> diff --git a/Resources/Private/Layouts/Backend.html b/Resources/Private/Layouts/Backend.html index 42fffa41c15d1cc6ecbf1d5bcdbe4cb58f7a94b0..ce137adab56b356ea2642552c579239f826590b1 100644 --- a/Resources/Private/Layouts/Backend.html +++ b/Resources/Private/Layouts/Backend.html @@ -15,23 +15,13 @@ <div class="module-docheader-bar-column-left"> </div> <div class="module-docheader-bar-column-right"> - <span class="typo3-docheader-pagePath"> - <f:translate key="LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.path"/>: - <f:format.raw>{docHeader.metaInformation.path}</f:format.raw> - </span> - <f:format.raw>{docHeader.metaInformation.recordInformation}</f:format.raw> + <f:render partial="Path" arguments="{docHeader: docHeader}"/> </div> </div> <div class="module-docheader-bar module-docheader-bar-buttons t3js-module-docheader-bar t3js-module-docheader-bar-buttons"> - <div class="module-docheader-bar-column-left"> - <div class="btn-toolbar" role="toolbar" aria-label=""> - <f:render section="iconButtons"/> - </div> - </div> - <div class="module-docheader-bar-column-right"> - <f:render partial="Backend/ButtonBar" arguments="{buttons:docHeader.buttons.right}"/> - </div> + + <f:render partial="BaseDocHeader" arguments="{docHeader: docHeader}"/> </div> </div> <div class="module-body t3js-module-body"> diff --git a/Resources/Private/Partials/Backend/ButtonBar.html b/Resources/Private/Partials/Backend/ButtonBar.html index 128d6a5cc0f5dc19186c25b6f694e97d09cd6ffd..d54f5ed5c40b2880e2b2fdbd351dd40af857ea23 100644 --- a/Resources/Private/Partials/Backend/ButtonBar.html +++ b/Resources/Private/Partials/Backend/ButtonBar.html @@ -1,3 +1,4 @@ +<html data-namespace-typo3-fluid="true" lang=""> <div class="btn-toolbar" role="toolbar" aria-label=""> <f:for each="{buttons}" as="buttonGroup"> <f:if condition="{buttonGroup -> f:count()} > 1"> @@ -14,3 +15,5 @@ </f:if> </f:for> </div> +</html> + diff --git a/Resources/Private/Partials/Backend/Pagination.html b/Resources/Private/Partials/Backend/Pagination.html index ded7eaf14f4cf70125217c883355b53b0be00727..7e3b5927aad2d28916b863d4e6f91c094a06510d 100644 --- a/Resources/Private/Partials/Backend/Pagination.html +++ b/Resources/Private/Partials/Backend/Pagination.html @@ -1,96 +1,129 @@ {namespace core=TYPO3\CMS\Core\ViewHelpers} -{namespace sg=SGalinski\SgMail\ViewHelpers} +{namespace sg=SGalinski\SgJobs\ViewHelpers} -<nav class="pagination-wrap"> - <ul class="pagination pagination-block"> - <f:if condition="{pagination.previousPage} && {pagination.previousPage} >= {pagination.firstPage}"> - <f:then> - <li class="page-item"> - <a href="{f:uri.action(action: 'index', arguments: {currentPage: 1})}" - title="{f:translate(key:'widget.pagination.first')}" - class="page-link"> - <core:icon identifier="actions-view-paging-first" /> +<html data-namespace-typo3-fluid="true" lang=""> +<nav class="mb-2 mt-2"> + <ul class="pagination"> + <f:comment><!-- Records Display --></f:comment> + <li class="page-item ps-2 pe-2 pagination-label"> + <span> + <f:translate key="backend.job.records" extensionName="sg_jobs"/> {pagination.startItem} - {pagination.endItem} + </span> + </li> + + <f:comment><!-- First Button --></f:comment> + <li class="page-item ps-2 {f:if(condition: pagination.previousPage, then: '', else: 'disabled')}"> + <f:if condition="{pagination.previousPage}"> + <f:then> + <a href="{f:uri.action(action: action, arguments: {currentPage: 1, itemsPerPage: itemsPerPage})}" + > + <core:icon identifier="actions-view-paging-first"/> </a> - </li> - <li class="page-item"> - <a href="{f:uri.action(action: 'index', arguments: {currentPage: pagination.previousPage})}" - title="{f:translate(key:'widget.pagination.previous')}" - class="page-link"> - <core:icon identifier="actions-view-paging-previous" /> + </f:then> + <f:else> + <span> + <core:icon identifier="actions-view-paging-first"/> + </span> + </f:else> + </f:if> + </li> + + <f:comment><!-- Previous Button --></f:comment> + <li class="page-item ps-2 {f:if(condition: pagination.previousPage, then: '', else: 'disabled')}"> + <f:if condition="{pagination.previousPage}"> + <f:then> + <a href="{f:uri.action(action: action, arguments: {currentPage: pagination.previousPage, itemsPerPage: itemsPerPage})}" + > + <core:icon identifier="actions-view-paging-previous"/> </a> - </li> - </f:then> - <f:else> - <li class="page-item disabled"> - <span class="page-link"> - <core:icon identifier="actions-view-paging-first" /> - </span> - </li> - <li class="page-item disabled"> - <span class="page-link"> - <core:icon identifier="actions-view-paging-previous" /> - </span> - </li> - </f:else> - </f:if> - <li class="page-item"> - <span class="page-link"> - <f:translate key="widget.pagination.records" /> - {pagination.startItem} - {pagination.endItem} / {pagination.totalItems} - </span> + </f:then> + <f:else> + <span> + <core:icon identifier="actions-view-paging-previous"/> + </span> + </f:else> + </f:if> </li> - <li class="page-item"> - <span class="page-link"> - <f:translate key="widget.pagination.page" /> + + <f:comment><!-- Go to Page --></f:comment> + <li class="page-item ps-2"> + <form action="" method="POST"> + <f:translate key="backend.job.page" extensionName="sg_jobs"/> <f:form.textfield id="paginator" name="paginator-target-page" additionalAttributes="{ - min: '1', - data-uri: '{f:uri.action(action: actionName, arguments: {currentPage: 987654321}) -> f:format.raw()}' - }" - class="form-control input-sm paginator-input" - size="5" + min: '1', + data-uri: '{f:uri.action(action: action, arguments: {currentPage: 987654321, itemsPerPage: itemsPerPage}) -> f:format.raw()}' + }" + class=" input-sm paginator-input" + style="padding: 4px 8px; width: 80px; height: 28px;" value="{pagination.currentPage}" - type="number" /> - / {pagination.lastPage} - </span> + type="number"/> + <f:translate key="backend.job.of" extensionName="sg_jobs"/> + {pagination.lastPage} + <input type="hidden" name="itemsPerPage" value="{itemsPerPage}"/> + </form> </li> - <f:if condition="{pagination.nextPage} && {pagination.nextPage} <= {pagination.lastPage}"> - <f:then> - <li class="page-item"> - <a class="page-link" - href="{f:uri.action(action: 'index', arguments: {currentPage: pagination.nextPage})}" - title="{f:translate(key:'widget.pagination.next')}"> - <core:icon identifier="actions-view-paging-next" /> + + <f:comment><!-- Next Button --></f:comment> + <li class="page-item ps-2 {f:if(condition: pagination.nextPage, then: '', else: 'disabled')}"> + <f:if condition="{pagination.nextPage}"> + <f:then> + <a href="{f:uri.action(action: action, arguments: {currentPage: pagination.nextPage, itemsPerPage: itemsPerPage})}" + > + <core:icon identifier="actions-view-paging-next"/> </a> - </li> - <li class="page-item"> - <a class="page-link" - href="{f:uri.action(action: 'index', arguments: {currentPage: pagination.lastPage})}" - title="{f:translate(key:'widget.pagination.last')}"> - <core:icon identifier="actions-view-paging-last" /> + </f:then> + <f:else> + <span> + <core:icon identifier="actions-view-paging-next"/> + </span> + </f:else> + </f:if> + </li> + + <f:comment><!-- Last Button --></f:comment> + <li class="page-item ps-2 {f:if(condition: pagination.nextPage, then: '', else: 'disabled')}"> + <f:if condition="{pagination.nextPage}"> + <f:then> + <a href="{f:uri.action(action: action, arguments: {currentPage: pagination.lastPage, itemsPerPage: itemsPerPage})}" + > + <core:icon identifier="actions-view-paging-last"/> </a> - </li> - </f:then> - <f:else> - <li class="page-item disabled"> - <span class="page-link"> - <core:icon identifier="actions-view-paging-next" /> - </span> - </li> - <li class="page-item disabled"> - <span class="page-link"> - <core:icon identifier="actions-view-paging-last" /> - </span> - </li> - </f:else> - </f:if> - <li class="page-item"> - <a class="page-link" - href="{f:uri.action(action: 'index', arguments: {currentPage: pagination.currentPage})}" - title="{f:translate(key:'widget.pagination.refresh')}"> - <core:icon identifier="actions-refresh" /> + </f:then> + <f:else> + <span> + <core:icon identifier="actions-view-paging-last"/> + </span> + </f:else> + </f:if> + </li> + + <f:comment><!-- Refresh Button --></f:comment> + <li class="page-item ps-2"> + <a href="{f:uri.action(action: action, arguments: {currentPage: pagination.currentPage, itemsPerPage: itemsPerPage})}" + > + <core:icon identifier="actions-refresh"/> </a> </li> + + <f:comment><!-- Custom Items Per Page Input Field with Label --></f:comment> + <li class="page-item ps-2 ms-4 "> + <form action="" method="POST" class="d-flex align-items-center"> + <label for="itemsPerPageInput" class="me-2 mb-0"> + <f:translate key="backend.job.itemsPerPage" extensionName="sg_jobs"/> + </label> + <input type="number" + name="itemsPerPage" + id="itemsPerPageInput" + class=" input-sm " + style="padding: 4px 8px; width: 80px; height: 28px; margin: -7px 0px" + value="{pagination.itemsPerPage}" + min="1" + required/> + <input type="hidden" name="page" value="{pagination.currentPage}"/> + </form> + </li> </ul> </nav> +</html> diff --git a/Resources/Private/Partials/Backend/SelectRoot.html b/Resources/Private/Partials/Backend/SelectRoot.html index 1f91d9f6e714f56eb936300be03af30e8d38e19e..3418ad851195080dec58b7bdebf0077b49ebf9c8 100644 --- a/Resources/Private/Partials/Backend/SelectRoot.html +++ b/Resources/Private/Partials/Backend/SelectRoot.html @@ -1,10 +1,10 @@ {namespace sg=SGalinski\SgJobs\ViewHelpers} -<p> - <f:translate key="backend.selectRootPage" /> -</p> <f:if condition="{pages}"> <div class="panel panel-default recordlist"> + <div class="panel-heading"> + <f:translate key="backend.selectRootPage"/> + </div> <div class="table-fit"> <table data-table="pages" class="table table-striped table-hover"> <tbody> @@ -15,7 +15,7 @@ action="index" additionalParams="{id: page.uid}" additionalAttributes="{data-page: page.uid, data-path: page.path}"> - <core:iconForRecord table="pages" row="{page}" /> + <core:iconForRecord table="pages" row="{page}"/> {page._thePathFull} </f:link.action> </td> diff --git a/Resources/Private/Partials/BaseDocHeader.html b/Resources/Private/Partials/BaseDocHeader.html new file mode 100644 index 0000000000000000000000000000000000000000..c8278bd684ec00d4cdec52907c8e7d1eff72db91 --- /dev/null +++ b/Resources/Private/Partials/BaseDocHeader.html @@ -0,0 +1,14 @@ +<f:comment><!--Extbase Version --></f:comment> + +<div class="module-docheader-bar-column-left"> + <f:render partial="Backend/ButtonBar" arguments="{buttons:docHeader.buttons.left}"/> +</div> + +<div class="module-docheader-bar-column-right" style="display: flex; align-items: center;"> + <a href="https://www.sgalinski.de/" target="_blank" rel="noopener noreferrer" + title="Created by the TYPO3 agency sgalinski"> + <img src="{f:uri.resource(path: 'Icons/logo-icon.svg')}" alt="Sgalinski Logo" + style=" height: 25.75px; margin-right: 0.5rem;"/> + </a> + <f:render partial="Backend/ButtonBar" arguments="{buttons:docHeader.buttons.right}"/> +</div> diff --git a/Resources/Private/Partials/Bootstrap5/Job.html b/Resources/Private/Partials/Bootstrap5/Job.html index e523b9386bce0e858bf8fd8ab9b53a791a8a9d13..c3c60601defce22441c733b1f83f42f8b81f2204 100644 --- a/Resources/Private/Partials/Bootstrap5/Job.html +++ b/Resources/Private/Partials/Bootstrap5/Job.html @@ -10,9 +10,7 @@ <f:if condition="{job.qualification}"> <ul> <li> - <f:format.raw> - <f:translate key="frontend.jobStart" /> - </f:format.raw> + <f:format.raw><f:translate key="frontend.jobStart" /></f:format.raw> <f:if condition="{job.alternativeStartDate}"> <f:then> {job.alternativeStartDate} @@ -38,9 +36,7 @@ <f:link.action id="offer-{job.uid}" pageUid="{settings.applyPage}" controller="Joblist" action="applyForm" pluginName="JobApplication" arguments="{jobId: job.uid}" class="btn btn-link text-decoration-none stretched-link w-100 text-uppercase fw-bold"> - <f:format.raw> - <f:translate key="frontend.jobDetailsCta" /> - </f:format.raw> + <f:format.raw><f:translate key="frontend.jobDetailsCta" /></f:format.raw> </f:link.action> </div> </div> diff --git a/Resources/Private/Partials/Job.html b/Resources/Private/Partials/Job.html index 1dd69361850a4db3695bcb424f8605a22282f336..75ae04fe16a1837953412d6737857d9b5beb5e63 100644 --- a/Resources/Private/Partials/Job.html +++ b/Resources/Private/Partials/Job.html @@ -11,7 +11,6 @@ <f:if condition="{job.description}"> <f:format.html parseFuncTSPath="lib.parseFunc_RTE">{job.description}</f:format.html> </f:if> - </div> <f:if condition="{job.qualification}"> <div class="sgjobs-highlight-area"> diff --git a/Resources/Private/Partials/Path.html b/Resources/Private/Partials/Path.html new file mode 100644 index 0000000000000000000000000000000000000000..8af02be17ccf98958b0953f113693af4112460d4 --- /dev/null +++ b/Resources/Private/Partials/Path.html @@ -0,0 +1,5 @@ +<span class="typo3-docheader-pagePath"> + <f:translate key="LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.path"/>: <f:format.raw>{docHeader.metaInformation.path}</f:format.raw> +</span> + +<f:format.raw>{docHeader.metaInformation.recordInformation}</f:format.raw> diff --git a/Resources/Private/Templates/Backend/Index.html b/Resources/Private/Templates/Backend/Index.html index 03f386983edcf64a514ab518deeb73ac58caf541..843d5d1196b0498f2e7f2083410266a044f4bdc7 100644 --- a/Resources/Private/Templates/Backend/Index.html +++ b/Resources/Private/Templates/Backend/Index.html @@ -68,9 +68,7 @@ </f:then> <f:else> <f:render partial="Backend/SelectRoot" arguments="{pages: pages}"/> - <f:if condition="{isAdmin}"> - <f:render partial="Backend/CreateJob" arguments="{pageUid: pageUid}"/> - </f:if> + </f:else> </f:if> </f:section> diff --git a/Resources/Private/Templates/Bootstrap5/Joblist/ApplyForm.html b/Resources/Private/Templates/Bootstrap5/Joblist/ApplyForm.html index 257d485728a7a06a23bd19061c7aea31c5a438e1..5720d917d1dfbf3d1644613e5e06c7dcb8688c1c 100644 --- a/Resources/Private/Templates/Bootstrap5/Joblist/ApplyForm.html +++ b/Resources/Private/Templates/Bootstrap5/Joblist/ApplyForm.html @@ -43,9 +43,7 @@ createColorAttribute="TRUE" class="d-inline-block translate-y-px-1" role="presentation" /> <span class="text-muted"> - <f:format.raw> - <f:translate key="frontend.jobStart" /> - </f:format.raw> + <f:format.raw><f:translate key="frontend.jobStart" /></f:format.raw> </span> <f:if condition="{job.alternativeStartDate}"> <f:then> @@ -82,9 +80,7 @@ <f:if condition="!{job.telecommutePossible}"> <f:then> <span class="text-muted"> - <f:format.raw> - <f:translate key="frontend.locationLabel" /> - </f:format.raw> + <f:format.raw><f:translate key="frontend.locationLabel" /></f:format.raw> </span> <span> <f:for as="company" each="{job.company}" iteration="companyIterator"> @@ -128,17 +124,13 @@ <div class="card border-top text-bg-light"> <div class="card-header"> <h3 class="card-title h4"> - <f:format.raw> - <f:translate key="frontend.jobApplyNow" /> - </f:format.raw> + <f:format.raw><f:translate key="frontend.jobApplyNow" /></f:format.raw> </h3> </div> <div class="card-body"> <f:if condition="!{job.hideApplyByPostal}"> <p> - <f:format.raw> - <f:translate key="frontend.job.via.post" /> - </f:format.raw><br> + <f:format.raw><f:translate key="frontend.job.via.post" /></f:format.raw><br> {job.firstCompany.name}<br> <f:if condition="{job.contact}"> <f:then> @@ -188,9 +180,7 @@ </f:if> <f:if condition="!{job.hideApplyByEmail}"> <p> - <f:format.raw> - <f:translate key="frontend.job.via.email" /> - </f:format.raw> + <f:format.raw><f:translate key="frontend.job.via.email" /></f:format.raw> <br> <f:comment> <!-- Spam Protection (lib.parseFunc encodes adresses) --> @@ -205,9 +195,7 @@ </div> <div class="card-footer card-footer--static-bg text-center text-bg-light"> <p> - <f:format.raw> - <f:translate key="frontend.job.suggestForm" /> - </f:format.raw> + <f:format.raw><f:translate key="frontend.job.suggestForm" /></f:format.raw> </p> <a href="{f:if(condition: '{job.applyExternalLink}', then: '{job.applyExternalLink}', else: '#apply')}" class="btn btn-primary w-100"> <f:translate key="frontend.applyNow" /> @@ -395,9 +383,7 @@ <div class="form-check mb-4"> <f:form.checkbox class="form-check-input" id="privacy-policy" property="privacyPolicy" value="1" additionalAttributes="{required: 'required'}" /> <label class="form-check-label" for="privacy-policy"> - <f:format.raw> - <f:translate key="frontend.apply.privacyPolicy" arguments="{0: '{f:render(section:\'privacyPolicyCheckboxLink\')}'}" /> - </f:format.raw> + <f:format.raw><f:translate key="frontend.apply.privacyPolicy" arguments="{0: '{f:render(section:\'privacyPolicyCheckboxLink\')}'}" /></f:format.raw> </label> <f:render section="formValidation" arguments="{form-field: 'privacyPolicy'}" /> </div> diff --git a/Resources/Public/Icons/logo-icon.svg b/Resources/Public/Icons/logo-icon.svg new file mode 100644 index 0000000000000000000000000000000000000000..70a8f42b47fe9f6ade7cdabace488f6cea1e7cde --- /dev/null +++ b/Resources/Public/Icons/logo-icon.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 14.07 29.36 33.86"><path fill="#7C2623" d="M14.679 14.071V19l.053-.054 10.339 6v5.197l-10.393-6.268-4.339 2.571 4.339 2.518 10.393 5.946v2.144L14.732 43.16h-.053v4.769l14.678-8.464V22.536"/><path fill="#BC3A2F" d="M14.679 33.143 4.286 27.304v-2.357L14.679 19v-4.929L0 22.536v16.929l14.679 8.464V43.16L4.286 37.268V32.34l10.393 5.839h.053l4.393-2.571"/></svg> \ No newline at end of file diff --git a/Resources/Public/Icons/logo-inverted.svg b/Resources/Public/Icons/logo-inverted.svg new file mode 100644 index 0000000000000000000000000000000000000000..24e0b13322cf8eed9d1f844628ae11fe778d3ce6 --- /dev/null +++ b/Resources/Public/Icons/logo-inverted.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" width="150" height="33.857" viewBox="0 14.071 150 33.857"><path fill="#7C2623" d="M14.679 14.071V19l.053-.054 10.339 6v5.197l-10.393-6.268-4.339 2.571 4.339 2.518 10.393 5.946v2.144L14.732 43.16h-.053v4.769l14.678-8.464V22.536"/><path fill="#BC3A2F" d="M14.679 33.143 4.286 27.304v-2.357L14.679 19v-4.929L0 22.536v16.929l14.679 8.464V43.16L4.286 37.268V32.34l10.393 5.839h.053l4.393-2.571"/><path fill="#565D5D" d="M47.679 26.232a.55.55 0 0 1-.268.321c-.107.054-.214.106-.321.106-.107 0-.268-.053-.429-.16s-.375-.215-.589-.321c-.214-.107-.482-.269-.803-.321a3.229 3.229 0 0 0-1.072-.161c-.375 0-.696.054-.964.161-.268.107-.536.214-.696.375-.214.16-.321.375-.429.589a1.712 1.712 0 0 0-.161.75c0 .321.107.644.268.857.214.214.429.429.75.589a6.33 6.33 0 0 0 1.071.429c.375.107.804.269 1.232.429.428.16.803.321 1.232.482.375.214.75.428 1.071.696.322.268.589.643.75 1.071.214.429.268.91.268 1.554 0 .643-.107 1.286-.321 1.821a4.018 4.018 0 0 1-.964 1.5c-.429.429-.964.75-1.554 1.018-.643.268-1.339.375-2.143.375a5.4 5.4 0 0 1-1.339-.16 11.764 11.764 0 0 1-1.286-.375 5.551 5.551 0 0 1-1.125-.59 3.51 3.51 0 0 1-.964-.803l.803-1.286c.054-.107.161-.161.268-.214.107-.055.214-.107.321-.107.161 0 .321.053.536.214s.429.269.697.429c.268.16.589.321.911.482.375.16.803.214 1.286.214.75 0 1.339-.161 1.768-.536.429-.375.643-.91.643-1.553 0-.375-.107-.697-.268-.911-.214-.214-.428-.429-.75-.589a6.33 6.33 0 0 0-1.071-.429c-.375-.107-.804-.214-1.232-.375-.429-.107-.804-.269-1.232-.482-.375-.161-.75-.429-1.071-.75s-.589-.696-.75-1.125c-.214-.429-.268-1.018-.268-1.661 0-.535.107-1.018.322-1.553.214-.482.536-.965.911-1.34a4.69 4.69 0 0 1 1.5-.91 5.73 5.73 0 0 1 2.036-.375c.857 0 1.661.107 2.357.375.697.268 1.339.643 1.822 1.125l-.753 1.125zm11.035 9.858c.589 0 1.125-.055 1.607-.161.429-.107.857-.269 1.286-.429v-2.625h-1.821a.615.615 0 0 1-.429-.16.488.488 0 0 1-.161-.375v-1.5h4.822v5.839c-.375.268-.75.481-1.125.696s-.804.375-1.286.482c-.428.107-.911.214-1.446.268s-1.071.107-1.661.107c-1.071 0-2.036-.161-2.893-.536-.911-.375-1.661-.856-2.303-1.554a6.338 6.338 0 0 1-1.5-2.357c-.375-.91-.536-1.875-.536-2.945 0-1.072.161-2.09.536-3a7.681 7.681 0 0 1 1.5-2.357 6.338 6.338 0 0 1 2.357-1.5c.911-.375 1.982-.536 3.107-.536 1.178 0 2.196.161 3.053.536.857.375 1.607.803 2.197 1.339l-.804 1.232c-.161.268-.375.375-.589.375a.865.865 0 0 1-.482-.161c-.214-.107-.429-.268-.643-.375s-.482-.214-.75-.321c-.268-.106-.589-.161-.911-.214a7.333 7.333 0 0 0-1.179-.107c-.696 0-1.339.107-1.929.375-.589.215-1.071.59-1.5 1.018-.428.429-.696.965-.964 1.607a6.582 6.582 0 0 0-.322 2.09c0 .856.107 1.553.375 2.25.214.643.536 1.178.964 1.66.429.429.911.804 1.5 1.018a5.651 5.651 0 0 0 1.93.321m21.911 1.981h-2.09c-.214 0-.428-.054-.589-.161a.825.825 0 0 1-.321-.428l-1.071-2.947h-6l-1.072 2.947c-.053.16-.161.268-.321.428-.161.107-.375.215-.589.215h-2.089l5.679-14.465h2.732l5.731 14.411zm-9.375-5.464h4.607l-1.768-4.822c-.054-.214-.161-.481-.268-.75a4.182 4.182 0 0 1-.268-.964c-.107.321-.161.644-.268.964-.107.269-.161.536-.268.75l-1.767 4.822zm14.946 3.268h5.786v2.196h-8.465V23.607h2.679m9.429 0h2.679v14.464h-2.679V23.607zm9.054.053c.054 0 .161.055.214.055.054.053.107.053.161.106l.214.214 7.607 9.697c-.054-.215-.054-.482-.054-.697v-9.428h2.357v14.464h-1.394c-.214 0-.375-.054-.535-.106-.16-.055-.268-.161-.429-.375l-7.554-9.644c0 .214.054.429.054.644v9.481h-2.356V23.607h1.393c.108 0 .214 0 .322.053m22.553 2.572a.55.55 0 0 1-.268.321c-.107.054-.215.106-.322.106s-.268-.053-.428-.16a5.625 5.625 0 0 0-.59-.321c-.215-.107-.482-.269-.804-.321a3.223 3.223 0 0 0-1.071-.161c-.375 0-.696.054-.965.161-.268.107-.535.214-.695.375-.215.16-.322.375-.43.589-.106.214-.16.482-.16.75 0 .321.107.644.268.857.215.214.429.429.75.589.322.161.697.322 1.072.429.375.107.803.269 1.231.429s.804.321 1.232.482c.375.214.75.428 1.071.696.321.268.59.643.75 1.071.215.429.268.91.268 1.554 0 .643-.107 1.286-.321 1.821a4.018 4.018 0 0 1-.964 1.5c-.429.429-.965.75-1.554 1.018-.644.268-1.339.375-2.144.375-.481 0-.91-.053-1.339-.16s-.856-.215-1.286-.375a5.551 5.551 0 0 1-1.125-.59 3.525 3.525 0 0 1-.964-.803l.804-1.286c.054-.107.16-.161.268-.214.107-.055.215-.107.322-.107.16 0 .32.053.535.214s.429.269.696.429c.269.16.589.321.911.482.375.16.803.214 1.285.214.75 0 1.34-.161 1.768-.536.43-.375.644-.91.644-1.553 0-.375-.107-.697-.269-.911-.214-.214-.428-.429-.75-.589-.32-.161-.643-.322-1.07-.429-.375-.107-.805-.214-1.232-.375-.429-.107-.804-.269-1.232-.482-.375-.161-.75-.429-1.071-.75s-.589-.696-.75-1.125c-.214-.429-.269-1.018-.269-1.661 0-.535.107-1.018.322-1.553a4.56 4.56 0 0 1 .91-1.34 4.69 4.69 0 0 1 1.5-.91 5.735 5.735 0 0 1 2.036-.375c.856 0 1.661.107 2.356.375.697.268 1.34.643 1.822 1.125l-.748 1.125zm7.178 3.428h.644c.268 0 .481-.053.643-.106s.321-.161.429-.321l3.965-5.036c.16-.214.32-.375.535-.429.16-.107.429-.107.696-.107h2.304l-4.875 6c-.16.161-.321.322-.429.482-.161.107-.268.215-.429.322.215.106.429.214.59.32.16.161.375.322.535.536l5.036 6.75h-2.357c-.321 0-.536-.054-.696-.161a1.242 1.242 0 0 1-.375-.375l-4.071-5.356c-.107-.161-.269-.321-.429-.375s-.429-.107-.696-.107h-.857v6.375h-2.679V23.607h2.679v6.053h-.163zm12.911-6.053H150v14.464h-2.679V23.607z"/></svg> \ No newline at end of file diff --git a/Resources/Public/StyleSheets/backend.css b/Resources/Public/StyleSheets/backend.css index cb7b1604a64a12180f8fcd06183518dd7769b172..e5504009d2c3d9452484b7447a80ff3b9d979905 100644 --- a/Resources/Public/StyleSheets/backend.css +++ b/Resources/Public/StyleSheets/backend.css @@ -6,9 +6,10 @@ margin-top: 10px; } -.btn-sm { - margin-left: 5px; -} +/*removed because it obstructed the dochead if needed can be put back but then dochead has margin in buttonbar*/ +/*.btn-sm {*/ +/* margin-left: 5px;*/ +/*}*/ .editor-description { padding: 10px;