Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

16 #comment Ad additional properties for articles #25

Open
wants to merge 1 commit into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions Plugin.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
//Event
use Lovata\GoodNews\Classes\Event\ArticleModelHandler;
use Lovata\GoodNews\Classes\Event\CategoryModelHandler;
use Lovata\GoodNews\Classes\Event\ExtendFieldHandler;

/**
* Class Plugin
Expand Down Expand Up @@ -48,5 +49,6 @@ protected function addEventListener()
{
Event::subscribe(ArticleModelHandler::class);
Event::subscribe(CategoryModelHandler::class);
Event::subscribe(ExtendFieldHandler::class);
}
}
60 changes: 60 additions & 0 deletions classes/event/ExtendFieldHandler.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
<?php namespace Lovata\GoodNews\Classes\Event;

use Lovata\GoodNews\Models\Article;
use Lovata\GoodNews\Models\Property;
use Lovata\GoodNews\Controllers\Articles;

/**
* Class ExtendFieldHandler
* @package Lovata\GoodNews\Classes\Event
* @author Andrey Kharanenka, [email protected], LOVATA Group
*/
class ExtendFieldHandler
{
/**
* Add listeners
* @param \Illuminate\Events\Dispatcher $obEvent
*/
public function subscribe($obEvent)
{
$obEvent->listen('backend.form.extendFields', function ($obWidget) {
$this->extendArticleFields($obWidget);
});
}

/**
* Extend fields for Article model
* @param \Backend\Widgets\Form $obWidget
*/
public function extendArticleFields($obWidget)
{
if (!$obWidget->getController() instanceof Articles || $obWidget->isNested) {
return;
}

// Only for the Product model
if (!$obWidget->model instanceof Article || $obWidget->context != 'update') {
return;
}

$obPropertyList = Property::active()->orderBy('sort_order', 'asc')->get();
if ($obPropertyList->isEmpty()) {
return;
}

//Get widget data for properties
$arAdditionPropertyData = [];
/** @var Property $obProperty */
foreach ($obPropertyList as $obProperty) {
$arPropertyData = $obProperty->getWidgetData();
if (!empty($arPropertyData)) {
$arAdditionPropertyData[Property::NAME.'['.$obProperty->code.']'] = $arPropertyData;
}
}

// Add fields
if (!empty($arAdditionPropertyData)) {
$obWidget->addTabFields($arAdditionPropertyData);
}
}
}
3 changes: 2 additions & 1 deletion classes/item/ArticleItem.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
* @property string $slug
* @property string $preview_text
* @property string $content
* @property array $property
* @property CategoryItem $category
* @property \October\Rain\Argon\Argon $published_start
* @property \October\Rain\Argon\Argon $published_stop
Expand Down Expand Up @@ -95,4 +96,4 @@ protected function setElementObject()
{
$this->obElement = Article::withTrashed()->find($this->iElementID);
}
}
}
31 changes: 31 additions & 0 deletions controllers/Properties.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
<?php namespace Lovata\GoodNews\Controllers;

use BackendMenu;
use Backend\Classes\Controller;

/**
* Class Properties
* @package Lovata\GoodNews\Controllers
* @author Andrey Kharanenka, [email protected], LOVATA Group
*/
class Properties extends Controller
{
public $implement = [
'Backend.Behaviors.ListController',
'Backend.Behaviors.FormController',
'Backend.Behaviors.ReorderController',
];

public $listConfig = 'config_list.yaml';
public $formConfig = 'config_form.yaml';
public $reorderConfig = 'config_reorder.yaml';

/**
* Properties constructor.
*/
public function __construct()
{
parent::__construct();
BackendMenu::setContext('Lovata.GoodNews', 'main-good-news', 'side-good-news-property');
}
}
23 changes: 23 additions & 0 deletions controllers/properties/_list_toolbar.htm
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<div data-control="toolbar">
<a href="<?= Backend::url('lovata/goodnews/properties/create') ?>" class="btn btn-primary oc-icon-plus">
<?= e(trans('backend::lang.form.create')) ?>
</a>
<a href="<?= Backend::url('lovata/goodnews/properties/reorder') ?>" class="btn btn-info oc-icon-exchange">
<?= e(trans('backend::lang.reorder.default_title')) ?>
</a>
<button
class="btn btn-default oc-icon-trash-o"
disabled="disabled"
onclick="$(this).data('request-data', {
checked: $('.control-list').listWidget('getChecked')
})"
data-request="onDelete"
data-request-confirm="<?= e(trans('backend::lang.list.delete_selected_confirm')) ?>"
data-trigger-action="enable"
data-trigger=".control-list input[type=checkbox]"
data-trigger-condition="checked"
data-request-success="$(this).prop('disabled', true)"
data-stripe-load-indicator>
<?= e(trans('backend::lang.list.delete_selected')) ?>
</button>
</div>
5 changes: 5 additions & 0 deletions controllers/properties/_type.htm
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<?php

if(!empty($value)) {
echo trans('lovata.toolbox::lang.type.'.$value);
}
16 changes: 16 additions & 0 deletions controllers/properties/config_form.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
name: 'lovata.goodnews::lang.property.name'
modelClass: Lovata\GoodNews\Models\Property
form: $/lovata/goodnews/models/property/fields.yaml
defaultRedirect: lovata/goodnews/properties
create:
title: 'backend::lang.form.create_title'
redirect: 'lovata/goodnews/properties/update/:id'
redirectClose: lovata/goodnews/properties
flashSave: 'lovata.toolbox::lang.message.create_success'
update:
title: 'backend::lang.form.update_title'
redirect: lovata/goodnews/properties
redirectClose: lovata/goodnews/properties
flashSave: 'lovata.toolbox::lang.message.update_success'
flashDelete: 'lovata.toolbox::lang.message.delete_success'
preview: { }
16 changes: 16 additions & 0 deletions controllers/properties/config_list.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
title: 'lovata.goodnews::lang.property.list_title'
modelClass: Lovata\GoodNews\Models\Property
list: $/lovata/goodnews/models/property/columns.yaml
recordUrl: 'lovata/goodnews/properties/update/:id'
noRecordsMessage: 'backend::lang.list.no_records'
recordsPerPage: '25'
showSetup: true
showCheckboxes: true
showSorting: 1
defaultSort:
column: sort_order
direction: asc
toolbar:
buttons: list_toolbar
search:
prompt: 'backend::lang.list.search_prompt'
3 changes: 3 additions & 0 deletions controllers/properties/config_reorder.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
title: 'backend::lang.reorder.default_title'
modelClass: Lovata\GoodNews\Models\Property
nameFrom: name
49 changes: 49 additions & 0 deletions controllers/properties/create.htm
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
<?php Block::put('breadcrumb') ?>
<ul>
<li><a href="<?= Backend::url('lovata/goodnews/properties') ?>">
<?= e(trans('lovata.goodnews::lang.property.list_title')) ?>
</a>
</li>
<li><?= e($this->pageTitle) ?></li>
</ul>
<?php Block::endPut() ?>

<?php if (!$this->fatalError): ?>

<?= Form::open(['class' => 'layout']) ?>

<div class="layout-row">
<?= $this->formRender() ?>
</div>

<div class="form-buttons">
<div class="loading-indicator-container">
<button
type="submit"
data-request="onSave"
data-hotkey="ctrl+s, cmd+s"
data-load-indicator="<?= e(trans('backend::lang.form.saving')) ?>"
class="btn btn-primary">
<?= e(trans('backend::lang.form.create')) ?>
</button>
<button
type="button"
data-request="onSave"
data-request-data="close:1"
data-hotkey="ctrl+enter, cmd+enter"
data-load-indicator="<?= e(trans('backend::lang.form.saving')) ?>"
class="btn btn-default">
<?= e(trans('backend::lang.form.create_and_close')) ?>
</button>
<span class="btn-text">
<?= e(trans('backend::lang.form.or')) ?> <a href="<?= Backend::url('lovata/goodnews/properties') ?>"><?= e(trans('backend::lang.form.cancel')) ?></a>
</span>
</div>
</div>

<?= Form::close() ?>

<?php else: ?>
<p class="flash-message static error"><?= e(trans($this->fatalError)) ?></p>
<p><a href="<?= Backend::url('lovata/goodnews/properties') ?>" class="btn btn-default"><?= e(trans('backend::lang.form.return_to_list')) ?></a></p>
<?php endif ?>
1 change: 1 addition & 0 deletions controllers/properties/index.htm
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<?= $this->listRender() ?>
22 changes: 22 additions & 0 deletions controllers/properties/preview.htm
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<?php Block::put('breadcrumb') ?>
<ul>
<li><a href="<?= Backend::url('lovata/goodnews/properties') ?>"><?= e(trans('lovata.goodnews::lang.property.list_title')) ?></a></li>
<li><?= e($this->pageTitle) ?></li>
</ul>
<?php Block::endPut() ?>

<?php if (!$this->fatalError): ?>

<div class="form-preview">
<?= $this->formRenderPreview() ?>
</div>

<?php else: ?>
<p class="flash-message static error"><?= e($this->fatalError) ?></p>
<?php endif ?>

<p>
<a href="<?= Backend::url('lovata/goodnews/properties') ?>" class="btn btn-default oc-icon-chevron-left">
<?= e(trans('backend::lang.form.return_to_list')) ?>
</a>
</p>
8 changes: 8 additions & 0 deletions controllers/properties/reorder.htm
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<?php Block::put('breadcrumb') ?>
<ul>
<li><a href="<?= Backend::url('lovata/goodnews/properties') ?>"><?= e(trans('lovata.goodnews::lang.property.list_title')) ?></a></li>
<li><?= e($this->pageTitle) ?></li>
</ul>
<?php Block::endPut() ?>

<?= $this->reorderRender() ?>
54 changes: 54 additions & 0 deletions controllers/properties/update.htm
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
<?php Block::put('breadcrumb') ?>
<ul>
<li><a href="<?= Backend::url('lovata/goodnews/properties') ?>"><?= e(trans('lovata.goodnews::lang.property.list_title')) ?></a></li>
<li><?= e($this->pageTitle) ?></li>
</ul>
<?php Block::endPut() ?>

<?php if (!$this->fatalError): ?>

<?= Form::open(['class' => 'layout']) ?>

<div class="layout-row">
<?= $this->formRender() ?>
</div>

<div class="form-buttons">
<div class="loading-indicator-container">
<button
type="submit"
data-request="onSave"
data-request-data="redirect:0"
data-hotkey="ctrl+s, cmd+s"
data-load-indicator="<?= e(trans('backend::lang.form.saving')) ?>"
class="btn btn-primary">
<?= e(trans('backend::lang.form.save')) ?>
</button>
<button
type="button"
data-request="onSave"
data-request-data="close:1"
data-hotkey="ctrl+enter, cmd+enter"
data-load-indicator="<?= e(trans('backend::lang.form.saving')) ?>"
class="btn btn-default">
<?= e(trans('backend::lang.form.save_and_close')) ?>
</button>
<button
type="button"
class="oc-icon-trash-o btn-icon danger pull-right"
data-request="onDelete"
data-load-indicator="<?= e(trans('backend::lang.form.deleting')) ?>"
data-request-confirm="<?= e(trans('backend::lang.form.confirm_delete')) ?>">
</button>

<span class="btn-text">
<?= e(trans('backend::lang.form.or')) ?> <a href="<?= Backend::url('lovata/goodnews/properties') ?>"><?= e(trans('backend::lang.form.cancel')) ?></a>
</span>
</div>
</div>
<?= Form::close() ?>

<?php else: ?>
<p class="flash-message static error"><?= e(trans($this->fatalError)) ?></p>
<p><a href="<?= Backend::url('lovata/goodnews/properties') ?>" class="btn btn-default"><?= e(trans('backend::lang.form.return_to_list')) ?></a></p>
<?php endif ?>
10 changes: 8 additions & 2 deletions lang/en/lang.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
'category_data_desc' => '',
'category_list' => 'Category list',
'category_list_desc' => '',

'sorting_publish_asc' => 'By date of publication (asc)',
'sorting_publish_desc' => 'By date of publication (desc)',
'sorting_view_count_acs' => 'By view count (asc)',
Expand All @@ -32,6 +32,7 @@
'menu' => [
'article' => 'Articles',
'category' => 'Categories',
'property' => 'Addition properties',
],
'tab' => [
'permissions' => 'Manage article',
Expand All @@ -44,6 +45,10 @@
'name' => 'category',
'list_title' => 'Category list',
],
'property' => [
'name' => 'property',
'list_title' => 'Property list',
],
'status' => [
1 => 'New',
2 => 'In progress',
Expand All @@ -53,5 +58,6 @@
'permission' => [
'article' => 'Manage article',
'category' => 'Manage category',
'property' => 'Manage addition properties',
],
];
];
Loading