PAV 0 Опубликовано: 8 декабря 2007 Рассказать Опубликовано: 8 декабря 2007 (изменено) Сразу скажу, что не знаю, насколько удачным получился, но всё же поделюсь.. Добавлю также, что писал для версии 6.3, насколько будут расхождения с предыдущими и последующими версиями движка - не могу знать.. ВАЖНО: Ставите на свой страх и риск, претензий в мой адрес не надо.. 1. Выполняем MySQL запрос: ALTER TABLE `dle_post` ADD `p_moderation` VARCHAR( 40 ) CHARACTER SET cp1251 COLLATE cp1251_general_ci NOT NULL , ADD `p_lasteditor` VARCHAR( 40 ) CHARACTER SET cp1251 COLLATE cp1251_general_ci NOT NULL; 2. Открываем engine/inc/massactions.php Ищем $db->query("UPDATE " . PREFIX . "_post SET {$field}='{$value}' WHERE id='{$id}'"); Заменяем на if ($field=="approve") $db->query("UPDATE " . PREFIX . "_post SET {$field}='{$value}', p_moderation='$member_db[2]' WHERE id='{$id}'"); else $db->query("UPDATE " . PREFIX . "_post SET {$field}='{$value}' WHERE id='{$id}'"); 3. Открываем engine/inc/editnews.php 3.1. Ищем все approve, fixed FROM Заменяем на approve, fixed, p_moderation, p_lasteditor FROM 3.2. Ищем $entries .= $erlaub; На сл. строке вставляем if ($row['p_moderation']!="") $tpmod="$lang[edit_pmod]<br /><a class=list href=\"?mod=editusers&action=list&search=yes&search_name=".$row['p_moderation']."\">".$row['p_moderation']."</a><br />"; else $tpmod=""; if ($row['p_lasteditor']!="") $tpled="$lang[edit_pled]<br /><a class=list href=\"?mod=editusers&action=list&search=yes&search_name=".$row['p_lasteditor']."\">".$row['p_lasteditor']."</a>"; else $tpled=""; $entries .= "<td class=\"list\">$tpmod$tpled"; 3.3. Ищем <td width=80 align="center">{$lang['edit_approve']} На сл. строке вставляем <td width=70 align="center">{$lang['edit_who']} 3.4. Ищем все <td colspan="6"><div Заменяем на <td colspan="7"><div 3.5. Ищем SELECT id, autor FROM Заменяем на SELECT id, autor, approve FROM 3.6. Ищем $item_db[1] = $row['autor']; На сл. строке вставляем $item_db[2] = $row['approve']; 3.7. Ищем $db->free(); На сл. строке вставляем $p_lasteditor=$member_db[2]; if ($approve || $item_db[2]!=$approve) $p_moderation=$member_db[2]; 3.8. Ищем все expires='$expires', symbol='$catalog_url' WHERE Заменяем на expires='$expires', symbol='$catalog_url', p_moderation='$p_moderation', p_lasteditor='$p_lasteditor' WHERE 4. Открываем engine/ajax/editnews.php Ищем все allow_br='$allow_br' where Заменяем на allow_br='$allow_br', p_lasteditor='$member_id[name]' where 5. Открываем language/Russian/adminpanel.lng Ищем 'edit_approve' На сл. строке вставляем 'edit_who' => " Кто? ", 'edit_pmod' => "Модерил:", 'edit_pled' => "Посл. редактор:", Удачи! Пользуйтесь, если пригодится.. Изменено 8 декабря 2007 пользователем PAV Цитата Ссылка на сообщение Поделиться на других сайтах
WMDrakon 20 Опубликовано: 8 декабря 2007 Рассказать Опубликовано: 8 декабря 2007 PAV, спасибо. Цитата Ссылка на сообщение Поделиться на других сайтах
lifestar 18 Опубликовано: 8 декабря 2007 Рассказать Опубликовано: 8 декабря 2007 PAV, молодец! ALTER TABLE `dle_post` ADD `p_moderation` VARCHAR( 40 )Вот только думается мне лучше хранить ID модератора в таблице новостей, а не его имя Цитата Ссылка на сообщение Поделиться на других сайтах
PAV 0 Опубликовано: 8 декабря 2007 Рассказать Опубликовано: 8 декабря 2007 (изменено) Автор Подправил пункты: 3.7 и 3.8 в 00:29 09.12.2007 (по Московскому времени), т.е.: 3.7. Ищем $db->free(); На сл. строке вставляем $p_lasteditor=$member_db[2]; $p_moderation=""; if (($approve && $item_db[2]!=$approve) || $item_db[2]!=$approve) $p_moderation=" p_moderation='$member_db[2]',"; 3.8. Ищем все expires='$expires', symbol='$catalog_url' WHERE Заменяем на expires='$expires', symbol='$catalog_url',$p_moderation p_lasteditor='$p_lasteditor' WHERE ALTER TABLE `dle_post` ADD `p_moderation` VARCHAR( 40 )Вот только думается мне лучше хранить ID модератора в таблице новостей, а не его имя Как Вы, себе, это представляете? 1. При выводе списка новостей, отображается имя редактора (тот, кто нажал кнопку Сохранить, при редактировании новости..), также отображается имя отмодерировавшего (тот, кто пропустил новость, или же запретил её).. Для того, чтобы не добавлять потом в код - запросов, для определения юзера по его ID, а это приличное кол. запросов, если новостей конечно много.. 2. Также имеются ссылки на пользователя, отредактировавшего или отмодерировавшего. А они как мы можем посмотреть из ссылки, происходит именно по имени "?mod=editusers&action=list&search=yes&search_name=" Изменено 8 декабря 2007 пользователем PAV Цитата Ссылка на сообщение Поделиться на других сайтах
PAV 0 Опубликовано: 9 декабря 2007 Рассказать Опубликовано: 9 декабря 2007 Автор Что-то я намудрил $p_lasteditor=$member_db[2]; $p_moderation=""; if ($item_db[2]!=$approve) $p_moderation=" p_moderation='$member_db[2]',"; И всё.. То есть, если значение approve, отличается от его же значения в БД, то сл. переменная, вписанная в SQL запрос - выполняется, а это значит, что наследуется новый или всё тотже отмодеривший новость (разрешил или запретил её показ.. P.S. болен. Возможно и сейчас ошибся, туговато соображаю.. Просьба, если возможно, подправить код в самой теме, а последующие посты удалить.. Цитата Ссылка на сообщение Поделиться на других сайтах
Greeze 0 Опубликовано: 9 декабря 2007 Рассказать Опубликовано: 9 декабря 2007 что-то я не пойму, что делает этот хак?.. дайте пожалуйста описание мода, если это возможно как выводить имя промодерировавшего в короткой новости?.. Цитата Ссылка на сообщение Поделиться на других сайтах
PAV 0 Опубликовано: 9 декабря 2007 Рассказать Опубликовано: 9 декабря 2007 Автор как выводить имя промодерировавшего в короткой новости?.. 1. Открываем engine/engine.php Ищем все строчки с $sql_select = Добавляем перед FROM , p_moderation 2. Открываем engine/modules/show.short.php Ищем $tpl->set('{short-story}' На пр. строчке вставляем if ($row['p_moderation']) { $tpl->set('{moderation}', stripslashes($row['p_moderation'])); $tpl->set('[moderation]', ''); $tpl->set('[/moderation]', ''); } else $tpl->set_block("'\\[moderation\\](.*?)\\[/moderation\\]'si",""); 3. Открываем templates/ваша_тема/shortstory.tpl В нужное, Вам, место вставляем [moderation]Отмодерировал: {moderation}[/moderation] P.S. Переменные можно назвать по своему.. Цитата Ссылка на сообщение Поделиться на других сайтах
lifestar 18 Опубликовано: 9 декабря 2007 Рассказать Опубликовано: 9 декабря 2007 PAV, вообще да, вы правы относительно имени модератора в новости. Просто я привык всегда по ID делат ьвыборки, а у вас их и нет по сути =) А вот касаемо записи if ($row['p_moderation']) { $tpl->set('{moderation}', stripslashes($row['p_moderation'])); $tpl->set('[moderation]', ''); $tpl->set('[/moderation]', ''); } else $tpl->set_block("'\\[moderation\\](.*?)\\[/moderation\\]'si",""); и[moderation]Отмодерировал: {moderation}[/moderation] Вот честное слово, к чему лишние строчки, когда можно написать и так:if ($row['p_moderation']) $tpl->set('{moderation}', 'Отмодерировал: '.stripslashes($row['p_moderation'])); else $tpl->set('{moderation}', '');А в шаблоне просто в нужное место вставить {moderation} Дело вкуса конечно Цитата Ссылка на сообщение Поделиться на других сайтах
PAV 0 Опубликовано: 10 декабря 2007 Рассказать Опубликовано: 10 декабря 2007 Автор А вот касаемо записи ... Вот честное слово, к чему лишние строчки, когда можно написать и так: if ($row['p_moderation']) $tpl->set('{moderation}', 'Отмодерировал: '.stripslashes($row['p_moderation'])); else $tpl->set('{moderation}', ''); А в шаблоне просто в нужное место вставить {moderation} Дело вкуса конечно Для шаблонности.. У кого-то шаблон, сам по себе, сложный, у кого-то их несколько, у кого-то шаблоны на разных языках, не править же им языковые файлы? А так согласен - дело вкуса.. Цитата Ссылка на сообщение Поделиться на других сайтах
Hellik 0 Опубликовано: 10 декабря 2007 Рассказать Опубликовано: 10 декабря 2007 спасибо, попробуем! Цитата Ссылка на сообщение Поделиться на других сайтах
PAV 0 Опубликовано: 12 декабря 2007 Рассказать Опубликовано: 12 декабря 2007 Автор Ещё один вариант, но уже от GreenFest _ttp://4dle.ru/2007/12/12/kto_moderiroval_novost_v10.html Цитата Ссылка на сообщение Поделиться на других сайтах
NoBoddy 0 Опубликовано: 22 декабря 2007 Рассказать Опубликовано: 22 декабря 2007 Какие люди вернулись =) Стукни плз в аську Цитата Ссылка на сообщение Поделиться на других сайтах
error2k 2 Опубликовано: 23 декабря 2007 Рассказать Опубликовано: 23 декабря 2007 Я тут на днях буквально читал, что всё подключается одной строчкой А тут несколько различных вариаций одного и того же.. или чего? Я вот неопытный совсем кодер и для меня это не то не похоже на готовое решение, а даже запутывающий ребус Цитата Ссылка на сообщение Поделиться на других сайтах
lifestar 18 Опубликовано: 23 декабря 2007 Рассказать Опубликовано: 23 декабря 2007 error2k, ну это же не модуль, а хак ну я так думаю.. хотелось бы послушать опытных кодеров) Цитата Ссылка на сообщение Поделиться на других сайтах
IT-Security 33 Опубликовано: 24 декабря 2007 Рассказать Опубликовано: 24 декабря 2007 Готовым решением, подключающимся одной строчкой были бы готовые файлы, но это снесло бы все уже установленные хаки. Так что тут по другому никак...Ибо меняются функционал, а не добавляется что-то новое. Цитата Ссылка на сообщение Поделиться на других сайтах
Nosferatu 0 Опубликовано: 24 декабря 2007 Рассказать Опубликовано: 24 декабря 2007 Я вообще считаю, что лучше не парить себе мосги с устновкой этого хака. Какая разница кто редаткировал новость? Цитата Ссылка на сообщение Поделиться на других сайтах
error2k 2 Опубликовано: 24 декабря 2007 Рассказать Опубликовано: 24 декабря 2007 Nosferatu, не стоит в каждом посте всех считать идиотами Цитата Ссылка на сообщение Поделиться на других сайтах
prikindel 255 Опубликовано: 27 декабря 2007 Рассказать Опубликовано: 27 декабря 2007 Nosferatu, например, админу хочется видеть кто из модераторов пропускает качественные новости, а кто не очень Цитата Ссылка на сообщение Поделиться на других сайтах
dataman 0 Опубликовано: 3 января 2008 Рассказать Опубликовано: 3 января 2008 До тех пор, пока не будет в отдельную таблицу сливаться ВСЯ история исправлений - Кто и когда (в идеале конечно хотелось бы и что именно ) ченность мода весьма условна. Модер 1 пропустил. Модер 2 исправил ОРФОРГАФИЧЕСКУЮ ошибку. Главный редактор ВЫДЕЛИЛ шрифтом акцент какой нить фразы. Бедный админ .. На кого ж ему думать .. Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.