Проверка размера постера 1.1

Проверка размера постера в шаблоне для релиза

  1. Bender
    Совместимость:
    проверялся на совместимость
    Изменения в БД:
    не требуются
    Общественное достояние:
    нет
    Установить по инструкции или же просто заменить файлы с архива
    используем вот так poster[img,POSTER,req,WxH:500x500]
    рип аддона с rutracker.org

    2016-06-27_163012.png
    Инструкция по установке:
    Добавить в jquery.pack.js

    Код:
    Добавить в jquery.pack.js
    ;// js/lib/jquery/jquery.imagesloaded.js
    !function(a,b){"use strict";var c="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";a.fn.imagesLoaded=function(d){function e(){var b=a(l),c=a(m);h&&(m.length?h.reject(j,b,c):h.resolve(j)),a.isFunction(d)&&d.call(g,j,b,c)}function f(b,d){b.src!==c&&-1===a.inArray(b,k)&&(k.push(b),d?m.push(b):l.push(b),a.data(b,"imagesLoaded",{isBroken:d,src:b.src}),i&&h.notifyWith(a(b),[d,j,a(l),a(m)]),j.length===k.length&&(setTimeout(e),j.unbind(".imagesLoaded")))}var g=this,h=a.isFunction(a.Deferred)?a.Deferred():0,i=a.isFunction(h.notify),j=g.find("img").add(g.filter("img")),k=[],l=[],m=[];return a.isPlainObject(d)&&a.each(d,function(a,b){"callback"===a?d=b:h&&h[a](b)}),j.length?j.bind("load.imagesLoaded error.imagesLoaded",function(a){f(a.target,"error"===a.type)}).each(function(d,e){var g=e.src,h=a.data(e,"imagesLoaded");return h&&h.src===g?void f(e,h.isBroken):e.complete&&e.naturalWidth!==b?void f(e,0===e.naturalWidth||0===e.naturalHeight):void((e.readyState||e.complete)&&(e.src=c,e.src=g))}):e(),h?h.promise(g):g}}(jQuery);
    
    Найти
       // количество найденных ошибок при заполнении формы
    
    Вставить перед
    
       images: {/* {img_id: Image()} */},  // загружаемые для проверки картинки
       img_wait_load: {/* {img_id: timer_id} */},  // для задержки submit пока картинки не загрузятся ИЛИ же загрузка не отвалится по timeout
       img_load_timeout: 10000,  // ms; отмена проверки, если картинка не успела полностью загрузится за это время
    
       load_and_check_img: function(el, img_url, max_W, max_H) {
         var img_id = $P.md5(''+el+img_url.toLowerCase());
    
         if ( !(img_id in TPL.images) ) {
           TPL.images[img_id] = new Image();
           TPL.images[img_id].src = img_url;
         }
         // submit будет задержан, пока TPL.img_wait_load не пустой
         TPL.img_wait_load[img_id] = setTimeout(function(){
           TPL.cancel_wait_load(img_id);
         }, TPL.img_load_timeout);
         $(TPL.images[img_id]).imagesLoaded( function(){ TPL.check_img_size(img_id, el, max_W, max_H) } );
         TPL.add_loading_icon(el, img_id);
       },
    
       check_img_size: function(img_id, el, max_W, max_H) {
         TPL.cancel_wait_load(img_id);
         var img = TPL.images[img_id];
         if (img.width > max_W || img.height > max_H) {
           var err_msg_id = 'big_img_'+ img_id;
           TPL.err_msg[err_msg_id] = 'Максимальные ширина и высота должны быть <b>'+ max_W +'</b>x<b>'+ max_H +'</b>. У вас <b>'+ img.width +'</b>x<b>'+ img.height +'</b>';
           TPL.hl_form_err(el, err_msg_id);
         }
       },
       cancel_wait_load: function(img_id) {
         $(TPL.images[img_id]).unbind('.imagesLoaded');
         if (TPL.img_wait_load[img_id] != null) {
           clearTimeout(TPL.img_wait_load[img_id]);
           delete(TPL.img_wait_load[img_id]);
         }
         TPL.remove_loading_icon(img_id);
       },
       add_loading_icon: function(el, img_id) {
         var el_id = TPL.get_el_id(el);
         $('#'+el_id).parent('td').append('<div id="'+img_id+'" class="tpl-loading-icon"><i class="loading-1">загружается...</i></div>');
         $('#'+img_id).siblings('input[type="text"]').prop({readonly: true});
       },
       remove_loading_icon: function(img_id) {
         $('#'+img_id).siblings('input[type="text"]').prop({readonly: false});
         $('#'+img_id).remove();
       },
       disable_submit_btn: function() {
         $('#tpl-submit-btn').val('загружается...').prop({disabled: true});
       },
       enable_submit_btn: function() {
         if ( $.isEmptyObject(TPL.img_wait_load) ) {
           $('#tpl-submit-btn').val('Продолжить').prop({disabled: false});
         }
       },
    
    Найти
         img_tag : /(https?:\/\/[^\s\?&;:=\#\"<>]+\.(jpg|jpeg|gif|png)(?!\[|\]|\.))/ig
    
    Заменить
    
         img_tag : /(https?:\/\/[^\s\?&;:=\#\"<>]+\.(jpg|jpeg|gif|png)(?!\[|\]|\.))/ig,
         img_WxH : /^WxH:(\d+)x(\d+)$/
    
    Найти
    
           if ($.inArray('img', at) != -1 && !TPL.reg['img'].test(el_val)) {
             TPL.hl_form_err(el, 'not_img');
             return true; // continue
           }
    
    Заменить
    
           if ($.inArray('img', at) != -1) {
             if (!TPL.reg['img'].test(el_val)) {
               TPL.hl_form_err(el, 'not_img');
               return true; // continue
             }
             else {
               if ($.inArray('POSTER', at) != -1) {
                 var WxH = $.grep( at, function(n,i){ return n.match(TPL.reg['img_WxH']) });
                 if ( WxH.length && (m = WxH[0].match(TPL.reg['img_WxH'])) ) {
                   TPL.load_and_check_img(el, el_val, m[1], m[2]);
                 }
               }
             }
           }
    
    Найти
       // удаление подсветки ошибок, сброс счетчика
       reset_f_errors: function() {
    
    Заменить
    
       // удаление подсветки ошибок, сброс счетчика
       reset_f_errors: function() {
         for (var img_id in TPL.images) {
           TPL.cancel_wait_load(img_id);
         }
         TPL.f_errors_cnt = 0;
         $('tr.tpl-err-hl-tr').removeClass('tpl-err-hl-tr');
         $('.tpl-err-hl-input').removeClass('tpl-err-hl-input');
         $('div.tpl-err-hint').remove();
       },
    
    Найти
    
    function tpl_submit ()
    
    Заменить
    
    function tpl_build_and_submit ()
    {
       if ( TPL.build_msg_all('tpl-post-message', 'tpl-post-subject') ) {
         tpl_submit();
       }
    }
    
    function tpl_submit ()
    {
       if ( !$.isEmptyObject(TPL.img_wait_load) ) {
         TPL.disable_submit_btn();
         setTimeout(function(){ tpl_submit(); }, 1000);
       }
       else {
         if (!TPL.f_errors_cnt) {
           $('#tpl-post-form').submit();
         }
         TPL.enable_submit_btn();
       }
    }
    
    Найти
         <input type="button" value="Продолжить" class="bold" style="width: 150px;" onclick="tpl_submit(true);" />
    
    Заменить
    
         <input type="button" value="Продолжить" class="bold" style="width: 150px;" onclick="tpl_build_and_submit();" />
    

Последние обнoвления

  1. Дороботка