CEH9I

CEH9I

+20
Репутация
249
Рейтинг
#1 Помогите подредактировать profile_view.tpl.php 5 августа 2021 в 12:37

Я так понял у вас проблема в том, что все видят появляющийся блок на аватарке «Редактировать профиль» даже если они зашли на чужой профиль. Сам столкнулся с таким косяком и вот решение. в файле \templates\«ваш шаблон»\controllers\users\profile_view.tpl.php

Ваш код 

  1. <?php $user = cmsUser::getInstance(); ?> <?php if (cmsCore::getInstance()->uri_action == $user->id){ ?>
  2.  
  3. <div class=&laquo;avatar-update&raquo;>
  4.  
  5. <a href="<?php echo href_to('users', $profile['id'], 'edit'); ?>">Редактировать профиль</a>
  6.  
  7. </div>

 Меняем на этот

  1. <?php if ($profile['id'] == $user->id) { ?>
  2. <div class="avatar-update">
  3. <a href="<?php echo href_to('users' , $profile['id'] , 'edit'); ?>">Редактировать профиль</a>
  4. </div>
  5. <?php } ?>

 

И все, теперь этот блок будет видеть человек  только  при просмотре своего профиля.

#2 Ищется программист хорошо знающий биллинг R2 для доработки 3 августа 2021 в 21:16

в июле обещали крупное обновление биллинга

CEH9I

Так вроде уже август к концу стремится 😀. Июль какого года — не уточняли?

Loadырь

Меня конечно может глюкнуло в плане года, но то что какое то крупное обновление в июле точно где то видал что обещали. Если найду скину ссылку. 

Добавлено спустя 4 часа

Нет не глюкнуло. Только именно про крупное обновление не нашел, но вроде как видел.

instantcms.ru/forum/strannosti-raboty-razdela-podpiski.html#post-342904

#3 Ищется программист хорошо знающий биллинг R2 для доработки 3 августа 2021 в 12:34

Лучше подождать немного с допиливинаем, вроде как в июле обещали крупное обновление биллинга, как бы потом не пришлось ещё что-то допиливать.

#4 Клонировать контент 29 июля 2021 в 11:57

 Def, плюсую, тоже не помешало бы.

#5 Переезд сайта (первый пост на новом сайте) 29 июля 2021 в 11:53

 bizzon111, дак тут и написали что награды удаляются, а контент не удаляется.

#6 Вопрос по "Фотоальбому" и "Массовой рассылке" 29 июля 2021 в 11:05

 bizzon111, пока нет.

#7 Вопрос по "Фотоальбому" и "Массовой рассылке" 28 июля 2021 в 15:34

Первая.

CEH9I

Гляньте на вкладке «Доступ» компонента -> cкачивание пресетов. Возможно, не всем доступны соответствующие

Олег Васильевич я

Благодарю, никогда бы не догадался что дело в этом, тем более что у меня возможность скачивания вообще была отключена, а запреты стояли, видимо поставил давно по ошибке и забыл… в общем первая проблема решена. А вот вторая остаётся актуальной..

#8 Переезд сайта (первый пост на новом сайте) 28 июля 2021 в 11:13

При использовании спойлера, не получается перейти на новую строку.

 

#1 Вопрос по "Фотоальбому" и "Массовой рассылке" 28 июля 2021 в 11:01

Всем привет. Столкнулся с двумя проблемами.

Первая. При полноэкранном просмотре изображение из компонента «Фотоальбома» определённые группы пользователей и админ видят изображение во весь экран, а все остальные пользователи других групп видят не на весь экран изображение.

Изображение

 

 

Изображение

 

Сравнивал права, выставлял такие же и ничего не поменялось… Куда копать не понятно.

 

Вторая проблема связана с уведомлениями при массовой рассылке в ЛС. Если просто пишешь в ЛС, то уведомления приходят, написал 3 сообщения, то на почту пришло 3 уведомления. А при массовой рассылке вообще не приходит если использовать компонент из коробки хотя раньше все приходило отлично. Если использовать массовую рассылку в компоненте «NeoMessenger», то там все ещё интереснее. Я связался с разработчиком и объяснил проблему, он мне прислал код который нужно заменить в файле ...system\controllers\neomessenger\backend\actions\mass_mailing.php, я заменил, уведомления стали отсылаться, но очень выборочно, на что мне предложили закомментировать 61 и 63 строку. 

  1. <?php
  2.  
  3. class actionNeomessengerMassMailing extends cmsAction {
  4.  
  5. public function run() {
  6.  
  7. $user = cmsUser::getInstance();
  8. $users_model = cmsCore::getModel('users');
  9. $messenger = cmsCore::getController('messages');
  10.  
  11. $form = $this->getForm('mass_mailing');
  12.  
  13. // Форма отправлена?
  14. $is_submitted = $this->request->has('submit');
  15.  
  16. // Парсим форму и получаем поля
  17. $mailing = $form->parse($this->request, $is_submitted);
  18.  
  19. if ($is_submitted) {
  20.  
  21. // Проверям правильность заполнения
  22. $errors = $form->validate($this, $mailing);
  23.  
  24. if (!$errors) {
  25.  
  26. $content_html = cmsEventsManager::hook('html_filter', $mailing['message_text']);
  27.  
  28. if (!$content_html) {
  29. $errors = array('message_text' => LANG_VALIDATE_REQUIRED);
  30. }
  31.  
  32. if (!$errors) {
  33.  
  34. $filters = $this->request->get('filters', array());
  35.  
  36. $users_model->resetFilters()->applyDatasetFilters(array('filters' => $filters));
  37. $users_model->filterNotEqual('id', $user->id);
  38.  
  39. if ($mailing['groups'] && $mailing['groups'][0] > 0) {
  40. $users_model->filterGroups($mailing['groups']);
  41. }
  42.  
  43. $recipients = $users_model->getUsersIds();
  44.  
  45. if ($recipients) {
  46.  
  47. $messenger->addRecipients(array_keys($recipients));
  48. $messenger->setSender($user->id);
  49.  
  50. if ($mailing['send_type'] === 'message') {
  51.  
  52. $messages_ids = $messenger->sendMessage($content_html);
  53. $count = is_array($messages_ids) ? count($messages_ids) : ($messages_ids ? 1 : 0);
  54.  
  55. if ($count) {
  56.  
  57. $messenger->clearRecipients();
  58.  
  59. foreach ($recipients as $user_id) {
  60.  
  61. if ($this->model->getNewMessagesCount($user_id) == 1) {
  62. $messenger->addRecipient($user_id);
  63. }
  64.  
  65. $messenger->sendNoticeEmail('messages_new', array(
  66. 'user_url' => href_to_profile($user, false, true),
  67. 'user_nickname' => $user->nickname,
  68. 'message' => strip_tags($mailing['message_text'])
  69. ));
  70.  
  71. }
  72. }
  73.  
  74. cmsUser::addSessionMessage(LANG_NEOMESSENGER_CP_SENDED .' '. html_spellcount($count, LANG_NEOMESSENGER_CP_MESSAGES_SPELLCOUNT), 'success');
  75.  
  76. }
  77.  
  78. if ($mailing['send_type'] === 'notify') {
  79.  
  80. $notices_ids = $messenger->sendNoticePM(array(
  81. 'content' => $content_html
  82. ));
  83.  
  84. $count = $notices_ids ? count($notices_ids) : 0;
  85.  
  86. cmsUser::addSessionMessage(LANG_NEOMESSENGER_CP_SENDED .' '. html_spellcount($count, LANG_NEOMESSENGER_CP_NOTICES_SPELLCOUNT), 'success');
  87.  
  88. }
  89.  
  90. if ($mailing['send_type'] === 'email') {
  91.  
  92. $success = $messenger->sendNoticeEmail('notice', array(
  93. 'content' => $content_html
  94. ));
  95.  
  96. if ($success) {
  97. cmsUser::addSessionMessage(LANG_NEOMESSENGER_CP_SENDED, 'success');
  98. }
  99.  
  100. }
  101.  
  102. $mailing['message_text'] = '';
  103.  
  104. }
  105.  
  106. if (!$recipients) {
  107.  
  108. cmsUser::addSessionMessage(LANG_NEOMESSENGER_CP_NOT_RECIPIENTS, 'info');
  109.  
  110. }
  111.  
  112. }
  113.  
  114. }
  115.  
  116. if ($errors) {
  117.  
  118. cmsUser::addSessionMessage(LANG_FORM_ERRORS, 'error');
  119.  
  120. }
  121.  
  122. }
  123.  
  124. $filterForm = cmsTemplate::getInstance()->render('backend/users_filter', array(
  125. 'fields' => $this->getUserFields()
  126. ));
  127.  
  128. return cmsTemplate::getInstance()->render('backend/mass_mailing', array(
  129. 'mailing' => $mailing,
  130. 'form' => $form,
  131. 'filter' => $filterForm,
  132. 'errors' => isset($errors) ? $errors : false
  133. ));
  134.  
  135. }
  136.  
  137. private function getUserFields() {
  138.  
  139. $fields = cmsCore::getModel('content')->setTablePrefix('')->getContentFields('cms_users');
  140.  
  141. $fields[] = array(
  142. 'title' => LANG_RATING,
  143. 'name' => 'rating',
  144. 'handler' => new fieldNumber('rating')
  145. );
  146.  
  147. $fields[] = array(
  148. 'title' => LANG_KARMA,
  149. 'name' => 'karma',
  150. 'handler' => new fieldNumber('karma')
  151. );
  152.  
  153. return $fields;
  154.  
  155. }
  156.  
  157. }

  

 

  Я сделал и уведомления стали отправляется, но они стали дублироваться причем очень сильно. Пользователи сайта наверное меня прокляли. Потому что пришло около пол сотни уведомлений каждому. 

 

Изображение

 

 

 

Я убрал комментирование с 61, 63 строки и заметил что при прочитке всех сообщений на 4 тестовых учетках и отправки сообщений в массовой рассылке отправляются 4 уведомления, но все 4 уходят на одну и ту же почту. Подскажите куда копать… В консоли ошибок нет.

 

ИзображениеИзображение

 

 
ИзображениеИзображение

 

 

#9 Переезд сайта (первый пост на новом сайте) 22 июля 2021 в 09:27

Исправил, проверьте

Fuze

Да все хорошо.

#10 Компонент "Виджеты-помощники" 21 июля 2021 в 23:52

Википедия какая-то)) но идея интересная

#11 Переезд сайта (первый пост на новом сайте) 21 июля 2021 в 23:50

 Fuze, если диалог с пользователем уже был то да, а если не было диалога с новым пользователем то открывается только со второго раза. Можете проверить.

Добавлено спустя 1 минуту

 Fuze,  при переходе в профиль и нажатии «Написать в ЛС» такое окно выскакивает и все. С мобильного.

Изображение

CEH9I

Вы на фото? 

2U

Ахахаахах, нет.

#12 Переезд сайта (первый пост на новом сайте) 21 июля 2021 в 15:51

 Fuze,  при переходе в профиль и нажатии «Написать в ЛС» такое окно выскакивает и все. С мобильного.

Изображение

#13 [ЕСТЬ РЕШЕНИЕ] Тестирование компонента Форум - продолжение 20 июля 2021 в 23:39

Скачать почти последнюю версию форума можно в прикрепленном файле, но там нет шаблона модерн. И ещё много чего пока нет, того, что есть на этом форуме 😁

Loadырь

Ждём с нетерпением билд актуального форума с модерном ))

#14 [ЕСТЬ РЕШЕНИЕ] Уведомление и публикация в ленту истории репутации 16 июля 2021 в 14:13

Есть такой хук github.com/instantsoft/icms2/blob/master/system/controllers/users/actions/karma_vote.php#L58, если умеете писать код, то можете им воспользоваться, если нет, то либо начать изучение данного вопроса, либо искать того, кто вам его напишет. Галочками в админке этого не сделать.

Loadырь

Благодарю, с горем пополам справился. Благо компонент был от Ris'a для накрутки кармы, по его аналогии сделал. 

 

Кому нужно оставляю свой «горе код», но рабочий.

...\system\controllers\users\actions\karma_vote.php

  1. <?php
  2.  
  3. class actionUsersKarmaVote extends cmsAction {
  4.  
  5. public function run($profile_id) {
  6.  
  7. if (!$this->cms_user->is_logged) {
  8. return cmsCore::error404();
  9. }
  10.  
  11. if (!$this->request->isAjax()) {
  12. return cmsCore::error404();
  13. }
  14.  
  15. $direction = $this->request->get('direction', '');
  16. $comment = $this->request->get('comment', '');
  17.  
  18. //
  19. // Проверяем валидность
  20. //
  21. $is_valid = cmsUser::isAllowed('users', 'vote_karma') &&
  22. is_numeric($profile_id) &&
  23. $this->cms_user->id != $profile_id &&
  24. in_array($direction, array('up', 'down')) &&
  25. (!$this->options['is_karma_comments'] || $comment);
  26.  
  27. if (!$is_valid) {
  28. return $this->cms_template->renderJSON([
  29. 'error' => true,
  30. 'message' => LANG_ERROR
  31. ]);
  32. }
  33.  
  34. $profile = $this->model->getUser($profile_id);
  35.  
  36. if (!$profile || $profile['is_locked'] ||
  37. !$this->model->isUserCanVoteKarma($this->cms_user->id, $profile_id, $this->options['karma_time'])) {
  38. return $this->cms_template->renderJSON([
  39. 'error' => true,
  40. 'message' => LANG_ERROR
  41. ]);
  42. }
  43.  
  44. //
  45. // Сохраняем оценку
  46. //
  47. $vote = [
  48. 'user_id' => $this->cms_user->id,
  49. 'profile_id' => $profile_id,
  50. 'points' => $direction == 'up' ? 1 : -1,
  51. 'comment' => $comment
  52. ];
  53.  
  54. $user_ids = $this->cms_user->id;
  55. $user_voted = $this->cms_user->nickname;
  56. $user_voteds = "<a title=\"$user_voted\" href=\"/users/$user_ids\">$user_voted</a>";
  57. $vote_id = $this->model->addKarmaVote($vote);
  58.  
  59. $value = $profile['karma'] + $vote['points'];
  60.  
  61. cmsEventsManager::hook('users_karma_vote', [
  62. 'profile' => $profile,
  63. 'vote' => $vote
  64. ]);
  65. $points = $vote['points'];
  66. if ($points > 0){
  67. $mess = $user_voteds . ' ' . 'оставил Вам <div class="positive_otz">ПОЛОЖИТЕЛЬНЫЙ</div> отзыв' . ' ' . 'с комментарием:' . '<blockquote class="otziv"> ' .$comment . '</blockquote> ' . 'НЕ ЗАБУДЬТЕ ЕГО ОТБЛАГОДАРИТЬ';}
  68. else
  69. {$mess = $user_voteds . ' ' . 'оставил Вам <div class="negative_otz">НЕГАТИВНЫЙ</div> отзыв' . ' ' . 'с комментарием' . '<blockquote class="otziv"> ' .$comment . '</blockquote> ';}
  70. if ($points != 0){
  71. $item = array(
  72. 'user_id' => $this->cms_user->id,
  73. 'points' => $points,
  74. 'comment' => $mess
  75. );
  76. cmsCore::getModel('users')->addKarmaVote($item);
  77.  
  78.  
  79. $messenger = cmsCore::getController('messages');
  80.  
  81. $messenger->addRecipient($profile);
  82.  
  83. $messenger->sendNoticePM(array(
  84. 'content' => $mess,
  85. 'actions' => array(
  86. 'view' => array(
  87. 'title' => 'Посмотреть отзыв',
  88. 'href' => href_to('users', $profile_id, 'karma')
  89. )
  90. )
  91. ));
  92. }
  93.  
  94. return $this->cms_template->renderJSON([
  95. 'error' => $vote_id ? false : true,
  96. 'value' => html_signed_num($value),
  97. 'css_class' => html_signed_class($value)
  98. ]);
  99.  
  100. }
  101.  
  102.  
  103. }
  104.  
  105. ?>
  106.  

 

Добавляем в ваш файл со стилями CSS

  1. .positive_otz {
  2. font-weight: 900;
  3. color: green;
  4. cursor: default;
  5. display: contents;
  6. }
  7. .negative_otz {
  8. font-weight: 900;
  9. color: red;
  10. cursor: default;
  11. display: contents;
  12. }
  13. .otziv {
  14. text-overflow: ellipsis;
  15. width: 100%;
  16. white-space: nowrap;
  17. overflow: hidden;
  18. }

 

Демонстрация:

🍪Мы используем файлы cookie для работы сайта. Читать подробнее.