D

d0th

+52
Репутация
0
Рейтинг
#1 Переделка FAQ в instantcms 1.8 15 августа 2012 в 11:28


RooKee, Я так понял, что автор темы взял за основу компонент FAQ и пишет свой.

WALTERZ

Кажется до меня дошло. Проконтролируйте меня пожалуйста.

1. В файле model.php добавляю в конец:
  1. public function isUserHappyAuthor($happy_id, $happy_user_id){
  2. $inUser = cmsUser::getInstance();
  3. $is_my_happy = ($happy_user_id == $inUser->id) ? true : false;
  4. return ($is_my_happy) ? true : false;
  5. }
2. в файле frontend.php вношу следующие дополнения:

в участке кода
  1. ///////////////////////////////////// READ QUESTION ////////////////////////////////////////////////////////////////////////////////
  2. if ($do=='read'){
добавляю
  1. $smarty->assign('is_user', $inUser->id);
  2. $smarty->assign('myhappy', $model->isUserHappyAuthor($quest['id'], $quest['user_id']));
далее в участке кода
  1. ///////////////////////////////////// DELETE QUEST ////////////////////////////////////////////////////////////////////////////////
  2.  
  3. if ($do=='delquest'){
где переменной $sql присваивается запрос добавляю колонку
$sql = "SELECT con.id, con.user_id, con.quest, con.category_id
FROM cms_happy_quests con
WHERE con.id = '$quest_id' LIMIT 1";

и далее изменяю условия при удалении
  1. if ($inCore->$user_id || $myhappy){
получается вот так
  1. if ($inCore->$user_id || $myhappy){
  2. $inPage->setTitle($_LANG['DEL_QUES']);
  3. $inPage->addPathway($_LANG['DEL_QUES']);
  4. $inPage->backButton(false);
  5. $confirm['title'] = $_LANG['DELETE_QUES'];
  6. $confirm['text'] = $_LANG['YOU_REALY_DELETE_QUES'].':<br> "<a href="/happy/quest'.$quest['id'].'.html">'.$quest['quest'].'</a>"<br><br>';
  7. $confirm['action'] = $_SERVER['REQUEST_URI'];
  8. $confirm['yes_button'] = array();
  9. $confirm['yes_button']['type'] = 'submit';
  10. $confirm['yes_button']['name'] = 'confirm';
  11. $smarty = $inCore->initSmarty('components', 'action_confirm.tpl');
  12. $smarty->assign('confirm', $confirm);
  13. $smarty->display('action_confirm.tpl');
  14. } else {
  15. $inCore->redirectBack();
  16. }
  17. }
  18. if ( $inCore->inRequest('confirm') ){
  19.  
  20.  
  21. if ($inCore->$user_id || $myhappy){
  22.  
  23. $model->deleteQuest($quest_id);
  24. }
  25. $inCore->redirect('/happy');
  26. }
  27.  
  28. }

3. В tpl файле условие

  1. {if ($myhappy && $is_user) || $is_admin}<a href="/happy/delquest{$quest.id}.html">
  2.  
  3. [удалить]</a>{/if}
Будут ли корректными такие изменения или это криворукое убожество? Хотя всё работает.
#2 Переделка FAQ в instantcms 1.8 15 августа 2012 в 06:13


RooKee, Я так понял, что автор темы взял за основу компонент FAQ и пишет свой.

WALTERZ

Вы правы. Итак, что я сделал.

в файле model.php добавил:
  1. public function isUserHappyAuthor($happy_id, $happy_user_id){
  2. $inUser = cmsUser::getInstance();
  3. $is_my_happy = ($happy_user_id == $inUser->id) ? true : false;
  4. return ($is_my_happy) ? true : false;
  5. }
в файле frontend.php добавил:
  1. if ($owner=='user'){
  2. $myhappy = $model->isUserHappyAuthor($quest['id'], $quest['user_id']);
  3. $is_admin = $inUser->is_admin;
  4. }

в файле com_happy_red.tpl поставил условие на отображение кнопки удалить:
  1. {if $myhappy || $is_admin}<a href="/happy/delquest{$quest.id}.html"> [удалить]</a>{/if}
но кнопка удалить не появилась, где-то косяк, можете подсказать?
#3 Переделка FAQ в instantcms 1.8 14 августа 2012 в 04:49

Есть опенсорс скрипт www.question2answer.org/, есть АПИ для интеграции, возможно будет проще интегрировать его, чем перепиливать встроенный.

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

d0th, В бд вноситься кто создал? Ставили условие на идентичность ID создавшего и ID авторизованного пользователя?.. В любом случае нужно код смотреть.

WALTERZ
В базе в user_id заносится id пользователя, который создал этот вопрос. В данный момент на кнопку удалить стоит следующее условие:
  1. {if $is_admin}<a href="/happy/delquest{$quest.id}.html"> [удалить]</a>{/if}
какое условие ставили вы?

И еще наверное нужно добавить условие в функции удаления, та которая во frontend.php? У меня она сейчас выглядит так:
  1. ///////////////////////////////////// DELETE QUEST ////////////////////////////////////////////////////////////////////////////////
  2.  
  3. if ($do=='delquest'){
  4.  
  5. $quest_id = $inCore->request('quest_id', 'int', 0);
  6. $user_id = $inUser->id;
  7.  
  8. $sql = "SELECT con.id, con.quest, con.category_id
  9. FROM cms_happy_quests con
  10. WHERE con.id = '$quest_id' LIMIT 1";
  11.  
  12. $result = $inDB->query($sql);
  13. $quest = $inDB->fetch_assoc($result);
  14.  
  15. if (!$user_id || !$quest_id || !$quest) { $inCore->redirectBack(); }
  16.  
  17. if ( !$inCore->inRequest('confirm') ) {
  18.  
  19. if ($inCore->$user_id){
  20. $inPage->setTitle($_LANG['DEL_QUES']);
  21. $inPage->addPathway($_LANG['DEL_QUES']);
  22. $inPage->backButton(false);
  23. $confirm['title'] = $_LANG['DELETE_QUES'];
  24. $confirm['text'] = $_LANG['YOU_REALY_DELETE_QUES'].':<br> "<a href="/happy/quest'.$quest['id'].'.html">'.$quest['quest'].'</a>"<br><br>';
  25. $confirm['action'] = $_SERVER['REQUEST_URI'];
  26. $confirm['yes_button'] = array();
  27. $confirm['yes_button']['type'] = 'submit';
  28. $confirm['yes_button']['name'] = 'confirm';
  29. $smarty = $inCore->initSmarty('components', 'action_confirm.tpl');
  30. $smarty->assign('confirm', $confirm);
  31. $smarty->display('action_confirm.tpl');
  32. } else {
  33. $inCore->redirectBack();
  34. }
  35. }
  36. if ( $inCore->inRequest('confirm') ){
  37. if ($inCore->$user_id){
  38. $model->deleteQuest($quest_id);
  39. }
  40. $inCore->redirect('/happy');
  41. }
  42. }
#1 Переделка FAQ в instantcms 1.8 13 августа 2012 в 12:32
Здравствуйте. Переделываю компонент FAQ. Столкнулся с проблемой. Вопрос может создать любой пользователь, но удалять и редактировать может только админ. Сколько бился не могу понять какие условия нужно ставить и в каких участках кода чтобы каждый пользователь мог изменять и удалять свой вопрос. Буду очень благодарен за любую информацию.
#5 [ЕСТЬ РЕШЕНИЕ] Отображение формы для написания комментария при загрузке страницы 15 апреля 2012 в 19:01
проблема решена
#1 [ЕСТЬ РЕШЕНИЕ] Отображение формы для написания комментария при загрузке страницы 14 апреля 2012 в 14:25
Всем доброго дня. Сейчас форма комментария появляется при нажатии на ссылку "Добавить комментарий". Подскажите как сделать чтобы форма грузилась при загрузки страницы? Или как можно организовать "автоматическое нажатие" после загрузки страницы?
#7 проблема с отображением компонента Календарь 0.3.0 21 декабря 2011 в 17:12
блин, чувствую себя тупым…
#8 проблема с отображением компонента Календарь 0.3.0 21 декабря 2011 в 14:58
Madmax, огромное спасибо, буду разбираться.
#9 проблема с отображением компонента Календарь 0.3.0 21 декабря 2011 в 14:44
Спасибо за дельный совет, вообще смотрел уже, только с помощью хрома. всегда пользуюсь. Просто вроде и там по стилям косяков нет… буду дальше искать.
#10 проблема с отображением компонента Календарь 0.3.0 21 декабря 2011 в 13:13
ну направьте хоть… а то вообще не могу разобраться
#1 проблема с отображением компонента Календарь 0.3.0 20 декабря 2011 в 08:59
Здравствуйте. Собственно есть сайт, на котором установлен данный компонент aban-grad.ru/calendar. Что только не пробовал, но календарь отображается неправильно.
проблема два. Если перейти к событию нажав на него, то левое меню вообще съезжает вниз.

Подскажите куда копать.
#12 Уменьшились размеры изображений слайдшоу при выводе в модуле 12 декабря 2011 в 16:48
Sergey Platonov
спасибо. Начал проверять оказалось с размерами прокосячил:)

Алфей
а ты module_slider.tpl в /templates/шаблон/modules скопировал?
и нужно нажать установка модуля еще
#1 Уменьшились размеры изображений слайдшоу при выводе в модуле 12 декабря 2011 в 04:26
Здравствуйте. Задумал организовать вывод слайдшоу с помощью модуля (создал модуль по инструкции) Вроде все хорошо, НО размеры фото слайд шоу автоматически уменьшились, на смотря на то что в скриптах слайд шоу явно прописан один размер, при выводе получается уменьшенный. (Я планировал полностью до границ модуля, а остаются пробелы слева и справа). Уже все перепробовал. Что можно сделать? адрес сайта aban.nsk0.ru
ну и сам МОДУЛЬ, может кому пригодится

С уважением Михаил.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.