51
michieltokyo
Re: multi language urgent request

Thank you so much, but still nothing

I copy the whole lot for you

<?php
// $Id: module.textsanitizer.php,v 1.25 2004/06/14 14:22:11 skalpa Exp $
// ------------------------------------------------------------------------ //
// XOOPS - PHP Content Management System //
// Copyright (c) 2000 XOOPS.org //
// <https://xoops.org/> //
// ------------------------------------------------------------------------ //
// This program is free software; you can redistribute it and/or modify //
// it under the terms of the GNU General Public License as published by //
// the Free Software Foundation; either version 2 of the License, or //
// (at your option) any later version. //
// //
// You may not change or alter any portion of this comment or credits //
// of supporting developers from this source code or any supporting //
// source code which is considered copyrighted (c) material of the //
// original comment or credit authors. //
// //
// This program is distributed in the hope that it will be useful, //
// but WITHOUT ANY WARRANTY; without even the implied warranty of //
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
// GNU General Public License for more details. //
// //
// You should have received a copy of the GNU General Public License //
// along with this program; if not, write to the Free Software //
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA //
// ------------------------------------------------------------------------ //
// Author: Kazumi Ono (http://www.myweb.ne.jp/,http://www.xoopscube.jp/) //
// Goghs Cheng (http://www.eqiao.com,http://www.devbeez.com/) //
// Project: The XOOPS Project (https://xoops.org/) //
// ------------------------------------------------------------------------- //

/**
* Class to "clean up" text for various uses
*
* <b>Singleton</b>
*
* @package kernel
* @subpackage core
*
* @author Kazumi Ono <onokazu@xoops.org>
* @author Goghs Cheng
* @copyright (c) 2000-2003 The XOOPS Project - www.xoops.org
*/
class MyTextSanitizer
{
/**
* @var array
*/
var $smileys = array();

/**
*
*/
var $censorConf;

/*
* Constructor of this class
*
* Gets allowed html tags from admin config settings
* <br> should not be allowed since nl2br will be used
* when storing data.
*
* @access private
*
* @todo Sofar, this does nuttin'
*/
function MyTextSanitizer()
{

}

/**
* Access the only instance of this class
*
* @return object
*
* @static
* @staticvar object
*/
function &getInstance()
{
static $instance;
if (!isset($instance)) {
$instance = new MyTextSanitizer();
}
return $instance;
}

/**
* Get the smileys
*
* @return array
*/
function getSmileys()
{
return $this->smileys;
}

/**
* Replace emoticons in the message with smiley images
*
* @param string $message
*
* @return string
*/
function &smiley($message)
{
$db =& Database::getInstance();
if (empty($this->smileys)) {
if ($getsmiles = $db->query("SELECT * FROM ".$db->prefix("smiles"))){
while ($smiles = $db->fetchArray($getsmiles)) {
$message =& str_replace($smiles['code'], '<img src="'.XOOPS_UPLOAD_URL.'/'.htmlspecialchars($smiles['smile_url']).'" alt="" />', $message);
array_push($this->smileys, $smiles);
}
}
} else {
foreach ($this->smileys as $smile) {
$message =& str_replace($smile['code'], '<img src="'.XOOPS_UPLOAD_URL.'/'.htmlspecialchars($smile['smile_url']).'" alt="" />', $message);
}
}
return $message;
}

/**
* Make links in the text clickable
*
* @param string $text
* @return string
**/
function &makeClickable(&$text)
{
$patterns = array("/(^|[^]_a-z0-9-=\"'\/])([a-z]+?):\/\/([^, \r\n\"\(\)'<>]+)/i", "/(^|[^]_a-z0-9-=\"'\/])www\.([a-z0-9\-]+)\.([^, \r\n\"\(\)'<>]+)/i", "/(^|[^]_a-z0-9-=\"'\/])ftp\.([a-z0-9\-]+)\.([^, \r\n\"\(\)'<>]+)/i", "/(^|[^]_a-z0-9-=\"'\/:\.])([a-z0-9\-_\.]+?)@([^, \r\n\"\(\)'<>\[\]]+)/i");
$replacements = array("\\1<a href=\"\\2://\\3\" target=\"_blank\">\\2://\\3</a>", "\\1<a href=\"http://www.\\2.\\3\" target=\"_blank\">www.\\2.\\3</a>", "\\1<a href=\"ftp://ftp.\\2.\\3\" target=\"_blank\">ftp.\\2.\\3</a>", "\\1<a href=\"mailto:\\2@\\3\">\\2@\\3</a>");
return preg_replace($patterns, $replacements, $text);
}


/**
* Multilanguage Hack by marcan, hsalazar, chad and many other Xoopsers ;)
*
* Return only the portion of text related to the selected language
*
* @param string $text
* @return string
**/
function &formatForML(&$text)
{
$patterns = array();
$replacements = array();

global $xoopsConfig;

// LANGUAGE DEFINITION TAGS BEGINS HERE


/**
* Language : japanese
* Tags : [jp]...[/jp]
**/
$patterns[] = "/\[jp](.*)\[\/jp\]/sU";
if ($xoopsConfig['language'] == "japanese") {
$replacements[] = '\\1';
} else {
$replacements[] = "";
}
/** End of japanese language tags definition **/



/**
* Language : english
* Tags : [en]...[/en]
**/
$patterns[] = "/\[en](.*)\[\/en\]/sU";
if ($xoopsConfig['language'] == "english") {
$replacements[] = '\\1';
} else {
$replacements[] = "";
}
/** End of english language tags definition **/

// LANGUAGE DEFINITION TAGS ENDS HERE

return preg_replace($patterns, $replacements, $text);
}

/**
* Replace XoopsCodes with their equivalent HTML formatting
*
* @param string $text
* @param bool $allowimage Allow images in the text?
* On FALSE, uses links to images.
* @return string
**/
// ML Hack by marcan
// function &xoopsCodeDecode(&$text, $allowimage = 1)
function &xoopsCodeDecode(&$text, $allowimage = 1, $formatML = 1)
// End of ML Hack by marcan
{
$patterns = array();
$replacements = array();

// ML Hack by marcan
If ($formatML) {
$text =& $this->formatForML($text);
}
// End of ML hack by marcan

//$patterns[] = "/\
(.*)[/code]/esU";
        //
$replacements[] = "'<div class="xoopsCode"><code><pre>'.wordwrap(MyTextSanitizer::htmlSpecialChars('\1'), 100).'</pre></code></div>'";
        // RMV: added new markup for intrasite url (allows easier site moves)
        // TODO: automatically convert other URLs to this format if XOOPS_URL matches??
        
$patterns[] = "/[siteurl=(['"]?)([^"'<>]*)\1](.*)[/siteurl]/sU";
        
$replacements[] = '<a href="'.XOOPS_URL.'/\2" target="_blank">\3</a>';
        
$patterns[] = "/[url=(['"]?)(http[s]?://[^"'<>]*)\1](.*)[/url]/sU";
        
$replacements[] = '<a href="\2" target="_blank">\3</a>';
        
$patterns[] = "/[url=(['"]?)(ftp?://[^"'<>]*)\1](.*)[/url]/sU";
        
$replacements[] = '<a href="\2" target="_blank">\3</a>';
        
$patterns[] = "/[url=(['"]?)([^"'<>]*)\1](.*)[/url]/sU";
        
$replacements[] = '<a href="http://\2" target="_blank">\3</a>';
        
$patterns[] = "/[color=(['"]?)([a-zA-Z0-9]*)\1](.*)[/color]/sU";
        
$replacements[] = '<span style="color#\2;">\3</span>';
        
$patterns[] = "/[size=(['"]?)([a-z0-9-]*)\1](.*)[/size]/sU";
        
$replacements[] = '<span style="font-size\2;">\3</span>';
        
$patterns[] = "/[font=(['"]?)([^;<>*()"']*)\1](.*)[/font]/sU";
        
$replacements[] = '<span style="font-family\2;">\3</span>';
        
$patterns[] = "/[email]([^;<>*()"']*)[/email]/sU";
        
$replacements[] = '<a href="mailto:\1">\1</a>';
        
$patterns[] = "/[b](.*)[/b]/sU";
        
$replacements[] = '<b>\1</b>';
        
$patterns[] = "/[i](.*)[/i]/sU";
        
$replacements[] = '<i>\1</i>';
        
$patterns[] = "/[u](.*)[/u]/sU";
        
$replacements[] = '<u>\1</u>';
        
$patterns[] = "/[d](.*)[/d]/sU";
        
$replacements[] = '<del>\1</del>';
        
//$patterns[] = "/[li](.*)[/li]/sU";
        //$replacements[] = '<li>\1</li>';
        
$patterns[] = "/[img align=(['"]?)(left|center|right)\1]([^"()?&'<>]*)[/img]/sU";
        
$patterns[] = "/[img]([^"()?&'<>]*)[/img]/sU";
        $patterns[] = "/[img align=(['"]?)(left|center|right)\1 id=(['"
]?)([0-9]*)\3]([^"()?&'<>]*)[/img]/sU";
        
$patterns[] = "/[img id=(['"]?)([0-9]*)\1]([^"()?&'<>]*)[/img]/sU";
        if (
$allowimage != 1) {
            
$replacements[] = '<a href="\3" target="_blank">\3</a>';
            
$replacements[] = '<a href="\1" target="_blank">\1</a>';
            
$replacements[] = '<a href="'.XOOPS_URL.'/image.php?id=\4" target="_blank">\4</a>';
            
$replacements[] = '<a href="'.XOOPS_URL.'/image.php?id=\2" target="_blank">\3</a>';
        } else {
            
$replacements[] = '<img src="\3" align="\2" alt="" />';
            
$replacements[] = '<img src="\1" alt="" />';
            
$replacements[] = '<img src="'.XOOPS_URL.'/image.php?id=\4" align="\2" alt="\4" />';
            
$replacements[] = '<img src="'.XOOPS_URL.'/image.php?id=\2" alt="\3" />';
        }
        
$patterns[] = "/[quote]/sU";
        
$replacements[] = _QUOTEC.'<div class="xoopsQuote"><blockquote>';
        
//$replacements[] = 'Quote: <div class="xoopsQuote"><blockquote>';
        
$patterns[] = "/[/quote]/sU";
        
$replacements[] = '</blockquote></div>';
        
$patterns[] = "/javascript:/si";
        
$replacements[] = "java script:";
        
$patterns[] = "/about:/si";
        
$replacements[] = "about :";
        return 
preg_replace($patterns$replacements$text);
    }

    
/**
     * Convert linebreaks to <br /> tags
     *
     * @param    string  $text
     *
     * @return    string
     */
    
function &nl2Br($text)
    {
        return 
preg_replace("/(1512)|(15)|(12)/","<br />",$text);
    }

    
/**
     * Add slashes to the text if magic_quotes_gpc is turned off.
     *
     * @param   string  $text
     * @return  string
     **/
    
function &addSlashes($text)
    {
        if (!
get_magic_quotes_gpc()) {
            
$text =& addslashes($text);
        }
        return 
$text;
    }
    
/*
    * if magic_quotes_gpc is on, stirip back slashes
    *
    * @param    string  $text
    *
    * @return    string
    */
    
function &stripSlashesGPC($text)
    {
        if (
get_magic_quotes_gpc()) {
            
$text =& stripslashes($text);
        }
        return 
$text;
    }

    
/*
    *  for displaying data in html textbox forms
    *
    * @param    string  $text
    *
    * @return    string
    */
    
function &htmlSpecialChars($text)
    {
        
//return preg_replace("/&amp;/i", '&', htmlspecialchars($text, ENT_QUOTES));
        
return preg_replace(array("/&amp;/i""/&nbsp;/i"), array('&''&nbsp;'), htmlspecialchars($textENT_QUOTES));
    }

    
/**
     * Reverses {@link htmlSpecialChars()}
     *
     * @param   string  $text
     * @return  string
     **/
    
function &undoHtmlSpecialChars(&$text)
    {
        return 
preg_replace(array("/>/i""/</i""/"/i", "/'/i"), array(">", "<", """, "'"), $text);
    }

    /**
     * Filters textarea form data in DB for display
     *
     * @param   string  
$text
     * @param   bool    
$html   allow html?
     * @param   bool    
$smiley allow smileys?
     * @param   bool    
$xcode  allow xoopscode?
     * @param   bool    
$image  allow inline images?
     * @param   bool    
$br     convert linebreaks?
     * @return  string
     **/
    // ML Hack by marcan
    // function &displayTarea(&
$text$html = 0, $smiley = 1, $xcode = 1, $image = 1, $br = 1)
    function &displayTarea(&
$text$html = 0, $smiley = 1, $xcode = 1, $image = 1, $br = 1, $formatML = 1)
    // End of ML Hack by marcan
    {
        if (
$html != 1) {
            // html not allowed
            
$text =& $this->htmlSpecialChars($text);
        }
        
$text =& $this->codePreConv($text$xcode); // Ryuji_edit(2003-11-18)
        
$text =& $this->makeClickable($text);
        if (
$smiley != 0) {
            // process smiley
            
$text =& $this->smiley($text);
        }
        if (
$xcode != 0) {
            // decode xcode
            if (
$image != 0) {
                // image allowed
                // ML Hack by marcan
                // 
$text =& $this->xoopsCodeDecode($text);
                
$text =& $this->xoopsCodeDecode($text, 1, $formatML);
                // End of ML Hack by marcan
                    } else {
                        // image not allowed
                        // ML Hack by marcan
                                        // 
$text =& $this->xoopsCodeDecode($text, 0);
                        
$text =& $this->xoopsCodeDecode($text, 0, $formatML);
                                        // End of ML Hack by marcan
            }
        }
        if (
$br != 0) {
            
$text =& $this->nl2Br($text);
        }
        
$text =& $this->codeConv($text$xcode$image);    // Ryuji_edit(2003-11-18)
        return 
$text;
    }

    /**
     * Filters textarea form data submitted for preview
     *
     * @param   string  
$text
     * @param   bool    
$html   allow html?
     * @param   bool    
$smiley allow smileys?
     * @param   bool    
$xcode  allow xoopscode?
     * @param   bool    
$image  allow inline images?
     * @param   bool    
$br     convert linebreaks?
     * @return  string
     **/
    function &previewTarea(&
$text$html = 0, $smiley = 1, $xcode = 1, $image = 1, $br = 1)
    {
        
$text =& $this->stripSlashesGPC($text);
        if (
$html != 1) {
            // html not allowed
            
$text =& $this->htmlSpecialChars($text);
        }
        
$text =& $this->codePreConv($text$xcode); // Ryuji_edit(2003-11-18)
        
$text =& $this->makeClickable($text);
        if (
$smiley != 0) {
            // process smiley
            
$text =& $this->smiley($text);
        }
        if (
$xcode != 0) {
            // decode xcode
            if (
$image != 0) {
                // image allowed
                
$text =& $this->xoopsCodeDecode($text);
            } else {
                // image not allowed
                
$text =& $this->xoopsCodeDecode($text, 0);
            }
        }
        if (
$br != 0) {
            
$text =& $this->nl2Br($text);
        }
        
$text =& $this->codeConv($text$xcode$image);    // Ryuji_edit(2003-11-18)
        return 
$text;
    }

    /**
     * Replaces banned words in a string with their replacements
     *
     * @param   string 
$text
     * @return  string
     *
     * @deprecated
     **/
    function &censorString(&
$text)
    {
        if (!isset(
$this->censorConf)) {
            
$config_handler =& xoops_gethandler('config');
            
$this->censorConf =& $config_handler->getConfigsByCat(XOOPS_CONF_CENSOR);
        }
        if (
$this->censorConf['censor_enable'] == 1) {
            
$replacement = $this->censorConf['censor_replace'];
            foreach (
$this->censorConf['censor_words'] as $bad) {
                if ( !empty(
$bad) ) {
                
$bad = quotemeta($bad);
                
$patterns[] = "/(s)".$bad."/siU";
                
$replacements[] = "\1".$replacement;
                
$patterns[] = "/^".$bad."/siU";
                
$replacements[] = $replacement;
                
$patterns[] = "/(n)".$bad."/siU";
                
$replacements[] = "\1".$replacement;
                
$patterns[] = "/]".$bad."/siU";
                
$replacements[] = "]".$replacement;
                
$text = preg_replace($patterns$replacements$text);
                }
               }
        }
           return 
$text;
    }


    /**#@+
     * Sanitizing of [code] tag
     */
    function codePreConv(
$text$xcode = 1) {
        if(
$xcode != 0){
            
$patterns = "/[code](.*)[/code]/esU";
            
$replacements = "'[code]'.base64_encode('$1').'
'";
$text = preg_replace($patterns, $replacements, $text);
}
return $text;
}

function codeConv($text, $xcode = 1, $image = 1){
if($xcode != 0){
$patterns = "/\[code](.*)\[\/code\]/esU";
if ($image != 0) {
// image allowed
$replacements = "'<div class=\"xoopsCode\"><code><pre>'.MyTextSanitizer::codeSanitizer('$1').'</pre></code></div>'";
//$text =& $this->xoopsCodeDecode($text);
} else {
// image not allowed
$replacements = "'<div class=\"xoopsCode\"><code><pre>'.MyTextSanitizer::codeSanitizer('$1', 0).'</pre></code></div>'";
//$text =& $this->xoopsCodeDecode($text, 0);
}
$text = preg_replace($patterns, $replacements, $text);
}
return $text;
}

function codeSanitizer($str, $image = 1){
if($image != 0){
$str = $this->xoopsCodeDecode(
$this->htmlSpecialChars(str_replace('\"', '"', base64_decode($str)))
);
}else{
$str = $this->xoopsCodeDecode(
$this->htmlSpecialChars(str_replace('\"', '"', base64_decode($str))),0
);
}
return $str;
}


/**#@-*/


##################### Deprecated Methods ######################

/**#@+
* @deprecated
*/
function sanitizeForDisplay($text, $allowhtml = 0, $smiley = 1, $bbcode = 1)
{
if ( $allowhtml == 0 ) {
$text = $this->htmlSpecialChars($text);
} else {
//$config =& $GLOBALS['xoopsConfig'];
//$allowed = $config['allowed_html'];
//$text = strip_tags($text, $allowed);
$text = $this->makeClickable($text);
}
if ( $smiley == 1 ) {
$text = $this->smiley($text);
}
if ( $bbcode == 1 ) {
$text = $this->xoopsCodeDecode($text);
}
$text = $this->nl2Br($text);
return $text;
}

function sanitizeForPreview($text, $allowhtml = 0, $smiley = 1, $bbcode = 1)
{
$text = $this->oopsStripSlashesGPC($text);
if ( $allowhtml == 0 ) {
$text = $this->htmlSpecialChars($text);
} else {
//$config =& $GLOBALS['xoopsConfig'];
//$allowed = $config['allowed_html'];
//$text = strip_tags($text, $allowed);
$text = $this->makeClickable($text);
}
if ( $smiley == 1 ) {
$text = $this->smiley($text);
}
if ( $bbcode == 1 ) {
$text = $this->xoopsCodeDecode($text);
}
$text = $this->nl2Br($text);
return $text;
}

function makeTboxData4Save($text)
{
//$text = $this->undoHtmlSpecialChars($text);
return $this->addSlashes($text);
}

function makeTboxData4Show($text, $smiley=0)
{
$text = $this->htmlSpecialChars($text);
// MT hack added by hsalazar //
$text =& $this->xoopsCodeDecode($text, 0);
// MT hack added by hsalazar //
return $text;
}

function makeTboxData4Edit($text)
{
return $this->htmlSpecialChars($text);
}

function makeTboxData4Preview($text, $smiley=0)
{
$text = $this->stripSlashesGPC($text);
$text = $this->htmlSpecialChars($text);
// MT hack added by hsalazar //
$text =& $this->xoopsCodeDecode($text, 0);
// MT hack added by hsalazar //
return $text;
}

function makeTboxData4PreviewInForm($text)
{
$text = $this->stripSlashesGPC($text);
return $this->htmlSpecialChars($text);
}

function makeTareaData4Save($text)
{
return $this->addSlashes($text);
}

function &makeTareaData4Show(&$text, $html=1, $smiley=1, $xcode=1)
{
return $this->displayTarea($text, $html, $smiley, $xcode);
}

function makeTareaData4Edit($text)
{
return $this->htmlSpecialChars($text);
}

function &makeTareaData4Preview(&$text, $html=1, $smiley=1, $xcode=1)
{
return $this->previewTarea($text, $html, $smiley, $xcode);
}

function makeTareaData4PreviewInForm($text)
{
//if magic_quotes_gpc is on, do stipslashes
$text = $this->stripSlashesGPC($text);
return $this->htmlSpecialChars($text);
}

function makeTareaData4InsideQuotes($text)
{
return $this->htmlSpecialChars($text);
}

function &oopsStripSlashesGPC($text)
{
return $this->stripSlashesGPC($text);
}

function &oopsStripSlashesRT($text)
{
if (get_magic_quotes_runtime()) {
$text =& stripslashes($text);
}
return $text;
}

function &oopsAddSlashes($text)
{
return $this->addSlashes($text);
}

function &oopsHtmlSpecialChars($text)
{
return $this->htmlSpecialChars($text);
}

function &oopsNl2Br($text)
{
return $this->nl2br($text);
}
/**#@-*/
}
?>



52
michieltokyo
multi language urgent request

Dear hello,

I run an non-commercial educational website for Japanese and English students. Now I installed the multi language module 1.4 on my XOOPS 2.07

I also downloaded a japanese language pack and did the sql thingy and the installs.

BUT NOTHING HAPPENS.. can someone please help me? I am not so smart with this XOOPS and its a very important thing for the Japanese students.. I tried so many things nothing works.

I have the language select on the screen but it stays on english..

I did alter the module.textsanitizer.php

it says

// LANGUAGE DEFINITION TAGS BEGINS HERE


/**
* Language : japanese
* Tags : [jp]...[/jp]
**/
$patterns[] = "/\[jp](.*)\[\/jp\]/sU";
if ($xoopsConfig['language'] == "Japanese") {
$replacements[] = '\\1';
} else {
$replacements[] = "english";
}
/** End of japanese language tags definition **/


/**
* Language : english
* Tags : [en]...[/en]
**/
$patterns[] = "/\[en](.*)\[\/en\]/sU";
if ($xoopsConfig['language'] == "english") {
$replacements[] = '\\1';
} else {
$replacements[] = "";
}
/** End of english language tags definition **/

// LANGUAGE DEFINITION TAGS ENDS HERE

cAN SOMEONE PLEASEEEEE HELP US



53
michieltokyo
xoops 2.07

Hi,

I run a non-commercial free educational website on XOOPS 2.07.... WHat I need is a webcam option so my students can see me and best even hear me.. Any tips?



54
michieltokyo
Re: PLEASE HELP

darn.. I did not even think that was possible.. your great and thank you!!!!!!!!!!!!!!!



55
michieltokyo
PLEASE HELP

Hello, I am running a website for people sharing languages, and the forums are an important part of the website.

I have trouble because all my forums are shown THREADED and not FLAT,

I did select the FLAT option in preferences but still it doesnt work. However, when people are not logged in the forums are FLAT the way I like it.. after myself or anyone logs in they become THREADED again in display.

Please advise me how to fix this...

check it out www.english2day.com



56
michieltokyo
Select your language HACK

I am not sure if this is in the right section...

I have installed a "module" that allows users to switch languages on my site. On my main screen I do have a "block" now with a drop down menu (i didnt like the flags) and I can select all the languages I have installed (5)

However nothing changes, it stays the language I select in "preferences menu" When I change the languages in the "preferences menu" it works perfect,,

How can I make the users choose their own language?

www.english2day.com username: XOOPS password: password

Michiel



57
michieltokyo
Re: cookbook recipe maker

Thanks for all the tips... I would really like to have the phprecipe working within xoops, 

thats the XOOPS module phprecipebook (you can find it on sourceforge),

bvut am like i said databse stupid... We want to contribute the japanese translation of the phprecipe thing but i got to get it to work first..is someone able to help me? perhaps tp login to my XOOPS thing and ftp thing and sort it out?



58
michieltokyo
Re: cookbook recipe maker

great.. I will have a go with it.

I downloaded a free script based on sql loaded with tables and structures for a good recipe script thingy. (i am pc stupid)... How could I add that database info into XOOPS and make it work?

Sorry I am really new to this




59
michieltokyo
www.dh2.net

I signed up with DH2.net

I have to say they are a bit slow in response time with questions, but offer a great deal and have preinstalled xoop with all packages, service is slow but very friendly.



60
michieltokyo
cookbook recipe maker

Dear xoopsers (attempt to be funny)

I am in need of a module that allows people to share recipes, based on ingredient selection. For example. I have a portato (click) a carrot (click) and bacon (click) database looks up and gives the surfer a menu with those ingredients, with a picture and option to rate and comment on the recipe...

Darn sounds like a lot, what do I have in return.. really nothing at all but our thanks... and a great website soon with all Japanese recipes..




TopTop
« 1 ... 3 4 5 (6)



Login

Who's Online

126 user(s) are online (62 user(s) are browsing Support Forums)


Members: 0


Guests: 126


more...

Donat-O-Meter

Stats
Goal: $100.00
Due Date: May 31
Gross Amount: $0.00
Net Balance: $0.00
Left to go: $100.00
Make donations with PayPal!

Latest GitHub Commits