|
From: <gem...@li...> - 2012-04-05 16:40:41
|
Revision: 600
http://gemstracker.svn.sourceforge.net/gemstracker/?rev=600&view=rev
Author: matijsdejong
Date: 2012-04-05 16:40:35 +0000 (Thu, 05 Apr 2012)
Log Message:
-----------
Changed token forward mechanism: token is inserted in Lime Survey only when the user clicks on the link
Modified Paths:
--------------
trunk/library/classes/Gems/Default/AskAction.php
trunk/library/classes/Gems/Menu.php
trunk/library/classes/Gems/Tracker/Source/LimeSurvey1m9Database.php
Modified: trunk/library/classes/Gems/Default/AskAction.php
===================================================================
--- trunk/library/classes/Gems/Default/AskAction.php 2012-04-05 15:50:36 UTC (rev 599)
+++ trunk/library/classes/Gems/Default/AskAction.php 2012-04-05 16:40:35 UTC (rev 600)
@@ -50,7 +50,6 @@
public function forwardAction()
{
$tracker = $this->loader->getTracker();
- $language = $this->locale->getLanguage();
/**************
* Find token *
@@ -82,16 +81,14 @@
/***************
* Get the url *
***************/
- $user = $this->loader->getCurrentUser();
- $url = $token->getUrl($language, $user->getUserId() ? $user->getUserId() : $respId);
+ $request = $this->getRequest();
+ $params[$request->getActionKey()] = 'to-survey';
+ $params[MUtil_Model::REQUEST_ID] = $token->getTokenId();
+
+ $href = new MUtil_Html_HrefArrayAttribute($params);
+ $href->setRouteReset(false);
+ $url = $href->render($this->view);
- /************************
- * Optional user logout *
- ************************/
- if ($user->isLogoutOnSurvey()) {
- $user->unsetAsCurrentUser();
- }
-
/***********************************
* Should we stay or should we go? *
***********************************/
@@ -144,7 +141,7 @@
}
$buttonDiv = $this->html->buttonDiv(array('class' => 'centerAlign'));
- $buttonDiv->actionLink(MUtil_Html::raw($url), $token->getSurveyName());
+ $buttonDiv->actionLink($href, $token->getSurveyName());
if (isset($delay)) {
$buttonDiv->actionLink(array('delay_cancelled' => 1), $this->_('Cancel'));
@@ -299,15 +296,47 @@
public function takeAction()
{
// Dummy to enable separate rights
- $this->_forward('forward');
+ $this->_forward('to-survey');
}
+ /**
+ * Old action mentioned on some documentation
+ */
public function tokenAction()
{
- // Staat om sommige documentatie
$this->_forward('index');
}
+ /**
+ * Go directly to url
+ */
+ public function toSurveyAction()
+ {
+ $tracker = $this->loader->getTracker();
+ if ($tokenId = $this->_getParam(MUtil_Model::REQUEST_ID)) {
+ $tokenId = $tracker->filterToken($tokenId);
+
+ if ($token = $tracker->getToken($tokenId)) {
+ $language = $this->locale->getLanguage();
+ $user = $this->loader->getCurrentUser();
+ $url = $token->getUrl($language, $user->getUserId() ? $user->getUserId() : $token->getRespondentId());
+
+ /************************
+ * Optional user logout *
+ ************************/
+ if ($user->isLogoutOnSurvey()) {
+ $user->unsetAsCurrentUser();
+ }
+
+ // Redirect at once
+ header('Location: ' . $url);
+ exit();
+ }
+ }
+
+ // Default option
+ $this->_forward('index');
+ }
public function routeError($message)
{
// TODO make nice
Modified: trunk/library/classes/Gems/Menu.php
===================================================================
--- trunk/library/classes/Gems/Menu.php 2012-04-05 15:50:36 UTC (rev 599)
+++ trunk/library/classes/Gems/Menu.php 2012-04-05 16:40:35 UTC (rev 600)
@@ -114,6 +114,7 @@
// Routes for token controller
$page->addAction(null, null, 'forward');
$page->addAction(null, null, 'return');
+ $page->addAction(null, null, 'to-survey')->setModelParameters(1);
$page->addAction(null, null, 'token');
return $page;
Modified: trunk/library/classes/Gems/Tracker/Source/LimeSurvey1m9Database.php
===================================================================
--- trunk/library/classes/Gems/Tracker/Source/LimeSurvey1m9Database.php 2012-04-05 15:50:36 UTC (rev 599)
+++ trunk/library/classes/Gems/Tracker/Source/LimeSurvey1m9Database.php 2012-04-05 16:40:35 UTC (rev 600)
@@ -365,7 +365,7 @@
{
$messages = array();
$survey = $this->tracker->getSurvey($surveyId);
-
+
if (null === $sourceSurveyId) {
// Was removed
$values['gsu_active'] = 0;
@@ -995,7 +995,8 @@
}
// mgzdev.erasmusmc.nl/incant/index.php?sid=1&token=o7l9_b8z2
- return $this->getBaseUrl() . '/index.php?sid=' . $sourceSurveyId . '&token=' . $tokenId . $langUrl;
+ $baseurl = $this->getBaseUrl();
+ return $baseurl . ('/' == substr($baseurl, -1) ? '' : '/') . 'index.php?sid=' . $sourceSurveyId . '&token=' . $tokenId . $langUrl;
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|