TAP aims to provide tools to easily create and deliver mobile tour applications in a museum setting. Content creation is performed in the content management system, Drupal. TAP tours are exportable into an intermediate format, TourML, which can then be used as pluggable bundles for mobile applications.

TAP provides a way for non-technical museum staff to assemble a wide range of mobile experiences without needing to know any of the underlying technical details of the Web or mobile technology. In addition to the means for assembling content, TAP in its current state also provides user interfaces for Web-based mobile tours and simplenative applications for an iPod-based tour.

Freely available tools and standards are essential to the museum community to promote the adoption of best practices, to facilitate collaboration, and to encourage the creation of potential avenues for future content sharing. IMA’s initial work with the TAP authoring tool includes support for an early version of the TourML specificationand offers a functional, but incomplete, proof-of-concept, demonstrating how such a system might work.

Since its release, the TAP system has been successfully adopted and deployed by a few independent developers—including other major museums—and has served as a model and example code for a number of other implementations. In its current state, TAP provides a workable tool for museums with significant skills in software development and awillingness to use the system in its entirety.

As part of the IMLS grant the current version of TAP will be modified to support the TourML specifications that are recommended by the community.

Git Repo: git.drupal.org:sandbox/cangeceiro/1593564.git
Sandbox: http://drupal.org/sandbox/cangeceiro/1593564
Project page: http://drupal.org/sandbox/cangeceiro/1593564
Drupal 7.x
more info available at http://www.tapintomuseums.org/

CommentFileSizeAuthor
#42 coder-results.txt7.11 KBklausi

Comments

pgogy’s picture

Hello,

It helps to add a link to your project page (I wasn't sure if TAP was the same as TAP CMS).

Thanks

Pat

patrickd’s picture

Status: Needs review » Needs work

@pgogy they've both the same description ;)

@cangeceiro
As installation and usage instructions are quite important for us to review, please take a moment to make your project page follow the tips for a great project page. Also create a README.txt that follows the guidelines for in-project documentation.

For contributing distributions to drupal.org, you should include it as installation profile and put your installation profile's data into the root of your GIT repository.
Should have a structure like
/tap.info
/tap.profile
/tap.install
/modules/...

We do really need more hands in the application queue and highly recommend to get a review bonus so we can come back to your application sooner.

regards

pgogy’s picture

@patrickd that's how I worked it out, but I had to dig a little - Also - is ventral down? Kept getting stuck at 33% for me.

patrickd’s picture

up again, seems like drupalcs doesn't like a single .info file without any .module in repo root

pgogy’s picture

@patrickd Should I tell @klausi?

cangeceiro’s picture

Status: Needs work » Needs review

Pushed code that finishes up the install profile

cangeceiro’s picture

Issue summary: View changes

added project page

FranciscoLuz’s picture

Hi,

I did a manual review on your module. Here are some notes.

  • The master branch should be empted.
  • There are quite a few code standards issues. I ran the ventral checker on the tab module (../modules/tab) and here is the result http://ventral.org/pareview/httpgitdrupalorgsandboxdrupalista-br1685372g...
  • You should run the same check on each of the sub modules (tap_features, tap_geo, tap_graphviz and tap_webapp). The ventral result above do not include these sub modules.
FranciscoLuz’s picture

Status: Needs review » Needs work

Forgot to change the status.

cangeceiro’s picture

Status: Needs work » Needs review

I realize the indentation is 4 spaces instead of two which is in the drupal coding standards. However we have a team of 8 developers from several institutions working on this project and that is the indentation standard set forth by this group of developers. aka im not going to be able to change that just for drupal.org. If this is a deal breaker then I am afraid we will just have to withdraw the application for full project status. The other issues can be addresses but I am not putting forth the effort until someone can clarify on the issue of indentation.

patrickd’s picture

Code formatting should not be a blocker, we like to have it, but you it's not mandatory.

cangeceiro’s picture

Then could someone possibly provide me with a concise list of blockers on this project that are preventing a full project release. We are very close to releasing the first stable release of this module and one of the milestones we have hoped to have with this stable release is a drupal.org distrobution to coincide with the release of version 2.0

cangeceiro’s picture

fyi i fixed the branch on the module. so you will need to checkout 7.x-2.x now

cangeceiro’s picture

Priority: Normal » Major

Any update on the status of this?

mpdonadio’s picture

Status: Needs review » Needs work

cangeceiro, if you get a Review Bonus (http://drupal.org/node/1410826) the project will get quicker attention from those who do the actual promotion to full project.

There is also lot to this.

I am noticing a fair amount of inconsistencies with missing and mis-formated DocBlocks.

I am noticing instances of directly accessing field values (eg, in tap_webapp_preview()) instead of using field_get_items(). GIven the size of the project, I can't tell if this is an oversight or lack of familiarity with this portion of the API.

I am seeing some leftover dpm() in the code. These need to be removed.

I am not seeing a hook_uninstall() in the tap_graphviz() sub-module to clean up variables. Same for tap_webapp. I haven't gone through everything, though.

Pretty sure that this would be kicked back b/c of the dpm() and the variables (and probably the DocBlocks), so I am setting this to needs work.

cangeceiro’s picture

Status: Needs work » Needs review

just committed 6 months worth of work back to the sandbox

cangeceiro’s picture

that last commit also includes implementations of hook_uninstall and ensuring any debug code has been removed.

aendra’s picture

This looks great -- will do a full code review over the next couple hours.

aendra’s picture

Status: Needs review » Needs work

Automated review

FWIW, most of these are due to the fact you have a lot of sub-modules inside your main module. I'd say the function naming warnings can probably be ignored.

  • Remove "version" from the ./modules/tap/tap.info file, it will be added by drupal.org packaging automatically.
  • Remove "project" from the ./modules/tap/tap.info file, it will be added by drupal.org packaging automatically.
  • Remove "version" from the ./modules/tap/tap_features/tap_features.info file, it will be added by drupal.org packaging automatically.
  • Remove "project" from the ./modules/tap/tap_features/tap_features.info file, it will be added by drupal.org packaging automatically.
  • Remove "version" from the ./modules/tap/tap_geo/tap_geo.info file, it will be added by drupal.org packaging automatically.
  • Remove "project" from the ./modules/tap/tap_geo/tap_geo.info file, it will be added by drupal.org packaging automatically.
  • Remove "version" from the ./modules/tap/tap_graphviz/tap_graphviz.info file, it will be added by drupal.org packaging automatically.
  • Remove "project" from the ./modules/tap/tap_graphviz/tap_graphviz.info file, it will be added by drupal.org packaging automatically.
  • Remove "version" from the ./modules/tap/tap_s3/tap_s3.info file, it will be added by drupal.org packaging automatically.
  • Remove "project" from the ./modules/tap/tap_s3/tap_s3.info file, it will be added by drupal.org packaging automatically.
  • Remove "version" from the ./modules/tap/tap_webapp/tap_webapp.info file, it will be added by drupal.org packaging automatically.
  • Remove "project" from the ./modules/tap/tap_webapp/tap_webapp.info file, it will be added by drupal.org packaging automatically.
  • ./modules/tap/tap.admin.inc: all functions should be prefixed with your module/theme name to avoid name clashes. See http://drupal.org/node/318#naming
    function tap_admin_form() {
    
  • ./modules/tap/tap.export.inc: all functions should be prefixed with your module/theme name to avoid name clashes. See http://drupal.org/node/318#naming
    function tap_tourml_export_form($form, &$form_state, $node = NULL) {
    function tap_export_separate_languages_callback($form, $form_state) {
    function tap_export_entity_autocomplete($string) {
    function tap_export_entity_autocomplete_value($element, $input = FALSE, $form_state) {
    function tap_export_entity_autocomplete_validate($element, &$form_state, $form) {
    function tap_export_bundle_id_validate($element, &$form_state, $form) {
    function tap_tourml_export_form_submit(&$form, &$form_state) {
    function tap_export_tourml($node, $download = TRUE) {
    function tap_export_tourml_multi($node, $download = TRUE) {
    function tap_export_bundle_string($path, $dir, $string, &$context) {
    function tap_export_bundle_asset($path, $dir, $uri, &$context) {
    function tap_export_bundle_tour_save($node, $file_path, $bundle_name, &$context) {
    function tap_export_bundle_finish($success, $results, $operations) {
    function tap_export_bundle_plist_file($bundle, $dir, $bundle_name) {
    function _clean_bundle_id($text) {
    
  • ./modules/tap/tap.features.field.inc: all functions should be prefixed with your module/theme name to avoid name clashes. See http://drupal.org/node/318#naming
    function tap_field_default_fields() {
    
  • ./modules/tap/tap.features.inc: all functions should be prefixed with your module/theme name to avoid name clashes. See http://drupal.org/node/318#naming
    function tap_ctools_plugin_api() {
    function tap_views_api() {
    function tap_node_info() {
    
  • ./modules/tap/tap.forms.inc: all functions should be prefixed with your module/theme name to avoid name clashes. See http://drupal.org/node/318#naming
    function tap_export_tourml_form($form, &$form_state, $node) {
    function tap_export_tourml_form_submit($form, &$form_state) {
    
  • ./modules/tap/tap.module: all functions should be prefixed with your module/theme name to avoid name clashes. See http://drupal.org/node/318#naming
    function tap_uninstall() {
    function tap_requirements($phase) {
    function tap_permission() {
    function tap_menu() {
    function tap_node_presave($node) {
    function tap_node_view($node, $view_mode, $lang) {
    function tap_node_view_full(&$node, $lang) {
    function tap_entity_info_alter(&$entity_info) {
    function tap_theme() {
    function tap_form_alter(&$form, &$form_state, $form_id) {
    function tap_tourml_multipart_asset_alter(&$tour, &$item) {
    function tap_tourml_asset_alter(&$tour, &$item) {
    function tap_field_formatter_info() {
    function tap_field_formatter_info_alter(&$info) {
    function tap_field_formatter_settings_form($field, $instance, $view_mode, $form, &$form_state) {
    function tap_default_formatter_settings_form($field, $instance, $view_mode, $form, &$form_state) {
    function tap_field_formatter_settings_summary($field, $instance, $view_mode) {
    function tap_field_display_alter(&$display, $context) {
    function tap_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
    function tap_block_info() {
    function tap_block_view($delta = '') {
    function tap_block_contents($delta) {
    function tap_block_configure($delta = '') {
    function tap_block_save($delta = '', $edit = array()) {
    function tap_get_tourml_cache($node) {
    function tap_tourml_render($node, $settings = array()) {
    function tap_tourml_preview($node) {
    function tap_tourml_validate($node) {
    function _tap_asset_image(&$item) {
    function _tap_asset_video(&$item) {
    function _tap_asset_audio(&$item) {
    function _tap_bundle_form_options() {
    function _zip_init($path, $flag = ZIPARCHIVE::CHECKCONS) {
    function duration($secs) {
    function _anti_field($text) {
    function _clean_file_text($text) {
    function tourml_display_error($error) {
    function tourml_display_errors() {
    
  • ./modules/tap/tap.strongarm.inc: all functions should be prefixed with your module/theme name to avoid name clashes. See http://drupal.org/node/318#naming
    function tap_strongarm() {
    
  • ./modules/tap/tap.templates.inc: all functions should be prefixed with your module/theme name to avoid name clashes. See http://drupal.org/node/318#naming
    function tap_preprocess_tap_tourml_tour(&$vars) {
    function tap_preprocess_tap_tourml_root_stop_entityreference(&$vars) {
    function tap_preprocess_tap_tourml_stop(&$vars) {
    function tap_preprocess_tap_tourml_asset(&$vars) {
    function tap_preprocess_tap_tourml_multipart_asset(&$vars) {
    function tap_preprocess_tap_tourml_multipart_asset_ref(&$vars) {
    function tap_preprocess_tap_tourml_property_set(&$vars) {
    function tap_preprocess_tap_tourml_property(&$vars) {
    function _theme_tap_tourml_property($vars) {
    function _theme_tap_tourml_title($vars) {
    function _theme_tap_tourml_description($vars) {
    function tap_preprocess_tap_tourml_connection_entityreference(&$vars) {
    function tap_preprocess_tap_tourml_asset_rights(&$vars) {
    function _theme_tap_tourml_copyright($vars) {
    function _theme_tap_tourml_credit_line($vars) {
    function _theme_tap_tourml_expiration($vars) {
    function tap_preprocess_ios_tourml_xml(&$vars) {
    
  • ./modules/tap/tap.views_default.inc: all functions should be prefixed with your module/theme name to avoid name clashes. See http://drupal.org/node/318#naming
    function tap_views_default_views() {
    
  • ./modules/tap/tap_features/tap_features.features.field.inc: all functions should be prefixed with your module/theme name to avoid name clashes. See http://drupal.org/node/318#naming
    function tap_features_field_default_fields() {
    
  • ./modules/tap/tap_features/tap_features.features.inc: all functions should be prefixed with your module/theme name to avoid name clashes. See http://drupal.org/node/318#naming
    function tap_features_ctools_plugin_api() {
    function tap_features_views_api() {
    function tap_features_node_info() {
    
  • ./modules/tap/tap_features/tap_features.field_group.inc: all functions should be prefixed with your module/theme name to avoid name clashes. See http://drupal.org/node/318#naming
    function tap_features_field_group_info() {
    
  • ./modules/tap/tap_features/tap_features.strongarm.inc: all functions should be prefixed with your module/theme name to avoid name clashes. See http://drupal.org/node/318#naming
    function tap_features_strongarm() {
    
  • ./modules/tap/tap_features/tap_features.views_default.inc: all functions should be prefixed with your module/theme name to avoid name clashes. See http://drupal.org/node/318#naming
    function tap_features_views_default_views() {
    
  • ./modules/tap/tap_geo/tap_geo.features.field.inc: all functions should be prefixed with your module/theme name to avoid name clashes. See http://drupal.org/node/318#naming
    function tap_geo_field_default_fields() {
    
  • ./modules/tap/tap_geo/tap_geo.features.inc: all functions should be prefixed with your module/theme name to avoid name clashes. See http://drupal.org/node/318#naming
    function tap_geo_node_info() {
    
  • ./modules/tap/tap_geo/tap_geo.module: all functions should be prefixed with your module/theme name to avoid name clashes. See http://drupal.org/node/318#naming
    function tap_geo_theme() {
    function tap_geo_tourml_asset($asset) {
    function tap_geo_tourml_asset_alter(&$tour, &$item) {
    
  • ./modules/tap/tap_graphviz/tap_graphviz.admin.inc: all functions should be prefixed with your module/theme name to avoid name clashes. See http://drupal.org/node/318#naming
    function tap_graphviz_admin_form($form, &$form_state) {
    function tap_graphviz_admin_form_submit($form, &$form_state) {
    function tap_graphviz_admin_settings_form($form, &$form_state) {
    function _tap_graphviz_admin_settings($type) {
    function _shape_options() {
    
  • ./modules/tap/tap_graphviz/tap_graphviz.install: all functions should be prefixed with your module/theme name to avoid name clashes. See http://drupal.org/node/318#naming
    function tap_graphviz_update_7001() {
    function tap_graphviz_uninstall() {
    
  • ./modules/tap/tap_graphviz/tap_graphviz.module: all functions should be prefixed with your module/theme name to avoid name clashes. See http://drupal.org/node/318#naming
    function tap_graphviz_menu() {
    function tap_graphviz_permission() {
    function tap_graphviz_access($node) {
    function tap_graphviz_settings() {
    function tap_graphviz_view($node) {
    function tap_graphviz_tour_image($node) {
    function tap_graphviz_image($tourml, $render = TRUE) {
    
  • ./modules/tap/tap_s3/tap_s3.module: all functions should be prefixed with your module/theme name to avoid name clashes. See http://drupal.org/node/318#naming
    function tap_s3_uninstall() {
    function tap_s3_menu() {
    function tap_s3_admin_form($form, &$form_state) {
    function tap_s3_export_bundle_alter($bundle_name, $bundle) {
    function _tap_s3_upload_tap_webapp($bundle_name, $dir, $base_path = NULL) {
    function _tap_s3_init() {
    function _tap_s3_upload($file, $dest) {
    function mime_content_type_replacement($filename) {
    
  • ./modules/tap/tap_webapp/tap_webapp.admin.inc: all functions should be prefixed with your module/theme name to avoid name clashes. See http://drupal.org/node/318#naming
    function tap_webapp_admin_form($form, &$form_state) {
    function tap_webapp_admin_form_submit($form, &$form_state) {
    
  • ./modules/tap/tap_webapp/tap_webapp.module: all functions should be prefixed with your module/theme name to avoid name clashes. See http://drupal.org/node/318#naming
    function tap_webapp_uninstall() {
    function tap_webapp_menu() {
    function tap_webapp_theme() {
    function tap_webapp_dependencies() {
    function tap_webapp_preview($node) {
    function tap_webapp_preprocess_tap_webapp_preview(&$vars) {
    
  • Bad line endings were found, always use unix style terminators. See http://drupal.org/coding-standards#indenting
    ./modules/tap/tap_webapp/css/Tap-0.1.0.css:                              UTF-8 Unicode c program text, with CRLF, LF line terminators
    ./modules/tap/tap_webapp/js/external/code.photoswipe.jquery-3.0.4.js:    ASCII C++ program text, with very long lines, with CRLF line terminators
    ./modules/tap/tap_webapp/js/external/klass.js:                           UTF-8 Unicode C++ program text, with CRLF line terminators
    ./modules/tap/tap_webapp/tap-webapp-0.1.0/Tap-0.1.0.css:                 UTF-8 Unicode c program text, with very long lines, with CRLF, LF line terminators
    ./modules/tap/tap_webapp/tap-webapp-0.1.0/Tap-0.1.0.min.css:             ASCII text, with very long lines, with no line terminators
    ./modules/tap/templates/tap-tourml-copyright.tpl.php:                    ASCII text, with no line terminators
    ./modules/tap/templates/tap-tourml-credit-line.tpl.php:                  ASCII text, with no line terminators
    ./modules/tap/templates/tap-tourml-description.tpl.php:                  ASCII text, with no line terminators
    ./modules/tap/templates/tap-tourml-expiration.tpl.php:                   ASCII text, with no line terminators
    modules/tap/tap_webapp/css/Tap-0.1.0.css
    modules/tap/tap_webapp/js/external/code.photoswipe.jquery-3.0.4.js
    modules/tap/tap_webapp/js/external/klass.js
    modules/tap/tap_webapp/tap-webapp-0.1.0/Tap-0.1.0-dependencies.js
    modules/tap/tap_webapp/tap-webapp-0.1.0/Tap-0.1.0.css
    

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

Ooh, I love installation profiles! This looks pretty rad.

  • ✓ Good project page. You should probably note somewhere that more documentation is at your project website, tapintomuseums.org.
  • ✓ Great project website.
  • ✗ GPL.txt -- A GPL license is added automatically by the Drupal.org build process. Please remove it.
  • ✗ README.txt says to do "drush make drush.make" while there is no drush.make file in the directory. Note you'll have to update README.txt regardless once Drupal.org starts building your distribution into a full install. Otherwise good README.txt, though maybe terminate lines at 80 chars -- reads better in non-wrapped CLI text editors.
  • Installation:
    • ✓ Drush Make successfully downloaded modules
    • In order to replicate a built Drupal.org distro, I downloaded Drupal into a level one below tap_cms and then moved tap_cms into that folder's /profiles directory.
    • ✗ Profile for TAP has title "tap_distro" and no description. Probably worth adding this so users don't select one of Drupal's install profiles by default -- not that it really matters, your profile just does the standard install.
    • ✗ Upon trying to run the installation profile, I get the message: "Sorry, the profile you have chosen cannot be loaded."
    • Proceeded to do the standard install; rest of review reflects this.
    • Used drush to enable the modules set as dependencies in tap_cms.info.
  • Online usage documentation -- Gold star! Seriously, fantastic work. Screenshots and everything! Note, though, that the drush make command still references a non-existent file (Same issue as readme).
  • ✓ Creating tours, creating bundles, downloading as a zip, view TourML XML -- all works great!
  • TAP modular/feature code
    • ✓ tap.views-default.inc -- standard CTools export
    • ✓ tap.templates.inc -- You format your block comments weird. I don't think it's enough of an issue to hold up promotion, but please review http://drupal.org/node/1354. Looks good otherwise.
    • ✓ tap.strongarm.inc -- standard CTools export
    • ✓ tap.module -- You could move your uninstall routine to a .install file (Not a blocker). More weird comment formatting. Looks good otherwise.
    • ✗ tap.info -- In addition to the version and project lines, you have a PHP line -- does this explicitly require PHP 5.2? If so, you don't mention this anywhere else. I'm also using PHP 5.3 to test this, and I'm not seeing any issues. You should probably remove that line if it's not necessary.
    • ✓ tap.forms.inc -- No issues.
    • ✓ tap.features.inc, tap.features.field.inc -- Standard Features exports.
    • ✓ tap.export.inc -- Looks fine.
    • ✓ tap.api.php -- Looks fine.
    • ✓ tap.admin.inc -- Looks fine.
    • ✓ merge.xslt -- IIRC, xslt files are really just used to validate XML? I think it's fine.
    • ✓ tourml.class.inc -- Looks fine.
    • ✗ tap_features.info -- Same as tap.info. Everything else is ✓ as standard Features exports.
    • ✗ tap_geo.info -- Same as tap.info. Everything else is ✓ as standard Features exports.
    • ✗ tap_graphviz.info -- Same as tap.info. Everything else looks ✓.
    • ✗ tap_s3.info -- Same as tap.info.
    • ✗ You might want to not hardcode the URL on tap_s3.module, ln. 71 -- S3 also has servers in Europe, Asia, etc. More major, ln. 114 -- You have the string in parentheses, however, you're missing the "t".
    • ✓ Templates look fine.
    • ✗ tap_webapp.info -- Same as tap.info. Everything else is ✓ though -- and really cool!

What a massive project -- such a cool concept, though! I'll make sure to mention this to all the people I know who do this kind of work. :)

Marking as Needs Work, though -- beyond the stuff related to the .info files, I'd like it if someone else looks it over for RTBC; it's a lot of code (And it seems I'm the first really thorough manual review in several months). You're definitely getting there, though! :)

cangeceiro’s picture

Status: Needs work » Needs review

We have been working specifically on the web app lately to get it polished up and stable. So these updates have been pushed. I also removed php from the .infos as recommended. As far as the version numbers in the .info's im a little hesitent to pull these at the moment. Currently we are hosting the modules on github and users are actively downloading it from there. We are working out of the github repo and copying it over to the drupal repo. So I don't want to break it for those users until it has passed approval here.

cangeceiro’s picture

I want to follow up on getting this review thru. My schedule should afford me a little bit of time in the next week or two to work out any issues that are standing in the way of getting this profile approved. Specifically we would like to make a push to get this on Drupal.org before some upcoming presentations. Sessions have already been approved for Museums and the Web (April 17-20) http://mw2013.museumsandtheweb.com/proposals/tourml-tap-open-source-tool... and Drupalcon Portland http://portland2013.drupal.org/session/tap-museums

mpdonadio’s picture

You should really try to get a review bonus to expedite things.

Do you know what day you are doing your presentation at MWeb? I think I am just there on Wednesday and would like to stop by if I can.

cangeceiro’s picture

I won't be in attendence for the MW presentation. Gray and Kyle from our team will be doing that one. They will be there all week though if you want to track them down. If you private message me I can give you contact info.

mitchell’s picture

I tried to test 7.x-2.x with simplytest.me, but it failed at the 'Verify requirements' install phase. There wasn't any more info, but it's supposed to work with install profiles. I tried looking over the code, but the cause didn't pop out. Would be happy to try again in the future.

cangeceiro’s picture

Ah, yes it looks like i had a name space conflict. Pushed a commit that resolves this, which worked for my local copy, but simplytest.me didnt seem to take the update.

balsama’s picture

Status: Needs review » Needs work

Running just the tap module (none of the other submodules) through the coder module returned ~1700 warnings. Looks like most of them are minor formatting and comment issues, but there is at least one critical (line 899 unfiltered text sent to drupal_set_message()) and 35 "normal" warnings.

Fixing all of these would be a great place to start. Looks like a great project. Good luck with it.

cangeceiro’s picture

Priority: Major » Critical
Status: Needs work » Needs review

its officially been one year since this project request was posted. I ran the modules thru coder again and did not see anything that should be a deal breaker, but went ahead and addressed the issues.

Gaelan’s picture

Priority: Critical » Normal

The "critical" status is reserved for projects which, for the last 4 weeks, have been in the "needs review" status and haven't gotten a response.

kscheirer’s picture

Status: Needs review » Needs work

This project is incredibly hard to review!

Your code style is sloppy, lots of string manipulation and use of _GET variables - this was common in D5, but we've moved away from it for good reasons. The commenting is sparse and doesn't follow our code standards. None of that is a blocker for me though, although your users might complain later.

I'm setting this to needs work due to the namespace issues - really all the functions need to start with the modulename or _modulename or theme. Random utility functions are not allowed. We have to be this strict due to Drupal's non-OO nature and namespace conflicts are not policed by any mechanism aside from the coders following this pattern. You seem to mostly have this problem with utility functions. If you can fix this you'll get an RTBC from me.

tap.module

function _zip_init($path, $flag = ZIPARCHIVE::CHECKCONS) {
function duration($secs) {
function _anti_field($text) {
function _clean_file_text($text) {
function tourml_display_error($error) {
function tourml_display_errors() {

tap_s3.module

function mime_content_type_replacement($filename) {

tap.export.inc

function tap_tourml_export_form($form, &$form_state, $node = NULL) {
function tap_tourml_export_form_submit(&$form, &$form_state) {
function _clean_bundle_id($text) {

tap_graphviz.admin.inc

function _shape_options() {
cangeceiro’s picture

Status: Needs work » Needs review

thanks for the update. I have resolved the namespace conflicts in the utility functions.

kscheirer’s picture

Status: Needs review » Reviewed & tested by the community
kscheirer’s picture

Title: TAP CMS » [D7] TAP CMS
Status: Reviewed & tested by the community » Needs work
PAReview: 3rd party code
*Tap-0.1.0.js* appears to be 3rd party code. 3rd 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.

This also seems to apply to all the libraries in modules / tap / tap_webapp / js / external / :

  • backbone-0.9.2.js
  • backbone.localStorage-min.js
  • code.photoswipe.jquery-3.0.4.js
  • jquery-1.7.2.js
  • jquery.mobile-1.1.0.js
  • json2.js
  • klass.js
  • underscore-1.3.3.js
  • as well as merge.xslt ?

----
Top Shelf Modules - Enterprise modules from the community for the community.

cangeceiro’s picture

Status: Needs work » Needs review

Tap-0.1.0.js is not third party code. That is a grunt project we developed and maintain in a separate repo and only include the compiled version in the tap_webapp module. Further more, because the web app is not coupled to drupal it has to include its dependencies.

Our goal with introducing TAP as an install profile was to make the installation process less complicated and more accessible for other museums with small or non existent tech staff. With this in mind decoupling the web app from TAP would make this effectively useless to this audience. So if thats an issue and the barrier to entry then I believe its in our best interest to just remove this application.

kscheirer’s picture

Status: Needs review » Needs work

Thanks for the explanation!

Tap-0.1.0.js is fine, but we're not allowed to host those other project on d.o, can you use the Libraries API instead? Unfortunately that is a blocking issue.

We can make exceptions if they have the right license (see https://drupal.org/node/422996), but even then it's nice to use Libraries so users can store their code wherever they like and it will prevent duplications.

----
Top Shelf Modules - Enterprise modules from the community for the community.

cangeceiro’s picture

Tap-0.1.0.js is just the compiled version which still includes all of those dependencies. the other files are just in there because its linked to another repository. At the core of TAP is the TourML specification which is an industry set xml standard for museum tours. So the tap web app is not tied in any way to drupal and is not used by all museums in conjunction with drupal. Thus making it impossible to integrate it in with the libraries module. So the web app is a standalone backbone application that communicates with drupal via the TourML xml end point that the tap module provides.

So really the only way we could even accomplish this is to remove the webapp all together

kscheirer’s picture

Status: Needs work » Needs review

Ok, not sure what the best way to handle this is.

sreynen’s picture

Status: Needs review » Needs work

Hi cangeceiro,

3rd party code definitely needs to be removed. That's not even a condition of full project access; it's something you agreed to before getting Git access on Drupal.org for sandbox projects. Here's the policy in more detail:

https://drupal.org/node/422996

As far as removing the whole tap_webapp module, it's not clear to me why you couldn't build that without the 3rd party code included directly, but if that's the case I think you're right that removing the module is better than including a broken module.

cangeceiro’s picture

Status: Needs work » Needs review

For the sake of ease of maintenance I would like to move these modules into git submodules anyway. Would reworking the repo so that the tap modules are linked to the github repo via submodules and the d.org repo would just be the code for the profile pose any problems?

sreynen’s picture

cangeceiro, that should be fine as far as Drupal.org policy, thought it may hurt usability somewhat (not everyone knows how to use Git submodules). But if you're okay with that, I think it's fine.

cangeceiro’s picture

I just removed the webapp. There is configuration for users to point tap to an instance of the webapp so it will just require a little configuration. I think im fine with that.

kscheirer’s picture

Status: Needs review » Reviewed & tested by the community

Looks good to me, thanks!

----
Top Shelf Modules - Crafted, Curated, Contributed.

klausi’s picture

Component: feature » other
Assigned: Unassigned » klausi

I'll look at this now in the Project applications sprint

klausi’s picture

Assigned: klausi » Unassigned
Status: Reviewed & tested by the community » Fixed
StatusFileSize
new7.11 KB

Sorry for the delay, but you have not listed any reviews of other project applications in your issue summary as strongly recommended in the application documentation.

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

  • DrupalPractice has found some issues with your code, but could be false positives. See attachment.

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. The Git commits are not connected to your user account. You need to specify an email address. See http://drupal.org/node/1022156 and http://drupal.org/node/1051722
  2. It is a pity that you don't follow the Drupal coding standards -makes the code harder to review for any Drupal developer.
  3. The DrupalPractice Sniffer warnings are real and should be fixed, see attachment.
  4. "drupal_set_message(check_plain("Could not use file $path"), 'error');": why do you call check_plain() here? No user provided text is invloved? Make sure to read https://drupal.org/node/28984 again.
  5. tap_graphviz_uninstall(): you must no use DELETE in db_query(), use db_delete() instead. And deleting varaibles with a query is bad, as it might hit other variables unexpectedly. Usae variable_del() explicitly.
  6. Untranslatable strings that should use t()

But apart from that major Drupal best practice violations I could not find a critical application blocker, so ...

Thanks for your contribution, cangeceiro!

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.

Anonymous’s picture

Issue summary: View changes

added sandbox link

avpaderno’s picture

avpaderno’s picture

Component: other » distribution/profile