Skip to content
Snippets Groups Projects
macro.js 1.33 KiB
Newer Older
Brandon Bergren's avatar
Brandon Bergren committed
/**
 * @file
 * GMap macro widget and macro compiler.
 */

/*global Drupal */

/**
 * Widget handler.
 */
Brandon Bergren's avatar
Brandon Bergren committed
Drupal.gmap.addHandler('macrotext', function (elem) {
  var obj = this;
  obj.macrostorage = {};

Brandon Bergren's avatar
Brandon Bergren committed
  obj.bind("widthchange", function (w) {
    obj.macrostorage.width = w;
  });
Brandon Bergren's avatar
Brandon Bergren committed
  obj.bind("heightchange", function (h) {
    obj.macrostorage.height = h;
  });

  // Basic macros.
Brandon Bergren's avatar
Brandon Bergren committed
  obj.bind('buildmacro', function (add) {
    add.push('zoom=' + obj.vars.zoom);
    add.push('center=' + obj.vars.latitude + ',' + obj.vars.longitude);
    add.push('width=' + obj.macrostorage.width);
    add.push('height=' + obj.macrostorage.height);
    if (obj.vars.macro_mapid && obj.vars.macro_mapid !== '') {
      add.push('id=' + obj.vars.macro_mapid);
Brandon Bergren's avatar
Brandon Bergren committed
    add.push('control=' + obj.vars.controltype);
    // @@@ Use maptype instead, accept old and new.
Brandon Bergren's avatar
Brandon Bergren committed
    add.push('type=' + obj.vars.maptype);
  });


  // Update macro every time something happens.
Brandon Bergren's avatar
Brandon Bergren committed
  obj.bind('all', function (name) {
    if (name !== 'buildmacro') {
      var add = [];
      // Collect macro pieces.
Brandon Bergren's avatar
Brandon Bergren committed
      obj.change('buildmacro', -1, add);
      elem.value = '[gmap ' + add.join(' |') + ']';
    }
  });
});

/**
 * Extensible macros @@@
 */
Brandon Bergren's avatar
Brandon Bergren committed
Drupal.gmap.map.prototype.parse = function (m) {
  // Trim off outside tag
Brandon Bergren's avatar
Brandon Bergren committed
  if (m.substr(0, 5) === '[gmap') {
    m = m.slice(6, -1);