View Single Post
  #5  
Old 01-03-2015, 05:56 AM
MarkFL's Avatar
MarkFL MarkFL is offline
 
Join Date: Feb 2014
Location: St. Augustine, FL
Posts: 3,853
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I found a workaround involving the use of javascript that is executed when a post is submitted (either new or edited). I added this code to this function (part of an external js file that is called when the ckeditor is in use):

Code:
	var el = document.getElementsByClassName('cke_source')[0];
	if (!el)
	{
		var iFrame = document.getElementsByTagName('iframe')[iFrameIndex()];
		var iFrameBody;
		if (iFrame.contentDocument)
		{ // FF
			iFrameBody = iFrame.contentDocument.getElementsByTagName('body')[0];
		}
		else if (iFrame.contentWindow)
		{ // IE
			iFrameBody = iFrame.contentWindow.document.getElementsByTagName('body')[0];
		}
		var postContent = iFrameBody.innerHTML;
		var n = 1, quit = false;
		while (!quit)
		{
			var imgLoc = nth_occurrence(postContent, "<img src=\"http://mathhelpboards.com/attachment", n);
			if (imgLoc == -1)
			{
				imgLoc = nth_occurrence(postContent, "<img alt=\"\" src=\"http://mathhelpboards.com/attachment", n);
			}
			if (imgLoc > -1)
			{
				var imgLocEnd = postContent.substr(imgLoc).indexOf(">") + 1;
				var imgStr = postContent.substr(imgLoc, imgLocEnd);
				if (nth_occurrence(imgStr, "/", 5) > -1)
				{
					var attachNumberBegin = nth_occurrence(imgStr, "/", 5) + 1;
					var attachNumberEnd = imgStr.substr(attachNumberBegin).indexOf("-");
				}
				else if(imgStr.indexOf("attachment.php?attachmentid=") > -1)
				{
					var attachNumberBegin = imgStr.indexOf("attachment.php?attachmentid=") + 28;
					var attachNumberEnd = imgStr.substr(attachNumberBegin).indexOf("&");
				}
				var attachNumber = imgStr.substr(attachNumberBegin, attachNumberEnd);
				var newImgStr = "[ATTACH=CONFIG]" + attachNumber + "[/ATTACH]";
				postContent = postContent.split(imgStr).join(newImgStr);
				iFrameBody.innerHTML = postContent;
			}
			else
			{
				quit = true;
			}
		}
	}
Replace the URLs in the code above (in red) with your own. You will also need this function (it is part of an external js file I call from the "head_include_bottom" template because I use it in several places):

Code:
function nth_occurrence(string, char, nth)
{
	var first_index = string.indexOf(char);
	var length_up_to_first_index = first_index + 1;

	if (nth == 0)
	{
		return 0;
	}
	else if (nth == 1)
	{
		return first_index;
	}
	else
	{
		var string_after_first_occurrence = string.slice(length_up_to_first_index);
		var next_occurrence = nth_occurrence(string_after_first_occurrence, char, nth - 1);

		if (next_occurrence === -1)
		{
			return -1;
		}
		else
		{
			return length_up_to_first_index + next_occurrence;  
		}
	}
}
edit: I realized after I signed off last night that you will also need the following function:

Code:
function iFrameIndex()
{
	return document.getElementsByTagName('iframe').length - 1;
}
This function ensures you are referencing the last iframe element added to the page, which works on my board. It may not work for you if you have an iframe in your footer.
Reply With Quote
Благодарность от:
Lynne
 
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01267 seconds
  • Memory Usage 1,777KB
  • Queries Executed 11 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD_SHOWPOST
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (3)bbcode_code
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_box
  • (1)post_thanks_box_bit
  • (1)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (1)post_thanks_postbit
  • (1)post_thanks_postbit_info
  • (1)postbit
  • (1)postbit_onlinestatus
  • (1)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • reputationlevel
  • showthread
Included Files:
  • ./showpost.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_postinfo_query
  • fetch_postinfo
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showpost_start
  • bbcode_fetch_tags
  • bbcode_create
  • postbit_factory
  • showpost_post
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • fetch_musername
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • post_thanks_function_fetch_thanks_bit_start
  • post_thanks_function_show_thanks_date_start
  • post_thanks_function_show_thanks_date_end
  • post_thanks_function_fetch_thanks_bit_end
  • post_thanks_function_fetch_post_thanks_template_start
  • post_thanks_function_fetch_post_thanks_template_end
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • showpost_complete