Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Contribution 2094 - Image resize


galen

Recommended Posts

Hello,

I am trying to get this contribution working and I am wondering about one of the instructions.

 

Did you mean to say Don't forget to update the configure.php in both catalog/admin/includes/ and catalog/includes/ because they have different functions and both need to be updated.

The way it is written is confusing I am not certain of the instuction it could be interpreted to mean that you need two copies of the res/ folder one in catalog/images and one in admin

thanks

 

You need only one folder "res/", but have to modify both configure.php...

Link to comment
Share on other sites

  • Replies 133
  • Created
  • Last Reply

Top Posters In This Topic

Thanks sCHL,

Now I have gotten a similar error as yours. Did you figure it out?

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /home/username/public_html/shop/includes/functions/html_output.php:365) in /home/username/public_html/shop/includes/functions/sessions.php on line 67

 

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/username/public_html/shop/includes/functions/html_output.php:365) in /home/username/public_html/shop/includes/functions/sessions.php on line 67

Also in the popup window for the product image I get this message

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/username/public_html/shop/includes/functions/html_output.php:365) in /home/username/public_html/shop/includes/functions/sessions.php on line 67

It seem from this thread that two others have posted this sort of error with out reply. Is there no solution? Is this thread still alive?

Your help is most appreciated.

On your last day only you will have to approve or disaprove of how your life has been.

Link to comment
Share on other sites

hi christian,

 

my problem was:

 

- I downloaded the contribution files to my windows system

- I opened the files with microsoft word

- copied the code and put it to the linux server via ftp

 

so I got some hidden characters into the code that causes the errors because of a binary transfer and not an ascii transfer!

 

at home I used my dreamweaver to open the downloaded files in ascii mode. this causes, that the hidden characters disappeared. and the contibution works fine...

 

greetings from germany - christian

Link to comment
Share on other sites

Guten Tag Christian,

vielen Dank f?r Ihre Hilfe,

The ASCII mode was the key, despite the fact that I was sure that I wasn't adding in the extra charaters, I was still getting the error. I then discovered that my FTP client had reverted to bianary. When I forced it to transfer ASCII it worked.

viel Glueck

On your last day only you will have to approve or disaprove of how your life has been.

Link to comment
Share on other sites

  • 1 month later...

good morning everybody,

 

bad news: my auto resize function doesn't work any more. I didn't change anything. today I would insert a new product an I got a "big" picture. same procedure as the last times. the uploaded picture is copied to the "res/" folder but today there is no resizing. does anybody has an idea where to look for the problem?

 

thanks

Link to comment
Share on other sites

Just installing the contribution and get this error messaege when you try and view my site.

 

Parse error: parse error, unexpected '}' in /home/choiceau/public_html/includes/functions/html_output.php on line 165

 

Any help would be greatly appreciated!

Link to comment
Share on other sites

to those with "small" images the same size as the large images here's what I did...I added quotes around the $width value

 

  exec(DIR_IMAGEMAGICK . "mogrify +profile \"*\" -filter Lanczos -quality 75 -geometry \"" . $width . "\" \"" . $filename_small ."\"");

Link to comment
Share on other sites

I installed this contribution and ran into problems which took several days to sort out but with lots of reading of this forum and help from members I was able to get it all working for my situation. I thought I would post what solved it for me incase it can help others.

 

Problem 1:

 

When using the Admin area to upload images, the images weren't resizing.

 

Solution 1:

 

The thing that handled the resizing problem was deleting DIR_IMAGEMAGICK . from the tep_image function in both of the html_output.php files.

 

[OLD] exec(DIR_IMAGEMAGICK . "mogrify -geometry " . $width . " " . $filename_small);

 

[NEW] exec("mogrify -geometry " . $width . " " . $filename_small);

--------------------------------------------------------------

Problem 2:

 

When you looked at the Catalog there were no images appearing including the category images and logo.

 

Solution 2:

 

MBrown the writer of the original contribution helped me find this solution. (Thanks MBrown!) :thumbsup:

Because my oscommerce php pages are in the cgi-bin and my image folders are situated outside the cgi-bin in another folder the define for DIR_WS_IMAGES had to be changed.

 

[OLD} define('DIR_WS_IMAGES','/x-scripts/oscommerce/images/');

[NEW] define('DIR_WS_IMAGES','../../x-scripts/oscommerce/images/');

 

and also the define for DIR_WS_IMAGES

 

[OLD] define('DIR_WS_IMAGES','/x-scripts/oscommerce/images/');

[NEW] define('DIR_WS_IMAGES','../../x-scripts/oscommerce/images/');

--------------------------------------------------------------

Problem 3:

 

When uploading manufacturers images and caterory images we were only getting some to appear others came out as 1x1 pixel specs.

 

Solution 3:

 

In the includes/functions/html_output.php file.

 

function tep_image

 

The 2 lines that say:

if (!$height) $height = 1;

if (!$width) $width = 1;

 

I changed to:

 

if (!$height) $height = 1000;

if (!$width) $width = 1000;

 

In the Admin Control area we set the Small Image Height and Heading Image Height only and deleted the Width settings and everything worked just fine.

 

I don't understand why some of these worked but they did, hope it helps someone.

Edited by bpt
Link to comment
Share on other sites

  • 2 weeks later...

i'm interested in adding additional functionality to this contribution, maybe someone can give some direction in the implementation?

 

besides making thumbnail size images, i'd like to make the full size images a limited size. for example, the store owner can upload large photos, and this would size them down to a specific max height & width.

Link to comment
Share on other sites

i'm interested in adding additional functionality to this contribution, maybe someone can give some direction in the implementation?

 

besides making thumbnail size images, i'd like to make the full size images a limited size.    for example, the store owner can upload large photos, and this would size them down to a specific max height & width.

 

ok i've done the code. if you use it and you find a bug, let me know. i will post my whole tep_image function.

 

again, what this does is resizes and overwrites the original image if it's too big (not of defined size). e.g. we don't want store owners uploading 1200x1500 size images.

 

  function tep_image($src, $alt = '', $width = '', $height = '', $parameters = '', $res = 1, $addattribs = 1)
 {
   if ((empty($src) || ($src == DIR_WS_IMAGES)) && (IMAGE_REQUIRED == 'false') || !is_file($src))
   {
     return false;
   }
   if ( !strstr($width, '%') && $res) {
     $width = round($width);
     $height = round($height);
     preg_match("/.*\/(.*)\.(\w*)$/", $src, $fname);
     list($oiwidth, $oiheight, $type, $dimstring) = getimagesize($src);

     /*yeahyeahyeah resize original image*/
     /*
      be careful, this stanza will resize your original images!!!
     */
     define(FINAL_HEIGHT,250);
     define(FINAL_WIDTH,250);
     $passedWidth=$width;
     $passedHeight=$height;
     if(!($oiwidth<=FINAL_WIDTH && $oiheight<=FINAL_HEIGHT)) {
      if (($passedWidth || $passedHeight) && ($passedHeight < $oiheight || $passedWidth < $oiwidth)) {
       if ($passedHeight>FINAL_HEIGHT || !$passedHeight) $passedHeight = FINAL_HEIGHT;
       if ($passedWidth>FINAL_WIDTH || !$passedWidth) $passedWidth = FINAL_WIDTH;
       $useThis=max($passedHeight,$passedWidth);
       if($passedHeight<$passedWidth) $useThis='x'.$useThis; //if bigger width, use x250 format which lets height float
       $filename_normal= DIR_WS_IMAGES . $fname[1] . '.' . $fname[2];
       exec(DIR_IMAGEMAGICK . "mogrify +profile \"*\" -filter Lanczos -quality 75 -geometry \"" . $useThis . "\" \"" . $filename_normal."\"");
       //echo DIR_IMAGEMAGICK . "mogrify +profile \"*\" -filter Lanczos -quality 75 -geometry \"" . $useThis . "\" \"" . $filename_normal."\"<br />";//debug mogrify command
      }
     } //else echo 'converted already'; //debug convert only one time
     /*END yeahyeahyeah resize original image*/

     if (($width || $height) && ($height < $oiheight || $width < $oiwidth))
     {
       if (!$height) $height = 100;
       if (!$width) $width = 100;
       $k = max($oiheight / $height, $oiwidth / $width); //use smallest size
       $width = round($oiwidth / $k);
       $height = round($oiheight / $k);
       // createthumb($filename, $width, $height, "test.jpg");
       $filename_small = DIR_WS_RSIMAGES . $fname[1] . '_' . $width . '_' . $height . '.' . $fname[2];
       // Neue Datei nur bauen, wenn kein Thumb vorhanden oder Original neu 
       if (!file_exists($filename_small) || filemtime($src) > filemtime($filename_small))
       {
         copy($src, $filename_small);
         exec(DIR_IMAGEMAGICK . "mogrify +profile \"*\" -filter Lanczos -quality 75 -geometry \"" . $width . "\" \"" . $filename_small ."\"");
         //echo DIR_IMAGEMAGICK . "mogrify +profile \"*\" -filter Lanczos -quality 75 -geometry \"" . $width . "\" \"" . $filename_small ."\"";//debug mogrify command
       }
       $src = $filename_small;
     }
   }
   // alt is added to the img tag even if it is null to prevent browsers from outputting
   // the image filename as default

   if (file_exists($filename_small)) // If exists, get the dimensions from the thumbnail
   {
     list($siwidth, $siheight, $type, $dimstring) = getimagesize($filename_small);
   }
   $image = '<img border="0" alt="' . tep_output_string($alt) . '" ';
   if (tep_not_null($alt)) {
     $image .= 'title="' . tep_output_string($alt) . '" ';
   }
     $image .= $dimstring . ' ';    // set the correct width and height of the resulting image
   if (tep_not_null($parameters)) $image .= $parameters;

   // If PNG-images showes up, we give IE a chance to show it with transparency anabled

   $msie='/msie\s(5\.[5-9]|[6-9]\.[0-9]*).*(win)/i';
   if(($type == 3) && preg_match($msie,$_SERVER['HTTP_USER_AGENT']) && !preg_match('/opera/i',$_SERVER['HTTP_
USER_AGENT']))
   {
     $image .= ' src="' . DIR_WS_IMAGES . 'blank.gif" align=BOTTOM style="filter:progid:DXImageTransform.Micr
osoft.AlphaImageLoader(src=\'' . HTTP_SERVER . DIR_WS_HTTP_CATALOG . tep_output_string($src) . '\', sizingMeth
od=\'image\');" >';
   }
   else
   {
     $image .= ' src="' . tep_output_string($src) . '">';
   }
   return $image;
 }

Link to comment
Share on other sites

 

I tried your code and the only thing I had to change to make it work on my server was to remove DIR_IMAGEMAGICK . from

exec(DIR_IMAGEMAGICK . "mogrify +profile \"*\" -filter Lanczos -quality 75 -geometry \"" . $width . "\" \"" . $filename_small ."\"");

 

Thanks for that!

Link to comment
Share on other sites

Just installing the contribution and get this error messaege when you try and view my site.

 

Parse error: parse error, unexpected '}' in /home/choiceau/public_html/includes/functions/html_output.php on line 165

 

Any help would be greatly appreciated!

 

 

I get the exact same error, although I'm about ten lines higher than you on the file.

 

That line is the blank line in the middle of :

 

========

 

$image .= '>';

 

return $image;

 

========

Link to comment
Share on other sites

I get the exact same error, although I'm about ten lines higher than you on the file.

 

That line is the blank line in the middle of :

 

========

 

    $image .= '>';

 

    return $image;

 

========

 

 

I ended up removing the last '}' in the 'function tep_image' code that was inserted. It seems to be working fine now.

 

Was that a bad thing to do? Am I going to have issues?

 

<_<

Link to comment
Share on other sites

Hi

 

I have got imagemagick working in admin side it resizes fine and images are showing fine but in the shop side it doesnt show any pictures not even pixel sized like somebody had. If i put old html_output file back the images are showing in original size.

 

My edited html_output.php looks like this.

 

////
// The HTML image wrapper function
// Stark erweitert zur Erzeugung und Anzeige von Thumbnails
///

 function tep_image($src, $alt = '', $width = '', $height = '', $parameters = '', $res = 1, $addattribs = 1)
 {
   if ((empty($src) || ($src == DIR_WS_IMAGES)) && (IMAGE_REQUIRED == 'false') || !is_file($src))
   {
     return false;
   } 
   if ( !strstr($width, '%') && $res) {
     $width = round($width);
     $height = round($height);
     preg_match("/.*\/(.*)\.(\w*)$/", $src, $fname);
     list($oiwidth, $oiheight, $type, $dimstring) = getimagesize($src);
     if (($width || $height) && ($height < $oiheight || $width < $oiwidth))
     {
       if (!$height) $height = 1000;
       if (!$width) $width = 1000;
       $k = max($oiheight / $height, $oiwidth / $width); //use smallest size
       $width = round($oiwidth / $k);
       $height = round($oiheight / $k); 
       // createthumb($filename, $width, $height, "test.jpg");
       $filename_small = DIR_WS_RSIMAGES . $fname[1] . '_' . $width . '_' . $height . '.' . $fname[2];
// Neue Datei nur bauen, wenn kein Thumb vorhanden oder Original neu 
       if (!file_exists($filename_small) || filemtime($src) > filemtime($filename_small))
{
         copy($src, $filename_small);
         exec("mogrify +profile \"*\" -filter Lanczos -quality 75 -geometry " . $width . " \"" . $filename_small ."\"");
       }
       $src = $filename_small;
     } 
   } 
   // alt is added to the img tag even if it is null to prevent browsers from outputting
   // the image filename as default

   if (file_exists($filename_small)) // If exists, get the dimensions from the thumbnail
   {
     list($siwidth, $siheight, $type, $dimstring) = getimagesize($filename_small);
   }
   $image = '<img border="0" alt="' . tep_output_string($alt) . '" ';
   if (tep_not_null($alt)) {
     $image .= 'title="' . tep_output_string($alt) . '" ';
   }
     $image .= $dimstring . ' ';    // set the correct width and height of the resulting image
   if (tep_not_null($parameters)) $image .= $parameters;

   // If PNG-images showes up, we give IE a chance to show it with transparency anabled
   
   $msie='/msie\s(5\.[5-9]|[6-9]\.[0-9]*).*(win)/i'; 
   if(($type == 3) && preg_match($msie,$_SERVER['HTTP_USER_AGENT']) && !preg_match('/opera/i',$_SERVER['HTTP_USER_AGENT']))
   {
     $image .= ' src="' . DIR_WS_IMAGES . 'blank.gif" align=BOTTOM style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'' . HTTP_SERVER . DIR_WS_HTTP_CATALOG . tep_output_string($src) . '\', sizingMethod=\'image\');" >';
   }
   else
   {
     $image .= ' src="' . tep_output_string($src) . '">';
   }
   return $image;
 }


##############################



////
// Output a separator either through whitespace, or with an image

function tep_draw_separator($image = 'pixel_black.gif', $width = '100%', $height = '1'){
   return tep_image(DIR_WS_IMAGES . $image, '', $width, $height, '', false);
 }

 

configure.php have these lines added

 

define('DIR_WS_RSIMAGES', DIR_WS_IMAGES . 'res/');

define('DIR_IMAGEMAGICK', '/usr/bin/convert/');

 

 

Thanks

 

Molteri

Link to comment
Share on other sites

Christian, It's been a while, but in case no one answered you... it's becuase somewhere you've got a line return after the last ?> in the file. Some fpt programs can do this and some editing programs... just make sure you file end right at the last ?> and this common problem will be fixed.

 

Kelly

 

Thanks sCHL,

Now I have gotten a similar error as yours. Did you figure it out?

 

Also in the popup window for the product image I get this message

It seem from this thread that two others have posted this sort of error with out reply. Is there no solution? Is this thread still alive?

Your help is most appreciated.

Link to comment
Share on other sites

I figured this out! Finally a question I can answer!

 

All you have to do is upload the big image to the product in the admin just like normal. You probably already have done that. Then you need to add two rows to the configuration table so that you can define the max width and max heigth for displaying the large images.

 

I use phpadmin, and here is how I did that:

 

I searched the configuration table for rows where configuration_group_id = 4

 

4 in my database is the configuration group that is your admin images configuration section. (you might need to check in the configuration_table to make sure it is 4, or you can do your search a different way... like look for SMALL_IMAGE or something)

 

Then you need to do is create two new rows in the configuration table. I used the SMALL_IMAGE_WIDTH row as my template for creating the 2 new rows.

 

What I did in php admin was to edit the row that had SMALL_IMAGE_WIDTH

in it... after you do the search you'll see it. Use the little pencil icon to edit it.

 

Now be careful change the word SMALL to LARGE everywhere it appears in the data for that row. Bake sure the configuration_id is set to blank (a new id will be created when the row is created). There is a little radio button that appears under where you edit the fields, set that radio button to 'insert as a new row' and press go.

 

Do that again step again to create a LARGE_IMAGE_HEIGHT entry.

 

(tip: you might also want to mess with the sort order fields so you can get them to display in your admin in the order you want to see them)

 

NOW you don't have to edit the auto resize at all... Just anywhere in catalog side of the store that you want the large image to appear... change the size and width variables from SMALL_IMAGE_WIDTH and SMALL_IMAGE_HEIGHT to LARGE_IMAGE_WIDTH and LARGE_IMAGE_HEIGHT... Don't do it everywhere or you will replace all your thumbnails with large images... just change it where you want the big ones to appear... I did it in my products_info.php file and my pop-up file.

 

That's it. No changes to auto-resize at all. Just make sure auto resize is working first.

 

Kelly

 

ok i've done the code.  if you use it and you find a bug, let me know.  i will post my whole tep_image function.

 

again, what this does is resizes and overwrites the original image if it's too big (not of defined size). e.g. we don't want store owners uploading 1200x1500 size images. 

Link to comment
Share on other sites

  • 2 weeks later...

 

Hi i tried this but couldnt get it work. Image resize works fine but when i put your code, admin side doesnt show thumb pictures and original images doesnt go smaller. Should i change something else than html_output.php code in admin side?

 

Thanks.

 

Molteri

Link to comment
Share on other sites

Hi again i was wondering can i use my code looking like this althought it doesnt resize and overwrite files yet :/. Can it work if i just add /*yeahyeahyeah resize original image*/ in there. I wonder what could be wrong because my thumbnails work fine.

 

 

 function tep_image($src, $alt = '', $width = '', $height = '', $params = '', $catalog_image = 0, $res = 1, $addattribs = 1)
 {
   if ($catalog_image == 1){
     $resized=0;
     $original_image=$src;
     $src=DIR_FS_CATALOG_IMAGES.$src;

     if ((empty($src) || ($src == DIR_WS_IMAGES)) && (IMAGE_REQUIRED == 'false') || !is_file($src)) {
       return false;
     } 

     if ( !strstr($width, '%') && $res) {
       $width = round($width);
       $height = round($height);
       preg_match("/.*\/(.*)\.(\w*)$/", $src, $fname);
       list($oiwidth, $oiheight, $type, $dimstring) = getimagesize($src);
       
/*yeahyeahyeah resize original image*/
    /*
     be careful, this stanza will resize your original images!!!
    */
    define(FINAL_HEIGHT,250);
    define(FINAL_WIDTH,250);
    $passedWidth=$width;
    $passedHeight=$height;
    if(!($oiwidth<=FINAL_WIDTH && $oiheight<=FINAL_HEIGHT)) {
     if (($passedWidth || $passedHeight) && ($passedHeight < $oiheight || $passedWidth < $oiwidth)) {
      if ($passedHeight>FINAL_HEIGHT || !$passedHeight) $passedHeight = FINAL_HEIGHT;
      if ($passedWidth>FINAL_WIDTH || !$passedWidth) $passedWidth = FINAL_WIDTH;
      $useThis=max($passedHeight,$passedWidth);
      if($passedHeight<$passedWidth) $useThis='x'.$useThis; //if bigger width, use x250 format which lets height float
      $filename_normal= DIR_WS_IMAGES . $fname[1] . '.' . $fname[2];
      exec("mogrify +profile \"*\" -filter Lanczos -quality 75 -geometry \"" . $useThis . "\" \"" . $filename_normal."\"");
      //echo DIR_IMAGEMAGICK . "mogrify +profile \"*\" -filter Lanczos -quality 75 -geometry \"" . $useThis . "\" \"" . $filename_normal."\"<br />";//debug mogrify command
     }
    } //else echo 'converted already'; //debug convert only one time
    /*END yeahyeahyeah resize original image*/


if (($width || $height) && ($height < $oiheight || $width < $oiwidth)) {
         if (!$height) $height = 100;
         if (!$width) $width = 100;
         $k = max($oiheight / $height, $oiwidth / $width); //use smallest size
         $width = round($oiwidth / $k);
         $height = round($oiheight / $k); 
         $filename_small = DIR_FS_RSIMAGES . $fname[1] . '_' . $width . '_' . $height . '.' . $fname[2];
         if (!file_exists($filename_small) || filemtime($src) > filemtime($filename_small)) {
           copy($src, $filename_small);
           exec("mogrify +profile \"*\" -filter Lanczos -quality 75 -geometry " . $width . " \"" . $filename_small ."\"");
         } 
         $resized=1;
       } 
     }

   }//end if catalog_image
   
   if ($catalog_image == 1 && $resized == 0){
     $src=DIR_WS_CATALOG_IMAGES.$original_image;
   }
   else if ($catalog_image == 1 && $resized == 1)
   {
     $src=DIR_WS_RSIMAGES. $fname[1] . '_' . $width . '_' . $height . '.' . $fname[2];
   }
   
   if (file_exists($filename_small))
   {
     list($siwidth, $siheight, $type, $dimstring) = getimagesize($filename_small);
   }
   $image = '<img border="0" alt="' . $alt . '" ';
   if ($alt) 
   {
     $image .= 'title="' . $alt . '" ';
   }
     $image .= $dimstring . ' ';    // sets the correct width and height
   if ($params) $image .= $params;

   // If PNG-image showes up, we would give IE a chance to show transparency
   
   $msie='/msie\s(5\.[5-9]|[6-9]\.[0-9]*).*(win)/i'; 
   if(($type == 3) && preg_match($msie,$_SERVER['HTTP_USER_AGENT']) && !preg_match('/opera/i',$_SERVER['HTTP_USER_AGENT']))
   {
     $image .= ' src="' . DIR_WS_IMAGES . 'blank.gif" align=BOTTOM style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'' . HTTP_SERVER . DIR_WS_HTTP_CATALOG . $src . '\', sizingMethod=\'image\');" >';
   }
   else
   {
     $image .= ' src="' . $src . '">';
   }
   return $image;
 }

 

 

 

Thanks.

 

Molteri

Link to comment
Share on other sites

Hi i tried this but couldnt get it work. Image resize works fine but when i put your code, admin side doesnt show thumb pictures and original images doesnt go smaller. Should i change something else than html_output.php code in admin side?

 

Thanks.

 

Molteri

 

i realize that my function works for my store because i do not call tep_image() on product_info.php with any size arguments.

 

no. there is no other code besides what i've posted.

Link to comment
Share on other sites

i realize that my function works for my store because i do not call tep_image() on product_info.php with any size arguments. 

 

no. there is no other code besides what i've posted.

 

Hi

 

Couple questions.

 

Should this code be added to admin side html_output.php file?

 

I call only SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT on product_info.php aint thoes the thumbnail pictures in res/ folder and doesnt concearn the original?

 

Thanks.

 

Molteri

Link to comment
Share on other sites

Hi

 

Im using More_pics_6 v1.0 (http://www.oscommerce.com/community/contributions,1611/category,9/search,More_pics_6+v1.0) with /*yeahyeahyeah resize original image*/.

 

It adds 7 pictures in popup images product_info page. I have problem with first (basic) image in it resizes it smaller than others but its not thumbnail. The extra images resizes like i want. Is there place where i can define the first (basic) picture size?

 

The images resizes like this:

 

basic image 133x100 FAIL should be 300x240

1. extraimages 300x240 OK

2. extraimages 300x240 OK

3. extraimages 300x240 OK

4. extraimages 300x240 OK

5. extraimages 300x240 OK

6. extraimages 300x240 OK

thumbnails 100x75 OK

 

Thanks.

 

Molteri

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...