I put the Store in my version of the Portal almost a year ago. At that time my portal rework was basically done. My portal is very different from the original IBuySpy Portal, though the IBuySpy Portal modules can still run in my portal, without any change, or with a couple of lines of added to the module's editing page would make the module's content searchable with my keywords index system created from parsing module content at editing time, also content backup, staging enabled.
The Store in my portal is much more than the original Store, the Store modules, a collection of related portal modules, can be used inside of my portal to support many different store, each with it's own name and ID.
The store is completely within the portal's one-page website model, users will always stay in this one-page site until the last moment to be redirected to PayPal, currently I'm using PayPal to do the processing. To accomplish that, I also made a component, that will do a form POST to PayPal from the server, here is the partial code of the PayPal Buy Now button click event handler of the StoreCheckOut module:
Xrms.FormPost post = new Xrms.FormPost();
post.Url = "https://www.paypal.com/cgi-bin/webscr";
post.Add("cmd", "_xclick");
....
post.Add("currency_code", "USD");
post.Post();
This will post all the required PayPal variables to PayPal, and also redirect the user browser to PayPal. Because this button is on a Portal module, so this is functionally equivalent to a NESTED Html from post! of cause HTML does not allow nested forms, to achieve this funtionality, it has to use server side code. Without this FormPost component, the ugly querystring would be necessary. When the customer finished the payment at PayPal, his browser is redirected back, to get the stuff he just paid for, the PayPal IPN has already been handled.
To truely integrate the Store with the original Portal, that is true to the Portal's one-page model, would be difficult, because the Portal can only support very limited number of tabs, no hidden tabs, no formal ways of portal navigation, no way to support mutiple related modules which require communication even if the modules are on differnt tabs. Then the options would be something like this forum, it has an entry point that is a Portal module, from there it goes to other pages, this is not really an integration, though the Store and the Portal can share a database, Users table, other than that, there is not much integration, amost just like placing a hyperlink on the portal to get into the doorway of the store.
The Portal's one-page model is great! But it needs to support hierarchical tabs, hidden tabs, support navigation, variable passing from tab to tabs to host multiple related modules. Not only store, other very useful features may also require even more interaction among modules. To do that, the portal code has to be a lot more complex, the portal framework database schema has to be modified, and a lot of new code along the way. The SQL code alone of my portal is over 10,000 lines, and the lines are much longer than that of the common SQL coding style, I didn't even to bother to count the
C# code.
When you think through of doing a true integration, you'll get a sense of how much more needs to be done on the Portal framework itself!
WebSql Data Provider, Secure, efficient remote SQL database access over HTTP!