|
|
@@ -0,0 +1,65 @@
|
|
|
+<?php
|
|
|
+
|
|
|
+namespace Opentalent\OtTemplating\ViewHelpers\Request;
|
|
|
+
|
|
|
+use Closure;
|
|
|
+use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
|
|
|
+use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
|
|
|
+
|
|
|
+/**
|
|
|
+ * Returns the current url with a 'page=' argument set up or updated
|
|
|
+ *
|
|
|
+ * {namespace ot=Opentalent\OtTemplating\ViewHelpers}
|
|
|
+ *
|
|
|
+ * {ot:request.withPage(page: 1)}
|
|
|
+ *
|
|
|
+ * @package Opentalent\OtTemplating\ViewHelpers
|
|
|
+ */
|
|
|
+class WithPageViewHelper extends AbstractViewHelper {
|
|
|
+
|
|
|
+ /**
|
|
|
+ * -- This method is expected by Fluid --
|
|
|
+ * Declares the viewhelper's parameters
|
|
|
+ */
|
|
|
+ public function initializeArguments()
|
|
|
+ {
|
|
|
+ $this->registerArgument('page',
|
|
|
+ 'int',
|
|
|
+ "The page's number",
|
|
|
+ true);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * -- This method is expected by Fluid --
|
|
|
+ * Renders the content as html
|
|
|
+ *
|
|
|
+ * @param array $arguments
|
|
|
+ * @param Closure $renderChildrenClosure
|
|
|
+ * @param RenderingContextInterface $renderingContext
|
|
|
+ * @return string
|
|
|
+ */
|
|
|
+ public static function renderStatic(
|
|
|
+ array $arguments,
|
|
|
+ Closure $renderChildrenClosure,
|
|
|
+ RenderingContextInterface $renderingContext
|
|
|
+ ) {
|
|
|
+ $page = $arguments['page'];
|
|
|
+
|
|
|
+ $request = $GLOBALS['TYPO3_REQUEST'];
|
|
|
+ $uri = $request->getUri();
|
|
|
+ $query = $uri->getQuery();
|
|
|
+
|
|
|
+ if (preg_match("/.*page=\d+.*/", $query)) {
|
|
|
+ $query = preg_replace(
|
|
|
+ "/page=\d+/",
|
|
|
+ "page=" . $page,
|
|
|
+ $query
|
|
|
+ );
|
|
|
+ } elseif ($query != '') {
|
|
|
+ $query .= "&page=" . $page;
|
|
|
+ } else {
|
|
|
+ $query .= "page=" . $page;
|
|
|
+ }
|
|
|
+ return (string)$uri->withQuery($query);
|
|
|
+ }
|
|
|
+}
|