text: 
  modulejs.define('ext/thumbnails', ['_', 'core/settings', 'core/event', 'core/server'], function (_, allsettings, event, server) {
  
      var settings = _.extend({
              enabled: false,
              img: ['bmp', 'gif', 'ico', 'image', 'jpg', 'png'],
              mov: ['video'],
              doc: ['pdf', 'ps'],
              delay: 1000,
              size: 96
          }, allsettings.thumbnails),
  
          requestThumb = function (type, href, mode, ratio, callback) {
  
              server.request({
                  action: 'getThumbHref',
                  type: type,
                  href: href,
                  mode: mode,
                  width: settings.size * ratio,
                  height: settings.size
              }, function (json) {
  
                  callback(json && json.code === 0 ? json.absHref : null);
              });
          },
  
          checkItem = function (item) {
  
              var type = null;
  
              if (_.contains(settings.img, item.type)) {
                  type = 'img';
              } else if (_.contains(settings.mov, item.type)) {
                  type = 'mov';
              } else if (_.contains(settings.doc, item.type)) {
                  type = 'doc';
              }
  
              if (type) {
                  if (item.thumbSquare) {
                      item.$view.find('.icon.square img').addClass('thumb').attr('src', item.thumbSquare);
                  } else {
                      requestThumb(type, item.absHref, 'square', 1, function (src) {
  
                          if (src && item.$view) {
                              item.thumbSquare = src;
                              item.$view.find('.icon.square img').addClass('thumb').attr('src', src);
                          }
                      });
                  }
                  if (item.thumbRational) {
                      item.$view.find('.icon.rational img').addClass('thumb').attr('src', item.thumbRational);
                  } else {
                      requestThumb(type, item.absHref, 'rational', 2, function (src) {
  
                          if (src && item.$view) {
                              item.thumbRational = src;
                              item.$view.find('.icon.rational img').addClass('thumb').attr('src', src);
                          }
                      });
                  }
              }
          },
  
          onLocationChanged = function (item) {
  
              setTimeout(function () {
  
                  _.each(item.content, checkItem);
              }, settings.delay);
          },
  
          onLocationRefreshed = function (item, added, removed) {
  
              _.each(added, checkItem);
          },
  
          init = function () {
  
              if (!settings.enabled || !server.api) {
                  return;
              }
  
              event.sub('location.changed', onLocationChanged);
              event.sub('location.refreshed', onLocationRefreshed);
          };
  
      init();
  });
  