We need CVS access to commit our "easyrec for ubercart" plugin.
http://easyrec.org/easyrec-6.x-dev.rar
http://easyrec.org/easyrec-7.x-dev.rar
===================================================================================================
Drupal:
Describe what modules, themes, or translations you want to maintain and why.
Please provide as much information as possible along with appropriate links, if available.
Answer:
This plugin will integrate basic easyrec®(http://easyrec.org/) functions to an ubercart shop.
easyrec® for ubercart connects an ubercart shop to an instance of the open source recommender system easyrec.
The access to easyrec® is provided by the easyrec Javascript
API(http://sourceforge.net/apps/mediawiki/easyrec/index.php?title=JavaScript...).
This Plugin sends view and buy actions to the easyrec® server the shop owner chooses and provides many blocks to display
the recommendations based on user actions.
Available Blocks:
* easyrec: other users also bought
* easyrec: other users also viewed
* easyrec: recommendations for user
* easyrec: most bought items
* easyrec: most viewed items
The Blocks are fully styleable using the plugin administration interface. The Plugin also comes with 3 standard
display styles:
* list
* picture list
* carousel
To use the "easyrec for ubercart" plugin a shop owner needs access to an easyrec server. It's possible to register
a free easyrec account at http://easyrec.org/ if the owner cannot host his/her own. After creating an account on the
easyrec server and a 'tenant' account for the specific shop, the shop owner just copies the tenant id and apiKey
into the easyrec administration interface to enable recommendations for the ubercart shop.
===================================================================================================
Drupal:
If your contributions implement existing functionality explain why you want to duplicate it,
or why you cannot extend any of the existing projects.
Answer:
There are serval recommendation modules:
http://drupal.org/project/recommender Recommender API - provides several core algorithms
http://drupal.org/project/uc_rec Ubercart Products Recommender - uses the Recommender API to display recommendations
our plugin provides javascript REST calls to our server which calculates recommendations and sends them back to the webpage.
Its just a basic connector module like the google analytics module which can also recive data. All calculations for similarity
are calculated at our servers. You also need no Java on your server.
The Recommender API calculates recommendation rules when the cron job is called. Since our system cannot
be merged with this approach we had to create a new plugin using our basic javascript API
(http://sourceforge.net/apps/mediawiki/easyrec/index.php?title=JavaScript...)
| Comment | File | Size | Author |
|---|---|---|---|
| #20 | easyrec_for_ubercart_settings.png | 32.85 KB | david.mann |
| #20 | easyrec_for_ubercart_block_settings.png | 30.92 KB | david.mann |
| #20 | easyrec_for_ubercart_2_blocks_demo .png | 202.17 KB | david.mann |
| #14 | easyrec-7.x-dev.zip | 6.36 KB | david.mann |
| #12 | easyrec-6.x-dev.zip | 9.82 KB | david.mann |
Comments
Comment #1
david.mann commentedComment #2
david.mann commentedComment #3
tr commentedZIP files in #1 are corrupt - can't review.
Comment #4
Ivo.Radulovski commentedjust downloaded and installed it....works fine for now - waiting for first real results now.
Comment #5
tr commented@segments: You downloaded it from where? The .rar files referenced in the OP? A hex dump of the .zip files attached to #1 shows they aren't zip files at all ...
Bottom line, a proposed project needs to be posted here in the forum, not as a link to some other site.
Comment #6
david.mann commentedups i just renamed the rar files to zip files .... I will re-upload them, sorry
Comment #7
david.mann commented@ segments
to get a "otherUserAlsoViewed" Recommendation you must view at least 2 items with 2 different users.
just checked our database ... looks like you didn't viewed anything yet ...
to test all recommendations set up a test shop with 2 users:
look at three products with both of them
buy three products with the two users
now you have to wait until our easyrec.org server starts his cron job to calculate the recommendations. (2:00AM GMT +01)
if you downloaded easy rec from source-forge you could to to the admin interface and click compute rules.
Comment #8
Ivo.Radulovski commented@TR I had them from here...but probably I was able to open them because I use winrar.
Comment #9
Ivo.Radulovski commented@david.mann Thx for the support.
Comment #10
david.mann commentedjust checked our system and found a bug in the sendActions part .. your product is in
/en/drupal-day-21012011
but our module only sends
drupal-day-21012011
i uploaded the new version of the module ... by the way: you will need a third item to get recommendations.
@segments
we have problems with your Cyrillic texts too ... we are working on it .. must be somthing with our mysql setup .. you know which char set is the best for supporting Cyrillic characters ?
Comment #11
tr commentedYou need to run the Coder module to bring your code up to Drupal coding standards: http://drupal.org/coding-standards
The parameters "configure" and "files[]" aren't valid in a Drupal 6.x .info file.
Comment #12
david.mann commentedjust finished the drupal 6 module! it told me everything is okay now ...
http://imm.io/3G5R
i will do the drupal 7 module at Monday
Comment #13
david.mann commentedComment #14
david.mann commentedi just finished the drupal 7 module ...
now the Coder module didn't found anything in both modules!
Comment #15
arianek commentedHi. Please read all the following and the links provided as this is very important information about your CVS Application:
Drupal.org has moved from CVS to Git! This is a very significant change for the Drupal community and for your application. Please read the following documentation on how this affects and benefits you and the application process:
Migrating from CVS Applications to (Git) Full Project Applications
Comment #16
david.mann commentedHi!
Great move, switching to git!
here's the sandbox project: http://drupal.org/sandbox/david.mann/1079756
best,
David
Comment #17
david.mann commentedComment #18
tr commentedYour project structure is a little messed up.
You have three branches: master, 6.x-dev, and 7.x-dev.
First, your development branches should be named 6.x-1.x and 7.x-1.x, that way drupal.org can automatically create development snapshots for your project. Second, if you're not going to use master (and most people don't), you should not have anything in master except for perhaps a README.txt explaining that you have to checkout one of the named topic branches to get the code. Deleting master is not an option because by default
git clonewill check out the master branch. When following the clone instructions at the top of your sandbox page, for example, it gets master by default, which doesn't contain anything meaningful.Second, your folders look like this:
I see you're missing a project README.txt in the easyrec/ directory. Also, you still really need to read all of http://drupal.org/coding-standards and try to make your code comply with that as much as possible. You still have a ways to go ... In particular, your indents are wrong and inconsistent (sometimes you use 4, sometimes you use 2, sometimes you mix 4 and 3 and 2...) You also have a lot of trailing spaces and lines with nothing but spaces on them, all throughout all of your code. They should be removed. It's hard to read and evaluate your code when it looks like this.
You have dynamically-named variables that need to be removed in hook_uninstall().
Comment #19
david.mann commentedHello,
thanks for your detailed feedback!
This time i used IntelliJ code format and the coder module didn't found anything (at the first time i did everything by hand via the windows editor). I had few problems with the GIT branches but i fixed them now and the folder structure now looks like you suggested it.
best,
David
Comment #20
david.mann commentedhere are some screen-shots of the module...
Comment #21
Ivo.Radulovski commentedI think David got the idea about how Drupal modules are handled and this project has made a good progress so it can go into production as a Drupal module. :)
Comment #22
david.mann commentedgreat! how i can convert my sandbox to a real project ?
Comment #23
tim.plunkettupdating title
Comment #24
berdirSome feedback. I only reviewed the 7.x-1.x version, some things also apply to 6.x-1.x, others don't.
- Only add files to files[] when they contain classes (for example test or views integration classes).
- Do not add a version, that will automatically be added when a release is created by the packaging script
The coding standard for Drupal 7 suggests the shorter "Implements hook_something()." now. Also, other hook implementations in the .install file are missing the docblock completely. Please add a similar docblock to all hook implementations
There are two spaces in the permission name. But there aren't when you use that permission for example in hook_menu().
The system category isn't really the correct place for this. I would suggest Web Services (services). D7 only.
- I suggest you use "if ($node = menu_get_object())" instead of this.
I think you should at least set the cache property too, see http://api.drupal.org/api/drupal/modules--block--block.api.php/function/.... It defaults to cache per role which is probably not what you want.
The description isn't translated here. Same for all other block configure form elements I think, maybe others too. Make sure all text strings can be translated.
I think there is a uc_is_prodct() function or something like that. AFAIK, you can have many product node types, not just a single one.
- From what I see, the admin settings allow to configure the javascript used, which obviously means that one should be very careful with giving that permission away. In D7, you can set 'restrict access' in hook_permission to true, which will display a warning to users. See http://api.drupal.org/api/drupal/modules--system--system.api.php/functio...
Comment #25
berdirOne more.
You should use form_set_value() instead of directly overwriting form_state['values']-
Comment #26
david.mann commentedokay i changed everything like you told me ... thx for all the tips!
Comment #27
berdirhttp://api.ubercart.org/api/function/uc_product_is_product/2
This is the function I mean for checking the node type.
Should look more like this:
Not what I meant :)
You just need:
That's the same as your code. There is also a similar one in hook_page_alter().
The old code was actually correct here, it should be on a new line, intended with two spaces and ending with a .
Same here, should be like this:
Comment #28
berdirComment #29
david.mann commentedokay i hope everything is okay now :)
i had some troubles with the git ... but it seems that everything is committed correctly.
Comment #30
berdirOk, the code looks good to me now (note that I only reviewed the D7 part, but I saw that 6.x has been updated too where appropriate and they shouldn't be too different). So from a technical point, this is RTBC I think.
However, I haven't used or even installed the module, so it would be great if someone could do that and try it out. If everything works as it should, this can be marked as RTBC. It might be rather hard to properly test this module because I assume that you need a real site with data, so that easyrec can do it's job.
However, a quick check to verify that it can be installed and configured properly should be enough I guess.
Comment #31
david.mann commentedOkay here is a "Quick guide" to test the module:
Install Drupal
Install Ubercart
Install easyrec for ubercart
create an account at http://easyrec.org/
sign in and create a tenant
copy the api key & tenantid to the easyrec config.
create 4 products
place all easyrec blocks
view each product with 3 different user to generate VIEW actions ...
wait for the cron ( i think 2:00am ) or write it here and i will start the cron manually .
check if the blocks display recommendations.
Comment #32
catchI don't think it should be a requirement of these applications that the project be actually installed and tested by a human - if the code passes visual code review, then the maintainer ought to be able to make it work. Manual testing is just extra work for a process that is a huge bottleneck.
So I'm just going to mark this RTBC.
Comment #33
rfayOK, Git vetted user role granted.
Thanks for your present and future contributions and for your patience during this process!
Please review others' applications so we can get this queue down.