Skip to content

Commit

Permalink
Use Bags, remove cruft <3
Browse files Browse the repository at this point in the history
  • Loading branch information
bobdenotter committed Mar 7, 2018
1 parent f403df9 commit 30e1e3e
Show file tree
Hide file tree
Showing 3 changed files with 66 additions and 97 deletions.
4 changes: 4 additions & 0 deletions app/view/twig/activity/changelog.twig
Expand Up @@ -46,6 +46,7 @@
<th>ID</th>
<th class="col-sm-2">Title</th>
<th class="col-sm-3">Changed Fields</th>
<th class="col-sm-3">Editor's Comment</th>
<th class="col-sm-1">User</th>
<th class="col-sm-1">Date</th>
</tr>
Expand All @@ -71,6 +72,9 @@
<td>
{{ entry.diff|keys|join(', ') }}
</td>
<td>
{{ entry.comment|default('') }}
</td>
<td>
<em>{{ macro.userlink(entry.ownerid) }}</em>
</td>
Expand Down
94 changes: 46 additions & 48 deletions app/view/twig/changelog/_blocks.twig
Expand Up @@ -9,7 +9,7 @@
<h3>
"<a href="{{ path('editcontent', {'contenttypeslug': context.entry.contenttype, 'id': context.entry.contentid}) }}">{{ context.entry.title }}</a>"
<em><span class="time">{{ changelog_mutation(context.entry.mutation_type) }} {{ buic_moment(context.entry.date) }}</span>
{{ __('general.phrase.by') }}</em> <strong>{{ userlink(entry.ownerid|default('')) }}</strong>
{{ __('general.phrase.by') }}</em> <strong>{{ userlink(context.entry.ownerid|default('')) }}</strong>
</h3>

<div class="changelog-details">
Expand Down Expand Up @@ -38,16 +38,16 @@
<tr>
<td><strong>{{ field.label }}</strong></td>

{% if field.type == 'html' or field.type == 'text' %}
{% if field.type in ['html', 'text', 'integer', 'float', 'slug', 'file' ] %}
<td class="change-log-item">
{{ field.before.render|raw }}
{{ field.before|raw }}
</td>
<td class="change-log-item">
{{ field.after.render|raw }}
{{ field.after|raw }}
</td>
{% elseif field.type == 'filelist' %}
<td class="change-log-item">
{% for file in field.before.render %}
{% for file in field.before %}
<strong>File:</strong> {{ file.filename }}<br>
<strong>Title:</strong> {{ file.title }}

Expand All @@ -57,7 +57,7 @@
{% endfor %}
</td>
<td class="change-log-item">
{% for file in field.after.render %}
{% for file in field.after %}
<strong>File:</strong> {{ file.filename }}<br>
<strong>Title:</strong> {{ file.title }}

Expand All @@ -68,41 +68,41 @@
</td>
{% elseif field.type == 'geolocation' %}
<td class="change-log-item">
<strong>Address:</strong> {{ field.before.render.address|default }}<br>
<strong>Latitude:</strong> {{ field.before.render.latitude|default }}<br>
<strong>Longitude:</strong> {{ field.before.render.longitude|default }}<br>
<strong>Matched address:</strong> {{ field.before.render.formatted_address|default }}
<strong>Address:</strong> {{ field.before.address|default }}<br>
<strong>Latitude:</strong> {{ field.before.latitude|default }}<br>
<strong>Longitude:</strong> {{ field.before.longitude|default }}<br>
<strong>Matched address:</strong> {{ field.before.formatted_address|default }}
</td>
<td class="change-log-item">
<strong>Address:</strong> {{ field.after.render.address|default }}<br>
<strong>Latitude:</strong> {{ field.after.render.latitude|default }}<br>
<strong>Longitude:</strong> {{ field.after.render.longitude|default }}<br>
<strong>Matched address:</strong> {{ field.after.render.formatted_address|default }}
<strong>Address:</strong> {{ field.after.address|default }}<br>
<strong>Latitude:</strong> {{ field.after.latitude|default }}<br>
<strong>Longitude:</strong> {{ field.after.longitude|default }}<br>
<strong>Matched address:</strong> {{ field.after.formatted_address|default }}
</td>
{% elseif field.type == 'image' %}
<td class="change-log-item">
<strong>File:</strong> {{ field.before.render.file|default }}<br>
<strong>Title:</strong> {{ field.before.render.title|default }}<br>
<strong>File:</strong> {{ field.before.file|default }}<br>
<strong>Title:</strong> {{ field.before.title|default }}<br>
<div class="content-preview imageholder" id="thumbnail-{{ key }}">
{% if field.before.render.file|default %}
{% set preview_path = field.before.render.file|thumbnail(preview_w, preview_h, 'c') %}
{% if field.before.file|default %}
{% set preview_path = field.before.file|thumbnail(preview_w, preview_h, 'c') %}
<img src="{{ preview_path }}" alt="Preview" width="{{ preview_w }}" height="{{ preview_h }}">
{% endif %}
</div>
</td>
<td class="change-log-item">
<strong>File:</strong> {{ field.after.render.file|default }}<br>
<strong>Title:</strong> {{ field.after.render.title|default }}<br>
<strong>File:</strong> {{ field.after.file|default }}<br>
<strong>Title:</strong> {{ field.after.title|default }}<br>
<div class="content-preview imageholder" id="thumbnail-{{ key }}">
{% if field.after.render.file|default %}
{% set preview_path = field.after.render.file|thumbnail(preview_w, preview_h, 'c') %}
{% if field.after.file|default %}
{% set preview_path = field.after.file|thumbnail(preview_w, preview_h, 'c') %}
<img src="{{ preview_path }}" alt="Preview" width="{{ preview_w }}" height="{{ preview_h }}">
{% endif %}
</div>
</td>
{% elseif field.type == 'imagelist' %}
<td class="change-log-item">
{% for image in field.before.render %}
{% for image in field.before %}
<strong>File:</strong> {{ image.filename }}<br>
<strong>Title:</strong> {{ image.title }}<br>
<div class="content-preview imageholder" id="thumbnail-{{ key }}">
Expand All @@ -118,7 +118,7 @@
{% endfor %}
</td>
<td class="change-log-item">
{% for image in field.after.render %}
{% for image in field.after %}
<strong>File:</strong> {{ image.filename }}<br>
<strong>Title:</strong> {{ image.title }}<br>
<div class="content-preview imageholder" id="thumbnail-{{ key }}">
Expand All @@ -135,65 +135,63 @@
</td>
{% elseif field.type == 'markdown' or field.type == 'textarea' %}
<td class="change-log-item">
<pre style="white-space: pre-wrap; background-color: inherit; border: 0;">{{ field.before.render }}</pre>
<pre style="white-space: pre-wrap; background-color: inherit; border: 0;">{{ field.before }}</pre>
</td>
<td class="change-log-item">
<pre style="white-space: pre-wrap; background-color: inherit; border: 0;">{{ field.after.render }}</pre>
<pre style="white-space: pre-wrap; background-color: inherit; border: 0;">{{ field.after }}</pre>
</td>
{% elseif field.type == 'select' %}
<td class="change-log-item">
{% if field.before.render is iterable %}
{% if field.before is iterable %}
<ul>
{% for select in field.before.render %}
{% for select in field.before %}
<li>{{ select }}</li>
{% endfor %}
</ul>
{% else %}
{{ field.before.render }}
{{ field.before }}
{% endif %}
</td>
<td class="change-log-item">
{% if field.after.render is iterable %}
{% if field.after is iterable %}
<ul>
{% for select in field.after.render %}
{% for select in field.after %}
<li>{{ select }}</li>
{% endfor %}
</ul>
{% else %}
{{ field.after.render }}
{{ field.after }}
{% endif %}
</td>
{% elseif field.type == 'video' %}
<td class="change-log-item">
<strong>Title:</strong> {{ field.before.render.title|default }}<br>
<strong>URL:</strong> {{ field.before.render.url|default }}<br>
<strong>Size:</strong> {{ field.before.render.width|default }} x {{ field.before.render.height|default }}<br>
<strong>Title:</strong> {{ field.before.title|default }}<br>
<strong>URL:</strong> {{ field.before.url|default }}<br>
<strong>Size:</strong> {{ field.before.width|default }} x {{ field.before.height|default }}<br>
<div class="imageholder" id="thumbnail-{{ key }}">
{% if field.before.render.thumbnail|default %}
<img src="{{ field.before.render.thumbnail }}" width="200" height="150">
{% if field.before.thumbnail|default %}
<img src="{{ field.before.thumbnail }}" width="200" height="150">
{% endif %}
</div>
<div class="hidden video" id="{{ key }}">{{ field.after.render.html|raw }}</div>
<div class="hidden video" id="{{ key }}">{{ field.after.html|raw }}</div>
</td>
<td class="change-log-item">
<strong>Title:</strong> {{ field.after.render.title }}<br>
<strong>URL:</strong> {{ field.after.render.url }}<br>
<strong>Size:</strong> {{ field.after.render.width }} x {{ field.after.render.height }}<br>
<strong>Title:</strong> {{ field.after.title }}<br>
<strong>URL:</strong> {{ field.after.url }}<br>
<strong>Size:</strong> {{ field.after.width }} x {{ field.after.height }}<br>
<div class="imageholder" id="thumbnail-{{ key }}">
{% if field.after.render.thumbnail|default('') %}
<img src="{{ field.after.render.thumbnail }}" width="{{ preview_w }}" height="{{ preview_h }}">
{% if field.after.thumbnail|default('') %}
<img src="{{ field.after.thumbnail }}" width="{{ preview_w }}" height="{{ preview_h }}">
{% endif %}
</div>
<div class="hidden video" id="{{ key }}">{{ field.after.render.html|raw }}</div>
<div class="hidden video" id="{{ key }}">{{ field.after.html|raw }}</div>
</td>
{% else %}
<td class="change-log-item">
{# {{ field.before.render }} #}
{{ dump(field.before.render)}}
<em>Changes for field <code>{{ field.type }}</code> can not be shown.</em>
</td>
<td class="change-log-item">
{# {{ field.after.render }} #}
{{ dump(field.after.render)}}
&nbsp;
</td>
{% endif %}
</tr>
Expand Down
65 changes: 16 additions & 49 deletions src/Storage/Entity/LogChange.php
Expand Up @@ -2,7 +2,7 @@

namespace Bolt\Storage\Entity;

use Bolt\Common\Json;
use Bolt\Collection\Bag;
use Bolt\Storage\Mapping\ClassMetadata;

/**
Expand Down Expand Up @@ -176,85 +176,48 @@ public function setContentTypeMeta(ClassMetadata $config)
*/
public function getChangedFields(array $contentType)
{
$changedFields = [];
$changedFields = Bag::from([]);

if (empty($this->diff)) {
return $changedFields;
}

// Get the ContentType that we're dealing with
$fields = $contentType['fields'];

$hash = [
'html' => 'fieldText',
'markdown' => 'fieldText',
'textarea' => 'fieldText',
'filelist' => 'fieldList',
'imagelist' => 'fieldList',
'geolocation' => 'fieldGeolocation',
'image' => 'fieldImage',
'embed' => 'fieldVideo',
'select' => 'fieldSelect',
'video' => 'fieldVideo',
];
$fields = Bag::from($contentType['fields']);

foreach ($this->diff as $key => $value) {
if (!isset($fields[$key])) {
if (!$fields->get($key)) {
continue;
}

$type = $fields[$key]['type'];
$type = $fields->get($key)['type'];
$changedFields[$key] = [
'type' => $type,
'label' => empty($fields[$key]['label']) ? $key : $fields[$key]['label'],
'before' => [
'raw' => $value[0],
'render' => $value[0],
],
'after' => [
'raw' => $value[1],
'render' => $value[1],
],
'before' => $value[0],
'after' => $value[1],
];

/** @var string $type */
$type = $fields[$key]['type'];
if (isset($hash[$type])) {
$func = $hash[$type];
$changedFields[$key] = array_merge($changedFields[$key], $this->{$func}($key, $value, $fields));
}
$changedFields[$key] = array_merge($changedFields[$key], $this->fieldValues($key, $value, $fields));
}

return $changedFields;
}

/**
* Compile changes for text field types.
*
* @param string $key
* @param string $value
* @param array $fields
*
* @return array
*/
private function fieldText($key, $value, array $fields)
{
return ['type' => $fields[$key]['type']];
}

/**
* Compile changes for list field types.
* Compile changes for any field type.
*
* @param string $key
* @param string $value
* @param array $fields
* @param Bag $fields
*
* @return array
*/
private function fieldList($key, $value, array $fields)
private function fieldValues($key, $value, Bag $fields)
{
return [
'type' => $fields[$key]['type'],
<<<<<<< HEAD
'before' => ['render' => $value[0]],
'after' => ['render' => $value[1]],
];
Expand Down Expand Up @@ -428,6 +391,10 @@ private function fieldVideo($key, $value, array $fields)
'thumbnail' => $after['thumbnail'],
],
],
=======
'before' => $value[0],
'after' => $value[1],
>>>>>>> 9fe8119a2... Use Bags, remove cruft <3
];
}
}

0 comments on commit 30e1e3e

Please sign in to comment.