The Simple Weather project provides a module that when installed creates a block that displays current weather conditions for a location. The location for the current weather report is defined by the user who has permission to administer blocks by submitting the block configuration form for the Simple Weather block.

There are two fields that can determine the location of the weather report: US ZIP code field and the Where On Earth Identification (WOEID) field. The data in these fields are passed to the simpleWeather jQuery plugin that queries the data from Yahoo's Weather service and returns it for display in the Simple Weather block. There is also a field that sets the temperature scale as Celsius or Fahrenheit and returns the data accordingly.

UNIQUENESS
There are several other "weather widget" type modules available as Drupal.org projects. I tried most of them before coming to the conclusion that I needed to create my own. I found that most of the other weather widget projects did not work without significant errors, considerable performance expense and were quite complicated to install and configure. Also, none of the other weather widget modules that I tested uses the simpleWeather jQuery plugin which I found to be very well written and uses the Yahoo weather WOEID to generate a current weather report for nearly any location on planet Earth. I thought this was awesome enough to push the Simple Weather module forward as a Drupal project and share it with the Drupal Community.

FUNCTIONALITY
I took great care to write field validation so that only the ZIP Code or WOEID fields can be selected. The module will not work correctly if both fields contain data or if the both of the fields are empty. I also check for integers and input length.

Also, I wrote in a check for the presence of the simpleWeather jQuery plugin JavaScript file. When the check fails, Drupal Set Message displays an error with helpful instructions.

The hook_uninstall() removes the ZIP code and WOEID and temperature scale variables.

CODING STANDARDS
I followed the Drupal code standards for PHP, JavaScript and CSS and commented often. The use of Drupal APIs are implemented correctly and the naming convention of the other functions does not conflict.

DOCUMENTATION
I authored a README file that simply explains where to download the required open source simpleWeather jQuery plugin and where to place it within the Drupal filesystem. This third party jQuery plugin is mature and released under an MIT license that is compatible with the GPL v2 license. I do not plan on adding the third party JavaScript to this project Git repository in the future and I understand the handbook policies regarding the use of third party code.

PROJECT PAGE
I created a project page that is complete with a screenshot of the settings form and link to the demonstration site: https://drupal.org/sandbox/larsdesigns/2203553. Credentials to the demonstration site are happily provided upon request.

GIT REPOSITORY
git clone --branch 7.x-1.x http://git.drupal.org/sandbox/larsdesigns/2203553.git

I feel that this project is unique and provides a straight forward approach to creating a lightweight and functional weather widget for Drupal. Not only does it provide weather data for locations in the United States but it provides weather data for nearly any location in the world. I am excited about providing this solution to the world wide Drupal community.

Please consider my application for full project status. If this module is promoted, I intend to create versions for Drupal 8 and Drupal 6. I also look forward to maintaining the module and keeping a clean issue queue.

I have been an active Drupal citizen in other ways during the last few years including Drupal Camp Colorado and local meet ups and now I would very much like to begin contributing code and gain experience as a module maintainer. I am also interested in reviewing project applications and will begin participating in the Review Bonus Program to help prioritize this application. I will do my best to review three project applications by the end of this week.

Reviews of other projects:
1. https://drupal.org/comment/8580309#comment-8580309
2. https://drupal.org/comment/8580449#comment-8580449
3. https://drupal.org/comment/8580503#comment-8580503

Support from Acquia helps fund testing for Drupal Acquia logo

Comments

PA robot’s picture

Status: Needs review » Needs work

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

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

dubcanada’s picture

Generally speaking I don't like seeing SASS inside of modules, there is really only one line of css, you can remove the SASS, and config.rb and just keep the css file with the single line of css.

It seems to be a bit confusing atm on which you need US Zip Code or WOEID. It should be obvious to use Zip Code for US and WOEID for everywhere else.

You should use the libraries module API, rather then just file_exists /sites/all/libraries/. And you should add libraries to the dependencies.

Besides that it seems to work fine for me.

larsdesigns’s picture

Okay, I will remove the SCSS files and add a little text to show ZIP code or WOEID choice more clearly.

However, I do not want to use the libraries module. I feel like that is an unnecessary requirement and using file_exists() keeps the project lighter and the module easier to install. There are many modules that do not depend on the libraries module that implement jQuery plugins.

Thank you very much for the review.

larsdesigns’s picture

I pushed the commit and removed the SCSS and compass files. I also added "or" text to the form to make the choice between ZIP Code and WOEID clear.

dubcanada’s picture

Status: Needs work » Reviewed & tested by the community

Alright it looks fine by me.

larsdesigns’s picture

@dubcanada, awesome, thank you so much for the review.

Plazik’s picture

Status: Reviewed & tested by the community » Needs work

There are still some errors http://pareview.sh/pareview/httpgitdrupalorgsandboxlarsdesigns2203553git

It appears you are working in the "7.x-1.0" branch in git. You should really be working in a version specific branch. The most direct documentation on this is Moving from a master branch to a version branch. For additional resources please see the documentation about release naming conventions and creating a branch in git.
There is still a master branch, make sure to set the correct default branch: http://drupal.org/node/1659588 . Then remove the master branch, see also step 6 and 7 in http://drupal.org/node/1127732
The following git branches do not match the release branch pattern, you should remove/rename them. See http://drupal.org/node/1015226

* 7.x-1.0
  remotes/origin/7.x-1.0
  remotes/origin/HEAD -> origin/7.x-1.0

Review of the 7.x-1.0 branch:

  • Remove LICENSE.txt, it will be added by drupal.org packaging automatically.
  • Coder Sniffer has found some issues with your code (please check the Drupal coding standards). See attachment.
  • DrupalPractice has found some issues with your code, but could be false positives.
    
    FILE: /var/www/drupal-7-pareview/pareview_temp/simple_weather.module
    --------------------------------------------------------------------------------
    FOUND 0 ERROR(S) AND 7 WARNING(S) AFFECTING 7 LINE(S)
    --------------------------------------------------------------------------------
      54 | WARNING | #options values usually have to run through t() for
         |         | translation
      55 | WARNING | #options values usually have to run through t() for
         |         | translation
      70 | WARNING | Do not use the raw $form_state['input'], use
         |         | $form_state['values'] instead where possible
      71 | WARNING | Do not use the raw $form_state['input'], use
         |         | $form_state['values'] instead where possible
      96 | WARNING | Do not use the raw $form_state['input'], use
         |         | $form_state['values'] instead where possible
      97 | WARNING | Do not use the raw $form_state['input'], use
         |         | $form_state['values'] instead where possible
     201 | WARNING | Unused variable $options.
    --------------------------------------------------------------------------------
    

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.


FILE: /var/www/drupal-7-pareview/pareview_temp/js/simple_weather.js
--------------------------------------------------------------------------------
FOUND 32 ERROR(S) AFFECTING 5 LINE(S)
--------------------------------------------------------------------------------
 18 | ERROR | Expected 1 space before "+"; 0 found
 18 | ERROR | Expected 1 space after "+"; 0 found
 18 | ERROR | Expected 1 space before "+"; 0 found
 18 | ERROR | Expected 1 space after "+"; 0 found
 18 | ERROR | Expected 1 space before "+"; 0 found
 18 | ERROR | Expected 1 space after "+"; 0 found
 18 | ERROR | Expected 1 space before "+"; 0 found
 18 | ERROR | Expected 1 space after "+"; 0 found
 19 | ERROR | Expected 1 space before "+"; 0 found
 19 | ERROR | Expected 1 space after "+"; 0 found
 19 | ERROR | Expected 1 space before "+"; 0 found
 19 | ERROR | Expected 1 space after "+"; 0 found
 20 | ERROR | Expected 1 space before "+"; 0 found
 20 | ERROR | Expected 1 space after "+"; 0 found
 20 | ERROR | Expected 1 space before "+"; 0 found
 20 | ERROR | Expected 1 space after "+"; 0 found
 20 | ERROR | Expected 1 space before "+"; 0 found
 20 | ERROR | Expected 1 space after "+"; 0 found
 20 | ERROR | Expected 1 space before "+"; 0 found
 20 | ERROR | Expected 1 space after "+"; 0 found
 20 | ERROR | Expected 1 space before "+"; 0 found
 20 | ERROR | Expected 1 space after "+"; 0 found
 20 | ERROR | Expected 1 space before "+"; 0 found
 20 | ERROR | Expected 1 space after "+"; 0 found
 21 | ERROR | Expected 1 space before "+"; 0 found
 21 | ERROR | Expected 1 space after "+"; 0 found
 21 | ERROR | Expected 1 space before "+"; 0 found
 21 | ERROR | Expected 1 space after "+"; 0 found
 25 | ERROR | Expected 1 space before "+"; 0 found
 25 | ERROR | Expected 1 space after "+"; 0 found
 25 | ERROR | Expected 1 space before "+"; 0 found
 25 | ERROR | Expected 1 space after "+"; 0 found
--------------------------------------------------------------------------------


FILE: /var/www/drupal-7-pareview/pareview_temp/simple_weather.module
--------------------------------------------------------------------------------
FOUND 2 ERROR(S) AND 10 WARNING(S) AFFECTING 12 LINE(S)
--------------------------------------------------------------------------------
  12 | WARNING | Format should be "* Implements hook_foo().", "* Implements
     |         | hook_foo_BAR_ID_bar() for xyz_bar().", or "* Implements
     |         | hook_foo_BAR_ID_bar() for xyz_bar.tpl.php.".
  25 | WARNING | Format should be "* Implements hook_foo().", "* Implements
     |         | hook_foo_BAR_ID_bar() for xyz_bar().", or "* Implements
     |         | hook_foo_BAR_ID_bar() for xyz_bar.tpl.php.".
 115 | WARNING | Format should be "* Implements hook_foo().", "* Implements
     |         | hook_foo_BAR_ID_bar() for xyz_bar().", or "* Implements
     |         | hook_foo_BAR_ID_bar() for xyz_bar.tpl.php.".
 126 | WARNING | Format should be "* Implements hook_foo().", "* Implements
     |         | hook_foo_BAR_ID_bar() for xyz_bar().", or "* Implements
     |         | hook_foo_BAR_ID_bar() for xyz_bar.tpl.php.".
 131 | WARNING | Line exceeds 80 characters; contains 82 characters
 158 | ERROR   | Inline comments must start with a capital letter
 175 | WARNING | Translatable strings must not begin or end with white spaces,
     |         | use placeholders with t() for variables
 176 | WARNING | Only string literals should be passed to t() where possible
 180 | WARNING | Empty return statement not required here
 184 | WARNING | Format should be "* Implements hook_foo().", "* Implements
     |         | hook_foo_BAR_ID_bar() for xyz_bar().", or "* Implements
     |         | hook_foo_BAR_ID_bar() for xyz_bar.tpl.php.".
 197 | ERROR   | The $text argument to l() should be enclosed within t() so
     |         | that it is translatable
 202 | WARNING | Only string literals should be passed to t() where possible
--------------------------------------------------------------------------------

Source: http://pareview.sh/ - PAReview.sh online service

larsdesigns’s picture

Plazik, thank you for your review. I will change the git branch to a proper version, remove master branch and work on reducing the errors and warnings presented in the pareview report.

larsdesigns’s picture

Status: Needs work » Needs review

I have completed the changes as indicated in comment #7 and produced a clean pareview report: http://pareview.sh/pareview/httpgitdrupalorgsandboxlarsdesigns2203553git.

I also remove the master branch from the Git repository.

Plazik’s picture

Status: Needs review » Needs work

Manual review:

  • You should use 7.x-1.x branch in git instead of 7.x-1.x-dev or 7.x-1.0.
  • simple_weather.info - package uses to combine several modules into one group. Your module consists of only one module so package = Simple Weather is excessive.
  • In hook implements addition documentation comments are unnecessary. Use just Implements hook_foor_bar(). See https://drupal.org/coding-standards/docs#hookimpl.
  • simple_weather.module - simple_weather_woeid_anchor() function is only using in simple_weather_block_configure() function. It's better to place body of simple_weather_woeid_anchor() functinon inside simple_weather_block_configure().
  • I think instead of two functions simple_weather_zip_code_valid($element, &$form_state) and simple_weather_woeid_valid($element, &$form_state) you shoud use only one because they have a similar functionality.
  • simple_weather_content() - you shoud add a doc comment for return value.
  • For variable_get() function you shoud provide a default value.
  • "Only a ZIP code or WOEID can be submitted." but you added both values to Drupal JavaScript settings object in simple_weather_content().
  • $content = '<div id="simple-weather"></div>';. All HTML code should be added via theme() function https://api.drupal.org/api/drupal/includes!theme.inc/function/theme/7.
  • You should use Libraries API module for adding external libraries https://drupal.org/project/libraries.
  • You shouldn't split t() function. Use replacements:
  <li>$woeid_lookup = t('You can use the !woeid_link lookup tool to find the unique WOEID for your location. Works world wide!', array('!woeid_link' => $woeid_link))
  • Add to README.txt information about what this module provide. See https://drupal.org/node/2181737.
  • Remove all comments like this /* line 7, ../sass/simple_weather.scss */ from css. This information doesn't help anyone.
  • The common name for the folder with stylesheets is just "css".
  • gtown_weather.css isn't used anywhere in code.
  • I think adding select list with "USA ZIP Code" and "Where On Earth Identifiers (WOEID)" values is better for UI. You can hide unselected value depend of #states. Seу https://api.drupal.org/api/drupal/developer!topics!forms_api_reference.h... and Example module https://drupal.org/project/examples. This will do code smaller.

    Thanks for contribution anyway!

    larsdesigns’s picture

    Status: Needs work » Needs review

    Thank you so much for your code review. I have completed the following updates:
    1. Change to git branch 7.x-1.x
    2. Implemented the theme functions.
    3. Added module descriptions text to the README.txt file.
    4. Removed packages from simple_weather.info
    5. Used !replacements inside t().
    6. Changed the background color of the sky images to blue.
    7. Removed the extra css file.
    8. Removed the scss comments from the css file.
    9. Renamed from stylesheets directory to css.

    I feel like the libraries module would add a lot expense. I am trying to keep it simple and lightweight as possible.

    For the JavaScript UI recommendations, I will take them under consideration. I am usually not a fan of complicating a simple configuration form with JavaScript unless it is really helpful but I do appreciate the feedback. I may do this in the future.

    I comfortable having the two validation functions. I feel like it is easier for me keep the code organized in my mind. Unless there is a technical reason to change it, I would like to keep.

    I very much appreciate the feedback.

    Plazik’s picture

    Status: Needs review » Needs work

    Have you pushed all chenges to git repo? I can't see only 3 changes.

    You should put $content = '<div id="simple-weather"></div>'; inside theme_weather_output(). In this case other people will be able to overwrite it in custom theme.

    Use replacements inside this t() too:

        $msg = t('The file jquery.simpleWeather.min.js is missing and is required by
                  the Simple Weather module. Download the') . " $download_link " .
                  t('jQuery plugin and read the README.txt file found inside the
                    simple_weather.module file for installation instructions.');
    

    The Libraries API module is recomended way for adding external libraries to Drupal.
    This code DRUPAL_ROOT . '/sites/all/libraries/simpleWeather/jquery.simpleWeather.min.js' will not work for multisite (/sites/example.com/libraries/).

    larsdesigns’s picture

    Yes, everything has been pushed up to the 7.x-1.x branch.

    Can you show me documentation that explains why using the contributed Libraries module API is recommended best practice?

    It seems like a lot of overhead to replace one solid line of code.

    Plazik’s picture

    See the words from Project application review administrator https://drupal.org/comment/8546253#comment-8546253.

    larsdesigns’s picture

    The comment by klausi was referring to including third party code directly to the git repository. I have not done this. I do not find any documentation supporting that the contributed Libraries module is required or even recommended. At this time I will would not like to add the expense for the sake of replacing one line of good code.

    I have include a small list of modules that use third party JavaScript without Libraries API:

    1. https://drupal.org/project/shadowbox
    2. https://drupal.org/project/lightbox2
    3. https://drupal.org/project/views_slideshow
    4. https://drupal.org/project/views_slideshow_slider
    5. https://drupal.org/project/views_slideshow_imageflow
    6. https://drupal.org/project/views_slideshow_galleria
    7. https://drupal.org/project/views_slideshow_jcarousel
    8. https://drupal.org/project/jcarousel
    9. https://drupal.org/project/ckeditor
    10. https://drupal.org/project/ckeditor_swf
    11. https://drupal.org/project/flowplayer
    12. https://drupal.org/project/thickbox
    13. https://drupal.org/project/kaltura (swfobject.js included in Git repository using an MIT license).
    14. https://drupal.org/project/media_gallery (by Acquia) Implements colobox plugin
    15. https://drupal.org/project/plupload (Libraries optional)
    16. https://drupal.org/project/wysiwyg (Three external JS plugins. No mention of libraries api)
    17. https://drupal.org/project/om_maximenu(jquery.easyAccordion.js, jquery.hoverIntent.minified.js, jquery.lavalamp.min.js, jquery.resizeOnApproach.min.js, jquery.roundabout.min.js, jquery.scrollTo.min.js, jquery.serialScroll.min.js all MIT licensed their party code included in git.drupal.org repository.)
    18. mediaqueries.js
    19. https://drupal.org/project/om_tools (Includes mediaqueries.js)
    20. https://drupal.org/project/views_infinite_scroll (Libraries module optional for Drush)
    21. https://drupal.org/project/icheck
    22. https://drupal.org/project/boilerplate (modernizr-2.6.2-respond-1.1.0.min.js included in Git repository)

    The list goes on and on. I could probably come up with 50 module projects without much trouble that are either including third party code in the Git repository and/or not using the Libraries module as a dependency.

    I am not seeking to include third party code with this module project. Good thing that the use of APIs from the contributed Libraries module is only unofficially recommended (without documentation) and not required.

    larsdesigns’s picture

    Status: Needs work » Needs review

    For comment #12, I have added the use of replacements in t().

    Because drupal_set_message() requires check_plain() for all passed data and thus limits the use of l() in the message, I used the Available Updates link as an example found on line 620 in update.module of Drupal core to format this use of t().

    See Git commit: a571ad621046601b26be109191e3073c13b43504

    larsdesigns’s picture

    Completed the implementation of the Libraries API module. The new code passed coder review and I feel it is ready for community review.

    See git commits fe81b993e1b2537b42db14b64913493b64684897 and 569f1ac8116b6e8f2eb9ae76ed554a6b2782b83a for details.

    larsdesigns’s picture

    Issue summary: View changes
    larsdesigns’s picture

    Status: Needs review » Needs work

    Setting to status to Needs Work.

    larsdesigns’s picture

    Status: Needs work » Needs review

    Oops, setting status to needs review.

    larsdesigns’s picture

    Issue summary: View changes
    larsdesigns’s picture

    Issue summary: View changes
    larsdesigns’s picture

    Issue tags: +PAreview: review bonus
    mraichelson’s picture

    • You should probably update the git clone command in initial post to point to the updated 7.x-1.x branch.
    • Move code using the default jQuery $(document).ready() trigger to use Drupal.behaviors instead (documentation is available over here). In some cases having a mix of the two can lead to some odd interactions.
    • Is there a way to move the HTML that is inserted through JS to a place where it could be provided as a default but overridden in a site-specific instance if needed? Right now if I wanted to use this on a site but change the order or type of the HTML elements I'd have to hack/replace js/simple_weather.js which blocks automated updates after that (through the update manager or the drush pm-update command).
    • So far I've been unable to retrieve weather information by ZIP code (I've tried several) but it does work by WOEID.
    larsdesigns’s picture

    Issue summary: View changes
    larsdesigns’s picture

    @mraichelson, thank you for the review.

    • I updated the git project command to the correct branch in the description.
    • I prefer using jQuery $(document).ready(), but will consider Drupal.behaviors. I don't think this a blocker though.
    • This is an implementation of the simpleWeather jQuery plugin which I do not maintain. I do not feel it is appropriate to edit the plugin, distribute a modified version etc. However, if can be changed out with a modified version using hook_js_alter() if the implementer of the module is so inclined.
    • I tested the US ZIP Code field and it is working fine for 80210, 90210 etc. However, Yahoo does not have weather information for every US ZIP code. Which is why they created the WOEID system. Feel free to reach out to yahoo about adding your ZIP code.
    mraichelson’s picture

    If not every ZIP code will trigger a result then I'd recommend sticking some help text onto that form field to warn people that potentially they may enter stuff and get no result.

    As far as the HTML markup I definitely wouldn't recommend trying to rewrite the plugin itself. But moving that chunk of markup (that gets assembled as var html out to something that could be output through Drupal.settings (that could be altered in a theme or module). Possibly something that keeps a single string of markup in Drupal.settings that would be run through string.replace to replace placeholder tokens with values returned by the plugin.

    I hacked around and got an example of something like this working in a gist over here.

    (This may be headed outside the target zone for a project application ticket and might be worth moving to the sandbox issue queue instead if you want to discuss it more.)

    larsdesigns’s picture

    @mraichelson, good ideas for future development but definitely outside the purpose of this issue queue.

    Binu Varghese’s picture

    @larsdesigns, the git clone URL mentioned by you:
    git clone --branch 7.x-1.x larsdesigns@git.drupal.org:sandbox/larsdesigns/2203553.git is your personal one. Reviewers won't be able to access your code.

    Please fix it (e.g.):
    git clone --branch 7.x-1.x http://git.drupal.org/sandbox/larsdesigns/2203553.git simple_weather

    Being a minor update to be done, leaving you at "Needs Review" for now!

    larsdesigns’s picture

    Issue summary: View changes
    SpadXIII’s picture

    Looks good, just too bad it only supports US zipcodes :)

    Just a minor issue; instead of calling 'simple_weather_file_required' on each block view, why not implement a hook_requirements to check for the library?

    larsdesigns’s picture

    @SpadXIII

    It supports weather locations world wide using a WOEID that can be easily looked up using the WOEID look up tool.

    dahousecat’s picture

    After installing the module I got the message saying I should install the simpleWeather library.

    After installing the library the message only disappeared once I'd cleared the cache. Maybe the message should say install library and then clear the cache?

    I entered my WOEID of 29062 for Milton Keynes in the UK. The H2 subtitle on my weather block says "Milton Keynes, " (trailing comma and whitespace).

    The comma on the end without any other details is not so pretty. Maybe check if there is not a second part of the address and remove the comma and trailing space if it is not present?

    One other idea was whilst it is very easy to change the background color of the image with css maybe put it as a configuration option of the block so people can change the appearance without having to edit any css?

    As these are only minor points I'm not going to change the status of the project.

    dahousecat’s picture

    The "Simple Weather Block Title" field appears on every block configure form - not just yours.

    This code is at fault:

    if (isset($form['delta']['#value']) == 'simple_weather_report') {
        $form['settings']['title']['#title'] = t('Simple Weather Block Title');
    }

    Remove the call to isset() and you'll be ok.

    dahousecat’s picture

    Status: Needs review » Needs work
    larsdesigns’s picture

    Status: Needs work » Needs review

    The isset() function is required because the $form['delta']['#value'] array value does not exist on every form. First I have to check to see if it is set and then I check the value.

    Your code produces the following error:

    Notice: Undefined index: delta in simple_weather_form_alter() (line 179 of /sites/all/modules/simple_weather/simple_weather.module).
    

    I checked the log and there are no errors or warning and the code is working as expected. Keeping the original code.

    dahousecat’s picture

    Status: Needs review » Needs work

    Sorry, I didn't explain myself very well.

    If $form['delta']['#value'] is set (which is on every block config form) then isset will return TRUE.

    TRUE == 'simple_weather_report' evaluates to true, so your code is changing the title on all block config forms (try to edit a different block - you will see title field is labeled Simple Weather Block Title).

    You need to check if isset first, and then go on to also check that the strings match:

    if (isset($form['delta']['#value']) && $form['delta']['#value'] == 'simple_weather_report') {
        $form['settings']['title']['#title'] = t('Simple Weather Block Title');
    }
    larsdesigns’s picture

    Status: Needs work » Needs review

    Fixed the logic problem.
    a9c424c3503a281e4c8ec96a927d17a883ce3d99

    dahousecat’s picture

    Status: Needs review » Reviewed & tested by the community

    Reviewed and tested and looks all good to me :)

    klausi’s picture

    Status: Reviewed & tested by the community » Fixed

    Review of the 7.x-1.x branch:

    • Coder Sniffer has found some issues with your code (please check the Drupal coding standards).
      
      FILE: /home/klausi/pareview_temp/simple_weather.module
      --------------------------------------------------------------------------------
      FOUND 1 ERROR AFFECTING 1 LINE
      --------------------------------------------------------------------------------
       5 | ERROR | Doc comment short description must be on a single line, further
         |       | text should be a separate paragraph
      --------------------------------------------------------------------------------
      

    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. project page: should mention differences to existing projects such as https://drupal.org/project/weather or https://drupal.org/project/weather_block or https://drupal.org/project/wunderground_weather
    2. simple_weather.js: "Yahoo! Weather Forcast" is user facing text and must run through Drupal.t() for translation.
    3. simple_weather_content(): instead of using drupal_add_js/css() you should build and return a render array here and use #attached to add you JS/CSS. Then you also don't need to invoke theme() directly and other modules can alter the render array in a meaningful matter. See the topic on render arrays: https://drupal.org/node/930760
    4. simple_weather_form_alter(): why don't you check the form ID here? This targets all form ever generated by your Drupal install. You want hook_form_FORM_ID_alter() instead.

    But that are not critical application blockers, so ...

    Thanks for your contribution, larsdesigns!

    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.

    larsdesigns’s picture

    Klausi,

    Thank you so much. I will make the fixes you pointed out. I very much appreciate the review and account promotion.

    Thanks,
    larsdesigns

    Status: Fixed » Closed (fixed)

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