Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

easier approval


mwstinson

Recommended Posts

Member approval 1.5

 

I was dissapointed with some of the functionality of this contrib. It does its job but I found it hard to use. I wanted to be able to view the customer details easier so I made a few changes.

 

what this will allow you to do is view the account details from the member approval page and then approve the account from the customerr details page. then confirm from the member approval page.

 

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

admin/customers.php

around line 698

 

change

 

<td align="right" class="main"><?php echo tep_image_submit('button_update.gif', IMAGE_UPDATE) . ' <a href="' . tep_href_link(FILENAME_CUSTOMERS, tep_get_all_get_params(array('action'))) .'">' . tep_image_button('button_cancel.gif', IMAGE_CANCEL) . '</a>'; ?></td>

 

to

 

<td align="right" class="main"><?php echo tep_image_submit('button_update.gif', IMAGE_UPDATE) . ' <br> <a href="' . tep_href_link(FILENAME_MEMBERS, tep_get_all_get_params(array('cID', 'action')) . 'cID=' . $cInfo->customers_id . '&action=accept') . '">' . tep_image_button('button_activate.gif', IMAGE_ACTIVATE) . '</a><a href="' . tep_href_link(FILENAME_CUSTOMERS, tep_get_all_get_params(array('action'))) .'">' . tep_image_button('button_cancel.gif', IMAGE_CANCEL) . '</a>'; ?></td>

 

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

admin/members.php

around line 169

 

change

 

$contents[] = array('align' => 'center', 'text' => '<a href="' . tep_href_link(FILENAME_CUSTOMERS, tep_get_all_get_params(array('cID', 'action')) . 'cID=' . $cInfo->customers_id . '&action=edit') . '" target="_blank" >' . tep_image_button('button_edit.gif', IMAGE_EDIT) . '</a> <a href="' . tep_href_link(FILENAME_MEMBERS, tep_get_all_get_params(array('cID', 'action')) . 'cID=' . $cInfo->customers_id . '&action=confirm') . '">' . tep_image_button('button_delete.gif', IMAGE_DELETE) . '</a><br><a href="' . tep_href_link(FILENAME_MAIL, 'selected_box=tools&customer=' . $cInfo->customers_email_address) . '">' . tep_image_button('button_email.gif', IMAGE_EMAIL) . '</a>');

 

to

 

$contents[] = array('align' => 'center', 'text' => '<a href="' . tep_href_link(FILENAME_CUSTOMERS, tep_get_all_get_params(array('cID', 'action')) . 'cID=' . $cInfo->customers_id . '&action=edit') . '" >' . tep_image_button('button_edit.gif', IMAGE_EDIT) . '</a> <a href="' . tep_href_link(FILENAME_MEMBERS, tep_get_all_get_params(array('cID', 'action')) . 'cID=' . $cInfo->customers_id . '&action=accept') . '">' . tep_image_button('button_activate.gif', IMAGE_ACTIVATE) . '</a> <a href="' . tep_href_link(FILENAME_MEMBERS, tep_get_all_get_params(array('cID', 'action')) . 'cID=' . $cInfo->customers_id . '&action=confirm') . '">' . tep_image_button('button_delete.gif', IMAGE_DELETE) . '</a><br><a href="' . tep_href_link(FILENAME_MAIL, 'selected_box=tools&customer=' . $cInfo->customers_email_address) . '">' . tep_image_button('button_email.gif', IMAGE_EMAIL) . '</a>');

 

 

thats it!!

I thought this stuff was gonna be easy!!

BACK IT UP BEFORE YOU JACK IT UP!!!!

Link to comment
Share on other sites

size=6]Member approval 1.5[/size]

 

I was dissapointed with some of the functionality of this contrib. It does its job but I found it hard to use. I wanted to be able to view the customer details easier so I made a few changes.

 

what this will allow you to do is view the account details from the member approval page

 

Untitled-1.gif

 

Then approve the account from the customerr details page.

 

Untitled-2.gif

 

Then confirm from the member approval page.

 

Untitled-3.gif

 

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

admin/customers.php

around line 698

 

change

 

<td align="right" class="main"><?php echo tep_image_submit('button_update.gif', IMAGE_UPDATE) . ' <a href="' . tep_href_link(FILENAME_CUSTOMERS, tep_get_all_get_params(array('action'))) .'">' . tep_image_button('button_cancel.gif', IMAGE_CANCEL) . '</a>'; ?></td>

 

to

 

<td align="right" class="main"><?php echo tep_image_submit('button_update.gif', IMAGE_UPDATE) . ' <br> <a href="' . tep_href_link(FILENAME_MEMBERS, tep_get_all_get_params(array('cID', 'action')) . 'cID=' . $cInfo->customers_id . '&action=accept') . '">' . tep_image_button('button_activate.gif', IMAGE_ACTIVATE) . '</a><a href="' . tep_href_link(FILENAME_CUSTOMERS, tep_get_all_get_params(array('action'))) .'">' . tep_image_button('button_cancel.gif', IMAGE_CANCEL) . '</a>'; ?></td>

 

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

admin/members.php

around line 169

 

change

 

$contents[] = array('align' => 'center', 'text' => '<a href="' . tep_href_link(FILENAME_CUSTOMERS, tep_get_all_get_params(array('cID', 'action')) . 'cID=' . $cInfo->customers_id . '&action=edit') . '" target="_blank" >' . tep_image_button('button_edit.gif', IMAGE_EDIT) . '</a> <a href="' . tep_href_link(FILENAME_MEMBERS, tep_get_all_get_params(array('cID', 'action')) . 'cID=' . $cInfo->customers_id . '&action=confirm') . '">' . tep_image_button('button_delete.gif', IMAGE_DELETE) . '</a><br><a href="' . tep_href_link(FILENAME_MAIL, 'selected_box=tools&customer=' . $cInfo->customers_email_address) . '">' . tep_image_button('button_email.gif', IMAGE_EMAIL) . '</a>');

 

to

 

$contents[] = array('align' => 'center', 'text' => '<a href="' . tep_href_link(FILENAME_CUSTOMERS, tep_get_all_get_params(array('cID', 'action')) . 'cID=' . $cInfo->customers_id . '&action=edit') . '" >' . tep_image_button('button_edit.gif', IMAGE_EDIT) . '</a> <a href="' . tep_href_link(FILENAME_MEMBERS, tep_get_all_get_params(array('cID', 'action')) . 'cID=' . $cInfo->customers_id . '&action=accept') . '">' . tep_image_button('button_activate.gif', IMAGE_ACTIVATE) . '</a> <a href="' . tep_href_link(FILENAME_MEMBERS, tep_get_all_get_params(array('cID', 'action')) . 'cID=' . $cInfo->customers_id . '&action=confirm') . '">' . tep_image_button('button_delete.gif', IMAGE_DELETE) . '</a><br><a href="' . tep_href_link(FILENAME_MAIL, 'selected_box=tools&customer=' . $cInfo->customers_email_address) . '">' . tep_image_button('button_email.gif', IMAGE_EMAIL) . '</a>');

 

 

thats it!!

I thought this stuff was gonna be easy!!

BACK IT UP BEFORE YOU JACK IT UP!!!!

Link to comment
Share on other sites

  • 1 month later...

:'( I've got a BIG problem here...

 

Some of my customers registered and their name(s) is not showing up in admin area whether in Member Approval section nor Customers (area).

 

and some of them can.

 

Please..I need help right now..I'm loosing my customers.... :( >_<

 

 

I will appreciate if someone trying to help me :thumbsup:

 

THX

Link to comment
Share on other sites

I am guessing that your problem is in your code somewhere in your links that take you to customers.php.

 

Does your customers name show up if you go to edit them directly from the admin customers page?

 

If the problem just occurs of you are linking to a customer from members.php ... than the customers cID (customers ID) is not being carried properly ... you should post your members.php code for evaluation.

 

 

Also make sure you have the c.customers_firstname and c.customers_lastname in the members.php customers_query_raw.

 

Look for this code or similar:

 

<tr>

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

<tr>

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

<tr class="dataTableHeadingRow">

<td class="dataTableHeadingContent"> <a href="<?php echo "$PHP_SELF?listing=lastname"; ?>"><?php echo tep_image_button('ic_up.gif'); ?></a> <?php echo TABLE_HEADING_LASTNAME; ?> <a href="<?php echo "$PHP_SELF?listing=lastname-desc"; ?>"><?php echo tep_image_button('ic_down.gif'); ?></a></td>

<td class="dataTableHeadingContent"><a href="<?php echo "$PHP_SELF?listing=firstname"; ?>"><?php echo tep_image_button('ic_up.gif'); ?></a> <?php echo TABLE_HEADING_FIRSTNAME; ?> <a href="<?php echo "$PHP_SELF?listing=firstname-desc"; ?>"><?php echo tep_image_button('ic_down.gif'); ?></a></td>

<td class="dataTableHeadingContent" align="right"><a href="<?php echo "$PHP_SELF?listing=date_account_created"; ?>"><?php echo tep_image_button('ic_up.gif'); ?></a> <?php echo TABLE_HEADING_ACCOUNT_CREATED; ?> <a href="<?php echo "$PHP_SELF?listing=date_account_created-desc"; ?>"><?php echo tep_image_button('ic_down.gif'); ?></a></td>

<td class="dataTableHeadingContent" align="right"><?php echo TABLE_HEADING_STATUS; ?>

<td class="dataTableHeadingContent" align="right"><?php echo TABLE_HEADING_ACTION; ?> </td>

</tr>

<?php

$search = '';

if (isset($_GET['search']) && tep_not_null($_GET['search'])) {

$keywords = tep_db_input(tep_db_prepare_input($_GET['search']));

 

$search = "where c.customers_lastname like '%" . $keywords . "%' or c.customers_firstname like '%" . $keywords . "%' or c.customers_email_address like '%" . $keywords . "%' or a.entry_acct like '%" . $keywords . "%' or a.entry_company like '%" . $keywords . "%' or a.entry_ein like '%" . $keywords . "%' or c.customers_id like '%" . $keywords . "%' or a.entry_telephone like '%" . $keywords . "%' or ctry.countries_iso_code_2 like '%" . $keywords . "%' or a.entry_city like '%" . $keywords . "%' or z.zone_name like '%" . $keywords . "%' or a.entry_suburb like '%" . $keywords . "%' or a.entry_postcode like '%" . $keywords . "' and member_level = '0'";

}

 

if ($search == '') $search = "where member_level = '0'";

 

// modified larger advanced query

$customers_query_raw = "select c.customers_id, c.member_level, c.customers_gender, c.customers_firstname, c.customers_lastname, c.customers_dob, c.customers_email_address, c.customers_referral_id, c.customers_referral_points, c.customers_allow_purchase_order_entry, a.entry_company, a.entry_ein, a.entry_acct, a.entry_street_address, a.entry_street_address2, a.entry_suburb, a.entry_postcode, a.entry_city, a.entry_state, a.entry_zone_id, a.entry_country_id, a.entry_telephone, a.entry_fax, c.customers_newsletter, ci.customers_info_date_of_last_logon as last_logon, ci.customers_info_number_of_logons as num_logons, ci.customers_info_date_account_created as date_account_created, a.entry_city as city, z.zone_name as state, ctry.countries_iso_code_2 as country from " . TABLE_CUSTOMERS . " c left join " . TABLE_ADDRESS_BOOK . " a on c.customers_id = a.customers_id and c.customers_default_address_id = a.address_book_id left join " . TABLE_CUSTOMERS_INFO . " ci on c.customers_id = ci.customers_info_id left join " . TABLE_COUNTRIES . " ctry on a.entry_country_id = ctry.countries_id left join " . TABLE_ZONES . " z on a.entry_zone_id = z.zone_id " . $search . " order by c.customers_lastname, c.customers_firstname";

 

$customers_split = new splitPageResults($_GET['page'], MAX_DISPLAY_SEARCH_RESULTS, $customers_query_raw, $customers_query_numrows);

$customers_query = tep_db_query($customers_query_raw);

while ($customers = tep_db_fetch_array($customers_query)) {

$info_query = tep_db_query("select customers_info_date_account_created as date_account_created, customers_info_date_account_last_modified as date_account_last_modified, customers_info_date_of_last_logon as date_last_logon, customers_info_number_of_logons as number_of_logons from " . TABLE_CUSTOMERS_INFO . " where customers_info_id = '" . $customers['customers_id'] . "'");

$info = tep_db_fetch_array($info_query);

 

if ((!isset($_GET['cID']) || (isset($_GET['cID']) && ($_GET['cID'] == $customers['customers_id']))) && !isset($cInfo)) {

 

$country_query = tep_db_query("select countries_name from " . TABLE_COUNTRIES . " where countries_id = '" . $customers['entry_country_id'] . "'");

$country = tep_db_fetch_array($country_query);

 

$reviews_query = tep_db_query("select count(*) as number_of_reviews from " . TABLE_REVIEWS . " where customers_id = '" . $customers['customers_id'] . "'");

$reviews = tep_db_fetch_array($reviews_query);

 

$customer_info = array_merge($country, $info, $reviews);

 

$cInfo_array = array_merge($customers, $customer_info);

$cInfo = new objectInfo($cInfo_array);

}

 

if (isset($cInfo) && is_object($cInfo) && ($customers['customers_id'] == $cInfo->customers_id)) {

echo ' <tr id="defaultSelected" class="dataTableRowSelected" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="document.location.href=\'' . tep_href_link(FILENAME_MEMBERS, 'page=' . (int)$_GET['page'] . '&cID=' . $cInfo->customers_id . '&action=edit') . '\'">' . "\n";

} else {

echo ' <tr class="dataTableRow" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="document.location.href=\'' . tep_href_link(FILENAME_MEMBERS, 'page=' . (int)$_GET['page'] . '&cID=' . (int)$customers['customers_id']) . '\'">' . "\n";

}

?>

Edited by insomniac2
Link to comment
Share on other sites

I am guessing that your problem is in your code somewhere in your links that take you to customers.php.

 

Does your customers name show up if you go to edit them directly from the admin customers page?

 

No....customers name not show up in admin/customers.php and also members.php .Eventhough,if they tried to login into catalog area.Its said,no account exists.But some of them can register and their name show up.Why? :blink:

Link to comment
Share on other sites

  • 2 weeks later...

The member approval contribution has some nasty bugs that REALLY need to be addressed. This contribution will break the error checking of the account creation page, resulting in the customer receiving the "account created/requested" page and receiving a "success" email, but no approval request shows up in the admin section.

 

Here is the list of things I know about:

- Typing the state in any other way than AZ or Arizona (like A.Z. or a typo like Ariznoa). This can be fixed with the country/state selector contribution though.

- Entering a password in the "password confirmation" field that differs from the password entered in the "password" field.

- Entering a password less than 5 characters (or whatever the minimum is set to)

- Signing up with an email address that already exists in the database.

 

All of these things will result in the customer thinking their account was created, but we don't see a thing. This problem really needs to be fixed, since I don't know how many customers I've lost because of it.

Link to comment
Share on other sites

- Typing the state in any other way than AZ or Arizona (like A.Z. or a typo like Ariznoa). This can be fixed with the country/state selector contribution though.

 

Thanks for the info about the country/state selector contribution. I looked through the contribs but could not find what I was looking for and searched the forum and found your post. Seems it is exactly what I want to do. I sure have installed a lot of contribs so far. lol.

BACKUP your current files before editing. Did I mention to BACKUP your current files, first?

 

"I'm not a hero, I'm a firefighter; it is my job to save lives. I'm a Jesus Christ Firefighter saving souls from the flames!"

 

Installed contribs: Almost XP Buttons *** Attribute Sort *** Auto Thumbnail Change *** Column Product Listing (for SPPC v4.0) *** Contact Us Registered *** Country-State Selector 1.3.3J *** CC# Db Mask 1.3 *** Email Order Clickable Link *** Extra Images *** Linkpoint API CVM *** Loginbox Best *** New Spiders *** New Attrib Mgr v.5.0 w/ New Attrib Include *** Multi Product Update *** MySQL Cron *** Pricing per Category *** Product Listing in Columns v2.2 [later upgraded to CPL(SPPC)] *** Product Sort v1.6 *** Seperate Pricing Per Customer v4.15 *** Simple Down for Maintenance [Gokou] *** Ultimate_SEO_URLs_v2.2.2 *** UPS Worldship Export 1.3 *** Welcome Email username & password

Link to comment
Share on other sites

  • 1 month later...

Did I do something wrong or is this a flaw???

 

When a customer creates an account, if they don't log out but instead press the continue button, they can place an immediate order. If, however, they leave the store, they can't log back in again until they're approved.

 

What did I miss? Any ideas?

Just between us, remember there are only 10 kinds of people in the world; those who understand binary and those who don't!!

 

Remember, learning is a "do-it-yourself" experience; although, not necessarily a "do-it-BY-yourself" experience.

 

The quickest way to learn is to forget to BACKUP!

Link to comment
Share on other sites

  • 1 month later...

Hi,

 

I installed member approval 1.5.1 and it has a lot of incorrect readme file !!

 

Could someone direct me which complete and accurate version to install ? or maybe to install one version and then upgrade to other version..

 

It seems that this contribution does not supports other languages except english (when I see the email that is being sent to customers) am I right about it??

 

Any help please is much appreciated. thanks !!!

 

Regards,

Elazar

Link to comment
Share on other sites

It seems that this contribution does not supports other languages except english (when I see the email that is being sent to customers) am I right about it??

 

Hello,

 

I have made some changes in the contribution Member Approval 1.6 and everything works fine for me.

 

But ... the only problem is, that the confirming email supports no other languages but english.

 

I don't know how to fix that, so maby anyone else can help. This is the only problem in a great contribution !!

Link to comment
Share on other sites

Hello,

 

I have made some changes in the contribution Member Approval 1.6 and everything works fine for me.

 

But ... the only problem is, that the confirming email supports no other languages but english.

 

I don't know how to fix that, so maby anyone else can help. This is the only problem in a great contribution !!

 

Rivi, thanks for your reply !

 

As you say, the confirming email supports no other languages but english, you mean that the output should be translated to Hebrew OR the code is only supporting English (from left to right) ???

 

Waiting please for your kind reply..

 

Thanks again,

Elazar

Link to comment
Share on other sites

I went through this entire contrib twice to fix some things that weren't working correctly, now when I try to log into a test account I made it gives me this error:

 

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/ableau/public_html/dealers/catalog/includes/functions/database.php on line 99

 

 

Not sure where to go from here. Any suggestions?

Link to comment
Share on other sites

  • 1 month later...
Hello,

 

I have made some changes in the contribution Member Approval 1.6 and everything works fine for me.

 

But ... the only problem is, that the confirming email supports no other languages but english.

 

I don't know how to fix that, so maby anyone else can help. This is the only problem in a great contribution !!

 

Hi everyone!

 

Installed this great contribution too and ran against the same problem as said above.

The weird thing is, that the "define =" are under the map admin\includes\boxes\customers.php.

So the information in the mail is taken from that file. i looked in all the files for the forwarding to that file, but didn't find anything.

 

<?php

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

$heading = array();

$contents = array();

switch ($HTTP_GET_VARS['action']) {

case 'confirm':

$heading[] = array('text' => '<b>' . TEXT_INFO_HEADING_DELETE_CUSTOMER . '</b>');

 

$contents = array('form' => tep_draw_form('customers', FILENAME_MEMBERS, tep_get_all_get_params(array('cID', 'action')) . 'cID=' . $cInfo->customers_id . '&action=deleteconfirm'));

$contents[] = array('text' => TEXT_DELETE_INTRO . '<br><br><b>' . $cInfo->customers_firstname . ' ' . $cInfo->customers_lastname . '</b>');

if ($cInfo->number_of_reviews > 0) $contents[] = array('text' => '<br>' . tep_draw_checkbox_field('delete_reviews', 'on', true) . ' ' . sprintf(TEXT_DELETE_REVIEWS, $cInfo->number_of_reviews));

$contents[] = array('align' => 'center', 'text' => '<br>' . tep_image_submit('button_delete.gif', IMAGE_DELETE) . ' <a href="' . tep_href_link(FILENAME_MEMBERS, tep_get_all_get_params(array('cID', 'action')) . 'cID=' . $cInfo->customers_id) . '">' . tep_image_button('button_cancel.gif', IMAGE_CANCEL) . '</a>');

break;

case 'accept':

$email = STORE_NAME . "\n" . EMAIL_SEPARATOR . "\n" . EMAIL_TEXT_CONFIRM . "\n\n" . EMAIL_CONTACT . "\n\n" . EMAIL_WARNING . "\n\n";

$heading[] = array('text' => '<b>' . $cInfo->customers_firstname . ' ' . $cInfo->customers_lastname . '</b>');

$contents[] = array('align' => 'center', 'text' => '<a href="' . tep_href_link(FILENAME_MEMBERS, tep_get_all_get_params(array('cID', 'action')) . 'cID=' . $cInfo->customers_id . '&action=confirmaccept') . '" onclick="' .tep_mail($cInfo->customers_name, $cInfo->customers_email_address, EMAIL_TEXT_SUBJECT, nl2br($email), STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS, '') . '">' . tep_image_button('button_confirm.gif', IMAGE_CONFIRM) . '</a> <a href="' . tep_href_link(FILENAME_MEMBERS, tep_get_all_get_params(array('cID', 'action')) . 'cID=' . $cInfo->customers_id . '&action=') . '">' . tep_image_button('button_cancel.gif', IMAGE_CANCEL) . '</a>');

break;

default:

if (is_object($cInfo)) {

$heading[] = array('text' => '<b>' . $cInfo->customers_firstname . ' ' . $cInfo->customers_lastname . '</b>');

$contents[] = array('align' => 'center', 'text' => '<a href="' . tep_href_link(FILENAME_CUSTOMERS, tep_get_all_get_params(array('cID', 'action')) . 'cID=' . $cInfo->customers_id . '&action=edit') . '" >' . tep_image_button('button_edit.gif', IMAGE_EDIT) . '</a> <a href="' . tep_href_link(FILENAME_MEMBERS, tep_get_all_get_params(array('cID', 'action')) . 'cID=' . $cInfo->customers_id . '&action=accept') . '">' . tep_image_button('button_activate.gif', IMAGE_ACTIVATE) . '</a> <a href="' . tep_href_link(FILENAME_MEMBERS, tep_get_all_get_params(array('cID', 'action')) . 'cID=' . $cInfo->customers_id . '&action=confirm') . '">' . tep_image_button('button_delete.gif', IMAGE_DELETE) . '</a><br><a href="' . tep_href_link(FILENAME_MAIL, 'selected_box=tools&customer=' . $cInfo->customers_email_address) . '">' . tep_image_button('button_email.gif', IMAGE_EMAIL) . '</a>');

In above code, you can see where the mail is made ( i believe). I don't know what i am doin wrong to make it work. The content of the email has to be looked up in the different language files.

 

Can anybody help me or give me a hint?

 

Many thanks in advance!

 

regards,

 

Gijs van den Oever

Link to comment
Share on other sites

  • 2 weeks later...
  • 1 month later...
  • 3 weeks later...

I am hoping for some assistance. I uploaded files, made all of the modifications, and made the database changes. Everything seems like it should be working. However, when a customer registers they don't appear on the Waiting Approval list, or on the Customer list for that matter. The emails go out for both the customer and the administrator. Any ideas? I'd be more than happy to post my code if there's a specific page that someone thinks will help.

 

Thanks

Link to comment
Share on other sites

  • 9 months later...
The member approval contribution has some nasty bugs that REALLY need to be addressed. This contribution will break the error checking of the account creation page, resulting in the customer receiving the "account created/requested" page and receiving a "success" email, but no approval request shows up in the admin section.

 

It is a 1,5 of year behind of above post but this BUG is still actual for Memebr Approval 1.7. It breakes error checking on create_account.php and allow even empty form to be registered as a customer!

 

Sergei

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