⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 spell-check-ui.js

📁 Jive Forums 论坛源码 v4.2.3
💻 JS
📖 第 1 页 / 共 2 页
字号:
// Spell Checker Plugin for HTMLArea-3.0
// Sponsored by www.americanbible.org
// Implementation by Mihai Bazon, http://dynarch.com/mishoo/
//
// (c) dynarch.com 2003.
// Distributed under the same terms as HTMLArea itself.
// This notice MUST stay intact for use (see license.txt).
//
// $Id: spell-check-ui.js 17131 2005-08-23 23:30:49Z bruce $

// internationalization file was already loaded in parent ;-)
var SpellChecker = window.opener.SpellChecker;
var i18n = SpellChecker.I18N;

var HTMLArea = window.opener.HTMLArea;
var is_ie = HTMLArea.is_ie;
var editor = SpellChecker.editor;
var frame = null;
var currentElement = null;
var wrongWords = null;
var modified = false;
var allWords = {};
var fixedWords = [];
var suggested_words = {};
var duplicated_words = {};

function makeCleanDoc(leaveFixed) {
	// document.getElementById("status").innerHTML = 'Please wait: rendering valid HTML';
	var words = wrongWords.concat(fixedWords);
	for (var i = words.length; --i >= 0;) {
		var el = words[i];
		if (!(leaveFixed && /HA-spellcheck-fixed/.test(el.className))) {
		    if (el.firstChild) {
			    el.parentNode.insertBefore(el.firstChild, el);
            }
			el.parentNode.removeChild(el);
		} else
			el.className = "HA-spellcheck-fixed";
	}

	// we should use innerHTML here, but IE6's implementation messes up the
	// HTML to such extent that our poor Perl parser doesn't understand it
	// anymore.
	return window.opener.HTMLArea.getHTML(frame.contentWindow.document.body, false, editor);
};

//function recheckClicked() {
//	document.getElementById("status").innerHTML = i18n["Please wait: changing dictionary to"] + ': "' + document.getElementById("f_dictionary").value + '".';
//	var field = document.getElementById("f_content");
//	field.value = makeCleanDoc(true);
//	field.form.submit();
//};

function saveClicked() {
	if (modified) {
		editor.setHTML(makeCleanDoc(false));
	}
	window.close();
	return false;
};

function cancelClicked() {
	var ok = true;
	if (modified) {
		ok = confirm(i18n["QUIT_CONFIRMATION"]);
	}
	if (ok) {
		window.close();
	}
	return false;
};

function replaceWord(el) {
	var replacement = document.getElementById("v_replacement").value;
	var this_word_modified = (el.innerHTML != replacement);
	if (this_word_modified)
		modified = true;
	if (el) {
		el.className = el.className.replace(/\s*HA-spellcheck-(hover|fixed)\s*/g, " ");
	}
	el.className += " HA-spellcheck-fixed";
	el.__msh_fixed = true;
	if (!this_word_modified) {
		return false;
	}
	el.innerHTML = replacement;
};

// BR
function removeWord(el) {
	var replacement = "";
    modified = true;
	if (el) {
		el.className = el.className.replace(/\s*HA-spellcheck-(hover|fixed)\s*/g, " ");
	}
	el.className += " HA-spellcheck-fixed";
	el.__msh_fixed = true;
	el.innerHTML = replacement;
};

function removeClicked() {
	removeWord(currentElement);
	var start = currentElement.__msh_id;
	var index = start;
	do {
		++index;
		if (index == wrongWords.length) {
			index = 0;
		}
	} while ((index != start) && wrongWords[index].__msh_fixed);
	if (index == start) {
		index = 0;
		if (confirm(i18n["Finished list of mispelled words"])) {
            editor.setHTML(makeCleanDoc(false));
            window.close();
            return false;
        }
	}
	document.getElementById("b_revert").disabled = true;
	document.getElementById("b_replace").disabled = true;
    document.getElementById("b_ignore").disabled = true;
    document.getElementById("b_replall").disabled = true;
    document.getElementById("b_ignall").disabled = true;
    document.getElementById("b_remdup").disabled = true;

	wrongWords[index].__msh_wordClicked(true);

	return false;
};
// end BR

function replaceClicked() {
	replaceWord(currentElement);
	var start = currentElement.__msh_id;
	var index = start;
	do {
		++index;
		if (index == wrongWords.length) {
			index = 0;
		}
	} while ((index != start) && wrongWords[index].__msh_fixed);
	if (index == start) {
		index = 0;
		if (confirm(i18n["Finished list of mispelled words"])) {
            editor.setHTML(makeCleanDoc(false));
            window.close();
            return false;
        }
	}
    // BR
	document.getElementById("b_revert").disabled = true;
	document.getElementById("b_replace").disabled = true;
    document.getElementById("b_ignore").disabled = true;
    document.getElementById("b_replall").disabled = true;
    document.getElementById("b_ignall").disabled = true;
    document.getElementById("b_remdup").disabled = true;
    // end BR

	wrongWords[index].__msh_wordClicked(true);

	return false;
};

// BR

function replacementTextEntered() {
	if (currentElement.innerHTML != document.getElementById("v_replacement").value) {
	    document.getElementById("b_replace").disabled = false;
	    var a = allWords[currentElement.__msh_origWord];
        document.getElementById("b_replall").disabled = (a.length <= 1);
        document.getElementById("b_ignall").disabled = (a.length <= 1);
	}
	else {
	    document.getElementById("b_replace").disabled = true;
	    document.getElementById("b_replall").disabled = true;
	    var a = allWords[currentElement.__msh_origWord];
        document.getElementById("b_ignall").disabled = (a.length <= 1);
	}
}
// end BR

function revertClicked() {
	document.getElementById("v_replacement").value = currentElement.__msh_origWord;
	replaceWord(currentElement);
	currentElement.className = "HA-spellcheck-error HA-spellcheck-current";
	// BR
	document.getElementById("b_revert").disabled = true;
	document.getElementById("b_replace").disabled = true;
    document.getElementById("b_ignore").disabled = true;
    document.getElementById("b_replall").disabled = true;
    document.getElementById("b_ignall").disabled = true;
    document.getElementById("b_remdup").disabled = true;
    // end BR

	return false;
};

function replaceAllClicked() {
	var replacement = document.getElementById("v_replacement").value;
	var ok = true;
	var spans = allWords[currentElement.__msh_origWord];
	if (spans.length == 0) {
		alert("A condition that should be impossible just happened. Please report this error to Jive Software");
	} else if (spans.length == 1) {
		replaceClicked();
		return false;
	}
	/*
	var message = "The word \"" + currentElement.__msh_origWord + "\" occurs " + spans.length + " times.\n";
	if (replacement == currentElement.__msh_origWord) {
		ok = confirm(message + "Ignore all occurrences?");
	} else {
		ok = confirm(message + "Replace all occurrences with \"" + replacement + "\"?");
	}
	*/
	if (ok) {
		for (var i = 0; i < spans.length; ++i) {
			if (spans[i] != currentElement) {
				replaceWord(spans[i]);
			}
		}
		// replace current element the last, so that we jump to the next word ;-)
		replaceClicked();
	}

	return false;
};

function ignoreClicked() {
	document.getElementById("v_replacement").value = currentElement.__msh_origWord;
	replaceClicked();
	return false;
};

function ignoreAllClicked() {
	document.getElementById("v_replacement").value = currentElement.__msh_origWord;
	replaceAllClicked();
	return false;
};

function learnClicked() {
	alert("Not [yet] implemented");
	return false;
};

function internationalizeWindow() {
	var types = ["div", "span", "button"];
	for (var i = 0; i < types.length; ++i) {
		var tag = types[i];
		var els = document.getElementsByTagName(tag);
		for (var j = els.length; --j >= 0;) {
			var el = els[j];
			if (el.childNodes.length == 1 && /\S/.test(el.innerHTML)) {
				var txt = el.innerHTML;
				if (typeof i18n[txt] != "undefined") {
					el.innerHTML = i18n[txt];
				}
			}
		}
	}
};

function initDocument() {
	internationalizeWindow();
	modified = false;
	frame = document.getElementById("i_framecontent");
	var field = document.getElementById("f_content");
	field.value = HTMLArea.getHTML(editor._doc.body, false, editor);
	field.form.submit();
	//document.getElementById("f_init").value = "0";

	// assign some global event handlers

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -