DEV: Каталог (редактирование SLUG)
This commit is contained in:
parent
e441c5c85d
commit
466b08b145
|
@ -10,10 +10,12 @@ use App\Models\{SubscriptionModel, ActionModel, FacetModel, NotificationModel};
|
|||
use UserData, Meta, Access;
|
||||
|
||||
use App\Validate\RulesItem;
|
||||
use App\Traits\Slug;
|
||||
use App\Traits\Poll;
|
||||
|
||||
class AddItemController extends Controller
|
||||
{
|
||||
use Slug;
|
||||
use Poll;
|
||||
|
||||
// Add Domain Form
|
||||
|
@ -60,12 +62,17 @@ class AddItemController extends Controller
|
|||
$published = Request::getPost('published') == 'on' ? 1 : 0;
|
||||
$published = UserData::checkAdmin() ? $published : 0;
|
||||
|
||||
if (WebModel::getSlug($slug = $this->getSlug($data['title']))) {
|
||||
$slug = $slug . "-";
|
||||
}
|
||||
|
||||
$item_last = WebModel::add(
|
||||
[
|
||||
'item_url' => $data['url'],
|
||||
'item_domain' => $basic_host,
|
||||
'item_title' => $data['title'],
|
||||
'item_content' => $data['content'] ?? __('web.desc_formed'),
|
||||
'item_slug' => $slug,
|
||||
'item_published' => $published,
|
||||
'item_user_id' => $this->user['id'],
|
||||
'item_close_replies' => Request::getPost('close_replies') == 'on' ? 1 : null,
|
||||
|
|
|
@ -40,8 +40,9 @@ class DetailedController extends Controller
|
|||
$m = [
|
||||
'og' => true,
|
||||
'imgurl' => $content_img,
|
||||
'url' => url('website', ['slug' => $item['item_domain']]),
|
||||
'url' => url('website', ['id' => $item['item_id'], 'slug' => $item['item_slug']]),
|
||||
];
|
||||
|
||||
$title = __('web.website') . ': ' . $item['item_title'];
|
||||
$description = $item['item_title'] . '. ' . $item['item_content'];
|
||||
|
||||
|
|
|
@ -11,6 +11,7 @@ use App\Models\User\UserModel;
|
|||
use UserData, Meta, Access;
|
||||
|
||||
use App\Traits\Poll;
|
||||
use App\Traits\Slug;
|
||||
use App\Traits\Author;
|
||||
use App\Traits\Related;
|
||||
|
||||
|
@ -19,6 +20,7 @@ use App\Validate\RulesItem;
|
|||
class EditItemController extends Controller
|
||||
{
|
||||
use Poll;
|
||||
use Slug;
|
||||
use Author;
|
||||
use Related;
|
||||
|
||||
|
@ -91,12 +93,22 @@ class EditItemController extends Controller
|
|||
|
||||
$new_user_id = $this->selectAuthor($item['item_user_id'], Request::getPost('user_id'));
|
||||
|
||||
if (UserData::checkAdmin()) {
|
||||
$item_slug = Request::getPost('item_slug');
|
||||
if ($item_slug != $item['item_slug']) {
|
||||
if (WebModel::getSlug($slug = $this->getSlug($item_slug))) {
|
||||
$slug = $slug . "-";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
WebModel::edit(
|
||||
[
|
||||
'item_id' => $item['item_id'],
|
||||
'item_url' => $data['url'],
|
||||
'item_title' => $data['title'],
|
||||
'item_content' => $data['content'],
|
||||
'item_slug' => $slug ?? $item['item_slug'],
|
||||
'item_domain' => RulesItem::getRegisterable($data['url']),
|
||||
'item_title_soft' => $data['title_soft'] ?? '',
|
||||
'item_content_soft' => $data['content_soft'] ?? '',
|
||||
|
|
|
@ -45,7 +45,7 @@ class ReplyController extends Controller
|
|||
|
||||
$item = ItemPresence::index($item_id);
|
||||
|
||||
$url = url('website', ['slug' => $item['item_domain']]);
|
||||
$url = url('website', ['id' => $item['item_id'], 'slug' => $item['item_slug']]);
|
||||
Validator::Length($content, 6, 555, 'content', $url);
|
||||
|
||||
// Access verification
|
||||
|
@ -54,7 +54,7 @@ class ReplyController extends Controller
|
|||
redirect('/');
|
||||
}
|
||||
|
||||
$redirect = url('website', ['slug' => $item['item_domain']]) . '#reply_' . $reply['reply_id'];
|
||||
$redirect = $url . '#reply_' . $reply['reply_id'];
|
||||
|
||||
ReplyModel::edit(
|
||||
[
|
||||
|
@ -77,7 +77,7 @@ class ReplyController extends Controller
|
|||
|
||||
$item = ItemPresence::index($item_id);
|
||||
|
||||
$website_url = url('website', ['slug' => $item['item_domain']]);
|
||||
$website_url = url('website', ['id' => $item['item_id'], 'slug' => $item['item_slug']]);
|
||||
Validator::Length($content, 6, 555, 'content', $website_url);
|
||||
|
||||
// We will check for freezing, stop words, the frequency of posting content per day
|
||||
|
|
|
@ -195,7 +195,7 @@ class HomeModel extends \Hleb\Scheme\App\Models\MainModel
|
|||
|
||||
public static function latestItems($limit)
|
||||
{
|
||||
$sql = "SELECT item_title, item_domain FROM items WHERE item_published = 1 AND item_is_deleted = 0 ORDER BY item_id DESC LIMIT :limit";
|
||||
$sql = "SELECT item_id, item_title, item_slug, item_domain FROM items WHERE item_published = 1 AND item_is_deleted = 0 ORDER BY item_id DESC LIMIT :limit";
|
||||
|
||||
return DB::run($sql, ['limit' => $limit])->fetchAll();
|
||||
}
|
||||
|
|
|
@ -15,6 +15,7 @@ class UserAreaModel extends \Hleb\Scheme\App\Models\MainModel
|
|||
item_id,
|
||||
item_title,
|
||||
item_content,
|
||||
item_slug,
|
||||
item_published,
|
||||
item_user_id,
|
||||
item_url,
|
||||
|
@ -66,6 +67,7 @@ class UserAreaModel extends \Hleb\Scheme\App\Models\MainModel
|
|||
item_url,
|
||||
item_title,
|
||||
item_content,
|
||||
item_slug,
|
||||
item_title_soft,
|
||||
item_domain,
|
||||
item_date,
|
||||
|
@ -74,6 +76,7 @@ class UserAreaModel extends \Hleb\Scheme\App\Models\MainModel
|
|||
item_votes,
|
||||
item_following_link,
|
||||
item_published,
|
||||
item_telephone,
|
||||
item_is_deleted,
|
||||
votes_item_user_id, votes_item_item_id
|
||||
FROM favorites fav
|
||||
|
|
|
@ -82,6 +82,7 @@ class WebModel extends \Hleb\Scheme\App\Models\MainModel
|
|||
item_id,
|
||||
item_title,
|
||||
item_content,
|
||||
item_slug,
|
||||
item_published,
|
||||
item_user_id,
|
||||
item_url,
|
||||
|
@ -176,6 +177,16 @@ class WebModel extends \Hleb\Scheme\App\Models\MainModel
|
|||
item_following_link,
|
||||
item_close_replies,
|
||||
item_poll,
|
||||
item_date,
|
||||
item_is_portal,
|
||||
item_is_forum,
|
||||
item_is_blog,
|
||||
item_is_reference,
|
||||
item_is_goods,
|
||||
item_telephone,
|
||||
item_email,
|
||||
item_vk,
|
||||
item_telegram,
|
||||
item_is_deleted,
|
||||
votes_item_user_id, votes_item_item_id,
|
||||
rel.*,
|
||||
|
@ -207,6 +218,7 @@ class WebModel extends \Hleb\Scheme\App\Models\MainModel
|
|||
item_domain,
|
||||
item_title,
|
||||
item_content,
|
||||
item_slug,
|
||||
item_published,
|
||||
item_user_id,
|
||||
item_poll,
|
||||
|
@ -216,6 +228,7 @@ class WebModel extends \Hleb\Scheme\App\Models\MainModel
|
|||
:item_domain,
|
||||
:item_title,
|
||||
:item_content,
|
||||
:item_slug,
|
||||
:item_published,
|
||||
:item_user_id,
|
||||
:item_poll,
|
||||
|
@ -235,6 +248,7 @@ class WebModel extends \Hleb\Scheme\App\Models\MainModel
|
|||
item_domain = :item_domain,
|
||||
item_title = :item_title,
|
||||
item_content = :item_content,
|
||||
item_slug = :item_slug,
|
||||
item_title_soft = :item_title_soft,
|
||||
item_content_soft = :item_content_soft,
|
||||
item_published = :item_published,
|
||||
|
@ -282,6 +296,7 @@ class WebModel extends \Hleb\Scheme\App\Models\MainModel
|
|||
$sql = "SELECT
|
||||
item_id,
|
||||
item_title,
|
||||
item_slug,
|
||||
item_domain
|
||||
FROM items
|
||||
LEFT JOIN facets_items_relation on item_id = relation_item_id
|
||||
|
@ -319,4 +334,9 @@ class WebModel extends \Hleb\Scheme\App\Models\MainModel
|
|||
|
||||
return DB::run($sql, ['url' => $url])->fetchAll();
|
||||
}
|
||||
|
||||
public static function getSlug($slug)
|
||||
{
|
||||
return DB::run("SELECT item_slug FROM items WHERE item_slug = :slug", ['slug' => $slug])->fetch();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -53,7 +53,7 @@
|
|||
<span class="mr15 ml5 gray-600 lowercase">
|
||||
<?= Html::langDate($reply['date']); ?>
|
||||
</span>
|
||||
<a class="black" href="<?= url('website', ['slug' => $reply['item_domain']]); ?>">
|
||||
<a class="black" href="<?= url('website', ['id' => $reply['item_id'], 'slug' => $reply['item_slug']]); ?>">
|
||||
<svg class="icons">
|
||||
<use xlink:href="/assets/svg/icons.svg#eye"></use>
|
||||
</svg>
|
||||
|
|
|
@ -20,6 +20,12 @@
|
|||
</fieldset>
|
||||
|
||||
<?php if (UserData::checkAdmin()) : ?>
|
||||
<fieldset>
|
||||
<label for="post_slug">SLUG (URL)</label>
|
||||
<input minlength="6" maxlength="250" value="<?= $domain['item_slug']; ?>" type="text" required name="item_slug">
|
||||
<div class="help">> 6 <?= __('app.characters'); ?></div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<input type="checkbox" name="published" <?php if ($domain['item_published'] == 1) : ?>checked <?php endif; ?>> <span class="red"><?= __('web.posted'); ?></span>
|
||||
</fieldset>
|
||||
|
|
|
@ -79,7 +79,7 @@ use Hleb\Constructor\Handlers\Request; ?>
|
|||
<ul>
|
||||
<?php foreach ($data['items'] as $item) : ?>
|
||||
<li class="mt15">
|
||||
<a href="<?= url('website', ['slug' => $item['item_domain']]); ?>">
|
||||
<a href="<?= url('website', ['id' => $item['item_id'], 'slug' => $item['item_slug']]); ?>">
|
||||
<?= $item['item_title']; ?> <span class="green"><?= $item['item_domain']; ?></span>
|
||||
</a>
|
||||
</li>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?= insert('/_block/add-js-css'); ?>
|
||||
<div id="contentWrapper" class="wrap wrap-max">
|
||||
<main>
|
||||
<main class="w-100">
|
||||
<?= insert('/_block/navigation/breadcrumbs', [
|
||||
'list' => [
|
||||
[
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
</h2>
|
||||
|
||||
<?php if (!empty($data['items'])) : ?>
|
||||
<?= insert('/content/item/item-card', ['data' => $data, 'user' => $user, 'delete_fav' => 'yes', 'screening' => $data['screening']]); ?>
|
||||
<?= insert('/content/item/item-card', ['data' => $data, 'user' => $user, 'delete_fav' => 'yes', 'screening' => $data['screening'], 'sort' => false]); ?>
|
||||
<?php else : ?>
|
||||
<?= insert('/_block/no-content', ['type' => 'small', 'text' => __('web.no_bookmarks'), 'icon' => 'info']); ?>
|
||||
<?php endif; ?>
|
||||
|
|
|
@ -39,7 +39,7 @@ $domain = $data['domain']; ?>
|
|||
<h4 class="uppercase-box">Подборка</h3>
|
||||
<?php foreach ($data['assembly'] as $site) : ?>
|
||||
<div class="mb15<?php if($site['item_id'] == $domain['item_id']) : ?> bg-white p5-10<?php endif; ?>">
|
||||
<a href="<?= url('website', ['slug' => $site['item_domain']]); ?>"><?= $site['item_title']; ?></a>
|
||||
<a href="<?= url('website', ['id' => $site['item_id'], 'slug' => $site['item_slug']]); ?>"><?= $site['item_title']; ?></a>
|
||||
<?= Html::facets($site['facet_list'], 'category', 'tag mr15'); ?>
|
||||
<?php if($site['item_id'] != $domain['item_id']) : ?>
|
||||
<a href="<?= url('content.edit', ['type' => 'item', 'id' => $site['item_id']]); ?>">
|
||||
|
|
|
@ -61,7 +61,7 @@
|
|||
<svg class="icons gray ml5">
|
||||
<use xlink:href="/assets/svg/icons.svg#corner-down-right"></use>
|
||||
</svg>
|
||||
<a itemprop="url" class="black lowercase" href="<?= url('website', ['id' => $item['item_id'],'slug' => host($item['item_url'])]); ?>">
|
||||
<a itemprop="url" class="black lowercase" href="<?= url('website', ['id' => $item['item_id'], 'slug' => $item['item_slug']]); ?>">
|
||||
<?= __('web.more'); ?>
|
||||
</a>
|
||||
</div>
|
||||
|
|
|
@ -38,7 +38,7 @@
|
|||
<svg class="icons gray ml5">
|
||||
<use xlink:href="/assets/svg/icons.svg#corner-down-right"></use>
|
||||
</svg>
|
||||
<a class="black " href="<?= url('website', ['slug' => $item['item_domain']]); ?>">
|
||||
<a class="black " href="<?= url('website', ['id' => $item['item_id'], 'slug' => $item['item_slug']]); ?>">
|
||||
<?= __('web.more'); ?>
|
||||
</a>
|
||||
|
||||
|
|
|
@ -52,7 +52,7 @@
|
|||
<svg class="icons">
|
||||
<use xlink:href="/assets/svg/icons.svg#corner-down-right"></use>
|
||||
</svg>
|
||||
<a class="black" href="<?= url('website', ['slug' => $item['item_domain']]); ?>">
|
||||
<a class="black" href="<?= url('website', ['id' => $item['item_id'], 'slug' => $item['item_slug']]); ?>">
|
||||
<?= __('web.more'); ?>
|
||||
</a>
|
||||
</div>
|
||||
|
|
|
@ -119,7 +119,7 @@
|
|||
<?php if ($data['similar']) : ?>
|
||||
<h4 class="uppercase-box"><?= __('web.recommended'); ?></h4>
|
||||
<?php foreach ($data['similar'] as $link) : ?>
|
||||
<a class="inline mr20 mb15 block text-sm" href="<?= url('website', ['slug' => $link['item_domain']]); ?>">
|
||||
<a class="inline mr20 mb15 block text-sm" href="<?= url('website', ['id' => $link['item_id'],'slug' => $link['item_slug']]); ?>">
|
||||
<?= Img::website($link['item_domain'], 'thumbs', $link['item_title'], 'w-100 box-shadow'); ?>
|
||||
<?= $link['item_title']; ?>
|
||||
</a>
|
||||
|
@ -131,4 +131,4 @@
|
|||
</aside>
|
||||
</div>
|
||||
|
||||
<?= insert('/_block/share', ['title' => __('app.share_website'), 'url' => config('meta.url') . url('website', ['slug' => $item['item_domain']])]); ?>
|
||||
<?= insert('/_block/share', ['title' => __('app.share_website'), 'url' => config('meta.url') . url('website', ['id' => $item['item_id'], 'slug' => $item['item_slug']])]); ?>
|
|
@ -46,7 +46,7 @@ $sw = $sw ?? '?';
|
|||
<?= Img::website($result['item_domain'], 'favicon', $result['item_domain'], 'favicons mr5'); ?>
|
||||
<?= $result['item_domain']; ?>
|
||||
</span>
|
||||
<a class="gray-600 ml15" href="<?= url('website', ['slug' => $result['item_domain']]); ?>"><?= __('web.more'); ?></a>
|
||||
<a class="gray-600 ml15" href="<?= url('website', ['id' => $result['item_id'], 'slug' => $result['item_slug']]); ?>"><?= __('web.more'); ?></a>
|
||||
</div>
|
||||
<?= fragment($result['content'], 250); ?>
|
||||
<?php elseif ($type == 'answer') : ?>
|
||||
|
|
Loading…
Reference in a new issue