Усовершенствование плагина ImageManager для WordPress

07.01.2007г. // Рубрики: web, cms
Вчера делал картинную галерею для сайта одной знакомой на базе этого плагина версии 2.37 и нарвался на засаду: фотки сделаны с разрешением примерно 1000 x 1200 и знакомая уперлась - ни в какую не хотела уменьшать их. Плагин такие фотки выводит в окошке в обрезанном виде. :-| Ужоснах.
Решение получилось такое: добавляем параметры width и height для выводимой картинки, а их значения вычисляем исходя из требования, чтобы в экран поместилась целиком.
Итак, ищем в архиве plug-in-а файлик под названием imagemanager-plugin.php и чуток его подправим.

Имеем следующее:
function ps_imagemanager_popup(imgurl,title,w,h) {
lpos=(screen.width)?(screen.width-w)/2:100;
tpos=(screen.height)?(screen.height-h)/2:100;
settings='width='+w+',height='+h+',top='+tpos+',left='+lpos+',scrollbars=no, location=no,directories=no,status=no,menubar=no,toolbar=no,resizable=yes';


Видоизменяем на (курсивом выделил, что добавилось):
function ps_imagemanager_popup(imgurl,title,w,h) {
lpos=(screen.width)?(screen.width-w)/2:100;
tpos=(screen.height)?(screen.height-h)/2:100;
var maxW = screen.availWidth*0.95;
var maxH = screen.availHeight*0.95;
var new_w; var new_h;

if (! ((w<=maxW) && (h<=maxH)) ) {
  if (parseInt(w) >= parseInt(h)) {
    new_w = maxW;
    new_h = new_w * h / w;
  }
  else {
    new_h = maxH;
    new_w = new_h * w / h;
  }
  h = parseInt(new_h); w = parseInt(new_w);
}

settings='width='+w+',height='+h+',top='+tpos+',left='+lpos+',scrollbars=no, location=no,directories=no,status=no,menubar=no,toolbar=no,resizable=yes';


Пониже находим строчку
doc += '<img style="cursor:pointer;" src="' + imgurl + '" title="' + title + '" onclick="self.close();"/>';
убиваем ее и вместо ставим свою:
doc += '<img style="cursor:pointer;" src="' + imgurl + '" title="' + title + '" width="' + w + 'px" height="' + h + 'px" onclick="self.close();" />';
Проверяем - вуаля, всё работает!

Рубрики