Git Product home page Git Product logo

wp-e-commerce's Introduction

WP eCommerce Scrutinizer Code Quality Coverage Status Build Status

Gitter

About

WP eCommerce is a free open-source WordPress Shopping Cart Plugin that lets customers buy your products, services and digital downloads online.

More details about this plugin features can be found on our website at wpecommerce.org.

User documentation can be found at docs.wpecommerce.org.

If you're looking for general user support, please submit your support request on our community support forums.

Development status

How to contribute code

How to report issues

Translating WPEC

wp-e-commerce's People

Contributors

1bigidea avatar 9thsphere avatar amereservant avatar benhuson avatar benjaminprojas avatar christophherr avatar curtismchale avatar daohoangson avatar glutnix avatar iorivn avatar jbeales avatar jeffpyebrook avatar jeremysawesome avatar joshlevinson avatar jtsternberg avatar justinsainton avatar leewillis77 avatar lizkaraffa avatar lukecarbis avatar marcusds avatar mihaijoldis avatar mpolleke avatar nikv avatar norcross avatar om4james avatar omarabid avatar pippinsplugins avatar reactorshop avatar stepanov-sergey avatar typerlc avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

wp-e-commerce's Issues

compatibility.css theme file

If you move the compatibility.css file to the users theme folder (using Advanced Theme Settings) and customise the styles, they are not applied. It is still using the wpsc-theme file.

Looks like theme.functions.php needs updating on line 594 to include wpsc_get_template_file_url

deleted a pg by accident

I accidentally deleted one of the pgs related to this plug in. I thought I could just delete the whole plug in then re-install it but it doesn't give me this option. Not sure what to do to fix this issue so I have have it all back in place. Thank you for your help :)

Remove FPDF

There's no usage of it in core. There never has been. Probably never will be. In my opinion, mPDF would be a better solution for our international audience, and if we're thinking of using it for invoices/packing slips, etc., that's plugin territory.

Audit readme.txt

There's a lot of stuff we could do better in readme.txt.

For one, there's some stale or lacking information there. We could probably update the screenshots.

These are a couple examples of lines we should probably change, verify or otherwise refine

  • Works with any standards compliant WordPress theme
  • A designers dream – use your own HTML & CSS and have complete control over the look and feel of your store
  • Guaranteed speedy response (through our premium forums)

My sense on these is that we're setting up expectations that we're just going to disappoint on. We should transparently cheer-lead how far we've come - not try to communicate hype.

  • Integrates with Facebook Marketplace (Facebook Marketplace API has closed – we’re working on it)
  • Integrates with Google Base
  • Integrates with Campaign Monitor for advanced email marketing
  • Mail Chimp integration coming soon
  • Integrates with Intense Debate for shared comments

If these are all verified, we should be linking to documentation or videos on how to set up and use. If it's dated (like the Facebook API), we should just remove it. If it's coming soon (like MailChimp), how soon, and where can people get it? If it's likely to be removed (like Intense Debate), mention that or just don't mention it at all.

  • Integrates with the All in One SEO plugin for WordPress (which includes Google Analytics)

These are two very separate components - neither are dependent upon each other or inclusive of one another.

  • Multi-lingual (the first Plugin to fully utilize and integrate with GlotPress)

GlotPress integration isn't really a feature. That's like listing GitHub as a feature. It's a meta-tool.

  • One-Page Checkout or Stepped Checkout, whichever you prefer
  • Quickly edit your products from the store front (saving you heaps of time)
  • Smart Groups allow you to organize your products with hierarchical categories, as well as by brand.

Pretty sure that information is dated back to pre-3.8 days. So a few years old now.

  • Handles multiple product images with easy drag-and-drop sorting
  • Product Image Zoom-in Capability

This is Gold Cart only.

Curl SSL Error with UPS Shipping

UPS shipping doesn't work correctly because of a Curl error through the method _makeRateRequest. The SSL for UPS isn't verified so it is rejected.

I added the following line just after curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); in ups_20.php

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

This isn't great for security, but since no confidential information is passed, I don't see this as an issue. Is this a proper solution?

Jonathan

Store Log Empty - Not showing any purchases

This has been an ongoing issue that may not have been completely dealt with previously, as it has not been resolved.

The store log shows purchase counts in the "All", "Incomplete" and "Accepted" category filters, for example: "Incomplete (9)", but no records show in the table below.

Also, the CSV file will not export records -- my hunch is that it is related to the table not populating. For clarity, a CSV file IS created and exported, there are simply no tabulated data within it.

Thanks!

Transaction result displaying cart content twice

function _wpsc_transaction_results_html( $purchase_log ) {
    $output = wpsc_get_transaction_html_output( $purchase_log );

    if ( version_compare( WPSC_VERSION, '3.8.9', '>=' ) )
        echo $output;

    return $output;
}

By adding else statement before "return $output;" it appears once. But it display alway "Oops, there is nothing in your cart." at the end.

Categories from 3.7 have a parent category of category

See GC 508.

Not sure if the initial report is still an issue, but there was some good discussion near the end about what to do for implementing custom taxonomies that can take advantage of everything WPEC does, stuff that a run-of-the-mill register_taxonomy() call might not get.

Let's get our Javascript in order

We have many, many areas in WPeC that need to be brought up to modernity in regards to javascript.

Gary has done a brilliant job on all of the new stuff, let's achieve plugin-wide parity across the board.

Here's the big tasks for this. Since we're new to this GitHub thing, I don't really care if these are broken out into smaller tickets or not - the reality is that it's not actually going to be a heavily resource-intensive effort.

  • Proper AJAX throughout the javascript files. Gary has built an awesome WPSC AJAX API as of 3.8.9 - let's ensure this is used everywhere. (See issue #368)
  • Make decisions about what makes it into core JS files. Fancy Notifications? (see GC 296 ) ShareThis? Arguably, JS for these should not be in core files, rather, in plugin/theme related files. (See Issue #370)
  • Avoid eval() - this requires no explanation. We're doing_this_wrong(). See GC 486.
  • Properly reference our AJAX handler. There is no shortage of Nginx issues reported due to us using '/index.php' as an AJAX handler. See GC 713
  • Be no more specific than we need to be with selectors. Naturally, some thought will need to be given here with regards to backwards compatibility as well as the new theme engine. But we needlessly cause issues like GC 365. (See #371)
  • Now is the time to move from .live() (or livequery(), or bind() or delegate() even) to .on(). See GC 556. To note, the patches there only affect .livequery() usage.
  • We have SO MANY javascript files that we don't need. Not even for back compat. Let's get rid of them. (See #372)

This would all be a brilliant start.

Add filter to wpsc_the_variation_price() to allow for Variation Price adjustments

Store URL: -
WordPress version: 3.5
WP e-Commerce version: 3.8.9.4
Gold Cart version: -
Theme: Twenty Twelve

I did this:
Tried using the wpsc_do_convert_price and wpsc_price filters within /wpsc-includes/product-template.php to adjust the Prices of items within the Variations dropdown on the Products Page and Single Product templates but there is no filter within wpsc_the_variation_price().

I expected WP e-Commerce to do this:
Add a filter for wpsc_do_convert_price or wpsc_price within wpsc_the_variation_price() to allow for Variation Price adjustments.

Line #1664 (within wpsc_the_variation_price) of /wpsc-includes/product-template.php

$price = apply_filters( 'wpsc_do_convert_price', $price, $product_id );

Instead it did this: -

Products no longer showing up

I upgraded. Now my products are not showing up. The are in the products admin area, but not in production. Please help.

Resend Purchase Receipt is broken, doesn't send

The Resend Purchase Receipt link within Dashboard > Store Sales > Sale detail doesn't display a confirmation notice or send the e-mail as expected, this is likely due to significant changes to the Purchase Log and Purchase Log Notification classes in 3.8.9.x

Reproduced in WP e-Commerce 3.8.9.4

Remove dependencies on query string vars

Some nginx environment botch up query strings. There are ways to configure it so that this doesn't occur, but many are unaware of this, or simply don't do it.

My proposal is that we remove reliance on $_GET strings, on the front-end, completely. The session ID on transaction results is the first obvious one, but I have a feeling there are a few others.

This would require a full audit, as well a extensive third-party theme/plugin communication and documentation. Some potential for us to handle back compat gracefully, as we do for $_SESSION vars in the customer_meta API.

We can replace the query strings with add_rewrite_tag() and/or add_rewrite_endpoint().

Audit usage of WP_Screen API in AJAX Requests

Edit by Gary: This is mainly due to changes made in WP 3.5 to reduce reliance on global screen variables. The issue with purchase log status has been fixed, but we should still make sure there's nothing else we miss.

Long-winded and icky bug report here - http://code.google.com/p/wp-e-commerce/issues/detail?id=1305
Essence is that using WP_Screen object via AJAX appears to throw notices over AJAX. Only an issue when WP_DEBUG is true. _wpsc_ajax_change_purchase_log_status() is the example shown in the bug ticket above - with WP_DEBUG on, it does what you'd expect, but the spinner never goes away.

IIRC, this occurs one or two other places where we're using set/get_current_screen()

Getting undefined index error when quick editing

See http://code.google.com/p/wp-e-commerce/issues/detail?id=1275

Trying to quick edit an existing product, I get this -

Notice: Trying to get property of non-object in /home/zaowsai3/public_html/wp-content/plugins/wp-e-commerce/wpsc-core/wpsc-functions.php on line 36

That line is get_current_screen() inside wpsc_term_list_levels(). wpsc_term_list_levels() is hooked into 'term_name' - which may or may not have access to the get_current_screen() function in the scope it's called in.

Can't download products in 3.8.9.4

Edited: From Visser's comment below which provides more details:

It is due to us linking to the Download File ID of a Product which becomes invalid when a store owner removes or changes the File Downloads for that Product (e.g. change of Plugin file versions, etc.).

When a customer purchases a Product they should get the File Downloads associated with that Product regardless of when they purchased it (I purchased ABC until my download number expires, not ABC v1.1 until the Product is updated).

"wpsc_action=scale_image" fails on larger than original values

If the requested size for an image passed through the "wpsc_action=scale_image" via the "wpsc_the_product_thumbnail()" function is greater than the original it returns nothing. I realize that upscaling an image is not great idea, but maybe it should return the original image and/or a descriptive error to the user. Maybe something like "The source image is too small, please upload an image with at least the dimensions $width x $height".

Add a readme.md

Our readme.txt is currently used in place of a readme.md. This is generally fine, except that we have a massive, massive changelog - that can be distracting. The readme.txt is also a bit more marketing-speak than I would consider helpful for people coming to GitHub.

Proposing we add a readme.md file that explains the project clearly, points to developer documentation, explains proper support channels, etc.

Also, proper security reporting protocol.

Admin and customer emails not sent for PX transactions

I am not receiving admin email notification of payment and the customer isn't receiving confirmation emails. This is with 3.8.9.4, gold cart 2.9.7.2 and DPS / Payment Express - PX Post.

Marking a successful transaction as incomplete, then switching it back to accepted payment does send the email.

I also use PayPal Payments Standard 2.0 and payments made through that gateway are sending emails as expected.

Note the transaction results page displays just fine with DPS / Payment Express - PX Post, it's just that neither admin nor end user notification emails are sent upon a successful transaction.

Rolling back to 3.8.7.6.2 and gold cart 2.9.6 fixed the issue.

WP-e-Commerce 3.8.9 and Multisite installations

After upgrade to WP-e-Commerce 3.8.9 I get the following error:

Fatal error: Call to a member function get_blog_prefix() on a non-object in (...) /wp-content/plugin/wp-e-commerce/wpsc-core/wpsc-functions.php on line 1668

Line 1668 says:
$blog_prefix = is_multisite() ? $wpdb->get_blog_prefix() : '';

Since I am using WP-e-Commerce only for the main blog, I replaced it with
$blog_prefix = '';
I get the same error for line 1718. After applying the same "fix" for this line, evrything works.

Although I can imagine what get_blog_prefix() should do (that is: providing the database tablename prefix for a certain virtual blog) I can't find it listed on http://codex.wordpress.org/Function_Reference#Multisite_functions. Probably it's deprecated?

Translatable countries

This is something several have asked for, from @benhuson on GC 577 to alexgieg on GC 1055. The use case is natural and obvious.

Now that we have a WPSC_Country class, I think we have the appropriate method of abstraction to begin thinking of a logical way to do this. If we play our cards right, there exists the possibility of actually getting rid of the database table completely, but that may not be feasible. I'd at least like to prioritize thinking about ways to do this well.

To clarify our stance on an approach suggested many, many times, simple wrapping the $country variable in a __() tag is not an option. See http://markjaquith.wordpress.com/2011/10/06/translating-wordpress-plugins-and-themes-dont-get-clever/

html syntax bug on product-template.php code

On the main product page (WPEC 3.8.9) when showing all products the current price display doesn't the proper class designation as should below:

(p class="pricedisplay wpsc-product-price 40")Price: (span class="currentprice pricedisplay 40" id="product_price_40")...

Instead it gives:

(p pricedisplay wpsc-product-price 40)Price: (span class="currentprice pricedisplay 40" id="product_price_40")...

The error is in product-template.php file on function wpsc_the_product_price_display function after line 1920. Fixed code as follows:

function wpsc_the_product_price_display( $args = array() ) {
if ( empty( $args['id'] ) )
$id = get_the_ID();
else
$id = (int) $args['id'];

$defaults = array(
    'id' => $id,
    'old_price_text'   => __( 'Old Price: %s', 'wpsc' ),
    //Added span class for price text
    'price_text'       => __( '<span class="pricetext">Price:</span> %s', 'wpsc' ),
    /* translators     : %1$s is the saved amount text, %2$s is the saved percentage text, %% is the percentage sign */
    'you_save_text'    => __( 'You save: %s', 'wpsc' ),
    'old_price_class'  => 'pricedisplay wpsc-product-old-price ' . $id,
    'old_price_before' => '<p %s>',
    'old_price_after'  => '</p>',
    'old_price_amount_id'     => 'old_product_price_' . $id,
    'old_price_amount_class' => 'oldprice',
    'old_price_amount_before' => '<span class="%1$s" id="%2$s">',
    'old_price_amount_after' => '</span>',
    'price_amount_id'     => 'product_price_' . $id,
    'price_class'  => 'pricedisplay wpsc-product-price ' . $id,
    //fixed the missing class operator so it prints out properly and gives the paragraph it's proper class
    'price_before' => '<p class="%s">',
    'price_after' => '</p>',
    'price_amount_class' => 'currentprice pricedisplay ' . $id,
    'price_amount_before' => '<span class="%1$s" id="%2$s">',
    'price_amount_after' => '</span>',
    'you_save_class' => 'pricedisplay wpsc-product-you-save product_' . $id,
    'you_save_before' => '<p %s>',
    'you_save_after' => '</p>',
    'you_save_amount_id'     => 'yousave_' . $id,
    'you_save_amount_class' => 'yousave',
    'you_save_amount_before' => '<span class="%1$s" id="%2$s">',
    'you_save_amount_after'  => '</span>',
    'output_price'     => true,
    'output_old_price' => true,
    'output_you_save'  => true,
);

Please note I added the span class for price_text for my current purposes only but it may make sense to give it it's own span class so it can be hidden when desired with display: none , as in my current case.

United Kingdom/Great Britian confusion in Checkout Country dropdown

Store URL: -
WordPress version: 3.5
WP e-Commerce version: 3.8.9.4
Gold Cart version: -
Theme: -

I did this:
Added a Sale at Checkout, looked for United Kingdom/U.K. within the Country dropdown and could not find it. Looked for Britain, could not find it. Dug up a support topic on GetShopped.org and found Great Britain.

Can we add it back or at least add "(U.K.) after "Great Britain" to reduce confusion at Checkout...

I expected WP e-Commerce to do this:
Have both United Kingdom (UK) and Great Britain in the country dropdown, two entries for the same country that are interchangeable, its confusing for developers but easier for customers.

Instead it did this:
Got confused. Ended up here.

Store Sales - Purchase Log

We are able to over-ride and add new column names in the table header with

add_filter('manage_dashboard_page_wpsc-purchase-logs_columns', 'new_callback', 5);

But not able to add the data to new columns that I see short of modifying the core file and adding a new method
wp-content/plugins/wp-e-commerce/wpsc-admin/includes/purchase-log-list-table-class.php

Is there a hook I don't know about? Or is there not one in place.

Javascript should be checked to ensure the proper value for regions is passed

Ran into a random issue with a client project in which "State" was being saved as the delivery_region, instead of the region ID.

Narrowed it down to the wpsc_update_shipping_quotes() function in wp-e-commerce.js.

I think the following line -

var shipping_same_as_billing_region = ///

should be more like this -

var shipping_same_as_billing_region = ( jQuery('input[title="shippingstate"]').is( ':visible' ) ) ? jQuery('input[title="shippingstate"]' ) : jQuery('select[title="shippingstate"]' );

That way, if the state field is hidden and pre-filled with the label, the actual value is passed properly.

Organize product images into galleries

Currently there's no way to organize existing product images into a gallery for a new product.

Let's say we have image A, B, C in the gallery already. When we create a new product, we don't want to re-upload B and C, but reuse them in that new product. There's currently no sane way to do that except to use each of them as featured image.

We should make use of the new Media UI for this. I wouldn't oppose to make WPEC 3.8.10 require WP 3.5+ just for this.

Shopping cart not working after upgrade to multisite

E-commerce working fine for several months.
Changed to multisite by uploading new config.php and .htaccess files as recommended by Wordpress.org and GoDaddy.
Now the shopping cart won't work - after selecting 'add to cart', system hangs...

Purchase Receipt email sent everytime order status is changed

Hi,

Customers are receiving the purchase email not just when they have made an order and status is 'accepted payment' but also when status is changed to 'closed order' status etc. It means I can't close orders because if i do customers are emailing me asking why they have another purchase receipt email and are worried that I'm processing their order again!

Thanks

PHP Fatal Error on Multisite installs

When updating to version 3.8.9 on a multisite install the site went down with the following error.

Call to a member function get_blog_prefix() on a non-object in /var/www-wp/wp-content/plugins/wp-e-commerce/wpsc-core/wpsc-functions.php on line 1668

Make purchase statuses filterable

This will require a bit of thought, but should be very doable, especially with the new API. I know that was milestoned for 4.0, but I think we might be shifting that down a bit by decoupling, so I'll mark as 3.9 for now.

See GC 946

wpsc.pot file is out of date

I'm working on a Finnish language store and the problem is especially on the checkout page where there are untranslatable strings that are not in the .po or the original wpsc.pot file. It kinda doesn't look good with the odd English sentences and words mixed with Finnish.

The wpsc.pot appears to be two years old so it may be due for an update.

wpsc_cart::update_location() has an improperly set meta key for shipping region

In wpsc_cart::update_location() - we have this line -

$delivery_region = wpsc_get_customer_meta( 'shipping_region' );

And then this line a bit below.

wpsc_update_customer_meta( 'delivery_region' , $delivery_region );

There are 3 other meta keys that are updated, each of them correlated properly - this is the only one where there is a different key between the update/get. Whichever key is proper is the one that should be used consistently - haven't taken the time to check which should be used, but a simple grep should suffice.

Security Audit

We've done a pretty significant $wpdb query security audit over the last year, but it wasn't a comprehensive security audit. For 3.9, I'd like to review the entire codebase to ensure we're in alignment with proper data sanity, validation, sanitization and escaping philosophies.

Nearly all the new code Gary and I have written over the last year is quite secure, but we still have a significant chunk of the codebase that is legacy code - I've worked on the project for almost 3 years, and I still see code I don't recall ever seeing before.

We haven't caught wind of too many major vulnerabilities, but there have been a few in the last year or so - I'd like to make sure we catch them all, resolve them, and build out policies and procedures moving forward that place a primary emphasis on security.

Use new Media UI for variation thumbnail

This is a tough one.

If you click on the thumbnail of a variation while editing a product, wpec is still using the old media UI.

After taking a brief look at the code for the new Media UI, it looks like converting that to use new Media UI is really tough (if not possible). The main problem is the javascript for new media UI doesn't allow multi instances of the media manager to be spawned. There are three ways to deal with this:

  • Work with WP.org core team and propose changes to make multi instances work.
  • Devise our own UI for selecting variation thumbnail.
  • Just live with the old media UI, but there's no telling when this will be deprecated. Better prepare for that soon.

Duplicate Product URLs

  1. Set a product in multiple categories.
  2. Visit that product at URLs reflecting each category.
  3. Notice no canonical redirect.

.As I recall, WordPress handles this for posts by redirecting to the URL with the category slug of the lowest ID as the canonical URL. Why this behavior isn't inherited, I'm not sure.

Review the use of CURL SSL in all our payment gateways and shipping modules

Some servers don't have proper SSL configuration, and lack a global CA cert configured by default. This makes all CURL requests to https:// addresses fail unless we specify CURLOPT_SSL_VERIFYPEER to false, which is very insecure and not recommended.

We should somehow detect automatically whether CURL SSL is supported, and if not, fall back to using a bundled ca cert.

More details here:
http://curl.haxx.se/docs/sslcerts.html

Let's make coupons beautiful again

Not really "again" so much - they've always been a bit awful.

But let's do this right. Gary did a TON of architectural work in the previous release, let's get the UI to match. I'm thinking the main thoughts in GC 16 would be great, as well as a new UI that @pippinsplugins is working on. A proper WP_List_Table class with statuses and bulk editing, a separate UI for editing/adding and listing - we can make this sing long before it gets (indeed, if ever it gets) moved to a CPT.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.