Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Easy Coupons


boxtel

Recommended Posts

  • Replies 165
  • Created
  • Last Reply

Top Posters In This Topic

I also get these on the shopping_cart.php page:

 

Warning: main(includes/modules/easy_coupons_box.php) [function.main]: failed to open stream: No such file or directory in /home/cigarmon/public_html/store/shopping_cart.php on line 59

 

Warning: main() [function.include]: Failed opening 'includes/modules/easy_coupons_box.php' for inclusion (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/cigarmon/public_html/store/shopping_cart.php on line 59

 

 

Main page still reads:

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/cigarmon/public_html/store/includes/filenames.php:67) in /home/cigarmon/public_html/store/includes/functions/sessions.php on line 68

 

Thanks again,

Mark

Edited by n2advnture
Link to comment
Share on other sites

I also get these on the shopping_cart.php page:

 

Warning: main(includes/modules/easy_coupons_box.php) [function.main]: failed to open stream: No such file or directory in /home/cigarmon/public_html/store/shopping_cart.php on line 59

 

Warning: main() [function.include]: Failed opening 'includes/modules/easy_coupons_box.php' for inclusion (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/cigarmon/public_html/store/shopping_cart.php on line 59

Main page still reads:

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/cigarmon/public_html/store/includes/filenames.php:67) in /home/cigarmon/public_html/store/includes/functions/sessions.php on line 68

 

Thanks again,

Mark

 

you did include the modules easy_discount_box.php and easy_discount_code.php in your includes/modules directory?

 

go to includes/filenames.php and remove all spaces after the last ?>

Treasurer MFC

Link to comment
Share on other sites

THANK YOU!

 

This is what now shows on the main page:

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/cigarmon/public_html/store/includes/database_tables.php:62) in /home/cigarmon/public_html/store/includes/functions/sessions.php on line 68

 

 

One more thing is the coupon code box is in a funny location but we can worry about that later. (It's located between "What's in my cart" and the cart contents - looks funny).

 

Thanks again!

~Mark

Link to comment
Share on other sites

Ok,

 

I removed the spaces from the database_tables.php file and the filenames.php file on both the catalog and admin side and all looks good now (ie no error messages)!

 

I also created a .gif called "button_please_wait.gif" and put in the images dir so the "Cash In" button aligns with the "Your Coupon Code".

 

I'll leave it above the cart contents for now since it's not that bad - will try to move it later I guess.

 

All looks good now, thank you for contribution. I am very excited to start using it.

 

After messing with it in Admin, I can't seem to figure out how to implement the code.

 

Thanks again,

~Mark

Link to comment
Share on other sites

Here is what my admin side looks like when I click on "Configure"

 

www.cigarmony.com/Untitled-2.jpg

 

Here is what my admin side looks like when I click on "Coupon"

 

www.cigarmony.com/Untitled-1.jpg

 

How do I manually add a coupon? In looking at the screenshots, mine doesn't look like the "manual insert" one.

 

Any ideas?

 

~Mark

Link to comment
Share on other sites

THANK YOU!

 

This is what now shows on the main page:

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/cigarmon/public_html/store/includes/database_tables.php:62) in /home/cigarmon/public_html/store/includes/functions/sessions.php on line 68

One more thing is the coupon code box is in a funny location but we can worry about that later. (It's located between "What's in my cart" and the cart contents - looks funny).

 

Thanks again!

~Mark

 

same solution but this time in includes/database_tables.php

 

I include the box below the cart buttons like :

 

<tr>

<?php include (DIR_WS_MODULES.'easy_coupons_box_snl.php');?>

</tr>

Treasurer MFC

Link to comment
Share on other sites

Here is what my admin side looks like when I click on "Configure"

 

www.cigarmony.com/Untitled-2.jpg

 

Here is what my admin side looks like when I click on "Coupon"

 

www.cigarmony.com/Untitled-1.jpg

 

How do I manually add a coupon? In looking at the screenshots, mine doesn't look like the "manual insert" one.

 

Any ideas?

 

~Mark

I can only see part of your www.cigarmony.com/Untitled-1.jpg image

 

to add a coupon, simply press insert

a new code is generated which you can accept, reject(generates a new one) or simply edit.

set a value, enddate if needed and press insert and its done.

Treasurer MFC

Link to comment
Share on other sites

Ok...on the Easy Coupon main screen, there is text that reads "reply"

 

when I click that, it opens the screen that allows me to insert a coupon code

 

I now have one set:

 

Manually

Code: 1ANNI

Discount: 3%

Ending: 2006-09-23

Used: No

 

When I enter it into my cart, nothing happens except the code box clears.

 

~M

Link to comment
Share on other sites

I don't see an "insert" anywhere - guess that would be problem :D

 

~Mark

 

no, that would be a disaster.

 

if you simply press the top left link called "coupons".

that should give you a list of the coupons with at the bottom a button called "insert".

 

and if you select a coupon you would have 3 buttons, "edit", "delete" and "insert".

Treasurer MFC

Link to comment
Share on other sites

Ok...on the Easy Coupon main screen, there is text that reads "reply"

 

when I click that, it opens the screen that allows me to insert a coupon code

 

I now have one set:

 

Manually

Code: 1ANNI

Discount: 3%

Ending: 2006-09-23

Used: No

 

When I enter it into my cart it seems like it's trying to work but nothing happens except the code box clears.

 

~M

Link to comment
Share on other sites

Ok...on the Easy Coupon main screen, there is text that reads "reply"

 

when I click that, it opens the screen that allows me to insert a coupon code

 

I now have one set:

 

Manually

Code: 1ANNI

Discount: 3%

Ending: 2006-09-23

Used: No

 

When I enter it into my cart it seems like it's trying to work but nothing happens except the code box clears.

 

~M

 

ah, that is not nice, better go into admin/includes/languages/images/buttons and copy the image "button_insert.gif" to "insert.gif", that should give you the button insert.

Or change the code in admin to use the original "button_insert.gif" image.

 

the coupon box does not work because you have put it inside the update cart form.

The instructions state that you have to put that box OUTSIDE of any existing form as you cannot put a form inside another form.

Treasurer MFC

Link to comment
Share on other sites

I am not sure what that means. Create a new form? (if so, how?)

 

Thanks again!

~Mark

 

no, put the box outside the form:

 

now you have:

 

<form cart quantity>

 

include the coupon box (with its own form)

 

</form>

 

that is a form in a form.

 

so it should be:

 

<form cart quantity>

</form>

include the coupon box (with its own form)

 

or

 

include the coupon box (with its own form)

<form cart quantity>

</form>

Treasurer MFC

Link to comment
Share on other sites

I've tried to:

 

1.) Keep it out of <form></form>

2.) After a </tr>

 

........

</tr>

<?php if(MODULE_PAYMENT_PAYPAL_EC_STATUS == 'True' || MODULE_PAYMENT_PAYPAL_WPP_STATUS == 'True') { ?>

</form>

 

<?php include (DIR_WS_MODULES.'easy_coupons_box.php'); ?>

 

<form method="post" name="form" action="paypal_wpp/ec/process.php">

 

<table width="165" border="0" align="right" cellpadding="2" cellspacing="0">

<tr><td align="left"><br>

<input type="image" src="paypal_wpp/images/btn_xpressCheckout.gif">

</td></tr>

<tr><td align="left">

<font style="font-size:11px; font-family: Arial, Verdana;">Save time. Checkout securely.

Pay without sharing your financial information.</font>

</td></tr>

</table>

.........

 

It still doesn't work. Button shows up but when I put in the coupon, it acts like it's working but nothing happens.

 

Thanks again,

~Mark

Link to comment
Share on other sites

I've tried to:

 

1.) Keep it out of <form></form>

2.) After a </tr>

 

........

</tr>

<?php if(MODULE_PAYMENT_PAYPAL_EC_STATUS == 'True' || MODULE_PAYMENT_PAYPAL_WPP_STATUS == 'True') { ?>

</form>

 

<?php include (DIR_WS_MODULES.'easy_coupons_box.php'); ?>

 

<form method="post" name="form" action="paypal_wpp/ec/process.php">

 

<table width="165" border="0" align="right" cellpadding="2" cellspacing="0">

<tr><td align="left"><br>

<input type="image" src="paypal_wpp/images/btn_xpressCheckout.gif">

</td></tr>

<tr><td align="left">

<font style="font-size:11px; font-family: Arial, Verdana;">Save time. Checkout securely.

Pay without sharing your financial information.</font>

</td></tr>

</table>

.........

 

It still doesn't work. Button shows up but when I put in the coupon, it acts like it's working but nothing happens.

 

Thanks again,

~Mark

 

you did install easy discount?

you did install the shopping cart addons for easy discount?

then paste you shopping cart code because this looks a little messy with a </form> after an if statement.

Treasurer MFC

Link to comment
Share on other sites

you did install easy discount?

you did install the shopping cart addons for easy discount?

then paste you shopping cart code because this looks a little messy with a </form> after an if statement.

 

The only contrib that I have installed is the WebPayments Pro, here is my catalog/shopping_cart.php

 

<?php

/*

$Id: shopping_cart.php,v 1.73 2003/06/09 23:03:56 hpdl Exp $

 

osCommerce, Open Source E-Commerce Solutions

http://www.oscommerce.com

 

Copyright © 2003 osCommerce

 

Released under the GNU General Public License

*/

 

require("includes/application_top.php");

 

require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_SHOPPING_CART);

 

$breadcrumb->add(NAVBAR_TITLE, tep_href_link(FILENAME_SHOPPING_CART));

?>

<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">

<html <?php echo HTML_PARAMS; ?>>

<head>

 

<script language="javascript"><!--

function session_win2() {

window.open("<?php echo tep_href_link(FILENAME_INFO_COUPON); ?>","info_coupon"," height=360,width=700,toolbar=no,statusbar=no,scrollbars=yes").focus();

}

function autotab(original,destination){if (original.getAttribute&&original.value.length==original.getAttribute("maxlength"))destination.focus()}

//--></script>

 

<meta http-equiv="Content-Type" content="text/html; charset=<?php echo CHARSET; ?>">

<title><?php echo TITLE; ?></title>

<base href="<?php echo (($request_type == 'SSL') ? HTTPS_SERVER : HTTP_SERVER) . DIR_WS_CATALOG; ?>">

<link rel="stylesheet" type="text/css" href="stylesheet.css">

</head>

<body marginwidth="0" marginheight="0" topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0">

<!-- header //-->

<?php require(DIR_WS_INCLUDES . 'header.php'); ?>

<!-- header_eof //-->

 

<!-- body //-->

<table border="0" width="100%" cellspacing="3" cellpadding="3">

<tr>

<td width="<?php echo BOX_WIDTH; ?>" valign="top"><table border="0" width="<?php echo BOX_WIDTH; ?>" cellspacing="0" cellpadding="2">

<!-- left_navigation //-->

<?php require(DIR_WS_INCLUDES . 'column_left.php'); ?>

<!-- left_navigation_eof //-->

</table></td>

<!-- body_text //-->

<td width="100%" valign="top"><?php echo tep_draw_form('cart_quantity', tep_href_link(FILENAME_SHOPPING_CART, 'action=update_product')); ?><table border="0" width="100%" cellspacing="0" cellpadding="0">

<tr>

<td><table border="0" width="100%" cellspacing="0" cellpadding="0">

<tr>

<td class="pageHeading"><?php echo HEADING_TITLE; ?></td>

<td class="pageHeading" align="right"><?php echo tep_image(DIR_WS_IMAGES . 'table_background_cart.gif', HEADING_TITLE, HEADING_IMAGE_WIDTH, HEADING_IMAGE_HEIGHT); ?></td>

</tr>

</table></td>

</tr>

<tr>

<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>

</tr>

<?php

if ($cart->count_contents() > 0) {

?>

<tr>

<td>

<?php

$info_box_contents = array();

$info_box_contents[0][] = array('align' => 'center',

'params' => 'class="productListing-heading"',

'text' => TABLE_HEADING_REMOVE);

 

$info_box_contents[0][] = array('params' => 'class="productListing-heading"',

'text' => TABLE_HEADING_PRODUCTS);

 

$info_box_contents[0][] = array('align' => 'center',

'params' => 'class="productListing-heading"',

'text' => TABLE_HEADING_QUANTITY);

 

$info_box_contents[0][] = array('align' => 'right',

'params' => 'class="productListing-heading"',

'text' => TABLE_HEADING_TOTAL);

 

$any_out_of_stock = 0;

$products = $cart->get_products();

for ($i=0, $n=sizeof($products); $i<$n; $i++) {

// Push all attributes information in an array

if (isset($products[$i]['attributes']) && is_array($products[$i]['attributes'])) {

while (list($option, $value) = each($products[$i]['attributes'])) {

echo tep_draw_hidden_field('id[' . $products[$i]['id'] . '][' . $option . ']', $value);

$attributes = tep_db_query("select popt.products_options_name, poval.products_options_values_name, pa.options_values_price, pa.price_prefix

from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa

where pa.products_id = '" . $products[$i]['id'] . "'

and pa.options_id = '" . $option . "'

and pa.options_id = popt.products_options_id

and pa.options_values_id = '" . $value . "'

and pa.options_values_id = poval.products_options_values_id

and popt.language_id = '" . $languages_id . "'

and poval.language_id = '" . $languages_id . "'");

$attributes_values = tep_db_fetch_array($attributes);

 

$products[$i][$option]['products_options_name'] = $attributes_values['products_options_name'];

$products[$i][$option]['options_values_id'] = $value;

$products[$i][$option]['products_options_values_name'] = $attributes_values['products_options_values_name'];

$products[$i][$option]['options_values_price'] = $attributes_values['options_values_price'];

$products[$i][$option]['price_prefix'] = $attributes_values['price_prefix'];

}

}

}

 

for ($i=0, $n=sizeof($products); $i<$n; $i++) {

if (($i/2) == floor($i/2)) {

$info_box_contents[] = array('params' => 'class="productListing-even"');

} else {

$info_box_contents[] = array('params' => 'class="productListing-odd"');

}

 

$cur_row = sizeof($info_box_contents) - 1;

 

$info_box_contents[$cur_row][] = array('align' => 'center',

'params' => 'class="productListing-data" valign="top"',

'text' => tep_draw_checkbox_field('cart_delete[]', $products[$i]['id']));

 

$products_name = '<table border="0" cellspacing="2" cellpadding="2">' .

' <tr>' .

' <td class="productListing-data" align="center"><a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $products[$i]['id']) . '">' . tep_image(DIR_WS_IMAGES . $products[$i]['image'], $products[$i]['name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) . '</a></td>' .

' <td class="productListing-data" valign="top"><a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $products[$i]['id']) . '"><b>' . $products[$i]['name'] . '</b></a>';

 

if (STOCK_CHECK == 'true') {

$stock_check = tep_check_stock($products[$i]['id'], $products[$i]['quantity']);

if (tep_not_null($stock_check)) {

$any_out_of_stock = 1;

 

$products_name .= $stock_check;

}

}

 

if (isset($products[$i]['attributes']) && is_array($products[$i]['attributes'])) {

reset($products[$i]['attributes']);

while (list($option, $value) = each($products[$i]['attributes'])) {

$products_name .= '<br><small><i> - ' . $products[$i][$option]['products_options_name'] . ' ' . $products[$i][$option]['products_options_values_name'] . '</i></small>';

}

}

 

$products_name .= ' </td>' .

' </tr>' .

'</table>';

 

$info_box_contents[$cur_row][] = array('params' => 'class="productListing-data"',

'text' => $products_name);

 

$info_box_contents[$cur_row][] = array('align' => 'center',

'params' => 'class="productListing-data" valign="top"',

'text' => tep_draw_input_field('cart_quantity[]', $products[$i]['quantity'], 'size="4"') . tep_draw_hidden_field('products_id[]', $products[$i]['id']));

 

$info_box_contents[$cur_row][] = array('align' => 'right',

'params' => 'class="productListing-data" valign="top"',

'text' => '<b>' . $currencies->display_price($products[$i]['final_price'], tep_get_tax_rate($products[$i]['tax_class_id']), $products[$i]['quantity']) . '</b>');

}

 

new productListingBox($info_box_contents);

?>

</td>

</tr>

<tr>

<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>

</tr>

<tr>

<td align="right" class="main"><b><?php echo SUB_TITLE_SUB_TOTAL; ?> <?php echo $currencies->format($cart->show_total()); ?></b></td>

</tr>

<?php

if ($any_out_of_stock == 1) {

if (STOCK_ALLOW_CHECKOUT == 'true') {

?>

<tr>

<td class="stockWarning" align="center"><br><?php echo OUT_OF_STOCK_CAN_CHECKOUT; ?></td>

</tr>

<?php

} else {

?>

<tr>

<td class="stockWarning" align="center"><br><?php echo OUT_OF_STOCK_CANT_CHECKOUT; ?></td>

</tr>

<?php

}

}

?>

<tr>

<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>

</tr>

<tr>

<td><table border="0" width="100%" cellspacing="1" cellpadding="2" class="infoBox">

<tr class="infoBoxContents">

<td><table border="0" width="100%" cellspacing="0" cellpadding="2">

<tr>

<td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>

<td class="main"><?php echo tep_image_submit('button_update_cart.gif', IMAGE_BUTTON_UPDATE_CART); ?></td>

<?php

$back = sizeof($navigation->path)-2;

if (isset($navigation->path[$back])) {

?>

<td class="main"><?php echo '<a href="' . tep_href_link($navigation->path[$back]['page'], tep_array_to_string($navigation->path[$back]['get'], array('action')), $navigation->path[$back]['mode']) . '">' . tep_image_button('button_continue_shopping.gif', IMAGE_BUTTON_CONTINUE_SHOPPING) . '</a>'; ?></td>

<?php

}

?>

<td align="right" class="main"><?php echo '<a href="' . tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL') . '">' . tep_image_button('button_checkout.gif', IMAGE_BUTTON_CHECKOUT) . '</a>'; ?></td>

<td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>

</tr>

</table></td>

</tr>

</table></td>

</tr>

<?php if(MODULE_PAYMENT_PAYPAL_EC_STATUS == 'True' || MODULE_PAYMENT_PAYPAL_WPP_STATUS == 'True') { ?>

</form>

 

<?php include (DIR_WS_MODULES.'easy_coupons_box.php'); ?>

 

<form method="post" name="form" action="paypal_wpp/ec/process.php">

 

<table width="165" border="0" align="right" cellpadding="2" cellspacing="0">

<tr><td align="left"><br>

<input type="image" src="paypal_wpp/images/btn_xpressCheckout.gif">

</td></tr>

<tr><td align="left">

<font style="font-size:11px; font-family: Arial, Verdana;">Save time. Checkout securely.

Pay without sharing your financial information.</font>

</td></tr>

</table>

 

<input type="hidden" name="express" value="1">

<input type="hidden" name="amount" value="<?=$cart->show_total();?>">

</form>

 

<?php } ?>

<?php

} else {

?>

<tr>

<td align="center" class="main"><?php new infoBox(array(array('text' => TEXT_CART_EMPTY))); ?></td>

</tr>

<tr>

<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>

</tr>

<tr>

<td><table border="0" width="100%" cellspacing="1" cellpadding="2" class="infoBox">

<tr class="infoBoxContents">

<td><table border="0" width="100%" cellspacing="0" cellpadding="2">

<tr>

<td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>

<td align="right" class="main"><?php echo '<a href="' . tep_href_link(FILENAME_DEFAULT) . '">' . tep_image_button('button_continue.gif', IMAGE_BUTTON_CONTINUE) . '</a>'; ?></td>

<td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>

</tr>

</table></td>

</tr>

</table></td>

</tr>

<?php

}

?>

</table></form></td>

<!-- body_text_eof //-->

<td width="<?php echo BOX_WIDTH; ?>" valign="top"><table border="0" width="<?php echo BOX_WIDTH; ?>" cellspacing="0" cellpadding="2">

<!-- right_navigation //-->

<?php require(DIR_WS_INCLUDES . 'column_right.php'); ?>

<!-- right_navigation_eof //-->

</table></td>

</tr>

</table>

<!-- body_eof //-->

 

<!-- footer //-->

<?php require(DIR_WS_INCLUDES . 'footer.php'); ?>

<!-- footer_eof //-->

<br>

</body>

</html>

<?php require(DIR_WS_INCLUDES . 'application_bottom.php'); ?>

 

Thanks again for the help, I REALLY appreciate it.

 

Sincerely,

Mark

Link to comment
Share on other sites

The only contrib that I have installed is the WebPayments Pro, here is my catalog/shopping_cart.php

Thanks again for the help, I REALLY appreciate it.

 

Sincerely,

Mark

 

then I suggest you install easy discount first.

Treasurer MFC

Link to comment
Share on other sites

Amanda,

 

I installed the "Easy Discount" this morning in order to get the "Easy Coupon" contribution working.

 

As soon as "ED" was installed, everything worked like a charm!

 

GREAT CONTRIBUTION!

 

THANK YOU, THANK YOU, THANK YOU!

 

~Mark

 

Good to hear you installed it without problems, I was actually expecting you in the easy discount support thread.

Treasurer MFC

Link to comment
Share on other sites

Good to hear you installed it without problems, I was actually expecting you in the easy discount support thread.

 

:D I don't intend on using anything other than the coupon code :thumbsup: (keep it simple, right?)

 

1 quick question though.

 

Is there a way to keep the coupon from being used only one time?

 

When I enter the coupon during checkout, it gets switched to "used" "yes" and doesn't work again.

 

Are they a one time use coupon?

 

Thanks again,

~Mark

Link to comment
Share on other sites

:D I don't intend on using anything other than the coupon code :thumbsup: (keep it simple, right?)

 

1 quick question though.

 

Is there a way to keep the coupon from being used only one time?

 

When I enter the coupon during checkout, it gets switched to "used" "yes" and doesn't work again.

 

Are they a one time use coupon?

 

Thanks again,

~Mark

 

yes, they are but as with anything there are ways around it.

 

1) you can ofcourse always reset the used flag in admin which makes the coupon available again until the next time.

 

2) you can comment out this line in checkout_process.php which sets the coupon to used.

 

// set the current coupon code to used if it was used

if (tep_session_is_registered('couponcode')) tep_db_query("update " . TABLE_COUPONS . " set used = 1, orders_id_used = ".$insert_id." where code = '".$couponcode['code']."'");

 

That way all coupons can be used for an unlimited time until the end date is reached (if set) or you set it to used yourself in admin.

Treasurer MFC

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...