Dleshka.org
Авторизация

Модуль "Битая ссылка"



Как видно на скрине если ссылка битая или не доступна для загрузки то всегда есть кнопка просить перезалить файл.





Особености:
- кнопка видна только зарегистрированным пользователям
- кнопку можно нажать только 1 раз (в каждой новости)
- в админке: список новостей с жалобами (новости сортируются по кол. жалоб)[/i]
- в админке: кто пожаловался
- в админке: если нажать на [Удалить] то все жалобы удаляются

Установка:

1: Делаем запрос к базе данных:

ALTER TABLE `dle_post` ADD `nolink` smallint(5) NOT NULL default '0';
ALTER TABLE `dle_post` ADD `nolink_users` text NOT NULL;



2. Дописать в конец файла /engine/classes/js/js_edit.js:

function brokenLink( id ) {
    var ajax = new dle_ajax();
    ajax.onShow ('');
    var varsString = "news_id=" + id;
    ajax.setVar("skin", dle_skin);
    ajax.requestFile = dle_root + "engine/ajax/brokenLink.php";
    ajax.method = 'GET';
    ajax.element = 'broken-id-' + id;
    ajax.sendAJAX(varsString);
};



3: В файле /engine/modules/show.full.php перед кодом:

if( $row['votes'] ) $tpl->set( '{poll}', $tpl->result['poll'] );


добавляем:

 $broken_arr = explode( ',', $row['nolink_users'] );
            
            if( ! in_array( $member_id['name'], $broken_arr ) ) $tpl->set( '{brokenLink}', "<span class=\"brokenbt\" id=\"broken-id-" . $row['id'] . "\"><span class=\"brokenclick\" onclick=\"brokenLink('" . $row['id'] . "'); return false;\" title=\"\">Перезалейте!</span></span>" );
            else $tpl->set( '{brokenLink}', "" );



4: В файле /engine/engine.php меняем:

 // ################ Новость целиком #################
            if ($subaction != '' or $newsid) {
                if (! $newsid) $sql_news = "SELECT id, autor, date, short_story, full_story, xfields, title, category, descr, keywords, alt_name, comm_num, allow_comm, allow_rate, fixed, rating, vote_num, news_read, approve, votes, access, flag, editdate, editor, reason, view_edit, tags, metatitle FROM " . PREFIX . "_post WHERE alt_name ='$news_name' AND date >= '{$year}-{$month}-{$day}' AND date < '{$year}-{$month}-{$day}' + INTERVAL 24 HOUR LIMIT 0,1";
                else $sql_news = "SELECT id, autor, date, short_story, full_story, xfields, title, category, descr, keywords, alt_name, comm_num, allow_comm, allow_rate, fixed, rating, vote_num, news_read, approve, votes, access, flag, editdate, editor, reason, view_edit, tags, metatitle FROM " . PREFIX . "_post where  id = '$newsid'";

на:

            // ################ Новость целиком #################
            if ($subaction != '' or $newsid) {
                if (! $newsid) $sql_news = "SELECT id, autor, date, short_story, full_story, xfields, title, category, descr, keywords, alt_name, comm_num, allow_comm, allow_rate, fixed, rating, vote_num, news_read, approve, votes, access, flag, editdate, editor, reason, view_edit, tags, metatitle, nolink_users FROM " . PREFIX . "_post WHERE alt_name ='$news_name' AND date >= '{$year}-{$month}-{$day}' AND date < '{$year}-{$month}-{$day}' + INTERVAL 24 HOUR LIMIT 0,1";
                else $sql_news = "SELECT id, autor, date, short_story, full_story, xfields, title, category, descr, keywords, alt_name, comm_num, allow_comm, allow_rate, fixed, rating, vote_num, news_read, approve, votes, access, flag, editdate, editor, reason, view_edit, tags, metatitle, nolink_users FROM " . PREFIX . "_post where  id = '$newsid'";



6: В файле /engine/inc/options.php перед кодом:

 array (
                                            'name' => $lang['opt_rules'], 
                                            'url' => "$PHP_SELF?mod=static&action=doedit&page=rules", 
                                            'descr' => $lang['opt_rulesc'], 
                                            'image' => "rules.png", 
                                            'access' => $user_group[$member_id['user_group']]['admin_static'] 
                                ),


добавляем:

array (
                                            'name' => "Broken Links", 
                                            'url' => "$PHP_SELF?mod=brokenLinks", 
                                            'descr' => "", 
                                            'image' => "broen.png", 
                                            'access' => $user_group[$member_id['user_group']]['admin_editusers'] 
                            ),


7. Дописать в конец файла /templates//templates/Simple/css/style.css:


.brokenbt { margin-top: 25px; display: block; }
.brokenclick {
    padding: 5px 7px;
    color: #222;
    border: 1px solid #DEDEDE;

    -moz-border-radius: 5px;
    -webkit-border-radius: 5px;
    border-radius: 5px;

    background-color: #F2F2F2;
    background: -moz-linear-gradient(#F2F2F2 10%, #DEDEDE 100%);
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0.5, #F2F2F2), color-stop(0.5, #DEDEDE));
}

.brokenclick:hover {
    cursor: pointer;
    color: #fff;
    border-color: #c00;
    -moz-box-shadow: 0 0 5px #c00;
    -webkit-box-shadow: 0 0 5px #c00;
    box-shadow: 0 0 5px #c00;

    background-color: #c00;
    background: -moz-linear-gradient(#c00 10%, #f33 100%);
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0.5, #c00), color-stop(0.5, #f33));
}




8: В файле /templates/templates/Simple/fullstory.tpl после:

Новость отредактировал
 <font color="red"><strong>{editor}</strong></font> - {edit-date}</i></span>[edit-reason]<div class="quote">Причина: {edit-reason}</div>[/edit-reason][/edit-date]


добавляем:

{brokenLink}


Внимание! У Вас нет прав для просмотра скрытого текста.
Другие новости по категории:
caSper
14 декабря 2010 22:01
чет не работает((
alex28j
15 декабря 2010 11:51
На локалке работает. а на сервере в админке пишет что модуль не найден. и че теперь делать?
TipTop
15 декабря 2010 12:54
Вот это конечено интересно хм..На локалке Да а на сервере НЕТ..Значит модуль работает но гдето ошибка при устаноке. Я бы попробывал еще раз с запроса для БД может там что не прописалось.
alex28j
15 декабря 2010 14:06
Несколько раз про бывал с базой, пишет тоже самое, нет модуля. sad А так хак очень полезный.

Файл выбранного раздела админпанели не найден


вот скрин! http://s46.radikal.ru/i111/1012/23/6f2755639250.jpg
TipTop
15 декабря 2010 15:07
Что бы заработала админка, нужно:

Шаг 1.

array (
'name' => "Broken Links",
'url' => "$PHP_SELF?mod=brokenLinks",
'descr' => "",
'image' => "broen.png",
'access' => $user_group[$member_id['user_group']]['admin_edi
tusers']
),



поменять на:

array (
'name' => "Broken Links",
'url' => "$PHP_SELF?mod=brokenlinks",
'descr' => "",
'image' => "broken.png",
'access' => $user_group[$member_id['user_group']]['admin_edi
tusers']
),



Шаг 2.

Изменить имя файла brokenLinks на brokenlinks в папке inc
alex28j
15 декабря 2010 20:53
TipTop,
Спасибо тебе огромное, про inc я не додул. сам дурак. внимательно надо было смотреть.
А тебе еще раз спасибо!
wwwartem
16 декабря 2010 21:16
в админке
Fatal error: Call to undefined function dle_strlen() in /home/users2/w/wwwartem/domains/realkino.com/engine/inc/brokenlinks.php on line 38
Deftoner
18 декабря 2010 14:19
Fatal error: Call to undefined function dle_strlen() in /home/www/******/engine/inc/brokenlinks.php on line 38

Такая же какашка хелп пипл
dimon212909
22 декабря 2010 00:26
Люди, че делать, на денвере идет на хосте нет,и brokenLinks на brokenlinks поменял, в админке пишет нет доступа
wwwartem
23 декабря 2010 17:59
Deftoner,
у тебя ниже 9 версии?
Aktteon
25 декабря 2010 08:08
На 9 все работает как швейцарские часы!
dzheka3d
7 января 2011 11:02
А у меня вся админка работает нормально. Сайт тоже нормально. Но как только в админке нажимаешь broken links - появляется пустая страница с надписью Hacking attempt!

Пробовал заходить через другой браузер и чичтить куки
ilya555
13 марта 2011 07:28
всем привет0 у меня дле 9.0 я все сдлелал как в инструкции и в коментарьях а все равно не работает пишет
Выбранная вами статья не найдена!
caSper
28 марта 2011 19:46
чет на 9.2 не работает

2. Дописать в конец файла /engine/classes/js/js_edit.js:
И чет я ненашол такова файла

и как в базу добавляю то ошибку вибивает
Ошибка

SQL-запрос:

ALTER TABLE `dle_post` ADD `nolink` smallint( 5 ) NOT NULL default '0';


Ответ MySQL:
#1060 - Duplicate column name 'nolink'

все отбой разобрался:) вот бы еще чтоб админу приходило в личку сообщение что нажали на Перезалейте..
motlik
7 мая 2011 15:52
Цитата: wwwartem
dle_strlen

Там нужно заменить dle_strlen на strlen
zozo
20 мая 2011 22:04
Люди подскажите где взять этот файл 2. Дописать в конец файла /engine/classes/js/js_edit.js: у меня его нет там! Что делать ?
TipTop
21 мая 2011 08:13
Цитата: zozo
Люди подскажите где взять этот файл 2. Дописать в конец файла /engine/classes/js/js_edit.js: у меня его нет там! Что делать ?


Смотри архив установочный DLE там есть папка
Developer \ uncompressed \ dle_js.js
Angelok
12 июня 2011 22:13
Народ подскажите в чем ошибка:
модуль установился...в админке его вижу...но при нажатии на новость или категорию на сайте, вместо новостей пустое место....


движок 9.2

pro7
1 июля 2011 21:31
спасибо! работает!

отписался от спама! , ато галочку поставил случаянно!
pronchak
11 декабря 2011 23:02
Как сделать так, чтобы и не зарегистрированные пользователи видели эту кнопку "Перезалейте"?
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
Авторизация