[!!!][TASK] Remove module URI storage in global variable
[Packages/TYPO3.CMS.git] / typo3 / sysext / scheduler / Classes / ViewHelpers / ModuleLinkViewHelper.php
index d5458be..187937f 100644 (file)
@@ -14,31 +14,54 @@ namespace TYPO3\CMS\Scheduler\ViewHelpers;
  * The TYPO3 project - inspiring people to share!
  */
 
+use TYPO3\CMS\Backend\Utility\BackendUtility;
+use TYPO3\CMS\Fluid\Core\ViewHelper\AbstractTagBasedViewHelper;
+
 /**
- * Create internal link within backend app
- * @TODO: Later I want to be an AbstractTagBasedViewHelper
+ * Create internal link tag within backend app
  * @internal
  */
-class ModuleLinkViewHelper extends \TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper {
+class ModuleLinkViewHelper extends AbstractTagBasedViewHelper {
 
        /**
-        * Generate module link
+        * @var string
+        */
+       protected $tagName = 'a';
+
+       /**
+        * Arguments initialization
         *
-        * @param string $function
-        * @param string $cms
-        * @param array $arguments
-        * @return string
+        * @return void
         */
-       public function render($function = '', $cmd = '', array $arguments = array()) {
-               $link = $GLOBALS['MCONF']['_'] . '&SET[function]=' . $function . '&CMD=' . $cmd;
+       public function initializeArguments() {
+               $this->registerUniversalTagAttributes();
+               $this->registerTagAttribute('name', 'string', 'Specifies the name of an anchor');
+               $this->registerTagAttribute('rel', 'string', 'Specifies the relationship between the current document and the linked document');
+               $this->registerTagAttribute('rev', 'string', 'Specifies the relationship between the linked document and the current document');
+               $this->registerTagAttribute('target', 'string', 'Specifies where to open the linked document');
+       }
 
+       /**
+        * Render module link with command and arguments
+        *
+        * @param string $controller The "controller" of scheduler. Possible values are "scheduler", "check", "info"
+        * @param string $action The action to be called within each controller
+        * @param array $arguments Arguments for the action
+        * @return string
+        */
+       public function render($controller, $action, array $arguments = array()) {
+               $moduleArguments = array();
+               $moduleArguments['SET']['function'] = $controller;
+               $moduleArguments['CMD'] = $action;
                if (!empty($arguments)) {
-                       foreach ($arguments as $key => $value) {
-                               $link .= '&tx_scheduler[' . $key . ']=' . $value;
-                       }
+                       $moduleArguments['tx_scheduler'] = $arguments;
                }
 
-               return htmlspecialchars($link);
+               $uri = BackendUtility::getModuleUrl('system_txschedulerM1', $moduleArguments);
+               $this->tag->addAttribute('href', $uri);
+               $this->tag->setContent($this->renderChildren());
+               $this->tag->forceClosingTag(TRUE);
+               return $this->tag->render();
        }
 
 }
\ No newline at end of file