1) wiki text syntax was not displayed in the description or case logs of the tickets
2) when wiki text syntax was supported, the generated hyperlinks were pointing to the console (instead of the portal)

SVN:trunk[4519]
This commit is contained in:
Denis Flaven
2016-12-13 16:16:13 +00:00
parent 403ecf7fba
commit df85186407
8 changed files with 90 additions and 25 deletions

View File

@@ -916,3 +916,7 @@ table .group-actions {
width: 100%;
text-align: center;
}
/* Wiki text (hyperlinks) */
.wiki_broken_link {
text-decoration: line-through;
}

View File

@@ -960,4 +960,8 @@ table .group-actions .item-action-wrapper .panel-body > p:last-child{
display: inline-block;
width: 100%;
text-align: center;
}
/* Wiki text (hyperlinks) */
.wiki_broken_link {
text-decoration: line-through;
}

View File

@@ -37,4 +37,5 @@ $sDir = basename(__DIR__);
define('PORTAL_MODULE_ID', $sDir);
define('PORTAL_ID', $sDir);
ApplicationContext::SetUrlMakerClass('iTopPortalViewUrlMaker');
require_once APPROOT . '/env-' . utils::GetCurrentEnvironment() . '/itop-portal-base/portal/web/index.php';

View File

@@ -22,20 +22,26 @@
*
* @author Guillaume Lajarige <guillaume.lajarige@combodo.com>
*/
class iTopPortalUrlMaker implements iDBObjectURLMaker
class iTopPortalEditUrlMaker implements iDBObjectURLMaker
{
public static function MakeObjectURL($sClass, $iId)
/**
* Generate an (absolute) URL to an object, either in view or edit mode
* @param string $sClass The class of the object
* @param int $iId The identifier of the object
* @param string $sMode edit|view
* @return string
*/
public static function PrepareObjectURL($sClass, $iId, $sMode)
{
require_once APPROOT . '/lib/silex/vendor/autoload.php';
require_once APPROOT . '/env-' . utils::GetCurrentEnvironment() . '/itop-portal-base/portal/src/providers/urlgeneratorserviceprovider.class.inc.php';
require_once APPROOT . '/env-' . utils::GetCurrentEnvironment() . '/itop-portal-base/portal/src/helpers/urlgeneratorhelper.class.inc.php';
require_once APPROOT . '/env-' . utils::GetCurrentEnvironment() . '/itop-portal-base/portal/src/helpers/applicationhelper.class.inc.php';
// Using a static var allows to preserve the object through function calls
static $oApp = null;
static $sPortalId = null;
// Initializing Silex app
if ($oApp === null)
{
@@ -49,15 +55,51 @@ class iTopPortalUrlMaker implements iDBObjectURLMaker
// Retrieving portal id
$sPortalId = basename(__DIR__);
}
$sObjectQueryString = $oApp['url_generator']->generate('p_object_edit', array('sObjectClass' => $sClass, 'sObjectId' => $iId));
$sPortalAbsoluteUrl = utils::GetAbsoluteUrlModulePage($sPortalId, 'index.php');
$sUrl = str_replace('?', $sObjectQueryString . '?', $sPortalAbsoluteUrl);
// The object is reachable in the specified mode (edit/view)
switch($sMode)
{
case 'view':
$sObjectQueryString = $oApp['url_generator']->generate('p_object_view', array('sObjectClass' => $sClass, 'sObjectId' => $iId));
break;
case 'edit':
default:
$sObjectQueryString = $oApp['url_generator']->generate('p_object_edit', array('sObjectClass' => $sClass, 'sObjectId' => $iId));
}
$sPortalAbsoluteUrl = utils::GetAbsoluteUrlModulePage($sPortalId, 'index.php');
if (strpos($sPortalAbsoluteUrl, '?') !== false)
{
$sUrl = substr($sPortalAbsoluteUrl, 0, strpos($sPortalAbsoluteUrl, '?')).$sObjectQueryString;
}
else
{
$sUrl = $sPortalAbsoluteUrl.$sObjectQueryString;
}
return $sUrl;
}
public static function MakeObjectURL($sClass, $iId)
{
return static::PrepareObjectURL($sClass, $iId, 'edit');
}
}
DBObject::RegisterURLMakerClass('portal', 'iTopPortalUrlMaker');
/**
* Hyperlinks to the "view" of the object (vs edition)
* @author denis
*
*/
class iTopPortalViewUrlMaker extends iTopPortalEditUrlMaker
{
public static function MakeObjectURL($sClass, $iId)
{
return static::PrepareObjectURL($sClass, $iId, 'view');
}
}
// Default portal hyperlink (for notifications) is the edit hyperlink
DBObject::RegisterURLMakerClass('portal', 'iTopPortalEditUrlMaker');

View File

@@ -82,11 +82,6 @@ class DateTimeField extends StringField
return $this;
}
public function GetDisplayValue()
{
return $this->currentValue;
}
/**
* Set the DateOnly flag
* @return \Combodo\iTop\Form\Field\DateTimeField

View File

@@ -174,6 +174,12 @@ abstract class Field
return $this->currentValue;
}
public function GetDisplayValue()
{
return $this->currentValue;
}
/**
* Sets the field formpath
* Usually Called by the form when adding the field

View File

@@ -21,6 +21,8 @@ namespace Combodo\iTop\Form\Field;
use \Closure;
use \DBObject;
use \InlineImage;
use \AttributeText;
use \Combodo\iTop\Form\Field\TextField;
/**
@@ -106,5 +108,20 @@ class TextAreaField extends TextField
$this->sTransactionId = $sTransactionId;
return $this;
}
public function GetDisplayValue()
{
if ($this->GetFormat() == TextAreaField::ENUM_FORMAT_TEXT)
{
$sValue = $this->GetCurrentValue();
$sValue = AttributeText::RenderWikiHtml($sValue);
return "<div>".str_replace("\n", "<br>\n", $sValue).'</div>';
}
else
{
$sValue = AttributeText::RenderWikiHtml($this->GetCurrentValue(), true /* wiki only */);
return "<div class=\"HTML\">".InlineImage::FixUrls($sValue).'</div>';
}
}
}

View File

@@ -23,6 +23,7 @@ use \utils;
use \Dict;
use \UserRights;
use \AttributeDateTime;
use \AttributeText;
use \InlineImage;
use \Combodo\iTop\Renderer\FieldRenderer;
use \Combodo\iTop\Renderer\RenderingOutput;
@@ -223,14 +224,7 @@ EOF
if($sFieldClass === 'Combodo\\iTop\\Form\\Field\\TextAreaField')
{
$bEncodeHtmlEntities = false;
if($this->oField->GetFormat() === TextAreaField::ENUM_FORMAT_HTML)
{
$sDisplayValue = $this->oField->GetCurrentValue();
}
else
{
$sDisplayValue = utils::TextToHtml($this->oField->GetCurrentValue());
}
$sDisplayValue = $this->oField->GetDisplayValue();
}
else
{
@@ -452,6 +446,8 @@ EOF
$sEntryHeaderButtonClass = ($i < 2) ? '' : 'collapsed';
$sEntryContentClass = ($i < 2) ? 'in' : '';
$sEntryContentId = 'caselog_field_entry_content-' . $this->oField->GetGlobalId() . '-' . $i;
$sEntryHtml = AttributeText::RenderWikiHtml($aEntries[$i]['message_html'], true /* wiki only */);
$sEntryHtml = InlineImage::FixUrls($sEntryHtml);
// Note : We use CKEditor stylesheet to format this
$oOutput->AddHtml(
@@ -464,7 +460,7 @@ EOF
</div>
</div>
<div class="caselog_field_entry_content collapse {$sEntryContentClass}" id="{$sEntryContentId}">
{$aEntries[$i]['message_html']}
{$sEntryHtml}
</div>
</div>
EOF