• Автор:

    Braund
  • Добавлено:

    дек 29, 2013
  • Комментариев:

    0
  • Просмотров:

    1164

Модуль Fav-All 1.1

Модуль Fav-All 1.1

Модуль был создан на основе идеи взятой с КиноПоиска. Автору понравилось, что фавориты были разбиты на отдельные разделы и он решил написать данный модуль для DLE.

Теперь не в место, а дополнительно есть закладки фавориты:
/favorites/films/ » Любимые фильмы
/favorites/willlook/ » Буду смотреть
/favorites/findweb/ » Найти в Интернете
/favorites/watched/ » Смотрел


Установка:

1) Выполнить запрос в БД:
ALTER TABLE `dle_post_extras` ADD `favFilmsSum` mediumint( 8 ) NOT NULL;
ALTER TABLE `dle_post_extras` ADD `favWillLookSum` mediumint( 8 ) NOT NULL;
ALTER TABLE `dle_post_extras` ADD `favFindWebSum` mediumint( 8 ) NOT NULL;
ALTER TABLE `dle_post_extras` ADD `favWatchedSum` mediumint( 8 ) NOT NULL;

ALTER TABLE `dle_users` ADD `favFilms` text NOT NULL;
ALTER TABLE `dle_users` ADD `favWillLook` text NOT NULL;
ALTER TABLE `dle_users` ADD `favFindWeb` text NOT NULL;
ALTER TABLE `dle_users` ADD `favWatched` text NOT NULL;


2) Из архива залить файлы на сервер:
(архив в самом низу новости)
\engine\ajax\favoritesall.php
\engine\modules\favoritesall.php
\templates\Default\images\fav.png заменив папку Default на соответствующий вашему шаблону

3) В styles.css прописать:
.FullPostFav{    display: block;    margin: 5px -10px 0 20px;    height: 23px;    width: 240px;}
.favAllForm{background:#ffffff;background:-moz-linear-gradient(top,#ffffff 0%,#e2e2e2 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ffffff),color-stop(100%,#e2e2e2));background:-webkit-linear-gradient(top,#ffffff 0%,#e2e2e2 100%);background:-o-linear-gradient(top,#ffffff 0%,#e2e2e2 100%);background:-ms-linear-gradient(top,#ffffff 0%,#e2e2e2 100%);background:linear-gradient(to bottom,#ffffff 0%,#e2e2e2 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff',endColorstr='#e2e2e2',GradientType=0 );border:1px #999 solid;color: #333;font-family:tahoma,verdana;float:right;font-size:11px;position: relative;text-align:center;height:21px;width:115px;display: inline-block;vertical-align: top;}
.FullPostFav .favAllForm{width: 238px;}
.favAllM{background:url(../images/fav.png) right -20px no-repeat;cursor:pointer;padding:3px 0;}
.favAllP{display:none;background:#fff;border:1px #3b5998 solid;-webkit-box-shadow:0 2px 6px -1px rgba(0,0,0,0.5);-moz-box-shadow:0 2px 6px -1px rgba(0,0,0,0.5);box-shadow:0 2px 6px -1px rgba(0,0,0,0.5);position:absolute;right:-1px;text-align:left;top:-1px;width:200px;z-index:98;}
.favAllP.open{display:block;}
.FullPostFav .favAllP {width: 238px;}
.favAllP > div{display:block;}
.favAllP .favAllT{background-color:#6d84b4;background:#6d84b4 url(../images/fav.png) right 1px no-repeat;border-bottom:1px #3b5998 solid;color:#fff;cursor:pointer;display:block;padding:4px 8px;}
.favAllP .favF{display:block;cursor:pointer;padding:4px 21px;}
.favAllP .plus:hover{background-color:#F1F1F1;}
.favAllP .minus{background:url(../images/fav.png) left -41px no-repeat;font-weight:bold;}


4) В кратком, полном и в шаблонах выводимых через custom
****************** Прописать (Широкая вкладка 238px)
[not-group=5]
<div class="FullPostFav">
<div id="favAllForm-{news-id}" class="favAllForm">
<div class="favAllM" onclick="favAllFormOpen('{news-id}', 'open')">Мои фильмы</div>
<div class="favAllP"></div>
</div>
</div>
[/not-group]


****************** Прописать (Вкладка по уже 115px)
[not-group=5]
<div id="favAllForm-{news-id}" class="favAllForm">
<div class="favAllM" onclick="favAllFormOpen('{news-id}', 'open')">Мои фильмы</div>
<div class="favAllP"></div>
</div>
[/not-group]


5) В \engine\classes\js\ загрузить из архива с DLE не сжатый \Developer\uncompressed\dle_js.js
****************** После строчек
function doFavorites( fav_id, event )
{
ShowLoading('');

$.get(dle_root + "engine/ajax/favorites.php", { fav_id: fav_id, action: event, skin: dle_skin }, function(data){

HideLoading('');

$("#fav-id-" + fav_id).html(data);

});

return false;
};


****************** Дописать
function favAllFormOpen(film_id, fav) {
$.get(dle_root + "engine/ajax/favoritesall.php", { film_id: film_id, fav: fav }, function(data){
$("#favAllForm-" + film_id + " .favAllP").html(data);
$(".favAllForm .favAllP").removeClass("open");
$("#favAllForm-"+ film_id +" .favAllP").addClass("open");
});
return false;
};

function favAllFormClose(film_id) {
$("#favAllForm-" + film_id + " .favAllP").removeClass("open");
$("#favAllForm-" + film_id + " .favAllP").empty();
};
$(document).mouseup(function (e) {
var container = $(".favAllForm");
if (container.has(e.target).length === 0){
$(".favAllForm .favAllP").removeClass("open");
$(".favAllForm .favAllP").empty();
}
});

function favFilms( film_id, statys, fav) {
ShowLoading('');
$.get(dle_root + "engine/ajax/favoritesall.php", { film_id: film_id, statys: statys, fav: fav }, function(data){
HideLoading('');
$("#favFilms-id-" + film_id).html(data);
});
return false;
};
function favWillLook( film_id, statys, fav) {
ShowLoading('');
$.get(dle_root + "engine/ajax/favoritesall.php", { film_id: film_id, statys: statys, fav: fav }, function(data){
HideLoading('');
$("#favWillLook-id-" + film_id).html(data);
});
return false;
};
function favFindWeb( film_id, statys, fav) {
ShowLoading('');
$.get(dle_root + "engine/ajax/favoritesall.php", { film_id: film_id, statys: statys, fav: fav }, function(data){
HideLoading('');
$("#favFindWeb-id-" + film_id).html(data);
});
return false;
};
function favWatched( film_id, statys, fav) {
ShowLoading('');
$.get(dle_root + "engine/ajax/favoritesall.php", { film_id: film_id, statys: statys, fav: fav }, function(data){
HideLoading('');
$("#favWatched-id-" + film_id).html(data);
});
return false;
};


6) В \engine\engine.php
****************** Найти строчку
    case "favorites" :
if ($is_logged) {

$config['allow_cache'] = false;

include ENGINE_DIR . '/modules/favorites.php';

} else
msgbox ( $lang['all_err_1'], $lang['fav_error'] );
break;


****************** Ниже прописать
    case "favoritesall" :
if ($is_logged) {
$config['allow_cache'] = false;
include ENGINE_DIR . '/modules/favoritesall.php';
} else {
msgbox ( $lang['all_err_1'], $lang['fav_error'] );
}
break;


****************** Найти строчку
elseif ($do == 'favorites') $nam_e = $lang['title_fav'];


****************** Ниже прописать
elseif ($do == 'favoritesall') $nam_e = $fav_nam;


7) В корневом файле .htaccess
****************** Найти строчку
RewriteRule ^favorites/page/([0-9]+)(/?)+$ index.php?do=favorites&cstart=$1 [L]


****************** Ниже прописать
RewriteRule ^favorites/films(/?)+$ index.php?do=favoritesall&favtupe=films [L]
RewriteRule ^favorites/films/page/([0-9]+)(/?)+$ index.php?do=favoritesall&favtupe=films&cstart=$1 [L]
RewriteRule ^favorites/willlook(/?)+$ index.php?do=favoritesall&favtupe=willlook [L]
RewriteRule ^favorites/willlook/page/([0-9]+)(/?)+$ index.php?do=favoritesall&favtupe=willlook&cstart=$1 [L]
RewriteRule ^favorites/findweb(/?)+$ index.php?do=favoritesall&favtupe=findweb [L]
RewriteRule ^favorites/findweb/page/([0-9]+)(/?)+$ index.php?do=favoritesall&favtupe=findweb&cstart=$1 [L]
RewriteRule ^favorites/watched(/?)+$ index.php?do=favoritesall&favtupe=watched [L]
RewriteRule ^favorites/watched/page/([0-9]+)(/?)+$ index.php?do=favoritesall&favtupe=watched&cstart=$1 [L]


8) В файле \language\website.lng
****************** Найти строчку
'wysiwyg_language'        =>  "ru",


****************** Ниже прописать
'favfilms'                =>  "Любимые фильмы",
'favwilllook' => "Буду смотреть",
'favfindweb' => "Найти в Интернете",
'favwatched' => "Смотрел",
'favall_error' => "Вы ничего не вносили в Мои фильмы, раздел - ",


9) В файле \engine\init.php
****************** Найти строчку
if ($member_id['favorites']) {
$tpl->set( '{favorite-count}', count(explode("," ,$member_id['favorites'])) );
}
else $tpl->set( '{favorite-count}', '0' );


****************** Ниже прописать
if ($member_id['favFilms']) {
$tpl->set( '{favfilms-count}', count(explode("," ,$member_id['favFilms'])) );
} else {
$tpl->set( '{favfilms-count}', '0' );
}
if ($member_id['favWillLook']) {
$tpl->set( '{favwilllook-count}', count(explode("," ,$member_id['favWillLook'])) );
} else {
$tpl->set( '{favwilllook-count}', '0' );
}
if ($member_id['favFindWeb']) {
$tpl->set( '{favfindweb-count}', count(explode("," ,$member_id['favFindWeb'])) );
} else {
$tpl->set( '{favfindweb-count}', '0' );
}
if ($member_id['favWatched']) {
$tpl->set( '{favwatched-count}', count(explode("," ,$member_id['favWatched'])) );
} else {
$tpl->set( '{favwatched-count}', '0' );
}


****************** Найти строчку
$tpl->set( '{favorites-link}', $config['http_home_url'] . "favorites/" );


****************** Ниже прописать
    $tpl->set( '{favfilms-link}', $config['http_home_url'] . "favorites/films/" );
$tpl->set( '{favwilllook-link}', $config['http_home_url'] . "favorites/willlook/" );
$tpl->set( '{favfindweb-link}', $config['http_home_url'] . "favorites/findweb/" );
$tpl->set( '{favwatched-link}', $config['http_home_url'] . "favorites/watched/" );


10) В шаблон login.tpl добавить
      <a href="{favfilms-link}">Любимые фильмы ({favfilms-count})</a>
<a href="{favwilllook-link}">Буду смотреть ({favwilllook-count})</a>
<a href="{favfindweb-link}">Найти в Интернете ({favfindweb-count})</a>
<a href="{favwatched-link}">Смотрел ({favwatched-count})</a>


11) В файле \engine\modules\show.short.php
****************** Найти строчку
    } elseif( !$news_found AND !$allow_userinfo AND $do != '' and $do != 'favorites' and $view_template != 'rss' ) {


****************** Заменить на
    } elseif( !$news_found AND !$allow_userinfo AND $do != '' and $do != 'favorites' and $do != 'favoritesall' and $view_template != 'rss' ) {



****************** Найти строчку
    } elseif( !$news_found AND $cstart ) {
if ( $newsmodule ) @header( "HTTP/1.0 404 Not Found" );
msgbox( $lang['all_err_1'], $lang['news_err_27'] );
}


****************** Заменить на
    } elseif( !$news_found AND $cstart ) {
if ( $newsmodule ) @header( "HTTP/1.0 404 Not Found" );
msgbox( $lang['all_err_1'], $lang['news_err_27'] );
} elseif( ! $news_found AND $do == 'favoritesall' ) {
msgbox( $lang['all_info'], $lang['favall_error'] . "[" . $fav_nam . "]");
}


Далее, спасибо Автору: Sander
На основе им разработанного Хака - Самый просматриваемый материал за текущий день
Адаптирован вывод тегом custom посты добавленные в Мои фильмы суммируя сколько человек добавило пост суммарно в каждый из разделов.

Пример вывода:
{custom limit="10" order="fav-films"}
{custom limit="10" order="fav-willlook"}
{custom limit="10" order="fav-findweb"}
{custom limit="10" order="fav-watched"}


1) В файле \engine\modules\functions.php
****************** Найти строчку
    $sql_select = "SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM " . PREFIX . "_post p LEFT JOIN " . PREFIX . "_post_extras e ON (p.id=e.news_id)";


****************** Заменить на
    $sql_select = "SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason, e.favFilmsSum, e.favWillLookSum, e.favFindWebSum, e.favWatchedSum FROM " . PREFIX . "_post p LEFT JOIN " . PREFIX . "_post_extras e ON (p.id=e.news_id)";



****************** Найти строчку
        if ($match[1] == "title" ) $news_msort = "ASC";


****************** Ниже дописать
        if ($match[1] == "fav-films" ) $news_sort = "favFilmsSum DESC, favFilmsSum";
if ($match[1] == "fav-willlook" ) $news_sort = "favWillLookSum DESC, favWillLookSum";
if ($match[1] == "fav-findweb" ) $news_sort = "favFindWebSum DESC, favFindWebSum";
if ($match[1] == "fav-watched" ) $news_sort = "favWatchedSum DESC, favWatchedSum";


2) В файле \engine\modules\show.custom.php
    $news_find = array ('{comments-num}' => $row['comm_num'], '{views}' => $row['news_read'], '{category}' => $my_cat, '{link-category}' => $my_cat_link, '{news-id}' => $row['id'], '{rssdate}' => date( "r", $row['date'] ), '{rssauthor}' => $row['autor'], '{approve}' => '' );


****************** Заменить на
    $news_find = array ('{comments-num}' => $row['comm_num'], '{views}' => $row['news_read'], '{favfilms-count}' => $row['favFilmsSum'], '{favwilllook-count}' => $row['favWillLookSum'], '{favfindweb-count}' => $row['favFindWebSum'], '{favwatched-count}' => $row['favWatchedSum'], '{category}' => $my_cat, '{link-category}' => $my_cat_link, '{news-id}' => $row['id'], '{rssdate}' => date( "r", $row['date'] ), '{rssauthor}' => $row['autor'], '{approve}' => '' );


3) В шаблонах которые выводятся тегом custom использовать
{favfilms-count} - Число человек добавивших пост [b]Любимые фильмы[/b]
{favwilllook-count} - Число человек добавивших пост [b]Буду смотреть[/b]
{favfindweb-count} - Число человек добавивших пост [b]Найти в Интернете[/b]
{favwatched-count} - Число человек добавивших пост [b]Смотрел[/b]


Версия DLE: 9.х-10.х
С уважением, Сергей Геннадьевич D0Gmatist

Внимание! У Вас нет прав для просмотра скрытого текста.
Вернуться
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.