nopCommerce MyShop Downloadable product management Plugin

Out of the box, nopCommerce can manage suppliers and handle downloads of digital products.
This plugin allows users to became a "manufacturer" after filling in “manufacturer page”, upload and manage their products from MyAccount section of the site. Features:
- Duplicate and specialize creation manufacturers’ interface
- Create an activity report for manufacturers
- Create a moderation interface
- Duplicate and specialize the interface for creating products

Call for pricing

nopCommerce Version: 3.0, 3.1, 3.2, 3.3, 3.4

Styled for the Default Clean themes: Yes

Widget Support: Yes

Themable: Yes

Developed according to nopCommerce and Microsoft technology standards and coding guidelines: Yes

Clean HTML and CSS structure for easy customization : Yes

Open to modification public view (.cshtml) files: Yes

Fully localizable and can be used in any language: Yes

Tested with browsers: FF, Chrome, Opera, Safary, IE9+

*
*

If you want to sell your work based on this source code please buy this plugin with the Extended License. Details>>

We do the installation on your website

Interfaces

Information about manufacturers

Manufacturer page

URL : /customer/manufacturer[?tobefilled]

This page allows the user to register or edit their information as a manufacturer.

If the user is not identified, it will be before redirected to the login/registration page.

The page contains the MyAccountNavigation menu.

This interface presents:

- A title

- A form to enter the following information:

o Image (file upload control)

o Description *

o Meta-keywords (SEO) *

o Meta-description (SEO) *

o Title (SEO) *

o Name page friendly (SEO) *

- A field to enter the address associated with its PayPal account

- A field to enter its EU VAT number if the manufacturer is subject to

- A check box to accept the terms of service

- A link to the terms of service (URL "/ t / manufacturerconditions")

- A validation button

Fields marked with an asterisk is grouped and topped by a set of tabs allowing choosing the input language - based on those installed - and selecting, by default, the current language (see "General consideration on Language Management").

The address associated with the PayPal account of the manufacturer must be syntactically valid (RFC 2822), the VAT registration number, if entered, will be validated by the web service usually used by nopCommerce (Nop_Services_EuropaCheckVatService_checkVatService), the conditions of use should be accepted.

The other entry fields follow the same validation rules than for manufacturers.

Error messages are displayed next to the erroneous field.

The validation causes the update of the manufacturer associated with the user, the other manufacturer fields is left empty. If the record does not exist, a manufacturer with the name of the user (in all languages) is created and added to the table. The CommissionPercentage (ManufacturerExt table) field is initialized with the value entered in the plugin configuration page.

This page contains a modal pop-up, inactive by default, with the message "To download a template, you must register as a manufacturer. Thank you for filling in the information below! " with a button to hide it. This pop-up is activated when the parameter "tobefilled" is present in the URL.

My uploaded products page

URL : /customer/models

This page presents a paged list of downloadable products posted by the user with the first image associated with the product.

If the user is not identified, it will be before redirected to the login/registration page.

The page contains the MyAccountNavigation menu.

Each thumbnail will point to the edit page of the product (see below).

Report activity page

URL : /customer/activities

This page presents a paged list of the manufacturers' events:

- Users’ Downloads

- wire transfers sorted from newest to oldest and fetched from the ManufacturerActivity table.

If the user is not identified, it will be before redirected to the login/registration page.

The page contains the MyAccountNavigation menu.

The information displayed:

- date and time

- a text describing the event

- the excluding taxes product retail price, if the associated checkbox is checked in the plugin configuration page

- the manufacturer commission percentage, if the associated checkbox is checked in the plugin configuration page

- the excluding taxes fee amount, calculated from the two previous fields

Zero amounts commissions are replaced by the word "Free".

Dates, times and amounts are displayed in the format of the current user culture.

Number of displayed lines is specified in the plugin configuration page.

In desktop version, a "Download CSV" link opens a modal pop-up on a transparent background where the user can enter dates of begining and of end using a "Datepicker" jQuery UI controls whose selection shapes a Javascript forged download link of the form:

/dlcsvactivities?f=20130701&t=20130731

that allows downloading a CSV file separated by semicolons (http://www.ietf.org/rfc/rfc4180.txt) encoded in UTF-8 (RFC 3629) - without BOM – containing the information shown in the table, with the same formats (except for zero amounts commission that is left to 0) and between the specified dates.

The name of the CSV file is returned to the following format: 20130701-20130731.csv

A button at the right top of the pop-up will allow closing it. The chronology of dates is checked on the client side and an error message is displayed in case of inconsistency.

In case of error (no parameters, incorrect parameters, inconsistent timing, unidentified user, etc.) an empty response is returned.

MyShopMenu widget

This widget is displayed in a zone that is created in MyAccountNavigation and MyAccountNavigation. Mobile views. The name of this zone is specified in the plugin configuration page.

It allows access to pages:

- /customer/manufacturer

- /customer/models

- /customer/activities

and manage the highlighting of the current page link as in the "MY ACCOUNT" menu.

Downloadable products editing interface

Downloadable products page

URL : /customer/model (in the case of a new downloadable product)

URL : /customer/model/DownloadableProductName (in the case of existing downloadable

product)

This page allows editing and uploading downloadable products.

If the user is not identified, it is before redirected to the login/registration page.

If no manufacturer is associated with the user, the redirection will lead, then, to the manufacturer page with the parameter that shows the modal pop-up (/customer/manufacturer?tobefilled – see Manufacturer page).

If the downloadable product is unknown the user will be redirected to his/her list of downloadable products (/customer/models) and a message will be written in the nopCommerce log file.

This page includes:

- a title

- a state

- a "Delete" button

- a tabs area

- a captcha (when editing a new product and provided that the option has been enabled in the configuration page and that a captcha has been configured at the general site settings)

- a validation button

The "Delete" button appears only if the downloadable product already exists. When clicked, it will show a confirmation pop-up and if the action is confirmed the product will be  deleted (as nopCommerce use to do) and the user will be redirected to its downloadable products list (/customer/models).

The status message is determined according to the chart "Downloadable product state".

The editing restrictions apply to the fields specified in the plugin configuration page if the

current date exceeds the date of the last modification date or the first sale date of a number of days exceeding those specified in the plugin configuration page.

In case of error, a message is displayed next to the concerned field and the tab containing the erroneous field is selected (the first of them if several of them contain errors).

The information icons (question mark) is cause the opening of a tool-tip (resource multilingual plugin).

Description tab

The description tab is capture the following information:

- Title *

- Short Description *

- Long Description *

- meta-keyword (SEO) *

- meta-description (SEO) *

- Title (SEO) *

- Upload file control

- "Support less" Checkbox (checked if the downloadable product is associated with the attribute specification option specified in the plugin configuration page in the Product_SpecificationAttribute_Mapping table - grayed if the identifier of the option of attribute specification is not specified in the plugin configuration page and it does not match any record of the SpecificationAttributeOption table)

- "Suspended" check box

* These fields are grouped on a tab to select the input language (dynamically determined from the languages installed and opened by default on the current language) (see General consideration on the language management).

The title and the descriptions can not be left blank.

The upload process associated with the downloadable product file is identical to the one used by nopCommerce with two exceptions:

- A progress bar is displayed to show the download progress and then the validation step (see below);

- A further validation is performed by the ModelValidation service (see above); if the string returned by this service is not empty it will be used as the error message and the upload will be considered as incorrect.

Price tab

Price tab contains the following controls:

- A radio button "free" (selected by default)

- A radio button "shareware"

- A slider associated with the above radio button *

- A radio button "paid file "

- A slider associated with the above radio button *

* Boundaries and increment value for each tariff modality is specified in the plugin configuration page.

Image tab

The picture tab allows to upload images associated with the downloadable product.

The images uploading process is identical to the one habitually used by nopCommerce.

The uploaded thumbnails will appear progressively up to 10 thumbnails. A delete button is positioned at the top right of each.

The order of thumbnails can be changed by drag / drop (depending on technical possibilities, an equivalent functionality is implemented for the mobile version).

Storage

When entering a new downloadable product, the successful validation of the page is cause the creation of a new product from a copy (CopyProduct method of ICopyProductService service - the images is not be copied and the new product is not be published) of a template product whose identifier is specified in the plugin configuration page. The information entered by the manufacturer replaces the default one and the manufacturer identifier is replaced by the manufacturer identifier associated with the manufacturer. If the checkbox "Suspended" is not checked and the moderation of downloadable products is not enabled in the plugin configuration page, the new product is published. If an error occurs (eg. unspecified template model identifier or unknown template model identifier, etc.) a message will interrupt the procedure and a record is added to the nopCommerce log file.

The moderation log update consist in adding in the field Product.AdminComment a new line containing the date, time, IP address, the nickname of the manufacturer and a text indicating whether the downloadable product should be validated or not, ex.:

- « 05/04/2013 11h02 - 87.28.123.2 - the_manufacturer : no assessment needed ».

- « 05/04/2013 11h05 - 87.28.123.2 - the_manufacturer : to be assessed ».

- …

The "Support less" checkbox is associated to a specification attribute option previously defined and whose identifier have to be specified in the plugin configuration page. If the checkbox is checked, a record is created - if not already exist - in the Product_SpecificationAttribute_Mapping table. The SpecificationAttributeOptionId field receives the value of the identifier specified in the configuration page and the field AllowFiltering is set to true. If the box is not checked, the corresponding record is deleted if it previously exists. If the identifier of the specification attribute option is not specified or is unknown in the SpecificationAttributeOption table, the ProductSpecificationAttributeMapping is left unchanged.

Moderation interface

If downloadable products moderation is activated in the plugin configuration page, administrators have access to a validation interface via a "Moderation" option inserted in the Catalog/Products menu of the administration site.

Moderation page

URL : /moderation

If the user is not identified, it will be before redirected to the login/registration page.

This page presents a grid of 24 (6x4) locations containing, for each downloadable product to be validated:

- associated images (one by location);

- a list of matches with regular expressions to identify potentially inappropriate

expressions :

  • · Language: matched expression
  • · Language: matched expression
  • · Language: matched expression
  • · ...)

of all text fields (this list is renew at each display);

- a text and a checkbox validation (enabled by default).

Each element points to the downloadable product editing page.

The validation of the page updates the downloadable product fields based on the state of checkboxes a downloadable product is validated if all associated elements are validated. The moderation log is updated in adding to the Product.AdminComment field a line containing the date, time, IP address, username administrator and a text indicating if the downloadable product has been validated or not :

  • · "05/04/2013 11:02 - 87.28.123.2 - admin_a: accepted."
  • · "05/04/2013 11:05 - 87.28.123.2 - admin_a: refused."

All the elements corresponding to a single model have to be displayed on the same page. If the number of remaining locations is not sufficient to show the latest model it will not be presented and will appear on the next page.

At the end of the moderation process, a blank page is displayed indicating that no more

downloadable product is to validate.

Configuration interface

The plugin configuration page allows to specify the following information:

- A check box indicating whether or not downloadable products uploading process should be moderated

- The number of days after which the unmodified downloadable products is subject to editing limitations (see downloadable products page), by default this field is set to 0 (the restriction is apply immediately), the input must be a positive integer or zero;

- The number of days after which the downloadable products sold for the first time is subject to editing limitations (see page downloadable products), by default this field is set to 0 (the restriction applies immediately) the input must be a positive integer or zero;

- A series of check boxes to indicate which inputs is subject to the edition limitations (if one of the preceding condition apply):

  • · title, title and SEO friendly address
  • · descriptions (short, long, SEO), "support less" checkbox
  • · downloadable file
  • · "Suspended" checkbox
  • · prices
  • · pictures

- - boundaries and increment value of each tariff modality (free, shareware and paid file; amounts is specified and displayed in the current currency and stored in the main defined nopCommerce currency)

- - The manufacturers' default commission percentage

- - The number of rows displayed in the report activity page (10 by default)

- - A check box indicating whether the sale price of downloadable products should appear in the report activity page (and the downloadable associated CSV file)

- - A check box indicating whether the manufacturer commission percentage on downloadable products should appear in the report activity page (and the downloadable associated CSV file)

- - A check box indicating whether a captcha should be activated in the editing downloadable products page (provided that the option has been enabled in the configuration page and that a captcha has been configured at the general site settings)

- - The identifier of the product used as a template when creating new downloadable products

- - The identifiers of the variants used as templates when creating "free", "shareware" or "paid file" variants

- - The attribute specification option identifier associated to the "Support less" characteristic (for the record, this identifier can be found in the pop-up editing attribute specification option URL of the administration interface /Admin/SpecificationAttribute/OptionEditPopup/14 ...)?

- - A text field letting specify the zone where MyShopMenu widget should be displayed; multiple locations should be separated by commas. If this field is left blank, the widget is not displayed

- - The Google translate API key service.

Events handling

Payment and Refund

Events indicating that a command has been paid or amended after payment (refund, etc. ....) is listened to maintain the ManufacturerActivity table.

For each order product, it is filled by the following information:

- variant identifier

- description, e.g. "PRODUCT_NAME download" or "PRODUCT_NAME refund" ... in the manufacturer's language

- manufacturer's commission percentage based on either:

  • · commission percentage of the downloadable product at the time of the event or, if not specified
  • · commission percentage associated with the manufacturer at the time of the event

- excluding taxes amount

Services

Two services have to be created but only with interface and tests capabilities. It shall be

possible, thereafter, to substitute them by other actual implementation plugins.

ModelValidation

This service validate the file uploaded by the manufacturer; it implements the ValidateModel method whose prototype is:

String ValidateModel(Download download, Language currentlanguage);

In parameter it will take the uploaded object, a language object and will return a string containing a possible error message. For testing purpose in this development this method will return "Invalid file" (in the language of the user) if the file size is less than 1KB.

Otherwise, an empty string, indicating that the validation was successful, is returned.

WordFilter

This service identifies potentially inappropriate words (insults, etc..) in a string. It implements the FilteredExpressions method whose prototype is:

System.Text.RegularExpressionsMatchCollection FilteredExpressions(string text, Language

currentlanguage);

In parameter it takes a text, a Language object and returns a list of potentially inappropriate matches.

Storage

The needed information to run the plugin is stored in the following tables:

ProductExt

  • · Id
  • · ProductId (product id)
  • · Suspended (bit - publishing of the product is suspended by its manufacturer)
  • · ToModerate (bit –the product should be assessed)
  • · CommissionPercentage

The record associated to a product is created on first use (reading or updating) if it

doesn’t exist.

ManufacturerExt

  • · Id
  • · ManufacturerId (manufacturer id)
  • · CommissionPercentage
  • · PayPaIEmail

The record associated to a manufactureris created on first use (reading or updating) if it

doesn’t exist.

ManufacturerActivity (ManufacturerActivity.sql)

  • · Id
  • · UserId (user id)
  • · DateAndTime
  • · ProductVariantId (variant sold id)
  • · Description
  • · PriceExclTax
  • · CommissionPercentage

The above tables are created nor destroyed during the installation or uninstallation

of the plugin. If the tables or one of its field is missing during the installation, an error

message is displayed.

General consideration on URL

In the following, the variable parts of URL appears in italics: eg. :

/VariablePart1/FixedPart/VariablePart2

Variable parts is URL encoded (RFC 3986).

General consideration on language management

Some information - each one is specifically described in the following - have to be

filled into several languages.

The language tabs principle, used by default by nopCommerce, is kept but with the

following changes:

  • · the default tab is hidden;
  • · the blank fields is asynchronously translated by the Google translation web

service from the default language entries (except reported exception "... - translated

by Google" – in the current language - is added at the end of the translated text);

  • · default tab's fields is filled with the English version.

General consideration on forms

Public interfaces must be accessible in "mobile" version with the following damage:

  • · RTF edition isn't possible;
  • · tabs is replaced by an accordion.
Product tags

Related products