• Welcome to KonaKart Community Forum. Please login or sign up.
 

Product Specs, WYSIWYG, and more Hooks/Listeners/Modules

Started by drtog, March 13, 2008, 02:37:56 am

Previous topic - Next topic

drtog

After examining KonaKart for the last few days I am left extremely impressed by it. Currently its my top choice to switch to. I do have a few feature "requests" I feel would greatly improve the system.

1) Hooks/Listeners/Modules
My largest concern in using KonaKart is switching from a system that I have full source code for to a product I am, for the most part, stuck with what is provided. The concern is in no way the quality of the system, but simply the inability to meet custom business needs.

Currently it's possible to create three types of modules in KonaKart to customize its functionality; payment, shipping and order totals. It would be very useful, and extremely comforting, if more of these "modules" were available to allow users to extend KonaKart's functionality. The following are examples of areas it would be nice for us to "extend":

Account Registration & Modification - It would be nice if a number of things like this went through "filters" that allowed us to validate, modify, and use its data. An example use would be to update an external CRM or newsletter system every time a customer or administrator modified an account's contact information.
Product Creation & Modification - Having "filters" here allows us to keep other stores in sync (amazon, ebay, ...)
Order Placed or Modified - "Feature request" #5 below references this.

Adding screens to the administrative interfaces would also be nice. I would love to add some features and have them available in the administrative interface. Eg. QuickBooks integration.

This would additionally have large benefits to KonaKarts creators. It would allow for more public contributions to the system, causing it to grow in both features and awareness of the solution, while keeping the framework of the system under KonaKart's control to ensure the quality of it. (Loosing quality is something you surely see in many systems like ZenCart and OSCommerce that allow just anyone in.)

2) WYSIWYG for product detail editing.
Most WYSIWYG let you specify a number of things like styles that should be applied to the area, what file manager to use, etc. These are things users should be able to specify for the WYSIWIG under the configuration section of KonaKart.

3) Product Specifications
This is very similar to Product Options but specs don't have a price because they are included in the product. Additionally specifications are almost always grouped. (Specifics may also be able to change depending on the Product Options chosen so they should be different things. This is a small point that may make it more complex than it needs to be.)

This data would make it possible to add a number of really nice features:
Create specification charts on product detail pages.
Create advanced product search tools (Eg newegg.com)
Create product filters (Eg. Left side of pricegrabber.com and newegg.com)
Create comparison charts between products.

4) Product "Attachments"
Currently we can put images on products. We should also be able to add videos, 360 views, PDFs (eg specification charts, manuals), external links,...

This would be very nice. It wouldn't have to be that complex either. Simply upload the file, specify its type (kind of tag it) and then let the site at the view level determine how to display it based on its type/tags. This is very similar to the image tool you have now except not everything is an image and we specify tags/types on each item.

5) Gift Certificates
What is the best way to provide a gift certificate?
From what I see it seems it would be best to create a random, long, promo code when an order is placed. The code is set to only be able to be used once. The system would support the promo code as is but I am not sure how you would do the following two things:
How would you get the code to generate the new promo code to run when the order is placed? (With the a way to specify code to be ran, as specified in #1 above, when an order is placed this would be very easy.)
How would we then display the promo code on the order thank you page and within the order confirmation email?  My idea... Let us register code to run when an order is placed (as stated above). These pieces of code would act  like servlet filters. One runs the next one. There is a context object (like a java.util.Map object) passed between the filters (like servlet attributes). This context is a place filters could place information for other filters to use. The context would also be available to us when we create the thank you page and in the velocity context when we generate the order confirmation email.

Is there another solution that already exists?

6) Displayed Price
This might be more a question than a feature request. By creating an OrderTotal module it seems it would be easy to modify the price charged for a product. (Eg. discount based on quantity purchased, purchased with another product, repeat customer, etc.) But how do we easily display these prices to the customer on the site before they purchase? (Eg on the product detail page) What is the recommended approach?

It seems it would be nice if the OrderTotal module contained the logic not just what to charge when ordered, but also in some way what to display to the user is viewing a product.

Am I making things to complex? I am interested in knowing what others think a good approach is. Let's take "display a different price to repeat customers"


Thanks!

julie

Hi,

Thanks for the feedback. We are always very keen on receiving customer feedback and will certainly consider implementing many of your suggestions. Meanwhile, here are some comments:

1) Hooks/Listeners/Modules

Quote
Currently it's possible to create three types of modules in KonaKart to customize its functionality; payment, shipping and order totals. It would be very useful, and extremely comforting, if more of these "modules" were available to allow users to extend KonaKart's functionality. The following are examples of areas it would be nice for us to "extend":

Account Registration & Modification - It would be nice if a number of things like this went through "filters" that allowed us to validate, modify, and use its data. An example use would be to update an external CRM or newsletter system every time a customer or administrator modified an account's contact information.
Product Creation & Modification - Having "filters" here allows us to keep other stores in sync (amazon, ebay, ...)
Order Placed or Modified - "Feature request" #5 below references this.


It is our intention to add more integration points like you mention. We already have one for when an order is created or the status of an order changes. We could quite easily extend this mechanism to products and customers. Another idea we are contemplating is just to provide a wrapper around our API so that you can pop in your own filter just before the API call (to allow you to change the parameters) and just after the API call (to allow you to modify the result). Obviously you could also add code to these filters to call external systems. Any comments on this idea ?

Quote
Adding screens to the administrative interfaces would also be nice. I would love to add some features and have them available in the administrative interface. Eg. QuickBooks integration.


Unfortunately this isn't quite so easy to achieve because of the GWT technology that we use. We really like GWT because it allows us to write the Admin App in java and it generates java script looking after all of the compatibility issues etc. allowing us to create a robust AJAX application very efficiently. The down side is that you can't just add a window without all of the source and going through a complicated build process. We are contemplating ways of allowing people to add custom windows within frames etc. but the solution doesn't seem ideal. So far we have developed features on demand (at a very reasonable cost) for customers requiring specific functionality.

Quote
This would additionally have large benefits to KonaKarts creators. It would allow for more public contributions to the system, causing it to grow in both features and awareness of the solution, while keeping the framework of the system under KonaKart's control to ensure the quality of it. (Loosing quality is something you surely see in many systems like ZenCart and OSCommerce that allow just anyone in.)


Quality is a big concern for us, which is why we like the API approach where we look after backwards compatibility. So far this has worked well and allowed people to upgrade easily even after massive UI changes. We have however been very disappointed with the lack of contributions from our community. Even after helping people to create payment / shipping modules etc. they never seem to want to contribute them back to the community. As soon as we ask them to contribute, they seem to vanish forever  ???

Quote
2) WYSIWYG for product detail editing.
Most WYSIWYG let you specify a number of things like styles that should be applied to the area, what file manager to use, etc. These are things users should be able to specify for the WYSIWIG under the configuration section of KonaKart.


This is on our wish list and such a widget already exists in the GWT toolkit. As you point out, it is slightly more complicated that first meets the eye because the Admin App may not have all of the styles etc. that are available to the application in order to visualize everything correctly. At the moment we allow people to at least view the description of the products after having processed the html tags.

Quote
3) Product Specifications
This is very similar to Product Options but specs don't have a price because they are included in the product. Additionally specifications are almost always grouped. (Specifics may also be able to change depending on the Product Options chosen so they should be different things. This is a small point that may make it more complex than it needs to be.)

This data would make it possible to add a number of really nice features:
Create specification charts on product detail pages.
Create advanced product search tools (Eg newegg.com)
Create product filters (Eg. Left side of pricegrabber.com and newegg.com)
Create comparison charts between products.


We have a "comparison attribute" on the Product object. The intention for this attribute is to allow people to enter XML (or some other type of structured data) so that features of products can be easily compared. Our next step is probably to add another attribute with tags so that products can be searched for and filtered by these tags. i.e. Show me all restaurants serving spicy Indian cuisine.

Quote
4) Product "Attachments"
Currently we can put images on products. We should also be able to add videos, 360 views, PDFs (eg specification charts, manuals), external links,...

This would be very nice. It wouldn't have to be that complex either. Simply upload the file, specify its type (kind of tag it) and then let the site at the view level determine how to display it based on its type/tags. This is very similar to the image tool you have now except not everything is an image and we specify tags/types on each item.

Ok. If you need to do something like this now, you can use one of the four image fields or one of the custom fields to point to the file. You may have to upload the file manually although the Admin App image uploader could work.

Quote
5) Gift Certificates
What is the best way to provide a gift certificate?
From what I see it seems it would be best to create a random, long, promo code when an order is placed. The code is set to only be able to be used once. The system would support the promo code as is but I am not sure how you would do the following two things:
How would you get the code to generate the new promo code to run when the order is placed? (With the a way to specify code to be ran, as specified in #1 above, when an order is placed this would be very easy.)
How would we then display the promo code on the order thank you page and within the order confirmation email?  My idea... Let us register code to run when an order is placed (as stated above). These pieces of code would act  like servlet filters. One runs the next one. There is a context object (like a java.util.Map object) passed between the filters (like servlet attributes). This context is a place filters could place information for other filters to use. The context would also be available to us when we create the thank you page and in the velocity context when we generate the order confirmation email.

Is there another solution that already exists?


There already is an integration point for orders. However I think you could achieve what you mention by modifying the code in the struts action to generate and add the promo code to one of the custom order fields so that it will be saved and become available in the velocity template context. Then using the Admin API you would need to actually create the coupon and associate it to a promotion.

Quote
6) Displayed Price
This might be more a question than a feature request. By creating an OrderTotal module it seems it would be easy to modify the price charged for a product. (Eg. discount based on quantity purchased, purchased with another product, repeat customer, etc.) But how do we easily display these prices to the customer on the site before they purchase? (Eg on the product detail page) What is the recommended approach?

It seems it would be nice if the OrderTotal module contained the logic not just what to charge when ordered, but also in some way what to display to the user is viewing a product.

Am I making things to complex? I am interested in knowing what others think a good approach is. Let's take "display a different price to repeat customers"


We have some promotion modules and people can create others to match their needs. The next release will allow you to add rules based on groups of customers as well as categories, manufacturers and products. By following the same process taken by the checkout process you should be able to visualize the output of the promotion module at any point. E.g. You need to call the API to create an order based on the basket items and then call the API to populate the order with all of the order totals. You can do this at any point since the order won't be saved until you call the saveOrder method.

Thanks!

honusurf

If you really must use WSYING for editing products, adding flash, html, tables, bullets, images, anything, you can still do it through your old Oscommerce store if you have the spaw editor installed.  I just copy the html out of my spaw editor on my Oscommerce Admin product inserter, then paste it right into the KonaKart product inserter description input text area, press preview, Voila I can see and post the exact HTML description from my Oscommerce Store.  They are compatible.