не могу опубликовать ни одну страницу в режиме редактирования

Не могли бы вы рассказать мне, как публиковать страницы после нажатия кнопки редактирования (левое верхнее меню) в режиме cocrete5 cms версии 5.8.1.0 без использования кнопки создания? Я не могу опубликовать какую-либо страницу, нажав кнопку редактирования в верхнем левом углу, отредактировав ее и снова нажав кнопку редактирования. Кнопка «Опубликовать изменения» отключена, и появляется сообщение: «Обязательное поле Миниатюра страницы». Но я могу опубликовать, используя меню создания (рядом с редактированием в левом верхнем углу). В чем причина этой проблемы? Это конкретная ошибка?

Похоже, это позволяет публиковать, если я закомментирую строки в проверке метода публикации. Но я все еще не могу понять причину проблемы и как ее исправить.

class CheckIn extends BackendInterfacePageController
{
    protected $viewPath = '/panels/page/check_in';
    // we need this extra because this controller gets called by another page
    // and that page needs to know how to submit it.
    protected $controllerActionPath = '/ccm/system/panels/page/check_in';

    public function canAccess()
    {
        return $this->permissions->canApprovePageVersions() || $this->permissions->canEditPageContents();
    }

    public function on_start()
    {
        parent::on_start();
        if ($this->page) {
            $v = CollectionVersion::get($this->page, "RECENT");

            $this->set('publishDate', $v->getPublishDate());
            $this->set('publishErrors', $this->checkForPublishing());
        }
    }

    protected function checkForPublishing()
    {
        $c = $this->page;
        // verify this page type has all the items necessary to be approved.
        $e = Loader::helper('validation/error');
        if ($c->isPageDraft()) {
            if (!$c->getPageDraftTargetParentPageID()) {
                $e->add(t('You haven\'t chosen where to publish this page.'));
            }
        }
        $pagetype = $c->getPageTypeObject();
//        if (is_object($pagetype)) {
//            $validator = $pagetype->getPageTypeValidatorObject();
//            $e->add($validator->validatePublishDraftRequest($c));
//        }

        if ($c->isPageDraft() && !$e->has()) {
            $targetParentID = $c->getPageDraftTargetParentPageID();
            if ($targetParentID) {
                $tp = Page::getByID($targetParentID, 'ACTIVE');
                $pp = new Permissions($tp);
                if (!is_object($tp) || $tp->isError()) {
                    $e->add(t('Invalid target page.'));
                } else {
                    if (!$pp->canAddSubCollection($pagetype)) {
                        $e->add(
                            t(
                                'You do not have permissions to add a page of this type in the selected location.'
                            )
                        );
                    }
                }
            }
        }

        return $e;
    }

person Oleg    schedule 09.06.2017    source источник


Ответы (2)


Ошибка говорит обо всем? 'Обязательное поле Миниатюра страницы'. Вы действительно добавили миниатюру? По сути, вы не можете отправить форму, не заполнив все обязательные поля.

Или вы все равно получили ошибку?

person moonshard    schedule 12.06.2017
comment
Насколько я могу судить, там миниатюра. Я не могу опубликовать какую-либо страницу в режиме редактирования, но могу опубликовать на странице композитора. - person Oleg; 13.06.2017

Я мог бы решить проблему переопределения файла:

<?php
namespace Application\Attribute\ImageFile;

use Loader;
use Core;

class Controller extends \Concrete\Attribute\ImageFile\Controller
{
    public function validateValue()
    {
        $f = $this->getAttributeValue()->getValue();

        if (is_object($f)) {
            return true;
        }

        $e = Core::make('helper/validation/error');
        $e->add(t('You must specify a valid file for %s', $this->attributeKey->getAttributeKeyDisplayName()));

        return $e;
    }
}
person Oleg    schedule 16.06.2017