Модуль "Битая ссылка"
Как видно на скрине если ссылка битая или не доступна для загрузки то всегда есть кнопка просить перезалить файл.
Особености:
- кнопка видна только зарегистрированным пользователям
- кнопку можно нажать только 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;
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);
};
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}', "Перезалейте!" );
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}' AND date $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' => "broken.png",
'access' => $user_group[$member_id['user_group']]['admin_edi
tusers']
),
7. Дописать в конец файла /templates/ВАША ТЕМА/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/ВАША ТЕМА/fullstory.tpl после:
{full-story}
{brokenLink}
Забрать