Создаем кнопку "Начислять рейтинг" 2.X

Это кнопка Начислять рейтинг в профиле пользователя

 
Посетитель
small user social cms
Сообщений: 54
Evanescence:
Итак создаем папку exemple в /system/controllers

Внутри папки /system/controllers/exemple создаем папку hooks

Внутри hooks создаем файл user_profile_buttons.php (кодировка UTF-8)

Код PHP:
  1. <?php
  2. class onExempleUserProfileButtons extends cmsAction { function run($data) { $user = cmsUser::getInstance(); if (!$user->is_admin) {return $data;} $data['buttons'][] = array('title' => 'Начислять рейтинг', 'class' => 'ajax_modal add', 'href' => href_to($this->name, 'rating', $data['profile']['id'])); return $data; }
  3. }
Тут в начале определяем класс onExempleUserProfileButtons - более подробно можете узнать в документация инстанта или в видеоуроках.

В строке 3 получаем данные в массиве $data

В строке 4 создаем объект юзера со всеми данными.

Строка 5 проверяем, если юзер не админ но передаем данные без изменения

Далее создаем кнопку Начислять рейтинг с классом add и с url /exemple/rating/{id} и передаем данные дальше.

Теперь нам надо создать файл manifest.php

<?php return array( 'hooks' => array( 'user_profile_buttons', ) );
В результате в профиле пользователя, появиться кнопка Начислять рейтинг (видит админ)
Создаем кнопку \"Начислять рейтинг\"



При нажатии мы попадаем на несуществующую страницу, которую надо создать

Создаем файл \system\controllers\exemple\frontend.php (кодировка UTF-8)


Код PHP:
  1. <?php
  2. class exemple extends cmsFrontend { public function actionRating($id = FALSE) { if(!is_numeric($id) || !$id) cmsCore::error404(); if($this->cms_user->is_admin) { $form = $this->getForm('rating_add'); $is_submitted = $this->request->get('submit'); $errors = false; if($is_submitted){ $rating = $form->parse($this->request, $is_submitted); $errors = $form->validate($this, $rating); if($errors) { cmsUser::addSessionMessage('Ошибки в форме', 'error'); } else { $rating_id = $this->model->filterEqual('id', $id)->increment('cms_users', 'rating', $rating['count']); if($rating_id){ cmsUser::addSessionMessage('Рейтинг успешно изменен.', 'success'); } $this->redirect('/users/'.$id); } } $this->cms_template->render('rating_add', array( 'form' => $form, 'rating' => isset($rating) ? $rating : false, 'errors' => isset($errors) ? $errors : false )); } }
  3. }
Здесь я не буду объяснять работу Формы (можете прочесть в документации на Офф сайте) я лишь расскажу что делает код когда получает данные из формы.

В строке 15 мы обновляем поле rating в таблице cms_users

$rating_id = $this->model->filterEqual('id', $id)->increment('cms_users', 'rating', $rating['count']);

Если запрос вернул TRUE выводим сообщение "Рейтинг успешно изменен!!!" и перенаправляемся на страницу данного пользователя.

Теперь нам надо создать форму и шаблона для вывода формы.

Создаем файл \system\controllers\exemple\forms\form_rating_add.php

Код PHP:
  1. <?php
  2. class formExempleRatingadd extends cmsForm { public function init() { return array( array( 'type' => 'fieldset', 'childs' => array( new fieldNumber('count', array( 'title' => 'Количество рейтингов', 'rules' => array( array('required') ) )) ) ) ); }
  3. }
И создаем шаблон для вывода формы

Создаем файл \templates\default\controllers\exemple\rating_add.tpl.php (UTF-8)

Код PHP:
  1. <?php $this->addBreadcrumb(LANG_USERS, '/users'); $this->addBreadcrumb('Начислять рейтинг'); $this->setPageTitle('Начислять рейтинг');
  2. ?>
  3. <h1>Начислять рейтинг</h1>
  4. <?php
  5. $this->renderForm($form, $rating, array( 'action' => '', 'method' => 'post', 'toolbar' => false
  6. ), $errors);
  7. ?>

Вопрос.
Нужна помощь с реализацией данной доработки на последней версии InstantCMS v2.14.2

Так как автор не может в данный момент помочь, поэтому я создал эту тему.
Все сделал по инструкции кнопка "начислить рейтинг" не появляется.

Ссылка на страницу автора темы.
Прикрепленные файлы:
hooksrating_1rad5.rar | 2.55 Кб | Скачали: 13
Посетитель
small user social cms
Почетный донор проектаМедаль
Сообщений: 149
Шадринец, дополнение «Накрутка» https://instantcms.ru/blogs/zapiski-dinozavra/nakrutka-reitinga-i-karmy-polzovateljam-kontentu-i-foto.html
(накрутка рейтинга и кармы пользователям, контенту и фото).
Реклама
cms
Посетитель
small user social cms
Сообщений: 54
Инна:

Шадринец, дополнение «Накрутка» https://instantcms.ru/blogs/zapiski-dinozavra/nakrutka-reitinga-i-karmy-polzovateljam-kontentu-i-foto.html
(накрутка рейтинга и кармы пользователям, контенту и фото).

Спасибо. Не видел этой темы. Сейчас попробую
Посетитель
small user social cms
Сообщений: 54
Спасибо за ответ. Все получилось.
В начало страницы
Предыдущая темаПерейти на форум: