PDA

View Full Version : Adding Favorite java


wolfe
01-25-2010, 12:25 PM
hi i used to use this image https://vborg.vbsupport.ru/attachment.php?attachmentid=111030&stc=1&d=1264429359 and the link was


<img id="reminder_{vb:raw favid}_toggler" src="clear.gif" class="reminder_toggler<vb:if condition="$show['fav']">_active</vb:if>" onclick="FAVReminder.Toggle({vb:raw favid});" title="<vb:if condition="$show['fav']">Remove Favorite<vb:else />Add Favorite</vb:if>" />


and the code in .js file code is:


FAVReminder = new reminder();

function reminder()
{
this.Toggle = function(favid)
{
SitePopup.Show('FAV Reminder',PHRASE_AJAX_RUNNING);

YAHOO.util.Connect.asyncRequest("POST", "ajax.php", {
success: this.ProcessReminder,
failure: this.handle_ajax_error,
timeout: vB_Default_Timeout,
scope: this
}, SESSIONURL + 'securitytoken=' + SECURITYTOKEN + '&do=togglereminder&favid=' + favid);

}

this.handle_ajax_error = function(ajax)
{
//TODO: Something bad happened, try again
vBulletin_AJAX_Error_Handler(ajax);
}

this.ProcessReminder = function(ajax)
{
if (ajax.responseXML)
{
var error = ajax_fetch_tag('error', ajax);
var reminder = ajax_fetch_tag('reminder', ajax);
var nzbfavcache = ajax_fetch_tag('favcache', ajax);
var nzbid = ajax_fetch_tag('favid', ajax);

if (error)
{
SitePopup.Show('FAV Reminder...', error);
}
else
{
SitePopup.Show('FAV Reminder', PHRASE_AJAX_COMPLETE);
SitePopup.TimerClose(1000);


if (toggler = fetch_object('reminder_' + favid+ '_toggler'))
{
toggler.className = 'reminder_toggler' + ( reminder == 0 ? '' : '_active' );
toggler.title = ( reminder == 1 ? 'Remove Favorite' : 'Add Favorite' );

}
if (togglertitle = fetch_object('add_' + favid + '_remove'))
{
togglertitle.innerHTML = ( reminder == 1 ? 'Remove Favorite' : 'Add Favorite' );

}
if (titlecell = fetch_object('td_threadtitle_' + favid), true)
{
reminderthreadhighlight(titlecell, ( reminder == 0 ? 'remove' : 'add' ),1);
}
if (img = fetch_object('reminder_' + favid + '_img'))
{
img.style.display = ( reminder == 0 ? 'none' : '' );
}
}
}
}
}
}
it used to work in vBulletin 3.8 and since i updated its not working can anyone please help me out on this thanks.

BBR-APBT
01-25-2010, 12:48 PM
With the code you posted you are not registering the variables.

This one to be exact: favid you may also have to register $show depending where you want to use it.

https://vborg.vbsupport.ru/showthread.php?t=228078

wolfe
01-25-2010, 02:37 PM
this is the hook that uses ajax_complete



if ($_POST['do'] == 'togglefavreminder') {

$vbulletin->input->clean_gpc('p', 'favid', TYPE_UINT);

function build_favcache()
{
global $db, $vbulletin;

$favcache = array();

$fcq = $db->query_read("SELECT * FROM " . TABLE_PREFIX . "favorites WHERE userid='" . $vbulletin->userinfo['userid'] . "'");
while ($fc = $db->fetch_array($fcq))
{
$favcache[$fc['favid']] = $fc['favid'];

}

$favcache_o = serialize($favcache);
$db->query_write("UPDATE " . TABLE_PREFIX . "user SET favcache='" . addslashes($favcache_o) . "' WHERE userid='" . $vbulletin->userinfo['userid'] . "'");
}

$favcache = unserialize($vbulletin->userinfo['favcache']);

$cfcq = $db->num_rows($db->query_read("SELECT * FROM " . TABLE_PREFIX . "favorites WHERE userid='" . $vbulletin->userinfo['userid'] . "' AND favid='" . $vbulletin->GPC['favid'] . "'"));


if($cfcq > 0) {
//$favid = $cfcq['favid'];

$db->query_write("DELETE FROM " . TABLE_PREFIX . "favorites WHERE userid='" . $vbulletin->userinfo['userid'] . "' AND favid='" . $vbulletin->GPC['favid'] . "' LIMIT 1");
$reminders = "0";

} else {

$db->query_write("INSERT INTO " . TABLE_PREFIX . "favorites (userid, favid, reminder) VALUES ('" . $vbulletin->userinfo['userid'] . "', '" . $vbulletin->GPC['favid'] . "', '1')");
$reminders = "1";

}

$xml = new vB_AJAX_XML_Builder($vbulletin, 'text/xml');
$xml->add_group('reminder');
$xml->add_tag('favid', $vbulletin->GPC['favid']);
$xml->add_tag('error', $error);
build_favcache();
if ($cfcq > 0) {
$xml->add_tag('reminder', '0');
} else {
$xml->add_tag('reminder', '1');
}
$xml->add_tag('favcache', $favcache_o);

$xml->close_group();
$xml->print_xml(true);

}

wolfe
01-31-2010, 01:35 PM
anyone able to help me out.

Lynne
01-31-2010, 02:19 PM
Did you do what BBR suggested and register the variables for use in the template? I don't see anything in any of your code regarding that.

(PS. And it's javascript, not java. They are two different languages.)

wolfe
01-31-2010, 03:00 PM
i have m8 here


$bits = vB_Template::create('fav_threadbit');
$bits->register('favid', $favid);
$bits->register('show', $show);
$favbits .= $bits->render();

Lynne
01-31-2010, 03:10 PM
And what do you see in the template? Where are you using $favbits afterwards? And is that variable registered for use in the template you are using it in?

wolfe
01-31-2010, 04:00 PM
yes cause the link is showing up


<img id="reminder_15_toggler" src="clear.gif" class="reminder_toggler<vb:if condition="$show['fav']">_active</vb:if>" onclick="FAVReminder.Toggle(15);" title="<vb:if condition="$show['fav']">Remove Favorite<vb:else />Add Favorite</vb:if>" />


heres the code for the Show popup which used to come up to say the fav has been added


<!-- Site Info Popup -->
<form action="javascript:void();" method="post" onsubmit="" id="siteinfo_popup_form">
<input type="hidden" name="s" value="" />
<input type="hidden" name="securitytoken" value="{vb:raw bbuserinfo.securitytoken}" />
<div id="siteinfo_popup" style="display: none;">
<div class="tborder">

<div class="nzbhead" style="padding:6px; padding-left: 60px;">
<img src="images/misc/close.png" alt="" onclick="SitePopup.Close()" style="cursor:pointer;float:right;margin-top:2px;" />
<span id="siteinfo_popup_title">Info</span>
</div>
<div class="nzbalt" style="padding:10px;">
<span id="siteinfo_popup_body" style="font-weight:bold;"></span>
</div>
</div>

</div>
</form>
<script type="text/javascript">
<!--
Siteinfo_Popup = new Page_Popup('Siteinfo_Popup', 'siteinfo_popup', 500, 75, true);
//-->
</script>
<!-- / Site Info Popup -->


and the javascript


function Page_Popup(varname, elementid, popupwidth, overlayopacity, ignorereturn)
{
this.elementid = elementid;
this.varname = varname;
this.timer;

// position fixed for all except ie6 and lower...
if (is_ie && !is_ie7 && !is_ie8)
{
this.enabled = false;
}
else
{
this.enabled = true;

if (popupelement = fetch_object(elementid))
{
if (popupwidth)
{
this.popupwidth = popupwidth + "px";
}
else
{
this.popupwidth = "400px";
}

var element_properties = {
position: "fixed",
width: this.popupwidth,
top: "45%",
left: "50%",
marginLeft: "-" + (popupwidth/2) + "px",
zIndex: "1000"
};

for (var property in element_properties)
{
if (YAHOO.lang.hasOwnProperty(element_properties, property))
{
YAHOO.util.Dom.setStyle(popupelement, property, element_properties[property]);
}
}

this.popupelement = popupelement;
//this.popupelement.originalOpacity = YAHOO.util.Dom.getStyle(this.popupelement, 'opacity');
}

if (overlayopacity>1)
{
if (overlayopacity > 100)
{
overlayopacity = 100;
}

overlay = document.createElement('div');

var overlay_properties = {
top: "0px",
left: "0px",
right: "0px",
bottom: "0px",
display: "none",
position: "fixed",
backgroundColor: "#000000",
opacity: '0.' + overlayopacity
};

for (var property in overlay_properties)
{
if (YAHOO.lang.hasOwnProperty(overlay_properties, property))
{
YAHOO.util.Dom.setStyle(overlay, property, overlay_properties[property]);
}
}
this.Overlay = overlay;
}
}

this.Show = function()
{
returnvalue = true;
if (this.enabled)
{
// Hide vbmenu because it doesn't get covered with overlay...
vbmenu_hide();
if (typeof this.popupelement != 'undefined')
{
YAHOO.util.Dom.setStyle(this.popupelement, "opacity", this.popupelement.originalOpacity);
YAHOO.util.Dom.setStyle(this.popupelement, "display", "");
returnvalue = false;
}
if (typeof this.Overlay != 'undefined')
{
YAHOO.util.Dom.setStyle(document.body.appendChild( this.Overlay), "display", "");
}
}
if (!ignorereturn)
{
return returnvalue;
}
}

this.Close = function()
{
if (this.enabled)
{
this.ClearTimer();
if (typeof this.popupelement != 'undefined')
{
//this.Anim = new YAHOO.util.Anim(this.popupelement, {opacity:{to: 0}}, 0.25);
//if (this.Anim.animate())
//{
//this.Anim.onComplete.subscribe(this.DoClose, this, true);
//}
//else
//{
this.DoClose();
//}
}
}
}

this.DoClose = function()
{
if (typeof this.popupelement != 'undefined')
{
YAHOO.util.Dom.setStyle(this.popupelement, "display", "none");
}
if (typeof this.Overlay != 'undefined')
{
//overlay = document.body.appendChild(this.Overlay);
YAHOO.util.Dom.setStyle(document.body.appendChild( this.Overlay), "display", "none");
}
}

this.TimerClose = function(waittime)
{
this.timer = window.setTimeout( this.varname + ".Close()", waittime );
}

this.ClearTimer = function()
{
if (this.timer)
{
window.clearTimeout(this.timer);
}
}
}

//
// Site Info Popup
//

SitePopup = new siteinfo_popup('Siteinfo_Popup','siteinfo_popup');

function siteinfo_popup(varname,elementid)
{
this.elementid = elementid;
this.varname = varname;
this.CloseFunc = false;

this.Show = function(title,text,timewait,func,closefunc,form)
{
if (func)
{
eval(func);
}
if (form)
{
if (formobj = fetch_object(this.elementid + '_form'))
{
formobj.name = (form['name'] ? form['name'] : '');
formobj.action = (form['action'] ? form['action'] : '');
formobj.onsubmit = (form['onsubmit'] ? form['onsubmit'] : '');
formobj.method = (form['method'] ? form['method'] : '');
}
}
if (closefunc)
{
this.CloseFunc = closefunc;
}
if (titleobj = fetch_object(this.elementid + '_title'))
{
titleobj.innerHTML = title;
}
if (bodyobj = fetch_object(this.elementid + '_body'))
{
bodyobj.innerHTML = text;
}
eval(this.varname + '.Show()');

if (timewait)
{
this.TimerClose(timewait);
}
}

this.Close = function()
{
if (this.CloseFunc)
{
eval(this.CloseFunc);
}
eval(this.varname + '.Close()');
}

this.TimerClose = function(timewait)
{
eval(this.varname + '.TimerClose(' + timewait + ')');
}
}

Lynne
01-31-2010, 05:04 PM
Let me get this straight.... is this what is showing up in the page source? Or is this the template?

<img id="reminder_15_toggler" src="clear.gif" class="reminder_toggler<vb:if condition="$show['fav']">_active</vb:if>" onclick="FAVReminder.Toggle(15);" title="<vb:if condition="$show['fav']">Remove Favorite<vb:else />Add Favorite</vb:if>" />

wolfe
01-31-2010, 05:26 PM
this is the page source:
<img id="nzbreminder_201_toggler" src="clear.gif" class="nzbreminder_toggler" title="Add Favorite">



this is the template:

<img id="reminder_{vb:raw favid}_toggler" src="clear.gif" class="reminder_toggler<vb:if condition="$show['fav']">_active</vb:if>" onclick="FAVReminder.Toggle({vb:raw favid});" title="<vb:if condition="$show['fav']">Remove Favorite<vb:else />Add Favorite</vb:if>" />


its getting the verible its just not doing the javascript and the ajax_hook part of the code.

Lynne
01-31-2010, 05:44 PM
Have you tried spitting out $show['fav'] just to make sure it is getting defined and passed?

wolfe
01-31-2010, 05:53 PM
the show is a true or false if statment m8

$favcache = unserialize($vbulletin->userinfo['favcache']);



if ($favcache[$favid])

{

$show['fav'] = true;

} else {

$show['fav'] = false;

}

--------------- Added 1265039241 at 1265039241 ---------------

it shows as array m8 do you want me to send you the code in files ?