/**
  * Implements the abstract transformation function of the BaseDocumentController class.
  *
  * @author Christian Achatz
  * @version
  * Version 0.1, 02.20.2008<br />
  * Version 0.2, 05.01.2008 (language is now published to the java script code)<br />
  * Version 0.3, 18.09.2008 (Introduced datadir attribute to be able to operate the module in more than one application)<br />
  */
 public function transformContent()
 {
     // get current data dir or trigger error
     $dataDir = $this->getDocument()->getAttribute('datadir');
     if ($dataDir === null) {
         throw new InvalidArgumentException('[NewsPagerController::transformContent()] Tag ' . 'attribute "datadir" was not present in the &lt;core:importdesign /&gt; tag ' . 'definition! Please specify a news content directory!');
     }
     // load default news page
     /* @var $provider NewsPagerProvider */
     $provider = $this->getServiceObject(NewsPagerProvider::class);
     $newsItem = $provider->getNewsByPage($dataDir, 1);
     // fill place holders
     $this->setPlaceHolder('NewsLanguage', $this->getLanguage());
     $this->setPlaceHolder('NewsCount', $newsItem->getNewsCount());
     $this->setPlaceHolder('Headline', $newsItem->getHeadline());
     $this->setPlaceHolder('SubHeadline', $newsItem->getSubHeadline());
     $this->setPlaceHolder('Content', $newsItem->getContent());
     // set news service base url
     $url = LinkGenerator::generateActionUrl(Url::fromCurrent(), 'APF\\modules\\newspager\\biz', 'Pager');
     $this->setPlaceHolder('ActionUrl', $url);
     $this->setPlaceHolder('DataDir', base64_encode($dataDir));
     if ($this->getLanguage() == 'de') {
         $this->setPlaceHolder('ErrorMsg', 'Es ist ein Fehler beim Aufrufen der News aufgetreten! Bitte versuchen Sie es später wieder.');
     } else {
         $this->setPlaceHolder('ErrorMsg', 'Requesting the next news page failed! Please try again later.');
     }
 }
Example #2
0
 /**
  * Returns a link including the desired params and some standard parts.
  *
  * @param string[] $linkParams the desired link params.
  * @param string $baseURL the desired base url.
  *
  * @return string The generated link.
  *
  * @author Christian Achatz
  * @version
  * Version 0.1, 26.12.2008<br />
  */
 protected function generateLink($linkParams, $baseURL = null)
 {
     if ($baseURL === null) {
         $baseURL = $this->getRequest()->getRequestUri();
     }
     return LinkGenerator::generateUrl(Url::fromString($baseURL)->mergeQuery($linkParams));
 }
Example #3
0
 /**
  * Sends the contact form and displays the thanks page.
  *
  * @param ContactFormData $formData The form's content.
  *
  * @author Christian Schäfer
  * @version
  * Version 0.1, 03.06.2006<br />
  * Version 0.2, 04.06.2006<br />
  * Version 0.3, 21.06.2006 (Now an additional mail is sent to the sender)<br />
  * Version 0.4, 09.03.2007<br />
  * Version 0.5, 31.03.2007<br />
  * Version 0.6, 04.01.2008 (Corrected url generating for non-rewrite urls)<br />
  */
 public function sendContactForm(ContactFormData $formData)
 {
     // set up the mail sender
     /* @var $mail mailSender */
     $mail = $this->getServiceObject(mailSender::class);
     $mail->init('ContactForm');
     /* @var $recipient ContactFormRecipient */
     $recipient = $this->getMapper()->loadRecipientById($formData->getRecipientId());
     $mail->setRecipient($recipient->getEmailAddress(), $recipient->getName());
     $mail->setContent($this->getNotificationText(['sender-name' => $formData->getSenderName(), 'sender-email' => $formData->getSenderEmail(), 'sender-subject' => $formData->getSubject(), 'sender-message' => $formData->getMessage(), 'recipient-name' => $recipient->getName(), 'recipient-email' => $recipient->getEmailAddress()]));
     $mail->setSubject($formData->getSubject());
     // send mail to notify the recipient
     $mail->sendMail();
     $mail->clearRecipients();
     $mail->clearCCRecipients();
     $mail->clearContent();
     $mail->setRecipient($formData->getSenderEmail(), $formData->getSenderName());
     $mail->setContent($this->getConfirmationText(['sender-name' => $formData->getSenderName(), 'sender-email' => $formData->getSenderEmail(), 'sender-subject' => $formData->getSubject(), 'sender-message' => $formData->getMessage(), 'recipient-name' => $recipient->getName(), 'recipient-email' => $recipient->getEmailAddress()]));
     $mail->setSubject($formData->getSubject());
     // send mail to notify the sender
     $mail->sendMail();
     // redirect to the thanks page to avoid F5 bugs!
     $link = LinkGenerator::generateUrl(Url::fromCurrent()->mergeQuery(['contactview' => 'thanks']));
     $this->getResponse()->forward($link);
 }
 public function transformContent()
 {
     $form = $this->getForm('create_entry');
     if ($form->isSent() && $form->isValid()) {
         // Fill domain objects by extracting the values
         // from the form elements directly.
         $name = $form->getFormElementByName('name');
         $email = $form->getFormElementByName('email');
         $website = $form->getFormElementByName('website');
         $user = new User();
         $user->setName($name->getAttribute('value'));
         $user->setEmail($email->getAttribute('value'));
         $user->setWebsite($website->getAttribute('value'));
         $title = $form->getFormElementByName('title');
         $text = $form->getFormElementByName('text');
         $entry = new Entry();
         $entry->setTitle($title->getAttribute('value'));
         $entry->setText($text->getContent());
         $entry->setEditor($user);
         // Save the entry using the business component.
         $this->getGuestbookService()->saveEntry($entry);
     }
     // set language dependent button label by using the
     // language and context information of the current
     // DOM node.
     $config = $this->getConfiguration('APF\\modules\\guestbook2009\\pres', 'language.ini');
     $buttonLabel = $config->getSection($this->language)->getValue('form.label.button');
     $button = $form->getFormElementByName('send');
     $button->setAttribute('value', $buttonLabel);
     // Transform on definition place to render
     // the content within the surrounding div.
     $form->transformOnPlace();
     // add dynamic link
     $this->setPlaceHolder('overviewlink', LinkGenerator::generateUrl(Url::fromCurrent()->mergeQuery(['gbview' => 'list'])));
 }
 /**
  * Generates the comment form.
  *
  * @author Christian Achatz
  * @version
  * Version 0.1, 28.12.2008<br />
  * Version 0.2, 09.10.2008 (Changed captcha image url generation)<br />
  * Version 0.3, 13.06.2009 (Removed the captcha handling, introduced the captcha module)<br />
  */
 private function buildForm()
 {
     $form = $this->getForm('AddComment');
     $form->setAttribute('action', $this->getRequest()->getRequestUri() . '#comments');
     $config = $this->getConfiguration('APF\\modules\\comments', 'language.ini');
     $button = $form->getFormElementByName('Save');
     $button->setAttribute('value', $config->getSection($this->getLanguage())->getValue('form.button'));
     $form->transformOnPlace();
     $link = LinkGenerator::generateUrl(Url::fromCurrent()->mergeQuery(['coview' => 'listing']));
     $this->setPlaceHolder('back', $link);
 }
 public function transformContent()
 {
     // invoke the service to check, if the current user may request this page
     $this->getGuestbookService()->checkAccessAllowed();
     // generate the admin menu links to be able to include the module in either page.
     $editLink = LinkGenerator::generateUrl(Url::fromCurrent()->mergeQuery(['gbview' => 'admin', 'adminview' => 'edit']));
     $this->setPlaceHolder('editLink', $editLink);
     $deleteLink = LinkGenerator::generateUrl(Url::fromCurrent()->mergeQuery(['gbview' => 'admin', 'adminview' => 'delete']));
     $this->setPlaceHolder('deleteLink', $deleteLink);
     $logoutLink = LinkGenerator::generateUrl(Url::fromCurrent()->mergeQuery(['gbview' => 'admin', 'adminview' => 'logout']));
     $this->setPlaceHolder('logoutLink', $logoutLink);
 }
Example #7
0
 public function transformContent()
 {
     /* @var $sessionStore UmgtUserSessionStore */
     $sessionStore = $this->getServiceObject(UmgtUserSessionStore::class, [], APFService::SERVICE_TYPE_SESSION_SINGLETON);
     $appIdent = $this->getContext();
     $user = $sessionStore->getUser($appIdent);
     if ($user === null) {
         $form = $this->getForm('login');
         // generate url ourselves to not include the logout action instruction
         $form->setAction(LinkGenerator::generateUrl(Url::fromCurrent()));
         if ($form->isSent() && $form->isValid()) {
             $username = $form->getFormElementByName('username')->getAttribute('value');
             $password = $form->getFormElementByName('password')->getAttribute('value');
             try {
                 $user = $this->loadUser($username, $password);
                 if ($user === null) {
                     $form->getFormElementByName('username')->markAsInvalid();
                     $form->getFormElementByName('username')->appendCssClass(AbstractFormValidator::$DEFAULT_MARKER_CLASS);
                     $form->getFormElementByName('password')->markAsInvalid();
                     $form->getFormElementByName('password')->appendCssClass(AbstractFormValidator::$DEFAULT_MARKER_CLASS);
                     $form->setPlaceHolder('login-error', $this->getTemplate('login-error')->transformTemplate());
                     $form->transformOnPlace();
                 } else {
                     // store user
                     $sessionStore->setUser($appIdent, $user);
                     // create auto-login cookie
                     $rememberMe = $form->getFormElementByName('remember-me');
                     if ($rememberMe->isChecked()) {
                         $this->createAutoLogin($user);
                     }
                     // redirect to target page
                     $urlProvider = $this->getDIServiceObject('APF\\modules\\usermanagement\\biz', 'LoginRedirectUrlProvider');
                     /* @var $urlProvider UmgtRedirectUrlProvider */
                     $this->getResponse()->forward(LinkGenerator::generateUrl(Url::fromString($urlProvider->getRedirectUrl())));
                 }
             } catch (Exception $e) {
                 $this->getTemplate('system-error')->transformOnPlace();
                 $l = Singleton::getInstance(Logger::class);
                 /* @var $l Logger */
                 $l->logEntry('login', 'Login is not possible due to ' . $e, LogEntry::SEVERITY_ERROR);
             }
         } elseif ($form->isSent() && !$form->isValid()) {
             $form->setPlaceHolder('login-error', $this->getTemplate('login-error')->transformTemplate());
             $form->transformOnPlace();
         } else {
             $form->transformOnPlace();
         }
     } else {
         $this->getTemplate('login-ok')->transformOnPlace();
     }
 }
 /**
  * Displays the select field using the choose.html template imported into
  * the desired views.
  *
  * @param string $adminView The name of the admin view to display (edit|delete)
  *
  * @author Christian Achatz
  * @version
  * Version 0.1, 18.05.2009<br />
  */
 protected function displayEntrySelection($adminView)
 {
     // fill the select list
     $form = $this->getForm('selectentry');
     /* @var $select SelectBoxTag */
     $select = $form->getFormElementByName('entryid');
     $entriesList = $this->getGuestbookService()->loadEntryListForSelection();
     foreach ($entriesList as $entry) {
         /* @var $entry Entry */
         $select->addOption($entry->getTitle() . ' (#' . $entry->getId() . ')', $entry->getId());
     }
     // define form action url concerning the view it is rendered in
     $action = LinkGenerator::generateUrl(Url::fromCurrent()->mergeQuery(['gbview' => 'admin', 'adminview' => $adminView]));
     $form->setAttribute('action', $action);
     $form->transformOnPlace();
 }
Example #9
0
 public function run()
 {
     $logout = $this->getInput()->getParameter('logout', 'false');
     if ($logout === 'true') {
         $sessionStore = $this->getServiceObject(UmgtUserSessionStore::class, [], APFService::SERVICE_TYPE_SESSION_SINGLETON);
         /* @var $sessionStore UmgtUserSessionStore */
         $sessionStore->logout($this->getContext());
         // delete cookie to avoid re-log-in effects after clicking on log-out
         $cookie = new Cookie(UmgtAutoLoginAction::AUTO_LOGIN_COOKIE_NAME);
         $response = $this->getResponse();
         $response->setCookie($cookie->delete());
         // redirect to target page
         $urlProvider = $this->getDIServiceObject('APF\\modules\\usermanagement\\biz', 'LogoutRedirectUrlProvider');
         /* @var $urlProvider UmgtRedirectUrlProvider */
         $response->forward(LinkGenerator::generateUrl(Url::fromString($urlProvider->getRedirectUrl())));
     }
 }
Example #10
0
 public function transform()
 {
     $href = $this->getAttribute(self::HREF_ATTRIBUTE_NAME);
     if ($href === null) {
         $url = Url::fromCurrent(true);
     } else {
         $url = Url::fromString($href);
         $this->deleteAttribute(self::HREF_ATTRIBUTE_NAME);
     }
     $queryOption = $this->getAttribute(self::QUERY_OPTION_ATTRIBUTE_NAME, self::QUERY_OPTION_OVERWRITE);
     $this->deleteAttribute(self::QUERY_OPTION_ATTRIBUTE_NAME);
     $parameters = $this->getUrlParameters();
     if ($queryOption === self::QUERY_OPTION_MERGE) {
         $url->mergeQuery($parameters);
     } else {
         $url->setQuery($parameters);
     }
     return LinkGenerator::generateUrl($url);
 }
Example #11
0
 public function transformContent()
 {
     $appKey = $this->getAppKey();
     $newsManager = $this->getNewsManager();
     $Count = $newsManager->getNewsCount($appKey);
     $NewsList = $newsManager->getNews(0, $Count, 'DESC', $appKey);
     if (count($NewsList) === 0) {
         $this->getTemplate('noentry')->transformOnPlace();
         return;
     }
     $dataArray = [];
     // retrieve the charset from the registry to guarantee interoperability!
     $charset = Registry::retrieve('APF\\core', 'Charset');
     foreach ($NewsList as &$News) {
         $dataArray[] = ['Title' => htmlentities($News->getTitle(), ENT_QUOTES, $charset, false), 'Date' => $News->getProperty('CreationTimestamp'), 'LinkEdit' => LinkGenerator::generateUrl(Url::fromCurrent()->mergeQuery(['backendview' => 'edit', 'editnewsid' => (int) $News->getObjectId()])), 'LinkDelete' => LinkGenerator::generateUrl(Url::fromCurrent()->mergeQuery(['backendview' => 'delete', 'deletenewsid' => (int) $News->getObjectId()]))];
     }
     $I = $this->getIterator('newslist');
     $I->fillDataContainer($dataArray);
     $I->transformOnPlace();
 }
 public function transformContent()
 {
     $request = $this->getRequest();
     $deleteId = $request->getParameter('deletenewsid');
     $deleteYes = (bool) $request->getParameter('deleteyes', false);
     $newsManager = $this->getNewsManager();
     $news = $newsManager->getNewsById((int) $deleteId);
     if ($news === null) {
         $this->getTemplate('error')->transformOnPlace();
         return;
     }
     if ($deleteYes === true) {
         $newsManager->deleteNews($news);
         $tpl = $this->getTemplate('success');
         $tpl->transformOnPlace();
         return;
     }
     $tpl = $this->getTemplate('delete');
     $tpl->setPlaceHolder('LinkYes', LinkGenerator::generateUrl(Url::fromCurrent()->mergeQuery(['backendview' => 'delete', 'deletenewsid' => (int) $deleteId, 'deleteyes' => 'true'])));
     $tpl->setPlaceHolder('LinkNo', LinkGenerator::generateUrl(Url::fromCurrent()->mergeQuery(['backendview' => 'list', 'deletenewsid' => null])));
     $tpl->transformOnPlace();
 }
 public function transformContent()
 {
     $gS = $this->getGuestbookService();
     $entryList = $gS->loadPagedEntryList();
     $tmpl_entry = $this->getTemplate('entry');
     $buffer = (string) '';
     foreach ($entryList as $entry) {
         $editor = $entry->getEditor();
         $tmpl_entry->setPlaceHolder('name', $editor->getName());
         $tmpl_entry->setPlaceHolder('website', $editor->getWebsite());
         $tmpl_entry->setPlaceHolder('title', $entry->getTitle());
         $tmpl_entry->setPlaceHolder('text', $entry->getText());
         $creationTimestamp = $entry->getCreationTimestamp();
         $tmpl_entry->setPlaceHolder('time', date('H:i:s', strtotime($creationTimestamp)));
         $tmpl_entry->setPlaceHolder('date', date('d.m.Y', strtotime($creationTimestamp)));
         $buffer .= $tmpl_entry->transformTemplate();
     }
     $this->setPlaceHolder('content', $buffer);
     // add the pager
     $this->setPlaceHolder('pager', $gS->getPagerOutput());
     // add dynamic link
     $link = LinkGenerator::generateUrl(Url::fromCurrent()->mergeQuery(['gbview' => 'create']));
     $this->setPlaceHolder('createlink', $link);
 }
 /**
  * Builds the html of the pager.
  *
  * @param string $appKey
  *
  * @return string
  */
 protected function buildPager($appKey)
 {
     $newsManager = $this->getNewsManager();
     $PageCount = $newsManager->getPageCount($appKey);
     // we don't need a pager for 0 or 1 pages
     if ($PageCount <= 1) {
         return '';
     }
     $Cfg = $this->getConfiguration('APF\\extensions\\news', 'news.ini');
     $PageParameter = $Cfg->getSection('Paging')->getValue('PageParameter');
     $Page = $newsManager->getPageNumber($appKey);
     $Links = [];
     for ($x = 1; $x <= $PageCount; $x++) {
         $link = LinkGenerator::generateUrl(Url::fromCurrent()->mergeQuery([$PageParameter => $x]));
         if ($Page === $x) {
             $Links[] = '<a href="' . $link . '" class="active">' . $x . '</a>';
         } else {
             $Links[] = '<a href="' . $link . '">' . $x . '</a>';
         }
     }
     $tpl = $this->getTemplate('pager');
     $tpl->setPlaceHolder('pages', implode('&nbsp;&nbsp;|&nbsp;&nbsp;', $Links));
     return $tpl->transformTemplate();
 }
Example #15
0
 /**
  * Checks if link is active (=we are already on the target page) or not.
  *
  * @return boolean
  *
  * @author Werner Liemberger wpublicmail [at] gmail DOT com
  * @version
  * Version 0.1, 30.11.2012<br />
  */
 public function isActive()
 {
     $currentUrl = Url::fromCurrent(true);
     $targetUrl = Url::fromString($this->getAttribute(self::HREF_ATTRIBUTE_NAME));
     // ID#201: re-map and sort query parameters to allow parameter mixing
     $currentQuery = $currentUrl->getQuery();
     ksort($currentQuery);
     $currentUrl->setQuery($currentQuery);
     $targetQuery = $targetUrl->getQuery();
     ksort($targetQuery);
     $targetUrl->setQuery($targetQuery);
     if (substr_count(LinkGenerator::generateUrl($currentUrl), LinkGenerator::generateUrl($targetUrl)) > 0) {
         return true;
     }
     return false;
 }
Example #16
0
 /**
  * @param Url $url
  *
  * @return string
  */
 public function getLink(Url $url)
 {
     $url = $this->setPageRequestParamInURL($url);
     return LinkGenerator::generateUrl($url);
 }
Example #17
0
 public function transform()
 {
     $params = ['logout' => 'true'];
     return LinkGenerator::generateActionUrl(Url::fromCurrent(), 'APF\\modules\\usermanagement\\biz', 'logout', $params);
 }
Example #18
0
 /**
  * Generate and return HTML code of the captcha tag.
  *
  * @author Christian Achatz
  * @version
  * Version 0.1, 20.06.2008<br />
  * Version 0.2, 05.11.2008 (Changed action base url generation)<br />
  * Version 0.3, 07.11.2008 (Fixed the action URL generation. See class MediaInclusionTag for more details.)<br />
  * Version 0.4, 19.12.2009 (Added attribute to be able to disable the inline styles to have clean markup)<br />
  * Version 0.5, 04.01.2010 (Added clearonformerror attribute)<br />
  * Version 0.6, 04.01.2010 (Added the image_id attribute)<br />
  */
 public function transform()
 {
     // check, if the inline style should be disabled
     $disableInlineStyle = $this->getAttribute('disable_inline');
     $disableInlineStyle = $disableInlineStyle === 'true' ? true : false;
     // create desired media url
     $captchaUrl = LinkGenerator::generateActionUrl(Url::fromCurrent(), 'APF\\modules\\captcha\\biz', 'showCaptcha', ['name' => $this->textFieldName]);
     // initialize captcha source
     $captchaCode = '<div class="captcha"><img src="' . $captchaUrl . '" alt="CAPTCHA" ';
     if ($disableInlineStyle === false) {
         $captchaCode .= 'style="float:left;" ';
     }
     // add class and style attributes if desired
     $imgClass = $this->getAttribute('image_class');
     if ($imgClass !== null) {
         $captchaCode .= 'class="' . $imgClass . '" ';
     }
     $imgStyle = $this->getAttribute('image_style');
     if ($imgStyle !== null) {
         $captchaCode .= 'style="' . $imgStyle . '" ';
     }
     $imgId = $this->getAttribute('image_id');
     if ($imgId !== null) {
         $captchaCode .= 'id="' . $imgId . '" ';
     }
     // clear field on form errors
     $cleanOnError = $this->getAttribute('clearonformerror');
     if ($cleanOnError === 'true') {
         /* @var $parent HtmlFormTag */
         $parent = $this->getParentObject();
         if (!$parent->isValid()) {
             $this->textField->setAttribute('value', '');
         }
     }
     // concatenate the html code and return it
     if ($disableInlineStyle === true) {
         return $captchaCode . '/><div>' . $this->textField->transform() . '</div></div>';
     } else {
         return $captchaCode . '/><div style="line-height: 40px; float: left; margin-left: 20px;">' . $this->textField->transform() . '</div><div style="clear: left;"></div></div>';
     }
 }
 public function transformContent()
 {
     $generalExclusion = ['deleteyes' => null, 'deletenewsid' => null, 'editnewsid' => null];
     $this->setPlaceHolder('list', LinkGenerator::generateUrl(Url::fromCurrent()->mergeQuery($generalExclusion)->mergeQuery(['backendview' => 'list'])));
     $this->setPlaceHolder('new', LinkGenerator::generateUrl(Url::fromCurrent()->mergeQuery($generalExclusion)->mergeQuery(['backendview' => 'edit'])));
 }
Example #20
0
 /**
  * Generates the tag's output.
  *
  * @return string The desired media url
  *
  * @author Christian Achatz
  * @version
  * Version 0.1, 29.10.2008<br />
  * Version 0.2, 01.11.2008<br />
  * Version 0.3, 05.11.2008 (Changed action base url generation)<br />
  * Version 0.4, 07.11.2008 (Refactored the url generation due to some addressing bugs)<br />
  * Version 0.5, 20.06.2010 (Adapted parameter order to support old rewrite rules that do file extension matching for routing exceptions)<br />
  * Version 0.6, 09.04.2011 (Refactored to use release 1.14's new link generation concept)<br />
  */
 public function transform()
 {
     // generate action url using the APF's new link generation mechanism since 1.14
     return LinkGenerator::generateActionUrl(Url::fromCurrent(), 'APF\\tools\\media', 'streamMedia', ['namespace' => str_replace('\\', '_', $this->getRequiredAttribute('namespace')), 'extension' => $this->getAttribute('extension'), 'filebody' => $this->getAttribute('filebody')]);
 }
Example #21
0
 /**
  * Builds a Link for the JsCssInclusion FC-action
  *
  * @param string $url Optional url.
  * @param string $namespace Namespace of file
  * @param string $filename Name of file
  * @param bool $fcaction Optional. Create link for FC-Action.
  * @param string $type Filetype
  *
  * @return string elements' link.
  */
 protected function buildFrontcontrollerLink($url, $namespace, $filename, $fcaction, $type)
 {
     if ($fcaction === null) {
         $fcaction = true;
     }
     if ($fcaction) {
         $UrlObj = $url === null ? Url::fromCurrent(true) : Url::fromString($url);
         return LinkGenerator::generateActionUrl($UrlObj, 'APF\\extensions\\htmlheader', 'JsCss', ['path' => str_replace('\\', '_', $namespace), 'type' => $type, 'file' => $filename]);
     } else {
         $namespace = str_replace('\\', '/', $namespace);
         $url .= substr($url, -1, 1) !== '/' ? '/' : '';
         return $url . $namespace . '/' . $filename . '.' . $type;
     }
 }
Example #22
0
 /**
  * Receives information and configures node.
  *
  * @param string $target The refresh target.
  * @param string $time The time to wait until to reload the page.
  * @param array $additionalParameters Optional. Array of url parameters.
  */
 public function __construct($target, $time, array $additionalParameters = [])
 {
     $this->setAttribute('http-equiv', 'refresh');
     $link = LinkGenerator::generateUrl(Url::fromString($target)->mergeQuery($additionalParameters));
     $this->setAttribute('content', $time . ';URL=' . $link);
 }
 public function transformContent()
 {
     // fill document attributes to local variable
     $document = $this->getDocument();
     $pageUrlParameterName = $document->getAttribute('PageUrlParameterName');
     $countUrlParameterName = $document->getAttribute('CountUrlParameterName');
     $entriesPerPage = $document->getAttribute('EntriesPerPage');
     $isDynamicPageSizeActivated = $document->getAttribute('DynamicPageSizeActivated');
     $anchorName = $document->getAttribute('AnchorName');
     /* @var $pages PageItem[] */
     $pages = $document->getAttribute('Pages');
     // do not display the pager in case we have no pages
     if (count($pages) == 0) {
         return;
     }
     $content = $this->getTemplate('content');
     $pageCount = (int) 0;
     $currentPage = (int) 0;
     $buffer = '';
     for ($i = 0; $i < count($pages); $i++) {
         if ($pages[$i]->isSelected() == true) {
             $template = $this->getTemplate('Page_Selected_' . $this->getLanguage());
             $currentPage = $pages[$i]->getPage();
         } else {
             $template = $this->getTemplate('Page_' . $this->getLanguage());
         }
         if (isset($anchorName)) {
             $template->setPlaceHolder('Link', $pages[$i]->getLink() . '#' . $anchorName);
         } else {
             $template->setPlaceHolder('Link', $pages[$i]->getLink());
         }
         $template->setPlaceHolder('Page', $pages[$i]->getPage());
         $buffer .= $template->transformTemplate();
         $pageCount = $pages[$i]->getPageCount();
     }
     $content->setPlaceHolder('Content', $buffer);
     // display previous page link
     if ($currentPage > 1) {
         $page = $currentPage - 1;
         $link = LinkGenerator::generateUrl(Url::fromCurrent()->mergeQuery([$pageUrlParameterName => $page]));
         $prevActive = $this->getTemplate('PreviousPage_Active_' . $this->getLanguage());
         if (isset($anchorName)) {
             $prevActive->setPlaceHolder('Link', $link . '#' . $anchorName);
         } else {
             $prevActive->setPlaceHolder('Link', $link);
         }
         $content->setPlaceHolder('PreviousPage', $prevActive->transformTemplate());
     } else {
         $prevInactive = $this->getTemplate('PreviousPage_Inactive');
         $content->setPlaceHolder('PreviousPage', $prevInactive->transformTemplate());
     }
     // display first page link
     if ($currentPage > 2) {
         $link = LinkGenerator::generateUrl(Url::fromCurrent()->mergeQuery([$pageUrlParameterName => '1']));
         $firstActive = $this->getTemplate('FirstPage_Active_' . $this->getLanguage());
         if (isset($anchorName)) {
             $firstActive->setPlaceHolder('Link', $link . '#' . $anchorName);
         } else {
             $firstActive->setPlaceHolder('Link', $link);
         }
         $content->setPlaceHolder('FirstPage', $firstActive->transformTemplate());
     }
     // display next page link
     if ($currentPage < $pageCount) {
         $page = $currentPage + 1;
         $link = LinkGenerator::generateUrl(Url::fromCurrent()->mergeQuery([$pageUrlParameterName => $page]));
         $nextActive = $this->getTemplate('NextPage_Active_' . $this->getLanguage());
         if (isset($anchorName)) {
             $nextActive->setPlaceHolder('Link', $link . '#' . $anchorName);
         } else {
             $nextActive->setPlaceHolder('Link', $link);
         }
         $content->setPlaceHolder('NextPage', $nextActive->transformTemplate());
     } else {
         $nextInactive = $this->getTemplate('NextPage_Inactive');
         $content->setPlaceHolder('NextPage', $nextInactive->transformTemplate());
     }
     // display last page link
     if ($currentPage < $pageCount - 1) {
         $link = LinkGenerator::generateUrl(Url::fromCurrent()->mergeQuery([$pageUrlParameterName => $pageCount]));
         $lastActive = $this->getTemplate('LastPage_Active_' . $this->getLanguage());
         if (isset($anchorName)) {
             $lastActive->setPlaceHolder('Link', $link . '#' . $anchorName);
         } else {
             $lastActive->setPlaceHolder('Link', $link);
         }
         $content->setPlaceHolder('LastPage', $lastActive->transformTemplate());
     }
     // display the dynamic page size bar
     if ($isDynamicPageSizeActivated == true) {
         $entriesPerPageConfig = [5, 10, 15, 20];
         $entriesPerPage = $this->getRequest()->getParameter($countUrlParameterName, $entriesPerPage);
         $buffer = (string) '';
         foreach ($entriesPerPageConfig as $count) {
             if ($entriesPerPage == $count) {
                 $template = $this->getTemplate('EntriesPerPage_Active_' . $this->getLanguage());
             } else {
                 $template = $this->getTemplate('EntriesPerPage_Inactive_' . $this->getLanguage());
             }
             $link = LinkGenerator::generateUrl(Url::fromCurrent()->mergeQuery([$pageUrlParameterName => '1', $countUrlParameterName => $count]));
             if (isset($anchorName)) {
                 $template->setPlaceHolder('Link', $link . '#' . $anchorName);
             } else {
                 $template->setPlaceHolder('Link', $link);
             }
             $template->setPlaceHolder('Count', $count);
             $buffer .= $template->transformTemplate();
         }
         $dynPageSize = $this->getTemplate('DynamicPageSize');
         $dynPageSize->setPlaceHolder('EntriesPerPage', $buffer);
         // display language dependent labels
         $entriesPerPageTmpl = $this->getTemplate('EntriesPerPage_' . $this->getLanguage());
         $dynPageSize->setPlaceHolder('EntriesPerPage_Display', $entriesPerPageTmpl->transformTemplate());
         $content->setPlaceHolder('DynamicPageSize', $dynPageSize->transformTemplate());
     }
     $content->transformOnPlace();
 }
 /**
  *  Displays the paged comment list.
  *
  * @author Christian Achatz
  * @version
  * Version 0.1, 22.08.2007<br />
  * Version 0.2, 02.09.2007<br />
  * Version 0.3, 09.03.2008 (Changed deactivation due to indexation)<br />
  * Version 0.4, 12.06.2008 (Removed display limitation quick hack)<br />
  * Version 0.5, 30.01.2009 (Replaced the bbCodeParser with the AdvancedBBCodeParser)<br />
  */
 public function transformContent()
 {
     /* @var $m ArticleCommentManager */
     $m = $this->getServiceObject(ArticleCommentManager::class, [$this->getCategoryKey()]);
     // load the entries using the business component
     $entries = $m->loadEntries();
     $buffer = (string) '';
     $template = $this->getTemplate('ArticleComment');
     // init bb code parser (remove some provider, that we don't need configuration files)
     /* @var $bP AdvancedBBCodeParser */
     $bP = $this->getServiceObject(AdvancedBBCodeParser::class);
     $bP->removeProvider('standard.font.color');
     $bP->removeProvider('standard.font.size');
     $i = 1;
     foreach ($entries as $entry) {
         /* @var $entry ArticleComment */
         $template->setPlaceHolder('Number', $i++);
         $template->setPlaceHolder('Name', $entry->getName());
         $template->setPlaceHolder('Date', \DateTime::createFromFormat('Y-m-d', $entry->getDate())->format('d.m.Y'));
         $template->setPlaceHolder('Time', $entry->getTime());
         $template->setPlaceHolder('Comment', $bP->parseCode($entry->getComment()));
         $buffer .= $template->transformTemplate();
     }
     // display hint, if no entries are to display
     if (count($entries) < 1) {
         $noEntries = $this->getTemplate('NoEntries');
         $buffer = $noEntries->transformTemplate();
     }
     // display the list
     $this->setPlaceHolder('Content', $buffer);
     // display the pager
     $this->setPlaceHolder('Pager', $m->getPager('comments'));
     // get the pager url params from the business component
     // to be able to delete them from the url.
     $urlParams = $m->getURLParameter();
     // generate the add comment link
     $this->setPlaceHolder('Link', LinkGenerator::generateUrl(Url::fromCurrent()->mergeQuery([$urlParams['PageName'] => '', $urlParams['CountName'] => '', 'coview' => 'form'])));
 }
 /**
  * Saves a comment.
  *
  * @param ArticleComment $articleComment The entry to save.
  *
  * @author Christian Schäfer
  * @version
  * Version 0.1, 21.08.2007<br />
  * Version 0.2, 28.12.2007<br />
  * Version 0.3, 02.02.2008<br />
  */
 public function saveEntry(ArticleComment $articleComment)
 {
     /* @var $M ArticleCommentMapper */
     $M = $this->getServiceObject(ArticleCommentMapper::class);
     $articleComment->setCategoryKey($this->categoryKey);
     $M->saveArticleComment($articleComment);
     $link = LinkGenerator::generateUrl(Url::fromCurrent()->mergeQuery(['coview' => 'listing'])->setAnchor('comments'));
     $this->getResponse()->forward($link);
 }
 /**
  * Creates the upload link.
  *
  * @return string
  *
  * @author Werner Liemberger <*****@*****.**>
  * @version 1.0, 14.3.2011<br>
  */
 public function link()
 {
     $scheme = LinkGenerator::cloneLinkScheme();
     $scheme->setEncodeAmpersands(false);
     $link = LinkGenerator::generateActionUrl(Url::fromCurrent(), 'APF\\tools\\form\\multifileupload', 'multifileupload', ['formname' => $this->formName, 'name' => $this->name], $scheme);
     return $link;
 }
 public function transformContent()
 {
     // fill document attributes to local variable
     $document = $this->getDocument();
     /* @var $config array */
     $config = $document->getAttribute('Config');
     $dataCount = $document->getAttribute('DataCount');
     $anchorName = $document->getAttribute('AnchorName');
     $request = $this->getRequest();
     $urlParams = [$config['ParameterEntries'] => $config['Entries']];
     if ($config['EntriesChangeable'] === true) {
         $urlParams = [$config['ParameterEntries'] => $request->getParameter($config['Entries'])];
     }
     // Pager leer zurückgeben, falls keine Seiten vorhanden sind.
     if ($dataCount == 0) {
         return;
     }
     /* @var $t BenchmarkTimer */
     $t = Singleton::getInstance(BenchmarkTimer::class);
     $t->start('ArrayPager');
     $content = $this->getTemplate('pager');
     // Anzahl der Einträge
     $integerEntriesCount = $config['Entries'];
     // Anzahl der Seiten generieren
     $integerPageCount = ceil($dataCount / $integerEntriesCount);
     // Aktuelle Seite generieren
     $integerCurrentPage = intval($request->getParameter($config['ParameterPage'], 1));
     // Puffer initialisieren
     $stringBuffer = '';
     for ($integerPage = 1; $integerPage <= $integerPageCount; $integerPage++) {
         if ($integerPage == $integerCurrentPage) {
             // Referenz auf Template holen
             $objectTemplate = $this->getTemplate('Page_Selected');
         } else {
             // Referenz auf Template holen
             $objectTemplate = $this->getTemplate('Page');
         }
         $stringURL = LinkGenerator::generateUrl(Url::fromCurrent()->mergeQuery([$config['ParameterPage'] => $integerPage]));
         // Pager zusammenbauen
         if (!empty($anchorName)) {
             $objectTemplate->setPlaceHolder('URL', $stringURL . '#' . $anchorName);
         } else {
             $objectTemplate->setPlaceHolder('URL', $stringURL);
         }
         $objectTemplate->setPlaceHolder('Page', $integerPage);
         // Template transformieren
         $stringBuffer .= $objectTemplate->transformTemplate();
         unset($objectTemplate, $stringURL);
     }
     unset($integerPage);
     // Puffer in Inhalt einsetzen
     $content->setPlaceHolder('Pager', $stringBuffer);
     unset($stringBuffer);
     // VorherigeSeite
     if ($integerCurrentPage > 1) {
         // Template vorherige Seite ausgeben
         $objectTemplatePreviousPage = $this->getTemplate('PreviousPage_Active');
         $stringURL = LinkGenerator::generateUrl(Url::fromCurrent()->mergeQuery([$config['ParameterPage'] => $integerCurrentPage - 1]));
         if (!empty($anchorName)) {
             $objectTemplatePreviousPage->setPlaceHolder('URL', $stringURL . '#' . $anchorName);
         } else {
             $objectTemplatePreviousPage->setPlaceHolder('URL', $stringURL);
         }
         unset($stringURL);
     } else {
         // Template vorherige Seite (inaktiv) ausgeben
         $objectTemplatePreviousPage = $this->getTemplate('PreviousPage_Inactive');
     }
     $content->setPlaceHolder('PreviousPage', $objectTemplatePreviousPage->transformTemplate());
     unset($objectTemplatePreviousPage);
     // NaechsteSeite
     if ($integerCurrentPage < $integerPageCount) {
         $stringURL = LinkGenerator::generateUrl(Url::fromCurrent()->mergeQuery([$config['ParameterPage'] => $integerCurrentPage + 1]));
         $objectTemplateNextPage = $this->getTemplate('NextPage_Active');
         if (isset($anchorName) === true) {
             $objectTemplateNextPage->setPlaceHolder('URL', $stringURL . '#' . $anchorName);
         } else {
             $objectTemplateNextPage->setPlaceHolder('URL', $stringURL);
         }
         unset($stringURL);
     } else {
         $objectTemplateNextPage = $this->getTemplate('NextPage_Inactive');
     }
     $content->setPlaceHolder('NextPage', $objectTemplateNextPage->transformTemplate());
     unset($objectTemplateNextPage);
     if ($config['EntriesChangeable'] === true) {
         // Einträge / Seite
         $arrayEntries = explode('|', $config['EntriesPossible']);
         $stringBuffer = '';
         foreach ($arrayEntries as &$integerEntries) {
             if ($urlParams[$config['ParameterEntries']] == $integerEntries) {
                 $objectTemplateEntries = $this->getTemplate('Entries_Active');
             } else {
                 $objectTemplateEntries = $this->getTemplate('Entries_Inactive');
             }
             $stringURL = LinkGenerator::generateUrl(Url::fromCurrent()->mergeQuery([$config['ParameterPage'] => 1, $config['ParameterEntries'] => $integerEntries]));
             if (isset($anchorName) === true) {
                 $objectTemplateEntries->setPlaceHolder('URL', $stringURL . '#' . $anchorName);
             } else {
                 $objectTemplateEntries->setPlaceHolder('URL', $stringURL);
             }
             unset($stringURL);
             // Anzahl einsetzen
             $objectTemplateEntries->setPlaceHolder('Entries', $integerEntries);
             // Template in Puffer einsetzen
             $stringBuffer .= $objectTemplateEntries->transformTemplate();
             unset($objectTemplateEntries);
         }
         $objectTemplateEntries = $this->getTemplate('Entries');
         $objectTemplateEntries->setPlaceHolder('Entries', $stringBuffer);
         unset($stringBuffer);
         $content->setPlaceHolder('Entries', $objectTemplateEntries->transformTemplate());
         unset($objectTemplateEntries);
     }
     $content->transformOnPlace();
     $t->stop('ArrayPager');
 }
Example #28
0
 /**
  * Generates the link to a given page.
  *
  * @param int $page The number of the page.
  * @param string $baseURI The base URI. Default = REQUEST_URI
  *
  * @return string The link to the given page.
  *
  * @author Daniel Seemaier
  * @version
  * Version 0.1, 22.08.2010
  */
 public function getPageLink($page, $baseURI = null)
 {
     $linkParams = [$this->pageUrlParameterName => $page];
     if ($this->isDynamicPageSizeActivated()) {
         $linkParams[$this->countUrlParameterName] = $this->getCountPerPage();
     }
     if ($baseURI === null) {
         $baseURI = $this->getRequest()->getRequestUri();
     }
     return LinkGenerator::generateUrl(Url::fromString($baseURI)->mergeQuery($linkParams));
 }
Example #29
0
 protected function buildPackageLink($url, $name)
 {
     // Generate url if not given
     $url = $url === null ? Url::fromCurrent(true) : Url::fromString($url);
     return LinkGenerator::generateActionUrl($url, 'APF\\extensions\\htmlheader', 'JsCss', ['package' => $name . '.' . $this->getTypeIndicator()]);
 }
Example #30
0
 public function testEncodeRfc3986()
 {
     $scheme = new DefaultLinkScheme(true, true, true);
     $url = Url::fromString('/');
     $url->setQuery(['a' => ['x' => '1', 'y' => '2'], 'b' => [0 => '1', 1 => '2']]);
     $link = $link = LinkGenerator::generateUrl($url, $scheme);
     $this->assertEquals('/?a%5Bx%5D=1&amp;a%5By%5D=2&amp;b%5B0%5D=1&amp;b%5B1%5D=2', $link);
     $scheme->setEncodeAmpersands(false);
     $link = $link = LinkGenerator::generateUrl($url, $scheme);
     $this->assertEquals('/?a%5Bx%5D=1&a%5By%5D=2&b%5B0%5D=1&b%5B1%5D=2', $link);
     $url->setQueryParameter('param name', 'param value');
     $link = $link = LinkGenerator::generateUrl($url, $scheme);
     $this->assertEquals('/?a%5Bx%5D=1&a%5By%5D=2&b%5B0%5D=1&b%5B1%5D=2&param%20name=param%20value', $link);
     // encodeBlanks=false, encodeRfc3986=true (RFC encoding overwrites blanks encoding, thus "%20" still included)
     $scheme->setEncodeBlanks(false);
     $link = $link = LinkGenerator::generateUrl($url, $scheme);
     $this->assertEquals('/?a%5Bx%5D=1&a%5By%5D=2&b%5B0%5D=1&b%5B1%5D=2&param%20name=param%20value', $link);
     // encodeBlanks=false, encodeRfc3986=false
     $scheme->setEncodeRfc3986(false);
     $link = $link = LinkGenerator::generateUrl($url, $scheme);
     $this->assertEquals('/?a[x]=1&a[y]=2&b[0]=1&b[1]=2&param name=param value', $link);
 }