Файл: contao-3.5.8/system/modules/core/library/Contao/DiffRenderer.php
Строк: 102
<?php
/**
* Contao Open Source CMS
*
* Copyright (c) 2005-2016 Leo Feyer
*
* @license LGPL-3.0+
*/
namespace Contao;
/**
* Renders an inline diff view using definition list markup
*
* @author Leo Feyer <https://github.com/leofeyer>
*/
class DiffRenderer extends Diff_Renderer_Html_Array
{
/**
* Render the diff and return the generated markup
*
* @return string The generated markup
*/
public function render()
{
$changes = parent::render();
if (empty($changes))
{
return '';
}
$html = "n" . '<div class="change">';
// Add the field name
if (isset($this->options['field']))
{
$html .= "n<h2>" . $this->options['field'] . '</h2>';
}
$html .= "n<dl>";
foreach ($changes as $i=>$blocks)
{
if ($i > 0)
{
$html .= '<dt class="skipped">…</dt>';
}
foreach ($blocks as $change)
{
// Show equal changes on both sides of the diff
if ($change['tag'] == 'equal')
{
foreach ($change['base']['lines'] as $line)
{
$html .= "n " . '<dt class="' . $change['tag'] . ' left">' . ($line ?: ' ') . '</dt>';
}
}
// Show added lines only on the right side
elseif ($change['tag'] == 'insert')
{
foreach ($change['changed']['lines'] as $line)
{
$html .= "n " . '<dt class="' . $change['tag'] . ' right"><ins>' . ($line ?: ' ') . '</ins></dt>';
}
}
// Show deleted lines only on the left side
elseif ($change['tag'] == 'delete')
{
foreach ($change['base']['lines'] as $line)
{
$html .= "n " . '<dt class="' . $change['tag'] . ' left"><del>' . ($line ?: ' ') . '</del></dt>';
}
}
// Show modified lines on both sides
elseif ($change['tag'] == 'replace')
{
foreach ($change['base']['lines'] as $line)
{
$html .= "n " . '<dt class="' . $change['tag'] . ' left"><span>' . ($line ?: ' ') . '</span></dt>';
}
foreach ($change['changed']['lines'] as $line)
{
$html .= "n " . '<dd class="' . $change['tag'] . ' right"><span>' . ($line ?: ' ') . '</span></dd>';
}
}
}
}
$html .= "n</dl>n</div>n";
return $html;
}
}