View Full Version : Multi-Quote Text Link
PyroNET
01-12-2008, 03:51 PM
Anybody have any insight on how I could get Multi-Quote to work with a text link instead of an image?
PyroNET
01-13-2008, 05:20 PM
<span id="mq_$post[postid]" onclick="mq_click(this.id.substr(3));">Multi-Quote</span>
Any reason this wouldn't be working?
Dismounted
01-14-2008, 07:59 AM
Look at the JS function. It tries to change the "image", but as there isn't one to start with, it errors out and stops executing the function. You will need to change the function for it to work, or alternatively, write your own.
PyroNET
01-14-2008, 11:27 AM
Look at the JS function. It tries to change the "image", but as there isn't one to start with, it errors out and stops executing the function. You will need to change the function for it to work, or alternatively, write your own.
Thanks, got it working
/**
* Initializes the MQ images, so they are clickable. Additionally, it redoes
* the coloring of the image based on the current value of the cookie. This
* is helpful if a user uses the back button.
*
* @param object The object to search within for MQ images.
*/
function mq_init(obj)
{
var cookie_ids = fetch_cookie('vbulletin_multiquote');
if (cookie_ids != null && cookie_ids != '')
{
cookie_ids = cookie_ids.split(',');
}
else
{
cookie_ids = new Array();
}
var postid;
var spans = fetch_tags(obj, 'span');
for (var i = 0; i < spans.length; i++)
{
if (spans[i].id && spans[i].id.substr(0, 3) == 'mq_')
{
postid = spans[i].id.substr(3);
spans[i].onclick = function(e) { return mq_click(this.id.substr(3)); };
change_mq_thing(postid, (PHP.in_array(postid, cookie_ids) > -1 ? true : false));
}
}
}
/**
* Callback function to when an MQ image is clicked. Modifies the cookie and
* updates the look of the image to suit.
*
* @param integer Post ID of the image clicked.
*
* @return false Always returns false to ensure any href event does not run
*/
function mq_click(postid)
{
var cookie_ids = fetch_cookie('vbulletin_multiquote');
var cookie_text = new Array();
var is_selected = false;
if (cookie_ids != null && cookie_ids != '')
{
cookie_ids = cookie_ids.split(',');
for (i in cookie_ids)
{
if (cookie_ids[i] == postid)
{
is_selected = true;
}
else if (cookie_ids[i])
{
cookie_text.push(cookie_ids[i]);
}
}
}
// flip the image to the other option
change_mq_thing(postid, (is_selected ? false : true));
// if we don't have the postid in the cookie, add it
if (!is_selected)
{
cookie_text.push(postid);
if (typeof mqlimit != 'undefined' && mqlimit > 0)
{
for (var i = 0; i < (cookie_text.length - mqlimit); i++)
{
var removal = cookie_text.shift();
change_mq_thing(removal, false);
}
}
}
set_cookie('vbulletin_multiquote', cookie_text.join(','));
return false;
}
/**
* Changes the MQ image to show as being selected or unselected
*
* @param integer ID of the post whose MQ button is changing
* @param boolean Whether to make the image selected or not
*/
function change_mq_thing(postid, to_selected)
{
var mq_obj = fetch_object('mq_' + postid);
if (mq_obj)
{
if (to_selected == true)
{
mq_obj.innerHTML = "Multi-Quote +";
}
else
{
mq_obj.innerHTML = "Multi-Quote -";
}
}
}
mq_init(fetch_object('posts'));
vBulletin® v3.8.12 by vBS, Copyright ©2000-2024, vBulletin Solutions Inc.