Grinat, реализуй на public и выложи решение
Много кода, боюсь пользователи могут испугаться), но попробую
Добавление объявлений в блокнотВсе ниженаписанное тестировалось под AdsManager 2.5 RC2 joostina 1.2, но скорее всего подходит для любого adsmanager и точно подходит для любой версии Joomla. Поддерживаться должны все браузеры, но тестировалось и точно работает в chrome5, где-то еще проверять было лень, в общем just for lulz Код дан с комментариями, потому делайте с ним что хотите и как хотите, главное мне никаких вопросов не задавайте.
Также во вложение даны рабочие модифицированные файлы и инструкция что ниже.
Инструкция:0. Открываем adsmanager.html.php функция(show_html_ad) и находим:
adsmanager_html::showFieldValue($row,$field,$field_values,$conf->email_display,$option,$itemid,1,$plugins); /* 1 = Ad Mode */
}
} ?>
</h2>
после этого вставляем:
<?php
global $script_yzhe_ispolsuetsya;
if($script_yzhe_ispolsuetsya==0){ // Если скрипт не используется
$script_yzhe_ispolsuetsya = 1; // Сообщаем что скрипт уже используется
?>
<script type="text/javascript">
window.onload = reload_link; // После загрузки страницы будет вызвана функция
function reload_link(){ // рисуем ссылки на основе данных из куков
var dc = document.cookie; // получаем куки
var adid = 0;
var ids_ = '';
var ids = new Array();
if(dc.indexOf('notepad_ids')>0){ // если есть нужная нам кука
ids_ = getCookie('notepad_ids'); // получаем значения
if(ids_!=null){
ids = ids_.split(','); // формируем массив из значений
}else{
ids = new Array();
}
}
var divs = document.getElementsByTagName('div'); // получаем все дивы
for(var i=0;i<divs.length;i++){ // перебираем
if(divs[i].getAttribute('class')=='notepadid_'){ // если это нужный нам div
adid = divs[i].getAttribute('id').split('_')[1];// узнаем id объявления, к которому он относится
ids_ = ',' + ids_ + ','; // преобразуем дабы избежать ошибок
if(ids_.indexOf(','+adid+',')>0){ // если этот id уже есть в блокноте
divs[i].innerHTML = '<a href="javascript:upd_notepad('+adid+',1);">Delete from notepad</a>'; // рисуем код для удаления
}else{
divs[i].innerHTML = '<a href="javascript:upd_notepad('+adid+',0);">Add to notepad</a>'; // рисуем код для добавления
}
}
}
}
</script>
<script type="text/javascript">
function upd_notepad(adid,parametr){ // Добавляем/удаляем id из кук
var dc = document.cookie; // получаем куки
var ids_ = '';
var ids = new Array();
var f = 0;
if(dc.indexOf('notepad_ids')>0){ // если есть нужная нам кука
ids_ = getCookie('notepad_ids'); // получаем значения
if(ids_!=null){
ids = ids_.split(','); // формируем массив из значений
}else{
ids = new Array();
}
}
for(var i=0;i<ids.length;i++){
if(ids[i]==adid){
if(parametr==1){ //Удалить
ids.splice(i,1);
}
f = 1;
}
}
ids_ = ids.join(',');
if(f==0 && parametr==0){ // Добавить
ids_ = ids_ + ',' + adid;
}
var days = 365; // сколько дней хранить куку
var expires = new Date(); // получаем текущую дату
expires.setTime(expires.getTime() + (1000 * 86400 * days)); // вычисляем срок хранения cookie
document.cookie = 'notepad_ids=' + escape(ids_) + '; expires=' + expires + '; path=/';
reload_link(); // Обновим данные
}
</script>
<script type="text/javascript">
// стандартные функции для работы с куками
function getCookie(name) { // Получение значения
var cookie = " " + document.cookie;
var search = " " + javascript:void(0);name + "=";
var setStr = null;
var offset = 0;
var end = 0;
if (cookie.length > 0) {
offset = cookie.indexOf(search);
if (offset != -1) {
offset += search.length;
end = cookie.indexOf(";", offset)
if (end == -1) {
end = cookie.length;
}
setStr = unescape(cookie.substring(offset, end));
}
}
return(setStr);
}
</script>
<?php } ?>
<div style="float:right;" id="notepadid_<?php echo $row->id; ?>" class="notepadid_">Loading...</div><br />
1. Открываем adsmanager.html.php функция(show_list) и находим:
<tr class="<?php echo $classad;?>">
<td>
после этого вставляем:
<?php
global $script_yzhe_ispolsuetsya;
if($script_yzhe_ispolsuetsya==0){ // Если скрипт не используется
$script_yzhe_ispolsuetsya = 1; // Сообщаем что скрипт уже используется
?>
<script type="text/javascript">
window.onload = reload_link; // После загрузки страницы будет вызвана функция
function reload_link(){ // рисуем ссылки на основе данных из куков
var dc = document.cookie; // получаем куки
var adid = 0;
var ids_ = '';
var ids = new Array();
if(dc.indexOf('notepad_ids')>0){ // если есть нужная нам кука
ids_ = getCookie('notepad_ids'); // получаем значения
if(ids_!=null){
ids = ids_.split(','); // формируем массив из значений
}else{
ids = new Array();
}
}
var divs = document.getElementsByTagName('div'); // получаем все дивы
for(var i=0;i<divs.length;i++){ // перебираем
if(divs[i].getAttribute('class')=='notepadid_'){ // если это нужный нам div
adid = divs[i].getAttribute('id').split('_')[1];// узнаем id объявления, к которому он относится
ids_ = ',' + ids_ + ','; // преобразуем дабы избежать ошибок
if(ids_.indexOf(','+adid+',')>0){ // если этот id уже есть в блокноте
divs[i].innerHTML = '<a href="javascript:upd_notepad('+adid+',1);">Delete from notepad</a>'; // рисуем код для удаления
}else{
divs[i].innerHTML = '<a href="javascript:upd_notepad('+adid+',0);">Add to notepad</a>'; // рисуем код для добавления
}
}
}
}
</script>
<script type="text/javascript">
function upd_notepad(adid,parametr){ // Добавляем/удаляем id из кук
var dc = document.cookie; // получаем куки
var ids_ = '';
var ids = new Array();
var f = 0;
if(dc.indexOf('notepad_ids')>0){ // если есть нужная нам кука
ids_ = getCookie('notepad_ids'); // получаем значения
if(ids_!=null){
ids = ids_.split(','); // формируем массив из значений
}else{
ids = new Array();
}
}
for(var i=0;i<ids.length;i++){
if(ids[i]==adid){
if(parametr==1){ //Удалить
ids.splice(i,1);
}
f = 1;
}
}
ids_ = ids.join(',');
if(f==0 && parametr==0){ // Добавить
ids_ = ids_ + ',' + adid;
}
var days = 365; // сколько дней хранить куку
var expires = new Date(); // получаем текущую дату
expires.setTime(expires.getTime() + (1000 * 86400 * days)); // вычисляем срок хранения cookie
document.cookie = 'notepad_ids=' + escape(ids_) + '; expires=' + expires + '; path=/';
reload_link(); // Обновим данные
}
</script>
<script type="text/javascript">
// стандартные функции для работы с куками
function getCookie(name) { // Получение значения
var cookie = " " + document.cookie;
var search = " " + name + "=";
var setStr = null;
var offset = 0;
var end = 0;
if (cookie.length > 0) {
offset = cookie.indexOf(search);
if (offset != -1) {
offset += search.length;
end = cookie.indexOf(";", offset)
if (end == -1) {
end = cookie.length;
}
setStr = unescape(cookie.substring(offset, end));
}
}
return(setStr);
}
</script>
<?php } ?>
<div style="float:right;" id="notepadid_<?php echo $row->id; ?>" class="notepadid_">Loading...</div>
2. Открываем adsmanager.html.php функция(showGeneralLink) и находим:
echo '<a href="'.$link_show_rules.'">'.ADSMANAGER_MENU_RULES.'</a>';
и добавляем после:
echo ' | <a href="'.sefRelToAbs("index.php?option=$option&page=notepad&Itemid=$itemid").'">Notepad</a>';
3. Открываем adsmanager.php и находим:
и перед этим вставляем:
case 'notepad': {
notepad('notepad',0,$option,$expand,$text_search,$order,$limitstart,$plugins);
break;
}
4. Открываем adsmanager.php и вставляем в конец:
function notepad($page,$catid,$option,$expand,$text_search,$order,$limitstart,$plugins){
$text = 'Notepad'; // Название
$description = ''; // описание
$url = "index.php?option=$option&page=$page&text_search=$text_search";
$ids_ = mosGetParam( $_COOKIE, 'notepad_ids');
$search = " a.id IN (0 $ids_)";
$update_possible =0;
global $my,$database,$mosConfig_absolute_path;
if ($text_search <> "") {
$search .= " AND (a.ad_headline LIKE '%$text_search%' OR a.ad_text LIKE '%$text_search%') AND a.published = 1";
}
else
$search .= " AND a.published = 1";
$url .= $url_param;
$query = "SELECT DISTINCT a.id FROM #__adsmanager_ads as a ".
"LEFT JOIN #__adsmanager_adcat as adcat ON a.id = adcat.adid WHERE $search";
$database->setQuery($query);
$total = count($database->loadObjectList());
// get configuration
$database->setQuery( "SELECT * FROM #__adsmanager_config");
$database->loadObject($conf);
if ($database -> getErrorNum()) {
echo $database -> stderr();
return false;
}
$limit = $conf->ads_per_page;
if ($conf->display_expand == 0)
$expand = 0;
else if ($conf->display_expand == 2)
$expand = 1;
else if ($expand == -1)
$expand = 0;
$database->setQuery( "SELECT f.* FROM #__adsmanager_fields AS f WHERE f.published = 1" );
$fields = $database->loadObjectList();
if ($order == -1)
{
$order_text = "a.views DESC, a.date_created DESC ,a.id DESC";
}
else if ($order != 0)
{
$database->setQuery( "SELECT f.name,f.sort_direction,f.type FROM #__adsmanager_fields AS f WHERE f.fieldid=$order AND f.published = 1" );
$database->loadObject($sort);
if (($sort->type == "number")||($sort->type == "price"))
$order_text = "a.".$sort->name." * 1 ".$sort->sort_direction;
else
$order_text = "a.".$sort->name." ".$sort->sort_direction;
}
else
{
$order_text = "a.date_created DESC ,a.id DESC";
}
$database->setQuery( "SELECT f.title,f.fieldid,f.catsid FROM #__adsmanager_fields AS f WHERE f.sort = 1 AND f.published = 1" );
$searchs = $database->loadObjectList();
require_once( $mosConfig_absolute_path . '/includes/pageNavigation.php' );
$pageNav = new mosPageNav( $total, $limitstart,$limit );
if($conf->display_fullname == 1)
{
$name = "u.name";
}
else
{
$name = "u.username";
}
$query = "SELECT a.*, p.name as parent, p.id as parentid, c.name as cat, c.id as catid, $name as user ".
"FROM #__adsmanager_ads as a ".
"LEFT JOIN #__adsmanager_adcat as adcat ON adcat.adid = a.id ".
"LEFT JOIN #__users as u ON a.userid = u.id ".
"LEFT JOIN #__adsmanager_categories as c ON adcat.catid = c.id ".
"LEFT JOIN #__adsmanager_categories as p ON c.parent = p.id ".
"WHERE $search and c.published = 1 ".
"GROUP BY a.id ORDER BY $order_text";
if (function_exists("updateQuery")) {
updateQuery($query);
}
$database->setQuery($query,$limitstart,$limit);
$ads = $database->loadObjectList();
//*****************Mod by TomekOmel *******************
$database->setQuery("SELECT c.* ".
"FROM #__adsmanager_columns as c ".
"ORDER BY c.ordering ");
$columns = $database->loadObjectList();
if (isset($columns))
{
$licz=0;
$col = array();
foreach ($columns as $c ) {
if ($c->catsid == ",-1,") //// TUTAJ POPRAWIC
array_push( $col, $c );
else
{
$find = ",".$catid.",";
if (strstr($c->catsid, $find))
array_push( $col, $c );
}
}
}
unset($columns);
$columns = $col;
//***************** END of TomekOmel **********************/
$database->setQuery( "SELECT c.* FROM #__adsmanager_fields AS c ".
"WHERE c.columnid != -1 AND c.published = 1 ORDER by c.columnorder,c.fieldid" );
$fields = $database->loadObjectList();
// establish the hierarchy of the menu
$fColumn = array();
// first pass - collect children
if (isset($fields))
{
foreach ($fields as $f ) {
$pt = $f->columnid;
$list = @$fColumn[$pt] ? $fColumn[$pt] : array();
array_push( $list, $f );
$fColumn[$pt] = $list;
}
}
$database->setQuery( "SELECT * FROM #__adsmanager_positions WHERE 1 " );
$positions = $database->loadObjectList();
if ($database->getErrorNum()) {
echo $database->stderr();
return;
}
$database->setQuery( "SELECT f.* FROM #__adsmanager_fields AS f ".
"WHERE f.pos != -1 AND f.published = 1 ORDER by f.posorder" );
$fields = $database->loadObjectList();
if ($database->getErrorNum()) {
echo $database->stderr();
return;
}
// establish the hierarchy of the menu
$fDisplay = array();
// first pass - collect children
if (isset($fields))
{
foreach ($fields as $f ) {
$pt = $f->pos;
$list = @$fDisplay[$pt] ? $fDisplay[$pt] : array();
array_push( $list, $f );
$fDisplay[$pt] = $list;
}
}
//get value fields
$database->setQuery( "SELECT * FROM #__adsmanager_field_values ORDER by ordering ");
$fieldvalues = $database->loadObjectList();
if ($database -> getErrorNum()) {
echo $database -> stderr();
return false;
}
$field_values = array();
// first pass - collect children
if (isset($fieldvalues))
{
foreach ($fieldvalues as $v ) {
$pt = $v->fieldid;
$list = @$field_values[$pt] ? $field_values[$pt] : array();
array_push( $list, $v );
$field_values[$pt] = $list;
}
}
foreach($fields as $field)
{
if ($field->cbfieldvalues != "-1")
{
/*get CB value fields */
$database->setQuery( "SELECT *, fieldtitle as fieldvalue FROM #__comprofiler_field_values WHERE fieldid = $field->cbfieldvalues ORDER by ordering ");
$cbfieldvalues = $database->loadObjectList();
if ($database -> getErrorNum()) {
echo $database -> stderr();
return false;
}
$field_values[$field->fieldid] = $cbfieldvalues;
}
}
if (($conf->show_contact == 1)&&($my->id == "0"))
$show_contact = 0;
else
$show_contact = 1;
$itemid = intval( mosGetParam( $_GET, 'Itemid', 0 ));
$nav_link = $url."&expand=".$expand."&Itemid=".$itemid;
adsmanager_html::show_list($catid,$description,$text,$url,$page,$ads,$pageNav,$nav_link,
$show_contact,$expand,$order,$text_search,
$itemid,$option,$my->id,$update_possible,
$searchs,
$columns,$fColumn,$positions,$fDisplay,$field_values,
$conf,
$fields_searchable,$plugins);
}
[вложение удалено Администратором]