Hi,
pageguide.js is an interactive visual guide to elements on web pages.
Instead of cluttering your interface with static help message, or explanatory text,
add a pageguide and let your users learn about new features and functions.

I have developed a module for that page guide with the proper GUI, So drupal users simply add page guide tour content and path with the GUI.

Project git : git clone --branch 7.x-1.x http://git.drupal.org/sandbox/pathirakaliappan/2301783.git page_guide
cd page_guide

Project page : https://www.drupal.org/sandbox/pathirakaliappan/2301783

Manual reviews of other projects:

https://www.drupal.org/node/2321063#comment-9197889
https://www.drupal.org/node/2336387#comment-9197843
https://www.drupal.org/node/2448867#comment-9705967

Files: 
CommentFileSizeAuthor
#13 page-guide-error.png15.5 KBgaurav.pahuja
#9 pg5.jpg143.63 KBsaniyat
#9 pg4.jpg29.67 KBsaniyat
#9 pg3.jpg26.87 KBsaniyat
#9 pg2.jpg21.8 KBsaniyat
#9 pg1.jpg69.77 KBsaniyat

Comments

PA robot’s picture

Status: Active » Needs work

There are some errors reported by automated review tools, did you already check them? See http://pareview.sh/pareview/httpgitdrupalorgsandboxpathirakaliappan23017...

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.

leopathu’s picture

Status: Needs work » Active

Hi,
I reviewed the module at http://pareview.sh/pareview/httpgitdrupalorgsandboxpathirakaliappan23017... and also have fixed all the errors and warning, but I have used the compress version of pageguide.min.css so there is showing more errors at pageguide.min.css. And also showing 2 errors at my pageguide.js file. It can't fixed because i used << symbol in this file.

leopathu’s picture

Status: Active » Needs review
leopathu’s picture

Issue tags: +PAReview: review bonus
er.pushpinderrana’s picture

Issue tags: -PAReview: review bonus

Removing bonus tag, you have not done manual reviews of other project applications.

dbt102’s picture

Hi leopathu,

I've conducted a manual review of your code following the review template format and have listed my comments below. Hope this helps ...

1.1 The git clone command you have posted in your application issue summary is not correct. It should be git clone --branch 7.x-1.x http://git.drupal.org/sandbox/pathirakaliappan/2301783.git page_guide
cd page_guide

see https://www.drupal.org/project/2301783/git-instructions

1.2 No one else has contributed a project integrating pageguide.js functionality with Drupal yet, so this is good.

1.3 I see you have two sandbox projects going ( pageguide and newsfeeds ) but looking at “Issues for Drupal.org Project applications” you have only one application. This is correct.

2.1 The repository DOES contain code.

2.2 Your branch IS up-to-date with ‘origin/7.x-1.x'. Meaning you are working with a version specific branch

3.1 Bad line endings were found, always use unix style terminators. See https://www.drupal.org/coding-standards#indenting

It looks like you need to turn on “Line Endings / Unix “ in your text editor. I would guess that you submitted the code from an editor with windows line endings enabled. Submitting the code with Unix line endings will cleanup much of the pareview errors/warnings. This may be masking preview security review.

4.1 Code repository does not contain a LICENSE.txt file, however the pageguide.js does say it is MIT license. Need to implement Libraries dependancy and move the file into sites/all/libraries directory. (see 4.2)

4.2 The repository DOES contain 3rd party code.

Third party code is not generally allowed on Drupal.org and should be deleted. This policy is described in the getting involved handbook. It also appears in the terms and conditions you agreed to when you signed up for Git access, which you may want to re-read, to be sure you're not violating other terms.
The Libraries API module is a recommended method for adding 3rd party dependencies without directly including the code on Drupal.org.

5.1 The project page does not contain enough useful information. Will need to update it with dependencies (Libraries), download the page guide js libraries. How to setup, etc.

Project pages should be helpful; there are literally thousands of modules, themes and installation profiles and site builders need a clear way to understand what a project does. Please have a look at the tips for a great project page, you may also use HTML-tags for better structure.

5.2 The README.txt file is not very helpful.

This file should contain a basic overview of what the module does and how someone may use it. Please make sure your README.txt follows the guidelines for in-project documentation and is based upon the README.txt Template.

The contents of the file may be a repeat of the synopsis on the project page.

5.3 The code is minimally commented, but clean and easy to follow.

6.1 Not using unix line endings means your code is not compliant with Drupal Coding Standards. (see also comment under 3.1)

As coding standards make sure projects are coded in a consistent style we please you to have a try to follow them whenever possible.
In addition to validating that your module is aligned with Drupal's coding standards, there are several available tools which can automatically detect and flag a number of common security issues which would otherwise delay approval of your application.
Commonly used tools are Coder (and Coder Sniffer) which are bundled by the PAReview.sh script and its online version at pareview.sh/.
Note that issues found are possibly false positives and fixing all issues is not a requirement for getting through the application process. Automated reviews may point you to possible security issues - what does not mean they are really security issues - note that it's a common case that automated reviews can have false positives.

7.1 You should include a configure button on modules page that takes you to admin/config/user-interface/page-guide, where you setup page guide.

You should add a help page for your module on admin/help

More suggestions and hints can be found at what mistakes are commonly done.

dbt102’s picture

Status: Needs review » Needs work

based on the issues identified in the manual review https://www.drupal.org/node/2338257#comment-9155971 changing the status to "needs work"

leopathu’s picture

Status: Needs work » Needs review

Hi dbt102,
Thanks for reviewed this module, I read your instruction carefully and it would be very useful to me.
Now I have fixed the issue one by one what mentioned at https://www.drupal.org/node/2338257#comment-9155971
And also reviewed my code in http://pareview.sh/pareview/httpgitdrupalorgsandboxpathirakaliappan23017...
There is no any errors and warning for this module.

saniyat’s picture

FileSize
69.77 KB
21.8 KB
26.87 KB
29.67 KB
143.63 KB

Hi leopathu,

I have check your module thoroughly and got some minor and major problem:

General Bugs/Review Report:

  1. In page_guide.module file use hook_init() function to load the pageguide.js file.
  2. Also check the library file exist or not. If not then rise a warning flag to download the js file form github. Also mention the library js version if multiple version exist.
  3. When I active the module then I got this error. (Ref pg1.jpg)
  4. For your menu items permission use seperate access arguments by using hook_permission.
  5. For edit/delete menu items use MENU_NORMAL_ITEM as type. Otherwise it goes outside of your given path and breadcrumb shows wrong.
  6. Add Page Guide form add validation for url.
  7. If I edit a existing page guide items and change name then new entry created. So, for edit it should be works like edit. Also submit button name should be save or some thing not create.
  8. In page guide step form class name should be the css selector. Cause pageguide.js support both class and id. Your module support only class for now.
  9. In page guide step form weight field should be numaric and have a validation with max value support.
  10. Same when editing the form submit button should be save not create.
  11. There should be a cancel button in edit form.
  12. In both listing delete link should 1st show a confirmation for delete.
  13. Don't show only table header if no listing item exist.
  14. For js use Drupal.behaviors system not jQuery(document).ready(function()
  15. Also don't init the pageguide js if no page guide content is not exist.
  16. Don't use both page_guide_preprocess_page and page_guide_page_alter function. Try to use only one, It help you to reduce the footprint of your module.

Security Bugs(Major):

  1. Your module have cross site scripting(XSS) bugs both in admin end and front end.(Ref pg2.jpg, pg3.jpg, pg4.jpg, pg5.jpg)
saniyat’s picture

Status: Needs review » Needs work
Issue tags: +PAReview: security
leopathu’s picture

Status: Needs work » Needs review

Hi saniyat,
Thanks for review,
I have fixed all the minor and major problems (what saniyat mentioned at #9) in my module.
And also fixed the cross side scripting (XSS) issue.

leopathu’s picture

Issue summary: View changes
gaurav.pahuja’s picture

Status: Needs review » Needs work
FileSize
15.5 KB

Automated Review

Best practice issues identified by pareview.sh / drupalcs / coder. Please don't copy/paste all of the results unless they are short. If there are a lot, then post a link to the automated review and mention that problems should be addressed.

Manual Review

Individual user account
Yes/No: Follows the guidelines for individual user accounts.
No duplication
Yes/No: Does not cause module duplication and fragmentation.
Master Branch
Yes/No: Follows the guidelines for master branch.
Licensing
Yes/No: Follows the licensing requirements
3rd party code
Yes/No: Follows the guidelines for 3rd party code.
README.txt/README.md
Yes/No: Follows the guidelines for in-project documentation and the README Template.
Code long/complex enough for review
Yes/No: Follows the guidelines for project length and complexity.
Secure code
Yes/No. If "no", list security issues identified.
Coding style & Drupal API usage
  1. Minor finding: In hook_requirement inside .install file, it would be good if you make use of $phase variable.
  2. (+) Release blocker: I tried installing this module through drush but getting following fatal error
    Page Guide Error
    [root@bangvmplccpc01 modules]# drush en page_guide
    The following projects have unmet dependencies:                                                                                                              [ok]
    page_guide requires libraries
    Would you like to download them? (y/n): y
    Project libraries (7.x-2.2) downloaded to sites/all/modules/libraries.                                                                                       [success]
    PHP Fatal error:  Call to undefined function libraries_get_path() in /var/www/html/permission/sites/all/modules/page_guide/page_guide.install on line 89
    Drush command terminated abnormally due to an unrecoverable error.                                                                                           [error]
    Error: Call to undefined function libraries_get_path() in /var/www/html/permission/sites/all/modules/page_guide/page_guide.install, line 89

The starred items (*) are fairly big issues and warrant going back to Needs Work. Items marked with a plus sign (+) are important and should be addressed before a stable project release. The rest of the comments in the code walkthrough are recommendations.

leopathu’s picture

Issue tags: -PAReview: security

Hi gaurav.pahuja,
Thanks for your valuable review. Now I have fixed the module installation via drush issue.
This is the latest automated reviewed http://pareview.sh/pareview/httpgitdrupalorgsandboxpathirakaliappan23017... for the latest code.
And also I have fixed the cross side scripting issue so i removed security issue tags.

leopathu’s picture

Status: Needs work » Needs review
Sabareesh Prasad’s picture

Status: Needs review » Fixed

Checked this module and this works fine. Also the above mentioned issues are fixed and the coding standard looks good too. This feature doesnt' exist in Drupal so far, so worth attempting it.

leopathu’s picture

Priority: Normal » Critical
Status: Fixed » Reviewed & tested by the community
er.pushpinderrana’s picture

Priority: Critical » Normal
Status: Reviewed & tested by the community » Needs review

Please don't RTBC your own issues, see the workflow: https://www.drupal.org/node/532400.

Getting review bonus would help speed up the process and make sure it gets on the review admins radar.

Please treat these rules with understanding and be patient.

leopathu’s picture

Issue summary: View changes
Issue tags: +PAReview: review bonus
mpdonadio’s picture

Status: Needs review » Postponed (maintainer needs more info)

Can you outline how this is different from Joyride JQuery for Drupal Site Tours, which is essentially what the Drupal 8 Tour Module is based on? Set back to Needs Review when you have done this. Thanks.

leopathu’s picture

Status: Postponed (maintainer needs more info) » Needs review

Hi mpdonadio,
The page guide module visually difference than the Joyride module. It will be best visual experience for the page guide.
You could compare the both module features here http://zurb.com/playground/jquery-joyride-feature-tour-plugin
http://tracelytics.github.io/pageguide/

mpdonadio’s picture

Assigned: Unassigned » mpdonadio

OK, similar functionality, but since this is a different JS library, users may have preference for one over the other. Assigning to myself for next review.

mpdonadio’s picture

Assigned: mpdonadio » Unassigned
Status: Needs review » Needs work

Automated Review

Review of the 7.x-1.x branch (commit 5689d06):

  • No automated test cases were found, did you consider writing Simpletests or PHPUnit tests? This is not a requirement but encouraged for professional software development.

This automated report was generated with PAReview.sh, your friendly project application review script. You can also use the online version to check your project. You have to get a review bonus to get a review from me.

Manual Review

Individual user account
Yes: Follows the guidelines for individual user accounts.
No duplication
Yes: Does not cause module duplication and fragmentation. Addressed.
Master Branch
Yes: Follows the guidelines for master branch.
Licensing
Yes: Follows the licensing requirements
3rd party code
Yes: Follows the guidelines for 3rd party code.
README.txt/README.md
Maybe: Follows the guidelines for in-project documentation and the README Template. Could be expanded more.
Code long/complex enough for review
Yes: Follows the guidelines for project length and complexity.
Secure code
Unknown. If "no", list security issues identified.

The module is currently filtering on input (which is wrong), but the module is throwing JS errors for me, so I can't adequately test this.

Coding style & Drupal API usage
$schema['page_guide_step'] should have a FK to $schema['page_guide'], and the pg_id should also be indexed (possible also as a pair index w/ the id).

In page_guide_requirements() you already have a hard dependency on libraries; your check is unnecessary.

You may want an explicit 'view page guide permission' in the future.

(+) page_guide_list() needs a proper docblock w/ a @return and a mention that it is the page callback. It should also return a proper render array and not themed output directly.

page_guide_step_list(), ditto.

(+) A lot of your functions need proper docblocks. See https://www.drupal.org/node/1354

I think you can set the destination directly with confirm_form() w/o messing with $_GET[].

(+) In general, using #attached is preferred over drupal_add_css, drupal_add_js, and drupal_add_libray. You should also add your CSS here, instead of via the .info.

(+) Your behavior needs to use the content and settings that get passed in. I would also move this to a separate file instead of doing it inline.

(+) page_guide_page_alter should be using drupal_attributes() instead of string concatenation for the attributes.

(+) page_guide_page_alter() has an untranslated string. Double check the module.

(*) Your parameter usage in your forms in the .admin.inc is wrong. arg() is evil, and should almost always be avoided. You can both use a form as a page callback, and pass it arguments. See https://api.drupal.org/api/drupal/modules%21system%21system.api.php/func...

(*) In page_guide_create_validate(), why the filter_xss(); this isn't going to output.

(*) The filter_xss() in page_guide_create_submit() are wrong. Filter on output, not input. See https://www.drupal.org/node/28984 and https://www.drupal.org/node/263002

You should see if you can figure out a way to validate the URL on entry form.

After you save the initial page guide, you should be redirected to the create page for it.

(*) The module is throwing JS errors for me, so I can't adequately test for XSS.

The starred items (*) are fairly big issues and warrant going back to Needs Work. Items marked with a plus sign (+) are important and should be addressed before a stable project release. The rest of the comments in the code walkthrough are recommendations.

The plaining usage and arg() are pretty big API issues and are worth to go back to Needs Work.

If added, please don't remove the security tag, we keep that for statistics and to show examples of security problems.

This review uses the Project Application Review Template.

leopathu’s picture

Status: Needs work » Needs review

Hi mpdonadio,
Thanks for your valuable reviews,

I have fixed all the (+) and (*) issues, what you mentioned at #23.

er.pushpinderrana’s picture

Assigned: Unassigned » er.pushpinderrana

Assigning to myself for next review, which will hopefully be tonight.

er.pushpinderrana’s picture

Assigned: er.pushpinderrana » Unassigned
Status: Needs review » Needs work
Issue tags: -PAReview: review bonus

Automated Review

Review of the 7.x-1.x branch (commit 93d7207):

  • No automated test cases were found, did you consider writing Simpletests or PHPUnit tests? This is not a requirement but encouraged for professional software development.

This automated report was generated with PAReview.sh, your friendly project application review script. You can also use the online version to check your project. You have to get a review bonus to get a review from me.

Manual Review

  1. README.txt: TYPO mistake like permenently.
  2. (+) page_guide_create_submit(): db_merge() inside if condition here not a good taste instead use db_update() or just use db_merge() instead of db_insert() and db_update(). FYI... you have wisely use this method in page_guide_step_create_submit() function.
  3. (*) page_guide_step_list(): arg() function still exists that looks weird.

    (*) Your parameter usage in your forms in the .admin.inc is wrong. arg() is evil, and should almost always be avoided. You can both use a form as a page callback, and pass it arguments. See https://api.drupal.org/api/drupal/modules%21system%21system.api.php/func....

  4. (*) At every place you are using filter_xss() but the documentation for filter_xss()states:

    Filters an HTML string to prevent cross-site scripting (XSS) vulnerabilities. It means if you use filter_xss(), then the string passed to the function is supposed to be HTML. However, wrapping your HTML with filter_xss() in PHP calls isn't great style; it's likely to upset the designer and doesn't ensure that the CSS class is valid, use check_plain() instead. See

  5. (+) page_guide_requirements(): do not create link markup yourself, use url() or l() instead.
  6. In each of your db query, you are using SELECT *, is it really required in every case, recheck again. Because best practices says only fetch required fields otherwise it just increase extra overhead if using *.
  7. (+) page_guide_page_alter should be using drupal_attributes() instead of string concatenation for the attributes.

    Still this issue exists that need to be fix before making stable release.

  8. (*) page_guide_page_alter(): page_guide_init.js missing in your module folder that preventing me to test your module further because of 404 js error that stop further execution of js.

    Agreed with @mpdonadio.

    The module is currently filtering on input (which is wrong), but the module is throwing JS errors for me, so I can't adequately test this.

    Same with me because of this missing file.

    But still I tested this module further by changing in code and found due to this css

    #tlyPageGuide {
        display: none;
    }

    was unable to see actual page guide output.

The starred items (*) are fairly big issues and warrant going back to Needs Work. Items marked with a plus sign (+) are important and should be addressed before a stable project release. The rest of the comments in the code walkthrough are recommendations.

Removing review bonus tag, you can add it again if you have done another 3 reviews of other projects.

leopathu’s picture

Status: Needs work » Needs review

Hi,
I have fixed all the issues, what @er.pushpinderrana said that in his comments #26.
I forgot to add the js file in the git. so that the missing files error occured. Now I have added that also.

Sabareesh Prasad’s picture

Status: Needs review » Reviewed & tested by the community

This looks good.

ultimateboy’s picture

Status: Reviewed & tested by the community » Needs work

I'm not convinced this module is correctly following licensing restrictions of d.o.

The module contains .css directly from the pageguide github repo: https://github.com/tracelytics/pageguide

This github repo contains a LICENSE.txt file states that "The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software." However this is not the case.

I'd recommend changing the installation instructions to instruct the user to download the js and css from the pageguide library and not include these in your project at all. If you need to provide additional css to make this library work (like you provide a few extra lines of js code) then that's fine. But including a large amount of css from this external library seems like an issue to me.

leopathu’s picture

Status: Needs work » Needs review

Hi,
I have removed the css from the module and added that in the library folder. and also updated in the README.txt file about the library informations.

naveenvalecha’s picture

Assigned: Unassigned » naveenvalecha

Assigning to myself for next review that might be in tonight.

naveenvalecha’s picture

Assigned: naveenvalecha » Unassigned
Status: Needs review » Needs work

Thanks for your contribution.You are near RTBC

/Applications/MAMP/htdocs/d7.dev/sites/all/modules/sandbox/page_guide/page_guide.module:105:1: error - Return comment must be on the next line
/Applications/MAMP/htdocs/d7.dev/sites/all/modules/sandbox/page_guide/page_guide.module:140:1: error - Return comment must be on the next line
/Applications/MAMP/htdocs/d7.dev/sites/all/modules/sandbox/page_guide/page_guide.module:175:1: error - Return comment must be on the next line
/Applications/MAMP/htdocs/d7.dev/sites/all/modules/sandbox/page_guide/page_guide.module:203:1: error - Return comment must be on the next line
/Applications/MAMP/htdocs/d7.dev/sites/all/modules/sandbox/page_guide/page_guide.module:217:1: error - Return comment must be on the next line
/Applications/MAMP/htdocs/d7.dev/sites/all/modules/sandbox/page_guide/page_guide.module:231:1: error - Return comment must be on the next line

Manual Review : Read 4dd0e...

  1. page_guide.install : page_guide_requirements : As the module has hard dependency on the libraries module so we can remove it
      if ($phase == 'install') {
        if (!module_exists('libraries')) {
          module_enable(array('libraries'));
        }
      }
  2. page_guide.module : page_guide_help : t("pageguide.js is an interactive visual guide to elements on web pages. Instead of cluttering your interface with static help message, or explanatory text,add a pageguide and let your users learn about new features and functions.")use single quotes where possible for Drupal code standards and a very slight performance benefit.
  3. page_guide.module : page_guide_list : '#empty' => t('Your table is empty'), Write some more user friendly text something like that "Currently we have no contents in page guides".
  4. page_guide.module : page_guide_list : 'op' => l(t('create'), 'admin/config/user-interface/' . $list->pg_id . '/page-guide-step') . ' | ' . l(t('edit'), 'admin/config/user-interface/page-guide/' . $list->pg_id . '/edit') . ' | ' . l(t('delete'), 'admin/config/user-interface/page-guide/' . $list->pg_id . '/delete'), Divide this code in multiple lines.
  5. page_guide.module : page_guide_step_list : Apply the above 2 suggestions for this one as well.
  6. (+)page_guide.module : page_guide_get_list : This function is returing all the records let's alter this function and return limited records and apply a pager in this function page_guide_list.Similarly for this function page_guide_step_get_list
  7. (+)page_guide.module : page_guide_url_exist : This function is simply returing the TRUE or FALSE so instead of fetching the whole details from page_guide schema let's just fetch the pg_id and return true or FALSE.it will give some performance boost as well.
  8. (*)page_guide.module : You have used the filter_xss at all the places.use the proper sanitization function See the point 4 of #26
  9. page_guide_page_alter : use some helper function to return this html
            $content = "<ul id='tlyPageGuide' data-tourtitle='Online help guide'>";
            foreach ($steps as $step) {
              $content .= "<li" . drupal_attributes(array('class' => array('tlypageguide_left'), 'data-tourtarget' => $step->class_name)) . "><div>" . filter_xss($step->content) . "</div></li>";
            }
            $content .= "</ul>";

    this will also clean the code in function page_guide_page_alter

  10. Readme.txt and hook_help is nice.
  11. page_guide.module : page_guide_step_delete : t('Are you sure you want to delete this step?') The message should be more specific and like t('Are you sure you want to delete this page guide step?')

The starred items (*) are fairly big issues and warrant going back to Needs Work. Items marked with a plus sign (+) are important and should be addressed before a stable project release. The rest of the comments in the code walkthrough are recommendations.

I would recommend you, please help to review other project applications to get a review bonus back. This will put you on the high priority list, then git administrators will take a look at your project right away :)

leopathu’s picture

Issue summary: View changes
leopathu’s picture

Status: Needs work » Needs review
Issue tags: +PAReview: review bonus

Hi,
@naveenvalecha, Thanks for your valuable reviews. it helped to improve the module. I have fixed all the issues what you mentioned on #32. And also reviewed another 3 new modules, so add the review ponus tags.

naveenvalecha’s picture

Assigned: Unassigned » naveenvalecha

Assigning to myself give it second shot that may be tonight.

naveenvalecha’s picture

Assigned: naveenvalecha » klausi
Status: Needs review » Reviewed & tested by the community

Manual Review : Read 432accd..

  1. page_guide_list , page_guide_step_list these functions are the menu callbacks of admin/config/user-interface/page-guide and admin/config/user-interface/%/page-guide-stepLooks you can easily move to page_guide.admin.inc.It will give some performance hits as well.Similarly of the other functions that are the usable at the admin part.
  2. (*)page_guide_create_validate : This function validation stops user to create guides.How to produce : Install the module on vanilla instance.Try to create a page guide page it will always show this error.Please enter valid url
  3. page_guide_create_submit : Use drupal_write_record it will give you the validation in free.

Assigning to @klausi to give it a final look if he has time.

klausi’s picture

Issue summary: View changes

Removing review links there were not manual reviews (git clone commands can be fixed by anybody).

klausi’s picture

Assigned: klausi » Unassigned
Status: Reviewed & tested by the community » Fixed

manual review:

  1. What are the differences to https://www.drupal.org/project/joyride ? Please add that to your project page.
  2. page_guide_requirements(): title and description are user facing text, why don't you translate them with $t() that you already have there?
  3. page_guide_create_validate(): the form_set_error() calls should have 'url' as first parameter to point to the url form element, correct?
  4. page_guide_step_delete(): why do you set $_GET['destination'] here? You should set $form_state['redirect'] in page_guide_step_delete_submit() instead. Same for page_guide_delete().
  5. "data-tourtitle='Online help guide'": all user facing text must run through t() for translation.
  6. page_guide_page_alter() why do you use hook_page_alter()? You are not changing things, you are only adding things, so I think hook_page_build() makes more sense.

But otherwise looks good to me, so ...

Thanks for your contribution, leopathu!

I updated your account so you can promote this to a full project and also create new projects as either a sandbox or a "full" project.

Here are some recommended readings to help with excellent maintainership:

You can find lots more contributors chatting on IRC in #drupal-contribute. So, come hang out and stay involved!

Thanks, also, for your patience with the review process. Anyone is welcome to participate in the review process. Please consider reviewing other projects that are pending review. I encourage you to learn more about that process and join the group of reviewers.

Thanks to the dedicated reviewer(s) as well.

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.