Страница 1 из 1

Composer

СообщениеДобавлено: 02 сен 2013, 02:07
sergio11ofpp
Добрый день.
Сделал Composer для юзеров... Что любой зарегестрированный смог добавить Статью.
Всё работает но проблема вот в чём:
Когда в Composere Юзер пытается выбрать Parent Page Пишет что Нет доступа.
Тогда я в Sitemap Сделал права Юзерам что можно добовлять и Композер заработал
НО если Юзер теперь на этой странице нажимает EDIT он может добавить страницу отуда.
Вопрос можно как нибудь это обойти?
То есть разрешить добавление страниц только через Composer??Чтоб не было Add Page.

Re: Composer

СообщениеДобавлено: 02 сен 2013, 19:35
Count_Raven
Я бы сделал юзерам вообще свой интерфейс.
Т.е. написал бы им собственный Composer.
Код, если лень заморачиваться, то уже есть - все тот же Composer.
Дел, думаю, часа на 2.

А в вашем случае, боюсь, не получится без "Add Page". Если, конечно, я все правильно понимаю из вашего сообщения.
Либо (что больше заморочек добавляет, на мой взгляд, чем свой интерфейс), перегрузите controllers, views и elements своими. Т.е. делайте проверку, и определенным юзверям (ну группе юзверей) показывайте кнопку, другим не показывайте.

Re: Composer

СообщениеДобавлено: 02 сен 2013, 20:34
sergio11ofpp
ммм думаю вы правы да и давать все заходи в Dashboard тоже не хочется...
Я уже писал подобное вот пример
Код: Выделить всё
        $p_name = 'new page'
        $handle = str_replace(' ', '_', $p_name);
        $dt = Loader::helper('form/date_time'); //current date
   $ct = CollectionType::getByHandle('Products'); // page type
   // array of data
   $data = array();
   $data['uID'] = 1;
   $data['pkgID'] = 0;
        $data['cName'] = $p_name;
        $data['cHandle'] = $handle; /url
        $data['cDatePublic'] = $dt->translate('cDatePublic');

$page  = Page::getByPath('/home'); // под чем добавить Parent Page
$newpage = $page->add($ct, $data);
если нужны аттрибуты
$newpage->setAttribute('city', $city);


Я в правельном направлении :):):)

Re: Composer

СообщениеДобавлено: 02 сен 2013, 20:46
sergio11ofpp
Таким способо я делаю страницу и присваиваю к юзера там длаее можно создать pagelist чтоб юзер просматривал Добавленные страницы.. я так думаю...
Потом надо будет какнить пририлить голосование только раз в 24 часа юзерам...
Я просто создаю вот это:
извините за ссылку удалите если нарушаю правила
Пожалуйста зарегистрируйтесь, чтобы увидеть ссылку

Там стоит Cncat Вообще не нравится мне Concrete5 роднее как то на работе только с ней и работаем...
Вот думаю запилить каталог на Concrete5 тут проба лежит cs.cheaterov.net

Re: Composer

СообщениеДобавлено: 02 сен 2013, 21:34
Count_Raven
Ссылки на работы на Concrete5 мы только приветствуем =)

Голосование - это просто. Есть встроенное, есть еще у меня один бесплатный не до конца дописанный модулец (там еще доделать надо, а то в голосовании с множеством ответов счетчик считает каждый выбранный вариант за голос, все руки не доходят поправить).

Каталог можно делать на базе страниц. Т.е. каждый товар/элемент в каталоге, это страница. А PageList уже практически позволяет отображать список элементов каталога. Остается допилить под себя и сделать модифицированный PageList - вот вам и каталог. Все эти вещи обычно час-два работы. Можно пачками штамповать модификации, основываясь на стандартных объектах системы. Либо создавать (я как раз страницы не пользую за объекты, я свои модели делаю) на базе DatabaseItemList списки объектов, модели для объектов можете взять к примеру от той же Collection или File и для их list'ов также. Имею ввиду чтобы посмотреть их стандартное устройство. Все стандартное окружение уже готово. Кэширование вывода очень простое и удобное тоже уже предусмотрено. Все есть готовое в системе.

Re: Composer

СообщениеДобавлено: 02 сен 2013, 23:47
sergio11ofpp
Да я так и хотел на основе Страниц
То есть страница - продукт со своими аттрибутами.

Ну 2 часа для вас )) я медленно всё делаю))))

В общем сделал так создал Single Page и закрыл доступ на неё просматривать могут только зарегестрированные.
Щас добавлю туда форму добавление страницы с атрибутамы
Единственно не смогу сделать загрузку файла.(Но это потом)

Re: Composer

СообщениеДобавлено: 03 сен 2013, 12:57
Count_Raven
А что с загрузкой файлов не так?

Re: Composer

СообщениеДобавлено: 03 сен 2013, 13:13
sergio11ofpp
Не пойму как совместить выше написанное с File managerom И чтоб загруженный файл сразу присваивался атрибутом к созданной странице.

Re: Composer

СообщениеДобавлено: 03 сен 2013, 13:21
Count_Raven
Ну, в Concrete5 есть же тип атрибута Image/File.
Что касается доступа к File Manager для всех, то я бы так не делал.
По мне это видится так (если, конечно, я правильно понимаю идею):
Пользователь закачивает файл. Файл автоматически добавляется в Набор (Группу/File Set, кто как называет в разных переводах) с именем к примеру Files of User [ТУТ ID ПОЛЬЗОВАТЕЛЯ, т.е. $u->getUserID()]. Т.е. у каждого пользователя его файлы хранятся в личном наборе. И сделать маленький менеджер файлов, где пользователь сможет управлять только своими файлами.

Re: Composer

СообщениеДобавлено: 03 сен 2013, 13:24
sergio11ofpp
То есть не давать доступ к File Manager а если нет доступа как загружать файлы будут?

Re: Composer

СообщениеДобавлено: 03 сен 2013, 13:59
Count_Raven
Ну вы предоставите пользователю форму для загрузки файла и обработаете полученный файл как надо. PHP-то пофигу, у него везде будет доступ ко всему, чему угодно. Доступ заключается лишь в том, что пользователь не будет иметь доступа к менеджеру файлов. Это же внутренний пользователь Concrete5, он же к системе сервера никакого отношения не имеет. На PHP вы можете творить что хотите и беспределить и никто вам это не запретит.

Re: Composer

СообщениеДобавлено: 03 сен 2013, 14:01
sergio11ofpp
Ясно вечером когда форму буду делать попробую..)) Спасибо.