I have "load ads last" checked in hopes of eventually being able to refresh ads when users click prev/next in a slideshow. I'm getting this error in chrome:

Uncaught TypeError: Cannot read property '1' of null on line 87 of dart.js. Which is in this function:

/**
* If there are tags in the loadLastTags, then load them where they belong.
*/
Drupal.behaviors.DART = {
  attach: function(context) {
    if (typeof(Drupal.DART.settings.loadLastTags) == 'object') {
      $('.dart-tag:visible').not('.dart-processed').each(function() {
        var regex = /dart-name-(\w+)$/;
        var result = regex.exec($(this).attr('class'));
        var scriptTag = Drupal.DART.tag(Drupal.DART.settings.loadLastTags[result[1]]);
Uncaught TypeError: Cannot read property '1' of null
        $(this).writeCapture().append(scriptTag).addClass('dart-processed');
      });
    }
  }
};

I've stepped through it with breakpoints. The $('.dart-tag:visible') does find the div elements, but regex.exec() returns null, which causes the next line to fail.

Here is an example of a block containing an ad:

<div class="block block-dart contextual-links-region block-dart-tag-square-above-fold block-dart-dart-tag-square-above-fold even block-without-title" id="block-dart-dart-tag-square-above-fold">
  <div class="block-inner clearfix">
            <div class="contextual-links-wrapper contextual-links-processed"><a class="contextual-links-trigger" href="#">Configure</a><ul class="contextual-links element-hidden"><li class="block-configure first last"><a href="/admin/structure/block/manage/dart/dart-tag-square_above_fold/configure?destination=node/9730">Configure block</a></li></ul></div>   
    <div class="content clearfix">
     
<div class="dart-tag">
 
            <script type="text/javascript">Drupal.DART.settings.loadLastTags['square_above_fold'] = '{"machinename":"square_above_fold","name":"Square Above fold","pos":"sidebar","sz":"300x250,300x600","active":"1","block":"1","settings":{"overrides":{"site":"","zone":"","slug":""},"options":{"scriptless":0,"method":"adj","include_terms":0},"key_vals":[],"scheduler":[]},"table":"dart_tags","type":"Normal","export_type":1,"key_vals":{"pos":[{"val":"sidebar","eval":false}],"sz":[{"val":"300x250,300x600","eval":false}],"site":[{"val":"lcl","eval":0}],"env":[{"val":"newdev","eval":false}],"tile":[{"val":"tile++","eval":true}],"ord":[{"val":"ord","eval":true}]},"prefix":"lcl","site":"mdp.com","zone":"","slug":"","network_id":"","noscript":{"src":"http:\/\/ad.doubleclick.net\/ad\/lcl.mdp.com\/;pos=sidebar;sz=300x250,300x600;site=lcl;env=newdev;tile=13;ord=1353291175?","href":"http:\/\/ad.doubleclick.net\/jump\/lcl.mdp.com\/;pos=sidebar;sz=300x250,300x600;site=lcl;env=newdev;tile=13;ord=1353291175?"}}';</script>
      </div>
<a id="context-block-dart-dart-tag-square_above_fold" class="context-block editable edit-sidebar"></a>    </div>
  </div>
</div>

Does anybody have any ideas that might help me track this down? Thanks!

Comments

scottatdrake’s picture

Oh! Just realized that class "dart-name-" appears nowhere in the page source. That certainly has something to do with it. But why?

I'm using the blocks generated by the DART module and placing them in various places with both Context and Panels.

scottatdrake’s picture

I got this working but had to hack (revert?) the way classes are passed in template_preprocess_dart_tag(), based on the conversation around this post.

@@ -564,7 +565,7 @@
function template_preprocess_dart_tag(&$variables) {
   $tag = $variables['tag'];

-  $variables['attributes_array']['class'] = 'dart-tag dart-name-' . $tag->machinename;
+  $variables['classes_array'][] = 'dart-tag dart-name-' . $tag->machinename;
   $variables['json_tag'] = drupal_json_encode($tag);
   $variables['load_last']   = variable_get('dart_load_last', '0');

bleen18’s picture

Can you please upload a patch file to be evaluated ... thanks!

scottatdrake’s picture

StatusFileSize
new661 bytes

Patch attached. Formatted correctly?

bleen18’s picture

Status:Active» Needs work
StatusFileSize
new535 bytes
new53.04 KB

Almost correct ... when you submit a patch for a contrib module, you should create it from the root of the contrib modules folder, not the root of your drupal site.

That said, I gave your suggestion a try and it causes an error when I use it on a vanilla D7 install with a simple tag displayed in the second sidebar:
screenshot

The patch I tried is attached.

bblake’s picture

Status:Needs work» Needs review
StatusFileSize
new536 bytes

Previous patch left out the [] after ['classes_array'].

Corrected patch attached.

bleen18’s picture

Status:Needs review» Fixed
StatusFileSize
new1.78 KB

I committed this attached patch ... should solve this once and for all

Status:Fixed» Closed (fixed)

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