mirror of
https://github.com/Combodo/iTop.git
synced 2026-02-13 07:24:13 +01:00
N. 481:
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:
@@ -916,3 +916,7 @@ table .group-actions {
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
}
|
||||
/* Wiki text (hyperlinks) */
|
||||
.wiki_broken_link {
|
||||
text-decoration: line-through;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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';
|
||||
|
||||
@@ -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');
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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>';
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user