Description

With this module users can translate their websites using the services of https://www.euleo.com/
A description about Euleo can be found on the project page.

Sandbox

https://drupal.org/sandbox/euleo/2178159

GIT

git clone --branch 7.x-1.x http://git.drupal.org/sandbox/euleo/2178159.git euleo

Comments

pachabhaiya’s picture

Status: Needs review » Needs work

Dear euleo,
http://pareview.sh shows lots of errors.
Please check http://pareview.sh/pareview/httpgitdrupalorgsandboxeuleo2178159git to find more details about the errors.

Cheers!!!

euleo’s picture

Dear c.pachabhaiya,

the errors are fixed now.

euleo’s picture

Status: Needs work » Needs review

fixed code errors from pareview

PA robot’s picture

We are currently quite busy with all the project applications and we prefer projects with a review bonus. Please help reviewing and put yourself on the high priority list, then we will take a look at your project right away :-)

Also, you should get your friends, colleagues or other community members involved to review this application. Let them go through the review checklist and post a comment that sets this issue to "needs work" (they found some problems with the project) or "reviewed & tested by the community" (they found no major flaws).

I'm a robot and this is an automated message from Project Applications Scraper.

nsuit’s picture

Status: Needs review » Needs work

I didn't connect my drupal install to the Euleo website, but here are some of the things that I found just by scanning the user interface and the code that drives it.

There is a problem with the admin/euleo/config page callback. The "Connect with Euleo" button has a really strange URL. In the euleo_install_view function you have the following code:

 // $link = 'https://www.euleo.com/registercms/' . $token;
$link = 'http://euleo/registercms/' . $token;

Once I uncommented the first line and commented the second the button was working.

Before I switched the links in euleo_install_view, the euleo_callback function returned the 'callback response' text and exited.
After using the https://www.euleo.com/registercms URL, the configuration button works, but I get the following error for the admin/euleo/callback page callback:

Exception: in EuleoCms->install() (line 159 of .../PATH/.../modules/euleo/Classes/Euleo/Cms.php).

The latter might be due to my changes in your code, but the former is also not very user friendly. I would think also that the link in the Euleo admin page should probably not be called "callback" because except for people familiar with coding, users are not going to know what that is and the text output as a result of clicking in the link makes a user think that the module is not working. Maybe you could instead have the function exit gracefully to the Euleo admin page and use drupal_set_message?

If admin/euleo/callback is only useful after a drupal installation has been connected to your main website then that link shouldn't be available before the configuration is completed, or it should be indicated that a user needs to be connected with a text in the same way as you are handling that case on "admin/euleo/translation".

euleo’s picture

Status: Needs work » Needs review

This link is used for local development of the plugin. This shouldn't have been checked in.

The correct one is:
$link = 'https://www.euleo.com/registercms/' . $token;

I checked in the change.

The installation only works if the Drupal installation is accessible from online.
The Euleo-Server calls the callback-function on the website.
The callback-function connects to the SoapService via SSL and fetches the infos.

On installation oder if a translation is done, the callback is called automatically from the Euleo-Server.
The menu entry to manually call this function is only for development purposes and will be removed in the final version.

heddn’s picture

Status: Needs review » Needs work
Issue tags: +PAreview: security

.info file:
Provide a configure entry: https://drupal.org/node/542202#configure

.module file:
hook_menu, no need to provide the type MENU_NORMAL_ITEM as this is the default.
Move all the admin forms and pages into a euleo.admin.inc file. This is very common for Drupal development.

euleo_install_view() - This should use a theme implementation rather than its current approach.
euleo_get_cart_html - Same applies here.

euleo_translation_view - This doesn't properly sanitize node title (line 364).
https://drupal.org/node/28984

local_language_list - Line 259: no check if $_GET['code'] exists. Similar with $_GET['dstlang']. Consider using drupal_get_query_parameters() to avoid accessing $_GET super global directly.

euleo’s picture

Status: Needs work » Needs review

fixed the above things.

heddn’s picture

Status: Needs review » Needs work

I just noticed this. If this is indeed applicable: we can promote this single project manually to a full project for you.

PAReview: Individual user account
It seems you are using a non-individual account.
All user accounts are for individuals. Accounts created for more than one user or those using anonymous mail services will be blocked when discovered (see Get a Drupal.org account).
Please note that organization accounts cannot be approved for git commit access. See https://drupal.org/node/1966218 and https://drupal.org/node/1863498 for details on what is/isn't allowed. Please update your user profile so that we don't have to assume that this is a group account.

Additional feedback:
Client.php:

try {
      $this->cms = new EuleoCms($customer, $usercode, 'drupal');
      return $this->cms->connected();
    }
    catch (Exception $e) {

This shouldn't catch Exception. Very broad catches like that catch too much.

if (!$this->rows) {
      throw new Exception('No rows found. Did you select entries?');
    }

Don't throw Exception. That makes things very hard to catch later as you are stuck catching Exception. Same applies in Cms.php and admin.inc.

The admin.inc file shouldn't end with a .php extension. It should simply by euleo.admin.inc
Only page and menu callbacks should go into an admin.inc. Move all the rest into the .module file. e.g. hook_permission.
Variable 'client' might have not been defined (at line 58)
Variable 'client' might have not been defined (at line 69)

Where did the images and flags come from? Are they available under the same license as GPL v2?
The icons should be used in a theme_image, rather than building the image html directly.

Several cases of variable_get without any default value.

README.txt isn't in English.

.module file:
hook_boot should be avoided for performance reasons. Is it necessary? Can hook_page_build be used instead?
Use module_load_include(), rather than require_once.

hook_menu:
consider using https://api.drupal.org/api/drupal/includes%21menu.inc/constant/MENU_CALL... for admin/euleo/callback
require_once 'euleo.admin.inc.php'; not needed. See documentation on https://api.drupal.org/api/drupal/modules%21system%21system.api.php/func...

euleo_get_action_html should use a theme implementation via a tpl.
same applies to theme_euleo_getcart() and theme_euleo_install.

.js file should use drupal behaviors. see half-way down at https://drupal.org/node/756722.

admin.inc
Missing @return tag in function/method PHPDoc comment (at line 86)
Missing @return tag in function/method PHPDoc comment (at line 409)
Missing @return tag in function/method PHPDoc comment (at line 515)
Missing @return tag in function/method PHPDoc comment (at line 554)

cms.php
Variable 'row' might have not been defined (at line 650)
Variable 'fieldname' might have not been defined (at line 614)
Unused local variable $return (at line 559)

simplexml.php
Variable 'tmp' might have not been defined (at line 162)
Variable 'tmp' might have not been defined (at line 142)
Undefined variable 'tmp' (at line 150)
Variable 'tmp' might have not been defined (at line 153)
Variable 'errmsg' might have not been defined (at line 346)
Unused local variable $key (at line 135)

      $query = new SelectQuery('node', 'n', Database::getConnection());

      $query->addField('n', 'nid');
      $query->addField('n', 'title');
      $query->addField('n', 'type');
      $query->addField('n', 'created');
      $query->where("(n.nid = n.tnid OR n.tnid = 0) AND n.language <> '' AND n.language IS NOT NULL");

use db_select.

PA robot’s picture

Status: Needs work » Closed (won't fix)

Closing due to lack of activity. If you are still working on this application, you should fix all known problems and then set the status to "Needs review". (See also the project application workflow).

I'm a robot and this is an automated message from Project Applications Scraper.