What JISCPM does

JISCPM is a module that allows users to create "live" documentation for project management based on the JISC Project Management framework. This framework is particularly useful for educational projects.

When working on documents using this framework, data needed to continually be updated manually throughout concurrent locations (i.e. project phases, team members, risks etc.). This makes documentation even more tedious than it already is and elevates the possibility for error.

This module allows the creation of documentation with only the necessary fields and allows users to view linked data - i.e. users assigned to projects, risks, issues etc. This encourages a more agile style of working with documentation.

There is also an export function that allows basic data to be exported into documents that can be provided to external stakeholders.

At the moment the project is a board framework with only the necessary document templates for basic project documentation. In the future software specifications and design documents will be added to the module.

Where is it?

Project page: http://drupal.org/sandbox/scarer/1422278

Git repository: scarer@git.drupal.org:sandbox/scarer/1422278.git or git@github.com:scarer/JISC-PM-Drupal-Module.git

Drupal version

Currently this module has been developed for Drupal 6.

CommentFileSizeAuthor
#21 drupalcs-result.txt3.33 KBklausi
#2 jiscpm.txt2.48 KBwesleydv

Comments

klausi’s picture

The response time for a review is now approaching 4 weeks. Get a review bonus and we will come back to your application sooner.

wesleydv’s picture

StatusFileSize
new2.48 KB

It appears you are working in the "master" 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.
Review of the master branch:

  • README.txt is missing, see the guidelines for in-project documentation.
  • Remove the translations folder, translations are done on http://localize.drupal.org
  • The "?>" PHP delimiter at the end of files is discouraged, see http://drupal.org/node/318#phptags
    ./jiscpm_zipfile.php
    
  • ./jiscpmtask/jiscpmtask.module: all functions should be prefixed with your module/theme name to avoid name clashes. See http://drupal.org/node/318#naming
    function jsgantt_check_directory($form_element) {
    
  • Bad line endings were found, always use unix style terminators. See http://drupal.org/coding-standards#indenting
    ./documentation/CHANGELOG.txt:                                          ASCII c program text, with no line terminators
    documentation/_notes/dwsync.xml
    icons/_notes/dwsync.xml
    images/_notes/dwsync.xml
    jiscpmattribute/_notes/dwsync.xml
    jiscpmbca/_notes/dwsync.xml
    jiscpmissue/_notes/dwsync.xml
    jiscpmppr/_notes/dwsync.xml
    jiscpmproject/_notes/dwsync.xml
    jiscpmrfc/_notes/dwsync.xml
    jiscpmrisk/_notes/dwsync.xml
    jiscpmsr/_notes/dwsync.xml
    jiscpmtask/_notes/dwsync.xml
    jiscpmtask/jsgantt/_notes/dwsync.xml
    jiscpmteam/_notes/dwsync.xml
    translations/_notes/dwsync.xml
    
  • Remove all old CVS $Id tags, they are not needed anymore.
    documentation/INSTALL.txt:1:/* $Id: $ */
    jiscpmtask/jiscpmtask.js:1:// $Id: $
    jiscpmtask/jsgantt/README.txt:1:// $Id: README.txt,v 1.1.2.2 2009/07/02 09:08:53 magnity Exp $
    jiscpmteam/jiscpmteam.info:1:; $Id: $
    translations/de.po:1:# $Id: de.po,v 1.1.2.1 2009/02/19 23:35:40 derhasi Exp $
    

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. Get a review bonus and we will come back to your application sooner.

wesleydv’s picture

Status: Needs review » Needs work
scarer’s picture

Status: Needs work » Needs review

I've just re-named the README to README.txt. There seems to be a few errors that the Coder module didn't pick up (according to Ventral). Is Ventral a better source to follow for fixing errors? Should I check it through that some more?

I tried to update the name of my repo using the GIT rename command and it seems to have done it locally but not remotely. What's the best way to do this? Should I re-create the repo branch? Or re-create the repo? My local repo is now showing as 6.x-1.0. Initially, I changed it to 6.x-1.dev but this wasn't up to scratch. I also updated the master branch as suggested to re-direct to the branch releases. I've also added another branch called 6.x.1.x. Which is more appropriate 6.x-1.0 or 6.x.1.x? Also, how can you remove remote branches?

Thanks for your help. Sorry for all the questions. I'll see what I can review in the queue to push this along.

scarer’s picture

I'm pretty sure that I've successfully deleted the unnecessary branches. I had a look in the queue at modules to review and there's only one at the moment that seems quite saturated with contributors. I'll download it and take a look at it.

I'll see if I can get rid of some of the errors produced by Ventral. They're mostly just spacing based issues now which weren't coming up in Coder. I actually modified the spacing so Coder wouldn't complain so I'll go back and change the spacing for Ventral.

scarer’s picture

Status: Needs review » Needs work
scarer’s picture

Status: Needs work » Needs review

I have removed as many errors as I can using Ventral. If anyone has any suggestions on how to fix the remaining errors they would be appreciated. Some of them don't make a lot of sense (i.e. the spacing error - I could do what it says but then the spacing would not be appropriate). It could be a problem with Ventral.

scarer’s picture

Ok new errors now in Ventral. Not many though now which is good. Will take a look at these. Also getting some errors on the module now when I've re-installed it after fixing stuff so will look at them now.

scarer’s picture

should be ok now. still can't get rid of all ventral errors. if anyone has any suggestions on how to get rid of them please let me know.

scarer’s picture

Status: Needs review » Needs work
scarer’s picture

Status: Needs work » Needs review

no errors in ventral.

scarer’s picture

Review bonus for Store Front here: http://drupal.org/node/1402752#comment-5703282

scarer’s picture

Review bonus for Controller here http://drupal.org/node/1389042#comment-5703324

scarer’s picture

Review bonus for RBK Money module: http://drupal.org/node/1136122#comment-5703366

scarer’s picture

Review bonus for cSupport live chat: http://drupal.org/node/1405978#comment-5703494

patrickd’s picture

@scarer
I'm sorry but just quoting issues found by automated tools does not make your review "manual".
A manual review, as required for review bonus, means that your actually analysing the code for logic, security or API missusages the automated review could not find.

Also it's really not necessary to post each of your reviews into a single comment, just edit your issue summary and add it there.

prashantgoel’s picture

Status: Needs review » Needs work

please visit http://ventral.org/pareview/httpgitdrupalorgsandboxscarer1422278git for the list of errors being generated

patrickd’s picture

Status: Needs work » Needs review

don't block in-depht reviews because of these minor issues found by automated tools

scarer’s picture

Issue tags: +PAreview: review bonus

Added PAReview: review bonus tag

klausi’s picture

Status: Needs review » Needs work
Issue tags: -PAreview: review bonus +PAreview: security
StatusFileSize
new3.33 KB

Thank you for your reviews. When finishing your review comment also set the issue status either to "needs work" (you found some problems with the project) or "reviewed & tested by the community" (you found no flaws).

Your forgot to add your reviews to the issue summary as outlined in #1410826: [META] Review bonus.

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

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. Get a review bonus and we will come back to your application sooner.

manual review:

  1. jiscpmattribute_list_form(): doc block is missing. Also "@function" does not exist. See http://drupal.org/node/1354#functions . Please check the docblock of all your functions and format them accordingly - use @param to describe function parameters.
  2. jiscpmattribute_list_form(): do not use #value, use #default_value instead.
  3. jiscpm_module.info: why is this file needed?
  4. CSS files: there are quite a few, maybe add a dedicated css subfolder?
  5. If you depend on other modules you should state that in the info file. See http://drupal.org/node/231036
  6. "Implementation of hook_help" should be "Implements hook_help().". See http://drupal.org/node/1354#hookimpl . Also elsewhere.
  7. jiscpm_form_alter(): if you are targeting just one specific form you should use hook_form_FORM_ID_alter().
  8. jiscpm_menu(): the closing ")" of a multi line array should be on a separate line, see http://drupal.org/coding-standards#array
  9. jiscpm_dashboard(): why do you need drupal_set_title()? You can specify the page title in hook_menu()?
  10. theme_jiscpm_link(): you should not do any logic in a theme function, that's what theme preprocess hooks are for. A theme fucntion should only arrange markup.
  11. jiscpm_dependent_select_process(): doc block is useless, it just repeats the function name.
  12. jiscpm_icon_add(): I think you should use function_exists() before you call anything from dynamic variables.
  13. "array_key_exists('q', $params)": "isset($params['q'])" is shorter and easier to read.
  14. jiscpm_icon(): do not create image markup yourself, use theme('image', ...) instead.
  15. jiscpm_list(): is that function called anywhere?
  16. jiscpm_risks(): you need to use db_rewrite_sql() if you query the node table. See http://drupal.org/writing-secure-code
  17. jiscpm_risks(): the output of that functions is vulnerable to XSS exploits. You need to sanitize user provided data such as node titles before printing them. Please carefully read http://drupal.org/node/28984 and check all your code for vulnerabilities.
  18. jiscpm_risks(): do not create link markup yourself, use l() instead.
  19. "drupal_set_message("There are no risks", 'status');": all user facing text must run through t() for translation.

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

scarer’s picture

Thanks for your feedback klausi. I think I've fixed all the problems you mention except item 10.

I looked at the documentation in the API for these and couldn't find a lot. I found this article on stack overflow that outlines how to go about implementing this: http://stackoverflow.com/questions/2383865/how-do-i-use-theme-preprocess...

Is that the appropriate way?

I'll do some more reviews of some other projects in the meantime.

Cheers.

scarer’s picture

Status: Needs work » Needs review

This is the links stuff I've seen that it's based on: http://api.drupal.org/api/drupal/includes!theme.inc/function/theme_links/6 and http://drupal.org/node/352924#comment-1189890. Should I be using the module_preprocess_hook instead? Sorry there's not a lot of documentation around that I can find about it.

Also, with the ventral verification it looks like something has been introduced recently with short function doc comments. I'm not sure what the definition of a "short" comment is as all of these functions have doc comments in compliance with: http://drupal.org/node/1354#functions.

Thanks for your help so far.

Cheers.

scarer’s picture

I've just removed the theme_jiscpm_link() altogether. Still getting those short function doc comment errors. Not sure how to fix them. I tried adding extra lines to the comment. It didn't do anything. Any advice here?

Cheers.

shawn_smiley’s picture

Status: Needs review » Needs work

Interesting project scarer, thanks for building it and submitting it back to the community.

First off, in response to your last question, it appears the short function doc comment issues reported by drupalcs have been resolved.

There are still quite a few issues with this module. Here is a list of some of the issues and some general recommendations.

  • Module doesn't work with only the minimum components enabled as mentioned in the readme file (JISC PM Project module and the JISC PM attribute module). The site crashes with an error about missing table "jiscpmproject". The error is originating from function jiscpm_projects() which implies a potential circular dependency between modules. This function, and any related functionality, should probably in the jiscpmproject module.
  • As an FYI, most people prefer to actually delete the master branch rather than just having a readme file directing people to the correct branch. See this page for information on setting the default branch: http://drupal.org/node/1659588 and this page about deleting the master branch: http://drupal.org/node/1127732
  • Function documentation comments do not need the @function identifier. See http://drupal.org/node/1354#functions
  • Hook implementations do not need to document function parameters in the function doc. See http://drupal.org/node/1354#functions
  • There are a number of variables that are used before being defined. These undefined variables can cause inconsistent behaviors in the system and can fill a sites/servers logs with warning messages depending on the PHP version and settings.
    Here are a few examples:
    • jiscpm.module: line 161: $w is incremented without first being initialized.
    • jiscpm.module: line 539: $output is concatenated when the variable hasn't been initialized.
    • jiscpm.module: line 933: $results is concatenated when the variable hasn't been initialized.
    • jiscpm.module: line 1106: $results is concatenated when the variable hasn't been initialized.
    • jiscpm.module: line 1106: $results is concatenated when the variable hasn't been initialized.

    TIP: When testing locally, make sure your PHP error reporting level is set to "E_ALL | E_STRICT | E_DEPRECATED" That way Drupal will output these warnings as messages in the watchdog while you're testing. Make sure you're periodically checking the watchdog and Apache logs for errors/warnings from your module files.

  • jiscpm.module: line 292: Unless this module will never handle dates later than 2037, you should set the max range value to be something like
    $max_year = ((int)date('Y')) + 25;
    $options = drupal_map_assoc(range(1970, $max_year));
    
  • jiscpm.module: line 142: Function jiscpm_dashboard() doesn't appear to be used and calls a non-existent theme function.
  • jiscpm.module: line 527: It's generally considered a bad practice to assign values to variables at the same time you're passing them to a function call. Plus you're never using the variable that you're assigning. Instead of doing this:
    $o = theme_image($img_src, $alt = $title, $title = $title);
    

    Do something like this:

    $output = theme('image', $img_src, $title, $title);
    

I stopped reviewing at this point.

Here are some general pointers to use when looking at your module:

  • Make sure your installation instructions identify all requirements and installation steps.
  • Make sure you're properly segmenting your code so that all related functionality is logically grouped together.
  • For complex modules like this, I would make the top level module an API base module that contains only general purpose API calls used by the other modules. Then make the other modules specialize in specific aspects of the system such as providing the dashboard or handling Projects.
  • If every module in the package isn't required, make sure you have your dependencies declared and test every combination of modules being enabled/disabled.
scarer’s picture

Thanks very much for all your feedback Shawn. I've just changed jobs so I will be looking at this as soon as I can.

Kind regards,

Sarah

klausi’s picture

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

Closing due to lack of activity. Feel free to reopen if you are still working on this application.