Skip to content

Commit ce2849d

Browse files
committed
11721-Featured-Image-for-Blog-category-and-image-on-grid improvements
1 parent ff0300f commit ce2849d

File tree

10 files changed

+93
-151
lines changed

10 files changed

+93
-151
lines changed

Block/Adminhtml/Renderer/Image.php renamed to Block/Adminhtml/Grid/Column/Render/Image.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?php
22

3-
namespace Magefan\Blog\Block\Adminhtml\Renderer;
3+
namespace Magefan\Blog\Block\Adminhtml\Grid\Column\Render;
44

55
use Magefan\Blog\Model\Url;
66
use Magento\Backend\Block\Context;
@@ -30,9 +30,9 @@ public function __construct(
3030
*/
3131
public function render(DataObject $row)
3232
{
33-
$imageUrl = $row->getData($this->getColumn()->getIndex());
34-
if ($imageUrl) {
35-
return '<img src="' . $this->escapeHtml($this->_url->getMediaUrl($imageUrl)) . '" alt="" width="75"/>';
33+
$imagePath = $row->getData($this->getColumn()->getIndex());
34+
if ($imagePath) {
35+
return '<img src="' . $this->escapeHtml($this->_url->getMediaUrl($imagePath)) . '" alt="" width="75"/>';
3636
}
3737
return '';
3838
}

Controller/Adminhtml/Actions.php

Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,51 @@
1313
*/
1414
abstract class Actions extends \Magefan\Community\Controller\Adminhtml\Actions
1515
{
16-
16+
/**
17+
* Prepare images before object save
18+
* @param $model
19+
* @param array $fields
20+
*/
21+
protected function prepareImagesBeforeSave($model, array $fields)
22+
{
23+
$data = $model->getData();
24+
foreach ($fields as $key) {
25+
if (isset($data[$key]) && is_array($data[$key])) {
26+
if (!empty($data[$key]['delete'])) {
27+
$model->setData($key, null);
28+
} else {
29+
if (isset($data[$key][0]['name']) && isset($data[$key][0]['tmp_name'])) {
30+
$image = $data[$key][0]['name'];
31+
32+
$imageUploader = $this->_objectManager->get(
33+
\Magefan\Blog\ImageUpload::class
34+
);
35+
$image = $imageUploader->moveFileFromTmp($image, true);
36+
37+
$model->setData($key, $image);
38+
} else {
39+
if (isset($data[$key][0]['url']) && false !== strpos($data[$key][0]['url'], '/media/')) {
40+
$url = $data[$key][0]['url'];
41+
42+
/**
43+
* $url may have two types of values
44+
* /media/.renditions/magefan_blog/a.png
45+
* http://domain.com/media/magefan_blog/tmp/a.png
46+
*/
47+
48+
$keyString = strpos($url, '/.renditions/') !== false ? '/.renditions/' : '/media/';
49+
$position = strpos($url, $keyString);
50+
51+
$model->setData($key, substr($url, $position + strlen($keyString)));
52+
53+
} elseif (isset($data[$key][0]['name'])) {
54+
$model->setData($key, $data[$key][0]['name']);
55+
}
56+
}
57+
}
58+
} else {
59+
$model->setData($key, null);
60+
}
61+
}
62+
}
1763
}

Controller/Adminhtml/Category/Save.php

Lines changed: 1 addition & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -37,45 +37,7 @@ protected function _afterSave($model, $request)
3737
protected function _beforeSave($model, $request)
3838
{
3939
/* Prepare images */
40-
$data = $model->getData();
41-
foreach (['category_img'] as $key) {
42-
if (isset($data[$key]) && is_array($data[$key])) {
43-
if (!empty($data[$key]['delete'])) {
44-
$model->setData($key, null);
45-
} else {
46-
if (isset($data[$key][0]['name']) && isset($data[$key][0]['tmp_name'])) {
47-
$image = $data[$key][0]['name'];
48-
49-
$imageUploader = $this->_objectManager->get(
50-
\Magefan\Blog\ImageUpload::class
51-
);
52-
$image = $imageUploader->moveFileFromTmp($image, true);
53-
54-
$model->setData($key, $image);
55-
} else {
56-
if (isset($data[$key][0]['url']) && false !== strpos($data[$key][0]['url'], '/media/')) {
57-
$url = $data[$key][0]['url'];
58-
59-
/**
60-
* $url may have two types of values
61-
* /media/.renditions/magefan_blog/a.png
62-
* http://crowdin.dev.magefan.top/media/magefan_blog/tmp/a.png
63-
*/
64-
65-
$keyString = strpos($url, '/.renditions/') !== false ? '/.renditions/' : '/media/';
66-
$position = strpos($url, $keyString);
67-
68-
$model->setData($key, substr($url, $position + strlen($keyString)));
69-
70-
} elseif (isset($data[$key][0]['name'])) {
71-
$model->setData($key, $data[$key][0]['name']);
72-
}
73-
}
74-
}
75-
} else {
76-
$model->setData($key, null);
77-
}
78-
}
40+
$this->prepareImagesBeforeSave($model, ['category_img']);
7941
}
8042

8143
/**

Controller/Adminhtml/Post/Save.php

Lines changed: 1 addition & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -62,45 +62,7 @@ protected function _beforeSave($model, $request)
6262
}
6363

6464
/* Prepare images */
65-
$data = $model->getData();
66-
foreach (['featured_img', 'featured_list_img', 'og_img'] as $key) {
67-
if (isset($data[$key]) && is_array($data[$key])) {
68-
if (!empty($data[$key]['delete'])) {
69-
$model->setData($key, null);
70-
} else {
71-
if (isset($data[$key][0]['name']) && isset($data[$key][0]['tmp_name'])) {
72-
$image = $data[$key][0]['name'];
73-
74-
$imageUploader = $this->_objectManager->get(
75-
\Magefan\Blog\ImageUpload::class
76-
);
77-
$image = $imageUploader->moveFileFromTmp($image, true);
78-
79-
$model->setData($key, $image);
80-
} else {
81-
if (isset($data[$key][0]['url']) && false !== strpos($data[$key][0]['url'], '/media/')) {
82-
$url = $data[$key][0]['url'];
83-
84-
/**
85-
* $url may have two types of values
86-
* /media/.renditions/magefan_blog/a.png
87-
* http://crowdin.dev.magefan.top/media/magefan_blog/tmp/a.png
88-
*/
89-
90-
$keyString = strpos($url, '/.renditions/') !== false ? '/.renditions/' : '/media/';
91-
$position = strpos($url, $keyString);
92-
93-
$model->setData($key, substr($url, $position + strlen($keyString)));
94-
95-
} elseif (isset($data[$key][0]['name'])) {
96-
$model->setData($key, $data[$key][0]['name']);
97-
}
98-
}
99-
}
100-
} else {
101-
$model->setData($key, null);
102-
}
103-
}
65+
$this->prepareImagesBeforeSave($model, ['featured_img', 'featured_list_img', 'og_img']);
10466

10567
/* Prepare Media Gallery */
10668
$data = $model->getData();

Controller/Adminhtml/Tag/Save.php

Lines changed: 1 addition & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -54,45 +54,6 @@ protected function filterParams($data)
5454
protected function _beforeSave($model, $request)
5555
{
5656
/* Prepare images */
57-
$data = $model->getData();
58-
59-
foreach (['tag_img'] as $key) {
60-
if (isset($data[$key]) && is_array($data[$key])) {
61-
if (!empty($data[$key]['delete'])) {
62-
$model->setData($key, null);
63-
} else {
64-
if (isset($data[$key][0]['name']) && isset($data[$key][0]['tmp_name'])) {
65-
$image = $data[$key][0]['name'];
66-
67-
$imageUploader = $this->_objectManager->get(
68-
\Magefan\Blog\ImageUpload::class
69-
);
70-
$image = $imageUploader->moveFileFromTmp($image, true);
71-
72-
$model->setData($key, $image);
73-
} else {
74-
if (isset($data[$key][0]['url']) && false !== strpos($data[$key][0]['url'], '/media/')) {
75-
$url = $data[$key][0]['url'];
76-
77-
/**
78-
* $url may have two types of values
79-
* /media/.renditions/magefan_blog/a.png
80-
* http://crowdin.dev.magefan.top/media/magefan_blog/tmp/a.png
81-
*/
82-
83-
$keyString = strpos($url, '/.renditions/') !== false ? '/.renditions/' : '/media/';
84-
$position = strpos($url, $keyString);
85-
86-
$model->setData($key, substr($url, $position + strlen($keyString)));
87-
88-
} elseif (isset($data[$key][0]['name'])) {
89-
$model->setData($key, $data[$key][0]['name']);
90-
}
91-
}
92-
}
93-
} else {
94-
$model->setData($key, null);
95-
}
96-
}
57+
$this->prepareImagesBeforeSave($model, ['tag_img']);
9758
}
9859
}

Model/Category.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -574,12 +574,11 @@ public function getShortContentExtractor()
574574
/**
575575
* @return array|mixed|null
576576
*/
577-
public function getCategoryImg()
577+
public function getCategoryImage()
578578
{
579579
if (!$this->hasData('category_image')) {
580580
if ($file = $this->getData('category_img')) {
581581
$image = $this->_url->getMediaUrl($file);
582-
583582
} else {
584583
$image = false;
585584
}

Model/Tag.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,7 @@ public function getShortContentExtractor()
270270
/**
271271
* @return array|mixed|null
272272
*/
273-
public function getTagImg()
273+
public function getTagImage()
274274
{
275275
if (!$this->hasData('tag_image')) {
276276
if ($file = $this->getData('tag_img')) {

Ui/DataProvider/Category/Form/CategoryDataProvider.php

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -79,15 +79,21 @@ public function getData()
7979
/** @var $category \Magefan\Blog\Model\Category */
8080
foreach ($items as $category) {
8181
$category = $category->load($category->getId()); //temporary fix
82-
$this->loadedData[$category->getId()] = $category->getData();
8382
$data = $category->getData();
84-
$key = 'category_img';
85-
$name = $data[$key];
86-
unset($data[$key]);
87-
$data[$key][0] = [
88-
'name' => $name,
89-
'url' => $category->getCategoryImg(),
83+
/* Prepare Featured Image */
84+
$map = [
85+
'category_img' => 'getCategoryImage',
9086
];
87+
foreach ($map as $key => $method) {
88+
if (isset($data[$key])) {
89+
$name = $data[$key];
90+
unset($data[$key]);
91+
$data[$key][0] = [
92+
'name' => $name,
93+
'url' => $category->$method(),
94+
];
95+
}
96+
}
9197
$this->loadedData[$category->getId()] = $data;
9298
}
9399

Ui/DataProvider/Tag/Form/TagDataProvider.php

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -79,16 +79,22 @@ public function getData()
7979
/** @var $tag \Magefan\Blog\Model\Tag */
8080
foreach ($items as $tag) {
8181
$tag = $tag->load($tag->getId()); //temporary fix
82-
$this->loadedData[$tag->getId()] = $tag->getData();
82+
8383
$data = $tag->getData();
84-
$key = 'tag_img';
85-
$name = $data[$key];
86-
unset($data[$key]);
87-
$data[$key][0] = [
88-
'name' => $name,
89-
'url' => $tag->getTagImg(),
84+
/* Prepare Featured Image */
85+
$map = [
86+
'tag_img' => 'getTagImage',
9087
];
91-
// var_dump($tag->getTagImg());exit();
88+
foreach ($map as $key => $method) {
89+
if (isset($data[$key])) {
90+
$name = $data[$key];
91+
unset($data[$key]);
92+
$data[$key][0] = [
93+
'name' => $name,
94+
'url' => $tag->$method(),
95+
];
96+
}
97+
}
9298
$this->loadedData[$tag->getId()] = $data;
9399
}
94100

view/adminhtml/layout/blog_post_grid_block.xml

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,16 @@
5959
<argument name="column_css_class" xsi:type="string">col-id</argument>
6060
</arguments>
6161
</block>
62+
<block class="Magento\Backend\Block\Widget\Grid\Column" as="img">
63+
<arguments>
64+
<argument name="header" xsi:type="string" translate="true">Image</argument>
65+
<argument name="index" xsi:type="string">featured_img</argument>
66+
<argument name="header_css_class" xsi:type="string">col-img</argument>
67+
<argument name="column_css_class" xsi:type="string">col-img</argument>
68+
<argument name="type" xsi:type="string">text</argument>
69+
<argument name="renderer" xsi:type="string">Magefan\Blog\Block\Adminhtml\Grid\Column\Render\Image</argument>
70+
</arguments>
71+
</block>
6272
<block class="Magento\Backend\Block\Widget\Grid\Column" as="name">
6373
<arguments>
6474
<argument name="header" xsi:type="string" translate="true">Title</argument>
@@ -148,16 +158,6 @@
148158
<argument name="column_css_class" xsi:type="string">col-status</argument>
149159
</arguments>
150160
</block>
151-
<block class="Magento\Backend\Block\Widget\Grid\Column" as="img">
152-
<arguments>
153-
<argument name="header" xsi:type="string" translate="true">Post Image</argument>
154-
<argument name="index" xsi:type="string">featured_img</argument>
155-
<argument name="header_css_class" xsi:type="string">col-img</argument>
156-
<argument name="column_css_class" xsi:type="string">col-img</argument>
157-
<argument name="type" xsi:type="string">text</argument>
158-
<argument name="renderer" xsi:type="string">Magefan\Blog\Block\Adminhtml\Renderer\Image</argument>
159-
</arguments>
160-
</block>
161161
</block>
162162
</block>
163163
</referenceBlock>

0 commit comments

Comments
 (0)