vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vBulletin 3.5 Add-ons (https://vborg.vbsupport.ru/forumdisplay.php?f=113)
-   -   vB Spell :: Spell Checker in WYSIWYG and Standard Modes (https://vborg.vbsupport.ru/showthread.php?t=92202)

user02934123123 04-21-2006 11:05 AM

Installed today, and works well; except that it doesn't work from the postbit quickedit (always finds 0 mistakes in posts when checked thus, even if there are many spelling errors). I can also repeat the query of the post above: namely, that the spell check window is improperly sized in Firefox. Any chance of a fix for that?

Else, all looks quite nice. What are the options for installing other dictionaries (e.g. a UK English dictionary)?

Parker Clack 05-23-2006 03:51 PM

As Princeton laid out in post #301 change the postbit_quickedit

change

Code:

<if condition="is_browser('ie')">
                        <td><img src="$stylevar[imgdir_editor]/separator.gif" width="6" height="20" alt="" /></td>
                        <td><div class="imagebutton" id="{$editorid}_cmd_spelling"><img src="$stylevar[imgdir_editor]/spelling.gif" width="21" height="20" alt="$vbphrase[check_spelling]" /></div></td>
                </if>

to

Code:

<td><img src="$stylevar[imgdir_editor]/separator.gif" width="6" height="20" alt="" /></td><td onclick="spellCheck('3', '$editorid', '2');"><div class="imagebutton"><img src="$stylevar[imgdir_editor]/spelling.gif" width="21" height="20" alt="$vbphrase[check_spelling]" /></div></td>
and

Code:

<input type="button" class="button" value="Spell Check" onclick="spellCheck('3', '$editorid', '2');" />
after

Code:

<input type="button" class="button" tabindex="1" accesskey="p" value="$vbphrase[go_advanced]" id="{$editorid}_adv" />
worked for me with everything else as laid out with the changes to the postbit_quickreply template in v 3.5.4

Parker

Eathanor 05-24-2006 02:04 PM

Hi,

Thanks for this great extension :)

I finally managed to solve my problem concerning the importation of the dictionary. I did it in several steps, while cutting file DICTIONARY.DOC in several subfiles.

On the other hand, I have now a new issue. During the spell checking, no accentuated word is recognized. It's in french.

For example, the word “v?rifier” will not be known and it will see the word like this :
Code:

v? rifier
It puts a space in front or behind each accentuated letter. I don't know the cause of this problem and what I must correct. It's very frustrating :confused:

Any ideas ?

Regards,

993ti 05-24-2006 10:00 PM

I'm interested in this as some of my users can't even spell the most simple words.
Is there a dutch language available for it?

sc4r3d 05-26-2006 01:22 AM

For each template where you would like to add a vB Spell, do the following edits (Example: editpost, newreply, newthread, etc.)

Can you give me all of the names, I think I have all of them but want to make sure I am not missing any of them.

Hitting "Installed" and I love it!!

Thanks

boduzapho 05-28-2006 03:10 AM

Just installed this on my clean 3.5.4 When the popup box shows it has only this in it..

options['vbspell_allow_all'] OR is_member_of($vbulletin->userinfo, explode(',', $vbulletin->options['vbspell_use_groups']))) $vbulletin->userinfo['can_use_vbspell'] = TRUE; if (!$vbulletin->userinfo['can_use_vbspell'] OR $vbulletin->userinfo['usergroupid'] == 0) print_no_permission(); $PersonalWords = array(); if (!empty($_COOKIE['vbspell_words'])) $PersonalWords = explode(',', urldecode(strtolower($_COOKIE['vbspell_words']))); require_once('./includes/searchwords.php'); // get search engine stop words, to save on queries. function MisSpelled($word) { global $db, $badwords, $PersonalWords; $word = trim($word, "'"); $partial = explode('\'', strtolower($word)); if (count($partial) > 1) $CheckPartial = TRUE; else $CheckPartial = FALSE; if (in_array($partial[0], $PersonalWords)) return FALSE; // User have "learned" this word elseif ($CheckPartial AND in_array(strtolower($word), $PersonalWords)) return FALSE; // User have "learned" this word elseif ($word === strtoupper($word)) return FALSE; // All uppercase, treat as abbriviation, might want to make this an admincp option.. elseif (in_array($partial[0], $badwords)) return FALSE; // Very common word elseif ($CheckPartial AND in_array($partial[0] . $partial[1], $badwords)) return FALSE; // Very common word elseif ($db->query_first("SELECT word FROM " . TABLE_PREFIX . "vbspell WHERE word = '" . addslashes($partial[0]) . "'")) return FALSE; // Found In dictionary else return TRUE; // probably mis-spelled } function Suggest($for) { global $db, $vbulletin; $for = trim($for, "'"); $WordList = array(); $SuggestedList = array(); $Suggestions = $db->query_read("SELECT word FROM " . TABLE_PREFIX . "vbspell WHERE sound = '" . addslashes(metaphone($for)) . "'"); while ($Suggestion = $db->fetch_array($Suggestions)) $WordList[$Suggestion['word']] = levenshtein($for, $Suggestion['word']); asort($WordList); reset($WordList); foreach ($WordList as $word => $distance) if ($distance <= $vbulletin->options['vbspell_levenshtein_distance']) $SuggestedList[] = $word; if ($for === ucfirst($for)) { foreach ($SuggestedList as $key => $word) $SuggestedList[$key] = ucfirst($word); } elseif ($for === strtoupper($for)) { // not possible yet, but might be allowed in admincp. foreach ($SuggestedList as $key => $word) $SuggestedList[$key] = strtoupper($word); } return $SuggestedList; } function strip_attributes ($html, $attrs) { if (!is_array($attrs)) { $array= array( "$attrs" ); unset($attrs); $attrs= $array; } foreach ($attrs AS $attribute) { // once for ", once for ', s makes the dot match linebreaks, too. $search[]= "/".$attribute.'\s*=\s*".+"/Uis'; $search[]= "/".$attribute."\s*=\s*'.+'/Uis"; // and once more for unquoted attributes $search[]= "/".$attribute."\s*=\s*\S+/i"; } $html= preg_replace($search, "", $html); // do another pass and strip_tags() if matches are still found foreach ($search AS $pattern) { if (preg_match($pattern, $html)) { $html= strip_tags($html); break; } } return $html; } // the safe_html() function // note, there is a special format for $allowedtags, see ~line 90 function safe_html ($html, $allowedtags="") { /* safe_html.php http://chxo.com/scripts/safe_html/ Copyright 2003 by Chris Snyder (csnyder@chxo.com) Free to use and redistribute, but see License and Disclaimer below - Huge thanks to James Wetterau for initial testing and feedback! - Originally posted at http://lists.nyphp.org/pipermail/tal...ay/003832.html Version History: 2005-09-05 - 0.5 -- upgrade to handle cases at http://ha.ckers.org/xss.html 2005-04-24 - 0.4 -- added check for encoded ascii entities 2003-05-31 - 0.3 -- initial public release License and Disclaimer: Copyright 2003 Chris Snyder. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ // anything with ="javascript: is right out -- strip all tags if found $pattern= "/=[\S\s]*s\s*c\s*r\s*i\s*p\s*t\s*:\s*\S+/Ui"; if (preg_match($pattern, $html)) { $html= strip_tags($html); return $html; } // anything with encoded entites inside of tags is out, too $pattern= "/<[\S\s]*&#[x0-9]*[\S\s]*>/Ui"; if (preg_match($pattern, $html)) { $html= strip_tags($html); return $html; } // setup -- $allowedtags is an array of $tag=>$closeit pairs, // where $tag is an HTML tag to allow and $closeit is 1 if the tag // requires a matching, closing tag if ($allowedtags=="") { $allowedtags= array ( "p"=>1, "br"=>1, "a"=>1, "img"=>1, "li"=>1, "ol"=>1, "ul"=>1, "font"=>1, "b"=>1, "i"=>1, "em"=>1, "strong"=>1, "del"=>1, "ins"=>1, "u"=>1, "code"=>1, "pre"=>1, "blockquote"=>1, "hr"=>1 ); } elseif (!is_array($allowedtags)) { $array= array( "$allowedtags" ); } // there's some debate about this.. is strip_tags() better than rolling your own regex? // note: a bug in PHP 4.3.1 caused improper handling of ! in tag attributes when using strip_tags() $stripallowed= ""; foreach ($allowedtags AS $tag=>$closeit) { $stripallowed.= "<$tag>"; } //print "Stripallowed: $stripallowed -- ".print_r($allowedtags,1); $html= strip_tags($html, $stripallowed); // also, lets get rid of some pesky attributes that may be set on the remaining tags... // this should be changed to keep_attributes($htmlm $goodattrs), or perhaps even better keep_attributes // should be run first. then strip_attributes, if it finds any of those, should cause safe_html to strip all tags. $badattrs= array("on\w+", "style", "fs\w+", "seek\w+"); $html= strip_attributes($html, $badattrs); // close html tags if necessary -- note that this WON'T be graceful formatting-wise, it just has to fix any maliciousness foreach ($allowedtags AS $tag=>$closeit) { if (!$closeit) continue; $patternopen= "/<$tag\b[^>]*>/Ui"; $patternclose= "/<\/$tag\b[^>]*>/Ui"; $totalopen= preg_match_all ( $patternopen, $html, $matches ); $totalclose= preg_match_all ( $patternclose, $html, $matches2 ); if ($totalopen>$totalclose) { $html.= str_repeat("", ($totalopen - $totalclose)); } } return $html; } $mystr = str_replace('\\', '\\\\', $_REQUEST['spellstring']); $mystr = stripslashes($mystr); $mystr = safe_html($mystr); $FormName = $_POST['spell_formname']; $FieldName = $_POST['spell_fieldname']; // can't have newlines or carriage returns in javascript string $mystr = str_replace("\r", "", $mystr); $mystr = str_replace("\n", "_|_", $mystr); $mystr = trim($mystr); $ignore_sets = '\[QUOT.+\].*\[\/QUOTE\]|'; $ignore_sets .= '\[CODE\].*\[\/CODE\]|'; $ignore_sets .= '\[PHP\].*\[\/PHP\]|'; $ignore_sets .= '\[img\].*\[\/img\]|'; $ignore_sets .= '\[url.*\].*\[\/url\]|'; $ignore_sets .= '.*<\/a>|'; preg_match_all ( "/" . $ignore_sets . "\[[^\]]+\]|[[:alpha:]']+|<[^>]+>|&[^;\ ]+;/im", $mystr, $alphas, PREG_OFFSET_CAPTURE|PREG_PATTERN_ORDER); $mystr = str_replace('\\', '\\\\', $mystr); // this has to be done _after_ the matching. it messes up the // indexing otherwise. I have not figured out exactly why this // happens but I know this fixes it. $mystr = str_replace("\"", "\\\"", $mystr); $js .= 'var mispstr = "'.$mystr.'";'."\n"; $js .= 'var misps = Array('; $curindex = 0; for($i = 0; $i < sizeof($alphas[0]); $i++) { // if the word is an html tag or entity then skip it if (preg_match("/<[^>]+>|&[^;\ ]+;/", $alphas[0][$i][0])) continue; // ignore quotes if (preg_match("/\[QUOTE\].\[\/QUOTE\]/ism", $alphas[0][$i][0])) continue; // ignore BBCODE/VBCODE tags if (preg_match("/\[[^\]]+/", $alphas[0][$i][0])) continue; if (MisSpelled($alphas[0][$i][0])) { $js .= "new misp('" . str_replace("'", "\\'",$alphas[0][$i][0]) . "',". $alphas[0][$i][1] . "," . (strlen($alphas[0][$i][0]) + ($alphas[0][$i][1] - 1) ) . ",["; $suggestions = Suggest($alphas[0][$i][0]); foreach ($suggestions as $suggestion) { $sugs[] = "'".str_replace("'", "\\'", $suggestion)."'"; } if (sizeof($sugs)) { $js .= join(",", $sugs); } unset($sugs); $js .= "]),\n"; $sugs_found = 1; } } if ($sugs_found) $js = substr($js, 0, -2); $js .= ");"; eval('print_output("' . fetch_template('vbspell') . '");'); ?>

Apparently after it includes global.php it dies...

Any help?:surprised:

Justdave 05-30-2006 09:29 PM

Quote:

Originally Posted by zylstra
4 forms of the word masturbate are mispelled (masterbate) in your dictionary, among many others.

Who provided the dictionary?

Damn, that's fahny! :knockedout:

FFMania 06-02-2006 03:05 PM

Is it only me or does the hack not functioning properly on the quick post edit template? I tried it on my board by typing something that is wrong into the quick edit box... and when I did a spell check, it just said that "spell check is complete". Anything that I am missing here?

Kihon Kata 06-02-2006 07:47 PM

I installed this last year, but never clicked install. WTF uhm Hi

Hey, I noticed that the ZIP says "vBSpell 0 9 12" but when I downloaded it, the version at the top of the php files say "v0.9.7"

Am I seeing something strange here with version differences?

user02934123123 06-04-2006 12:37 PM

Quote:

Originally Posted by FFMania
Is it only me or does the hack not functioning properly on the quick post edit template? I tried it on my board by typing something that is wrong into the quick edit box... and when I did a spell check, it just said that "spell check is complete". Anything that I am missing here?

I've had this same problem (and I believe I reported it somewhere above in this thread) -- and have found no way to work around it. It just doesn't work in the quick post edit window. I've found it best not to provide it there in the templates; so there's no spell check button on the Quick Edit in-line editor (it's always available to users who click 'Go advanced' for the full editor).

It would be nice if this bug could be fixed, though.


All times are GMT. The time now is 01:16 PM.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.02437 seconds
  • Memory Usage 1,793KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (5)bbcode_code_printable
  • (2)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (4)pagenav_pagelink
  • (1)pagenav_pagelinkrel
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (10)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.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/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • printthread_start
  • pagenav_page
  • pagenav_complete
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete