ProductReview Example: Difference between revisions

From DataFlex Wiki
Jump to navigationJump to search
Jka (talk | contribs)
m Changed from Web Programming to Web Applications category
 
(16 intermediate revisions by one other user not shown)
Line 1: Line 1:
{{underconst}}
= Introduction =
= Introduction =


This is an example of how to create a [[AJAX]] solution using [[Visual DataFlex]].
This page contains a description of an example project that can be used to study different implementation techniques using VDF as a backend.


In this example the overall goal is to be able to see what users think about a particular item . As an added benefit - users can also share information about where to buy the particular items.
In this example the overall goal is to be able to see what users think about a particular item . As an added benefit - users can also share information about where to buy the particular items.
Line 10: Line 8:


*login
*login
*choose an item from a list (use a [[AJAX Lookup List]] )
*choose an item from a list
*enter information about a known item ( [[AJAX Form]] )
*enter information about a known item  
*supply information about the place where an item was bought.
*supply information about the place where an item was bought.
*supply a rating of an item  
*supply a review of an item  
*Overview supplied ratings from other users
*Overview supplied reviews from other users
 
 
The workspace is available here https://github.com/jacobandresen/ProductReview


= [[DataDictionary|Data Dictionaries]] =
= [[DataDictionary|Data Dictionaries]] =
We want to store information about users, places and known items. The other tables should hold sufficient information about the items and how the users liked them.
We want to store information about users, places and known items. The other tables should hold sufficient information about the items and how the users liked them.


The following data dictionaries  should now be available:
The following data dictionaries  should now be available (Note that attributes like "UserId" in Token implies a index  on UserId on Token and a relation to the table "User")


==Address==
==User==
*Place_id
*UserId (Numeric) 
*Name
*LoginName (Ascii)
*StreetAddress
*FirstName (Ascii)
*City
*LastName (Ascii)
*ZIPCode
*Password (Ascii)
*Longitude
*EmailAddress (Ascii)
*latitude
*Rights (Ascii)
*StreetAddress (Ascii)
*City (Ascii)
*ZIPCode (Ascii)
*Country (Ascii)


==User==
==Token==
*User_id
*UserId (Numeric)
*LoginName
*TokenValue (Ascii)
*FirstName
*LastAccessed (Date)
*LastName
*EmailAddress
*Address_id
*Rights (system user?)


==Shop==
==Shop==
*Shop_id
*ShopId (Numeric)
*Name
*Name (Ascii)
*Type (Beer , pizza ... )
*Type (Numeric)
*Description
*Description (Ascii)
*Address_id
*StreetAddress (Ascii)
 
*City (Ascii)
==Item==
*ZIPCode (Ascii)
*Item_id
*Country (Ascii)
*Name
*Type (Beer, pizza,  ...)
*Description
*Manufacturer
*Price
 
==Rating==
*Item_Id
*User_id
*Rating
*Comment
 
= VDF Ajax implementation =
The implementation will be split up into Data Dictionaries, Web Service Objects  and web markup . All of these should be familiar to you if you have taken the time to look at the other examples in the VDF Ajax library
 
== [[Web Service objects]] ==
Create a [[AJAX WebService Object]] to call from the clientside VDF Ajax lib. This webservice will be responsible for handling the serverside calls.
 
The Web Service object should provide the following functionality for session management.
*UserLogin: checking if the supplied password is correct. Use User_DD
*HasRights: does the logged in user have the rights to perform the chosen function. Use User_DD
 
The HasRights function should identify whether the user is administrator or not.
 
== [[Using AJAX Web Browser Objects|Web Browser Objects]] ==
*SessionManager.wo: Handle session related information
*item.wo : handling information about items.
*user.wo : handling information about users
*shop.wo: handling info about places
*rating.wo: handle information about ratings
 
=== Access restrictions ===
"ordinary" users should only be allowed to alter information about themselves - e.g "Joe" should not be allowed to alter the address of "Bob". Ratings should only be edited by the user that entered it (or a system administrator).
 
only "Administrators" should be allowed to add new products and places to the database. E.g "Joe" should not be able to add all his favourite places and products to the list. "Ordinary" users should only be able to rate an item allready in the system .


== [[How to develop ASP pages|Web markup]] ==
==Product==
The web markup should be designed around forms, that evolve around the web objects.
*ProductId (Numeric)
*Name (Ascii)
*Type (Numeric)
*Description (Ascii)
*ShopId (Numeric)
*Price (Numeric)


==Review==
*ReviewId (Numeric)
*ItemId (Numeric)
*UserId (Numeric)
*Rating (Numeric)
*Comment (Ascii)


*login.asp: a page showing a login box
= Implementation =
*frontpage.asp:  display a greeting after a successfull login
*Rating.asp: a list of items with detailed ratings. show details about related users and items.
*Item.asp: Information about an item
*Shop.asp: information about a place where items can be bought ( [[AJAX Form]] )
*User.asp: Informaation about usres


[[ProductReview VDF AJAX implementation]]


[[Category: Web Programming]]
[[Category: Web Applications]]
[[Category: Data Dictionaries]]

Latest revision as of 14:14, 8 April 2020

Introduction

This page contains a description of an example project that can be used to study different implementation techniques using VDF as a backend.

In this example the overall goal is to be able to see what users think about a particular item . As an added benefit - users can also share information about where to buy the particular items.

To accomplish this, then users should be able to:

  • login
  • choose an item from a list
  • enter information about a known item
  • supply information about the place where an item was bought.
  • supply a review of an item
  • Overview supplied reviews from other users


The workspace is available here https://github.com/jacobandresen/ProductReview

Data Dictionaries

We want to store information about users, places and known items. The other tables should hold sufficient information about the items and how the users liked them.

The following data dictionaries should now be available (Note that attributes like "UserId" in Token implies a index on UserId on Token and a relation to the table "User")

User

  • UserId (Numeric)
  • LoginName (Ascii)
  • FirstName (Ascii)
  • LastName (Ascii)
  • Password (Ascii)
  • EmailAddress (Ascii)
  • Rights (Ascii)
  • StreetAddress (Ascii)
  • City (Ascii)
  • ZIPCode (Ascii)
  • Country (Ascii)

Token

  • UserId (Numeric)
  • TokenValue (Ascii)
  • LastAccessed (Date)

Shop

  • ShopId (Numeric)
  • Name (Ascii)
  • Type (Numeric)
  • Description (Ascii)
  • StreetAddress (Ascii)
  • City (Ascii)
  • ZIPCode (Ascii)
  • Country (Ascii)

Product

  • ProductId (Numeric)
  • Name (Ascii)
  • Type (Numeric)
  • Description (Ascii)
  • ShopId (Numeric)
  • Price (Numeric)

Review

  • ReviewId (Numeric)
  • ItemId (Numeric)
  • UserId (Numeric)
  • Rating (Numeric)
  • Comment (Ascii)

Implementation

ProductReview VDF AJAX implementation