Changeset 9020


Ignore:
Timestamp:
01/31/11 23:31:11 (9 years ago)
Author:
grum
Message:

release 3.4.2

bug:2162

Location:
extensions/GrumPluginClasses
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • extensions/GrumPluginClasses/gpc_version.inc.php

    r9009 r9020  
    1515  if(!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!'); 
    1616 
    17   if(!defined('GPC_VERSION')) define('GPC_VERSION',  '3.4.1'); 
    18   if(!defined('GPC_VERSION2')) define('GPC_VERSION2', '03.04.01'); 
     17  if(!defined('GPC_VERSION')) define('GPC_VERSION',  '3.4.2'); 
     18  if(!defined('GPC_VERSION2')) define('GPC_VERSION2', '03.04.02'); 
    1919?> 
  • extensions/GrumPluginClasses/js/ui.inputText.js

    r8961 r9020  
    22 * ----------------------------------------------------------------------------- 
    33 * file: ui.inputText.js 
    4  * file version: 1.1.0 
     4 * file version: 1.1.1 
    55 * date: 2011-01-09 
    66 * 
     
    2929 * |         |            | * add multilanguage managment 
    3030 * |         |            | 
     31 * | 1.1.1   | 2011/01/31 | * add function ':clear' for 'languageValues' method 
     32 * |         |            | 
     33 * |         |            | 
     34 * |         |            | 
     35 * |         |            | 
     36 * |         |            | 
    3137 * |         |            | 
    3238 * |         |            | 
     
    804810              properties=object.data('properties'); 
    805811 
    806           for(var langValue in value) 
    807           { 
    808             if(properties.languagesValues[langValue]!=null) 
    809                 privateMethods.setLanguageValue(object, langValue, value[langValue], langValue==options.currentLanguage); 
     812          if(value==':clear') 
     813          { 
     814            for(var langValue in properties.languagesValues) 
     815            { 
     816              privateMethods.setLanguageValue(object, langValue, '', langValue==options.currentLanguage); 
     817            } 
     818          } 
     819          else if(!$.isEmptyObject(value)) 
     820          { 
     821            for(var langValue in value) 
     822            { 
     823              if(properties.languagesValues[langValue]!=null) 
     824                  privateMethods.setLanguageValue(object, langValue, value[langValue], langValue==options.currentLanguage); 
     825            } 
    810826          } 
    811827 
  • extensions/GrumPluginClasses/js/ui.inputText.min.js

    r8961 r9020  
    1 /* file: ui.inputText.js - v1.0.0 | minified on 2011/01/27 with http://jscompress.com/ */ 
    2 (function($) 
    3 {var publicMethods={init:function(opt) 
    4 {return this.each(function() 
    5 {var $this=$(this),data=$this.data('options'),objects=$this.data('objects'),properties=$this.data('properties'),options={languages:[],currentLanguage:'',languagesValues:{},languageSelector:'',multilines:false,disabled:false,textAlign:'left',displayChar:0,maxChar:0,numRows:1,regExp:'',value:'',change:null};if(options.value==''&&$.trim($this.html())!='')options.value=$.trim($this.html());$this.data('options',options);if(!properties) 
    6 {$this.data('properties',{initialized:false,re:/.*/,value:0,isValid:true,languagesValues:{}});properties=$this.data('properties');} 
    7 if(!objects) 
    8 {objects={container:$('<div/>',{'class':'ui-inputText',css:{width:'100%'}}).bind('click.inputText',function() 
    9 {objects.input.focus();}),input:null};$this.html('').append(objects.container);$this.data('objects',objects);} 
    10 privateMethods.setOptions($this,opt);});},destroy:function() 
    11 {return this.each(function() 
    12 {var $this=$(this),objects=$this.data('objects');objects.input.unbind().remove();objects.container.unbind().remove();$this.unbind('.inputText').css({width:'',height:''});});},options:function(value) 
    13 {return(this.each(function() 
    14 {privateMethods.setOptions($(this),value);}));},disabled:function(value) 
    15 {if(value!=null) 
    16 {return(this.each(function() 
    17 {privateMethods.setDisabled($(this),value);}));} 
    18 else 
    19 {var options=this.data('options');if(options) 
    20 {return(options.disabled);} 
    21 else 
    22 {return('');}}},textAlign:function(value) 
    23 {if(value!=null) 
    24 {return(this.each(function() 
    25 {privateMethods.setTextAlign($(this),value);}));} 
    26 else 
    27 {var options=this.data('options');if(options) 
    28 {return(options.textAlign);} 
    29 else 
    30 {return('');}}},displayChar:function(value) 
    31 {if(value!=null) 
    32 {return(this.each(function() 
    33 {privateMethods.setDisplayChar($(this),value);}));} 
    34 else 
    35 {var options=this.data('options');if(options) 
    36 {return(options.displayChar);} 
    37 else 
    38 {return('');}}},maxChar:function(value) 
    39 {if(value!=null) 
    40 {return(this.each(function() 
    41 {privateMethods.setMaxChar($(this),value);}));} 
    42 else 
    43 {var options=this.data('options');if(options) 
    44 {return(options.maxChar);} 
    45 else 
    46 {return('');}}},numRows:function(value) 
    47 {if(value!=null) 
    48 {return(this.each(function() 
    49 {privateMethods.setNumRows($(this),value);}));} 
    50 else 
    51 {var options=this.data('options');if(options) 
    52 {return(options.numRows);} 
    53 else 
    54 {return('');}}},regExp:function(value) 
    55 {if(value!=null) 
    56 {return(this.each(function() 
    57 {privateMethods.setRegExp($(this),value);}));} 
    58 else 
    59 {var options=this.data('options');if(options) 
    60 {return(options.regExp);} 
    61 else 
    62 {return('');}}},multilines:function() 
    63 {var properties=this.data('properties');return(properties.multilines);},languages:function(value) 
    64 {if(value!=null) 
    65 {return(this.each(function() 
    66 {privateMethods.setLanguages($(this),value);}));} 
    67 else 
    68 {var options=this.data('options');return(options.languages);}},currentLanguage:function(value) 
    69 {if(value!=null) 
    70 {return(this.each(function() 
    71 {privateMethods.setCurrentLanguage($(this),value);}));} 
    72 else 
    73 {var options=this.data('options');return(options.currentLanguage);}},languageSelector:function(value) 
    74 {if(value!=null) 
    75 {return(this.each(function() 
    76 {privateMethods.setLanguageSelector($(this),value);}));} 
    77 else 
    78 {var options=this.data('options');return(options.languageSelector);}},languagesValues:function(value) 
    79 {if(value!=null) 
    80 {return(this.each(function() 
    81 {privateMethods.setLanguagesValues($(this),value);}));} 
    82 else 
    83 {var properties=this.data('properties');return(properties.languagesValues);}},value:function(value,language) 
    84 {if(value!=null) 
    85 {var options=this.data('options');return(this.each(function() 
    86 {if(language!=null) 
    87 {privateMethods.setLanguageValue($(this),language,value,options.currentLanguage==language);} 
    88 else 
    89 {privateMethods.setValue($(this),value,true);}}));} 
    90 else 
    91 {var properties=this.data('properties');return(properties.value);}},isValid:function(value) 
    92 {if(value!=null) 
    93 {return(this.each(function() 
    94 {privateMethods.setIsValid($(this),value);}));} 
    95 else 
    96 {var properties=this.data('properties');return(properties.isValid);}},change:function(value) 
    97 {if(value!=null&&$.isFunction(value)) 
    98 {return(this.each(function() 
    99 {privateMethods.setEventChange($(this),value);}));} 
    100 else 
    101 {var options=this.data('options');if(options) 
    102 {return(options.change);} 
    103 else 
    104 {return(null);}}},doTranslation:function() 
    105 {return(this.each(function() 
    106 {privateMethods.doTranslation($(this));}));}};var privateMethods={isValid:function(object,value) 
    107 {var properties=object.data('properties');return(properties.re.exec(value))},setOptions:function(object,value) 
    108 {var properties=object.data('properties'),options=object.data('options');if(!$.isPlainObject(value))return(false);properties.initialized=false;privateMethods.setMultilines(object,(value.multilines!=null)?value.multilines:options.multilines);privateMethods.setDisplayChar(object,(value.displayChar!=null)?value.displayChar:options.displayChar);privateMethods.setMaxChar(object,(value.maxChar!=null)?value.maxChar:options.maxChar);privateMethods.setNumRows(object,(value.numRows!=null)?value.numRows:options.numRows);privateMethods.setRegExp(object,(value.regExp!=null)?value.regExp:options.regExp);privateMethods.setLanguages(object,(value.languages!=null)?value.languages:options.languages);privateMethods.setLanguagesValues(object,(value.languagesValues!=null)?value.languagesValues:options.languagesValues);privateMethods.setCurrentLanguage(object,(value.currentLanguage!=null)?value.currentLanguage:options.currentLanguage);privateMethods.setLanguageSelector(object,(value.languageSelector!=null)?value.languageSelector:options.languageSelector);if((properties.languagesValues[options.currentLanguage]!=null&&properties.languagesValues[options.currentLanguage]!=''||properties.languagesValues[options.currentLanguage]==null)&&(value.value!=null&&value.value!=''||options.value!=''))privateMethods.setValue(object,(value.value!=null)?value.value:options.value,true);privateMethods.setTextAlign(object,(value.textAlign!=null)?value.textAlign:options.textAlign);privateMethods.setEventChange(object,(value.change!=null)?value.change:options.change);properties.initialized=true;},setRegExp:function(object,value) 
    109 {var properties=object.data('properties'),flagRE=/^\/(.*)\/(.*)$/,flags=flagRE.exec(value);if(flags==null) 
    110 {flags=['.*',''];} 
    111 delete properties.re;properties.re=new RegExp(flags[1],flags[2]);},setIsValid:function(object,value) 
    112 {var objects=object.data('objects'),properties=object.data('properties');if(properties.isValid!=value&&properties.initialized) 
    113 {properties.isValid=value;if(properties.isValid) 
    114 {objects.container.removeClass('ui-error');objects.input.removeClass('ui-error');} 
    115 else 
    116 {objects.container.addClass('ui-error');objects.input.addClass('ui-error');}} 
    117 return(properties.isValid);},setDisplayChar:function(object,value) 
    118 {var options=object.data('options'),objects=object.data('objects');properties=object.data('properties');if((!properties.initialized||options.displayChar!=value)&&value>=0) 
    119 {options.displayChar=value;if(options.displayChar>0) 
    120 {if(options.multilines) 
    121 {objects.input.attr('cols',options.displayChar);} 
    122 else 
    123 {objects.input.attr('size',options.displayChar);}} 
    124 else 
    125 {if(options.multilines) 
    126 {objects.input.removeAttr('size');} 
    127 else 
    128 {objects.input.removeAttr('cols');}}} 
    129 if(object.width()>0) 
    130 {objects.input.css({'width':object.width()+'px','max-width':object.width()+'px'});} 
    131 return(options.displayChar);},setMaxChar:function(object,value) 
    132 {var options=object.data('options'),objects=object.data('objects'),properties=object.data('properties');if((!properties.initialized||options.maxChar!=value)&&value>=0) 
    133 {options.maxChar=value;if(!options.multilines) 
    134 {if(options.maxChar>0) 
    135 {objects.input.attr('maxlength',options.maxChar);} 
    136 else 
    137 {objects.input.removeAttr('maxlength');}}} 
    138 return(options.maxChar);},setNumRows:function(object,value) 
    139 {var options=object.data('options'),objects=object.data('objects'),properties=object.data('properties');if((!properties.initialized||options.numRows!=value)&&value>0) 
    140 {options.numRows=value;if(options.multilines) 
    141 {objects.input.attr('rows',options.numRows);}} 
    142 return(options.numRows);},setDisabled:function(object,value) 
    143 {var options=object.data('options'),objects=object.data('objects'),properties=object.data('properties');if((!properties.initialized||options.disabled!=value)&&(value==true||value==false)) 
    144 {options.disabled=value;objects.input.attr('disabled',options.disabled);} 
    145 return(options.disabled);},setTextAlign:function(object,value) 
    146 {var options=object.data('options'),objects=object.data('objects'),properties=object.data('properties');if((!properties.initialized||options.textAlign!=value)&&(value=='left'||value=='right')) 
    147 {options.textAlign=value;objects.input.css('text-align',options.textAlign);} 
    148 return(options.textAlign);},setMultilines:function(object,value) 
    149 {var options=object.data('options'),objects=object.data('objects'),properties=object.data('properties');if((!properties.initialized||options.multilines!=value)&&(value==true||value==false)) 
    150 {options.multilines=value;if(options.multilines) 
    151 {objects.input=$('<textarea/>');} 
    152 else 
    153 {objects.input=$('<input>',{type:"text",value:''});} 
    154 objects.container.append(objects.input.bind('keyup.inputText',function(event) 
    155 {return(privateMethods.keyUp(object,event));}).bind('change.inputText',function(event) 
    156 {return(privateMethods.change(object,event));}).bind('keydown.inputText',function(event) 
    157 {return(privateMethods.keyDown(object,event));}));} 
    158 return(options.textAlign);},setLanguages:function(object,value) 
    159 {var properties=object.data('properties'),options=object.data('options');options.languages=value;options.languagesValues={};if(options.languages.length>0) 
    160 {if($.inArray(options.currentLanguage,options.languages)<0||options.currentLanguage=='')options.currentLanguage=options.languages[0];for(var i=0;i<options.languages.length;i++) 
    161 {properties.languagesValues[options.languages[i]]='';}} 
    162 else 
    163 {options.currentLanguage='';} 
    164 return(options.languages);},setLanguagesValues:function(object,value) 
    165 {var options=object.data('options'),properties=object.data('properties');for(var langValue in value) 
    166 {if(properties.languagesValues[langValue]!=null) 
    167 privateMethods.setLanguageValue(object,langValue,value[langValue],langValue==options.currentLanguage);} 
    168 return(properties.languagesValues);},setLanguageValue:function(object,language,value,updateInput) 
    169 {var options=object.data('options'),properties=object.data('properties');if(properties.languagesValues[language]!=null) 
    170 {properties.languagesValues[language]=value;if(updateInput)privateMethods.setValue(object,properties.languagesValues[options.currentLanguage],true);} 
    171 return(options.languagesValues);},setCurrentLanguage:function(object,value) 
    172 {var options=object.data('options'),properties=object.data('properties');if((!properties.initialized||options.currentLanguage!=value)&&$.inArray(value,options.languages)>=0) 
    173 {options.currentLanguage=value;privateMethods.setValue(object,properties.languagesValues[options.currentLanguage],true);} 
    174 return(options.currentLanguage);},setLanguageSelector:function(object,value) 
    175 {var options=object.data('options'),properties=object.data('properties');if((!properties.initialized||options.languageSelector!=value)&&value!=''&&$('#'+value).length>0) 
    176 {if(options.languageSelector!='')$('#'+options.languageSelector).unbind('inputListChange');options.languageSelector=value;if(options.languageSelector!='') 
    177 $('#'+options.languageSelector).bind('inputListChange',function(event,lang) 
    178 {privateMethods.setCurrentLanguage(object,lang);});} 
    179 return(options.currentLanguage);},setValue:function(object,value,apply) 
    180 {var options=object.data('options'),properties=object.data('properties'),objects=object.data('objects');if(properties.initialized&&properties.value==value) 
    181 {return(properties.value);} 
    182 privateMethods.setIsValid(object,true);properties.value=value;if(apply) 
    183 {objects.input.val(properties.value);} 
    184 if(options.currentLanguage!='')privateMethods.setLanguageValue(object,options.currentLanguage,value,false);if(options.change)object.trigger('inputTextChange',properties.value);return(properties.value);},setEventChange:function(object,value) 
    185 {var options=object.data('options');options.change=value;object.unbind('inputTextChange');if(value)object.bind('inputTextChange',options.change);return(options.change);},keyUp:function(object,event) 
    186 {var objects=object.data('objects');if(event.keyCode==9||event.keyCode==12||event.keyCode==16||event.keyCode==17||event.keyCode==18||event.keyCode==33||event.keyCode==34||event.keyCode==35||event.keyCode==36||event.keyCode==37||event.keyCode==38||event.keyCode==39||event.keyCode==40||event.keyCode==45||event.keyCode==93)return(false);return(privateMethods.setValue(object,objects.input.val(),false));},change:function(object,event) 
    187 {var objects=object.data('objects');return(privateMethods.setValue(object,objects.input.val(),false))},keyDown:function(object,event) 
    188 {var objects=object.data('objects'),options=object.data('options');if(options.maxChar>0&&objects.input.val().length>=options.maxChar&&!(event.keyCode==8||event.keyCode==9||event.keyCode==12||event.keyCode==16||event.keyCode==17||event.keyCode==18||event.keyCode==33||event.keyCode==34||event.keyCode==35||event.keyCode==36||event.keyCode==37||event.keyCode==38||event.keyCode==39||event.keyCode==40||event.keyCode==45||event.keyCode==46||event.keyCode==93||objects.input.get(0).selectionStart!=objects.input.get(0).selectionEnd))return(false);},doTranslation:function(object) 
    189 {var objects=object.data('objects'),properties=object.data('properties'),options=object.data('options');if(googleTranslate!=null) 
    190 {googleTranslate(properties.value,'',options.currentLanguage.substr(0,2),function(result) 
    191 {privateMethods.setValue(object,result,true);});}}};$.fn.inputText=function(method) 
    192 {if(publicMethods[method]) 
    193 {return publicMethods[method].apply(this,Array.prototype.slice.call(arguments,1));} 
    194 else if(typeof method==='object'||!method) 
    195 {return publicMethods.init.apply(this,arguments);} 
    196 else 
    197 {$.error('Method '+method+' does not exist on jQuery.inputText');}}})(jQuery); 
     1/* file: ui.inputText.js - v1.1.1 | minified on 2011/01/31 with http://jscompress.com/ */ 
     2/** 
     3 * ----------------------------------------------------------------------------- 
     4 * file: ui.inputText.js 
     5 * file version: 1.1.0 
     6 * date: 2011-01-09 
     7 * 
     8 * A jQuery plugin provided by the piwigo's plugin "GrumPluginClasses" 
     9 * 
     10 * ----------------------------------------------------------------------------- 
     11 * Author     : Grum 
     12 *   email    : grum@piwigo.com 
     13 *   website  : http://photos.grum.fr 
     14 *   PWG user : http://forum.phpwebgallery.net/profile.php?id=3706 
     15 * 
     16 *   << May the Little SpaceFrog be with you ! >> 
     17 * ----------------------------------------------------------------------------- 
     18 * 
     19 * 
     20 * 
     21 * 
     22 * :: HISTORY :: 
     23 * 
     24 * | release | date       | 
     25 * | 1.0.0   | 2010/11/04 | * first release 
     26 * |         |            | 
     27 * | 1.1.0   | 2011/01/09 | * if div content is not empty and text value not 
     28 * |         |            |   defined, use of div content to define text value 
     29 * |         |            | 
     30 * |         |            | * add multilanguage managment 
     31 * |         |            | 
     32 * |         |            | 
     33 * |         |            | 
     34 * 
     35 */ 
     36 
     37 
     38 
     39( 
     40  function($) 
     41  { 
     42    /* 
     43     * plugin 'public' functions 
     44     */ 
     45    var publicMethods = 
     46    { 
     47      init : function (opt) 
     48        { 
     49          return this.each(function() 
     50            { 
     51              // default values for the plugin 
     52              var $this=$(this), 
     53                  data = $this.data('options'), 
     54                  objects = $this.data('objects'), 
     55                  properties = $this.data('properties'), 
     56                  options = 
     57                    { 
     58                      languages:[], 
     59                      currentLanguage:'', 
     60                      languagesValues:{}, 
     61                      languageSelector:'', 
     62                      multilines:false, 
     63                      disabled:false, 
     64                      textAlign:'left', 
     65                      displayChar:0, 
     66                      maxChar:0, 
     67                      numRows:1, 
     68                      regExp:'', 
     69                      value:'', 
     70                      change:null 
     71                    }; 
     72 
     73              // if options given, merge it 
     74              // if(opt) $.extend(options, opt); ==> options are set by setters 
     75              if(options.value=='' && $.trim($this.html())!='') options.value=$.trim($this.html()); 
     76 
     77              $this.data('options', options); 
     78 
     79              if(!properties) 
     80              { 
     81                $this.data('properties', 
     82                  { 
     83                    initialized:false, 
     84                    re:/.*/, 
     85                    value:0, 
     86                    isValid:true, 
     87                    languagesValues:{} 
     88                  } 
     89                ); 
     90                properties=$this.data('properties'); 
     91              } 
     92 
     93              if(!objects) 
     94              { 
     95                objects = 
     96                  { 
     97                    container:$('<div/>', 
     98                        { 
     99                          'class':'ui-inputText', 
     100                          css:{ 
     101                            width:'100%' 
     102                          } 
     103                        } 
     104                    ).bind('click.inputText', 
     105                        function () 
     106                        { 
     107                          objects.input.focus(); 
     108                        } 
     109                      ), 
     110                    input:null 
     111                  }; 
     112 
     113                $this 
     114                  .html('') 
     115                  .append(objects.container); 
     116 
     117                $this.data('objects', objects); 
     118              } 
     119 
     120              privateMethods.setOptions($this, opt); 
     121            } 
     122          ); 
     123        }, // init 
     124      destroy : function () 
     125        { 
     126          return this.each( 
     127            function() 
     128            { 
     129              // default values for the plugin 
     130              var $this=$(this), 
     131                  objects = $this.data('objects'); 
     132              objects.input.unbind().remove(); 
     133              objects.container.unbind().remove(); 
     134              $this 
     135                .unbind('.inputText') 
     136                .css( 
     137                  { 
     138                    width:'', 
     139                    height:'' 
     140                  } 
     141                ); 
     142            } 
     143          ); 
     144        }, // destroy 
     145 
     146      options: function (value) 
     147        { 
     148          return( 
     149            this.each( 
     150              function() 
     151              { 
     152                privateMethods.setOptions($(this), value); 
     153              } 
     154            ) 
     155          ); 
     156        }, // options 
     157 
     158      disabled: function (value) 
     159        { 
     160          if(value!=null) 
     161          { 
     162            return( 
     163              this.each( 
     164                function() 
     165                { 
     166                  privateMethods.setDisabled($(this), value); 
     167                } 
     168              ) 
     169            ); 
     170          } 
     171          else 
     172          { 
     173            var options = this.data('options'); 
     174 
     175            if(options) 
     176            { 
     177              return(options.disabled); 
     178            } 
     179            else 
     180            { 
     181              return(''); 
     182            } 
     183          } 
     184        }, // disabled 
     185 
     186      textAlign: function (value) 
     187        { 
     188          if(value!=null) 
     189          { 
     190            return( 
     191              this.each( 
     192                function() 
     193                { 
     194                  privateMethods.setTextAlign($(this), value); 
     195                } 
     196              ) 
     197            ); 
     198          } 
     199          else 
     200          { 
     201            var options = this.data('options'); 
     202 
     203            if(options) 
     204            { 
     205              return(options.textAlign); 
     206            } 
     207            else 
     208            { 
     209              return(''); 
     210            } 
     211          } 
     212        }, // textAlign 
     213 
     214      displayChar: function (value) 
     215        { 
     216          if(value!=null) 
     217          { 
     218            return( 
     219              this.each( 
     220                function() 
     221                { 
     222                  privateMethods.setDisplayChar($(this), value); 
     223                } 
     224              ) 
     225            ); 
     226          } 
     227          else 
     228          { 
     229            var options = this.data('options'); 
     230 
     231            if(options) 
     232            { 
     233              return(options.displayChar); 
     234            } 
     235            else 
     236            { 
     237              return(''); 
     238            } 
     239          } 
     240        }, // displayChar 
     241 
     242      maxChar: function (value) 
     243        { 
     244          if(value!=null) 
     245          { 
     246            return( 
     247              this.each( 
     248                function() 
     249                { 
     250                  privateMethods.setMaxChar($(this), value); 
     251                } 
     252              ) 
     253            ); 
     254          } 
     255          else 
     256          { 
     257            var options = this.data('options'); 
     258 
     259            if(options) 
     260            { 
     261              return(options.maxChar); 
     262            } 
     263            else 
     264            { 
     265              return(''); 
     266            } 
     267          } 
     268        }, // maxChar 
     269 
     270      numRows: function (value) 
     271        { 
     272          if(value!=null) 
     273          { 
     274            return( 
     275              this.each( 
     276                function() 
     277                { 
     278                  privateMethods.setNumRows($(this), value); 
     279                } 
     280              ) 
     281            ); 
     282          } 
     283          else 
     284          { 
     285            var options = this.data('options'); 
     286 
     287            if(options) 
     288            { 
     289              return(options.numRows); 
     290            } 
     291            else 
     292            { 
     293              return(''); 
     294            } 
     295          } 
     296        }, // numRows 
     297 
     298      regExp: function (value) 
     299        { 
     300          if(value!=null) 
     301          { 
     302            return( 
     303              this.each( 
     304                function() 
     305                { 
     306                  privateMethods.setRegExp($(this), value); 
     307                } 
     308              ) 
     309            ); 
     310          } 
     311          else 
     312          { 
     313            var options = this.data('options'); 
     314 
     315            if(options) 
     316            { 
     317              return(options.regExp); 
     318            } 
     319            else 
     320            { 
     321              return(''); 
     322            } 
     323          } 
     324        }, // regExp 
     325 
     326      multilines: function () 
     327        { 
     328          // return the selected tags 
     329          var properties=this.data('properties'); 
     330          return(properties.multilines); 
     331        }, // multilines 
     332 
     333      languages: function (value) 
     334        { 
     335          if(value!=null) 
     336          { 
     337            // set the known languages 
     338            return( 
     339              this.each( 
     340                function() 
     341                { 
     342                  privateMethods.setLanguages($(this), value); 
     343                } 
     344              ) 
     345            ); 
     346          } 
     347          else 
     348          { 
     349            // return the known languages 
     350            var options = this.data('options'); 
     351            return(options.languages); 
     352          } 
     353        }, 
     354 
     355      currentLanguage: function (value) 
     356        { 
     357          if(value!=null) 
     358          { 
     359            // set the current language 
     360            return( 
     361              this.each( 
     362                function() 
     363                { 
     364                  privateMethods.setCurrentLanguage($(this), value); 
     365                } 
     366              ) 
     367            ); 
     368          } 
     369          else 
     370          { 
     371            // return the current language 
     372            var options = this.data('options'); 
     373            return(options.currentLanguage); 
     374          } 
     375        }, 
     376 
     377      languageSelector: function (value) 
     378        { 
     379          if(value!=null) 
     380          { 
     381            // set the language selector id (inputList object) 
     382            return( 
     383              this.each( 
     384                function() 
     385                { 
     386                  privateMethods.setLanguageSelector($(this), value); 
     387                } 
     388              ) 
     389            ); 
     390          } 
     391          else 
     392          { 
     393            // return the language selector id 
     394            var options = this.data('options'); 
     395            return(options.languageSelector); 
     396          } 
     397        }, //languageSelector 
     398 
     399      languagesValues: function (value) 
     400        { 
     401          if(value!=null) 
     402          { 
     403            // set the languages values 
     404            return( 
     405              this.each( 
     406                function() 
     407                { 
     408                  privateMethods.setLanguagesValues($(this), value); 
     409                } 
     410              ) 
     411            ); 
     412          } 
     413          else 
     414          { 
     415            // return the languages values 
     416            var properties=this.data('properties'); 
     417            return(properties.languagesValues); 
     418          } 
     419        }, 
     420 
     421      value: function (value, language) 
     422        { 
     423          if(value!=null) 
     424          { 
     425            var options=this.data('options'); 
     426 
     427            // set selected value 
     428            return( 
     429              this.each( 
     430                function() 
     431                { 
     432                  if(language!=null) 
     433                  { 
     434                    privateMethods.setLanguageValue($(this), language, value, options.currentLanguage==language); 
     435                  } 
     436                  else 
     437                  { 
     438                    privateMethods.setValue($(this), value, true); 
     439                  } 
     440                } 
     441              ) 
     442            ); 
     443          } 
     444          else 
     445          { 
     446            // return the selected tags 
     447            var properties=this.data('properties'); 
     448            return(properties.value); 
     449          } 
     450        }, // value 
     451 
     452      isValid: function (value) 
     453        { 
     454          if(value!=null) 
     455          { 
     456            // set selected value 
     457            return( 
     458              this.each( 
     459                function() 
     460                { 
     461                  privateMethods.setIsValid($(this), value); 
     462                } 
     463              ) 
     464            ); 
     465          } 
     466          else 
     467          { 
     468            // return the selected tags 
     469            var properties=this.data('properties'); 
     470            return(properties.isValid); 
     471          } 
     472        }, // isValid 
     473 
     474      change: function (value) 
     475        { 
     476          if(value!=null && $.isFunction(value)) 
     477          { 
     478            // set selected value 
     479            return( 
     480              this.each( 
     481                function() 
     482                { 
     483                  privateMethods.setEventChange($(this), value); 
     484                } 
     485              ) 
     486            ); 
     487          } 
     488          else 
     489          { 
     490            // return the selected value 
     491            var options=this.data('options'); 
     492 
     493            if(options) 
     494            { 
     495              return(options.change); 
     496            } 
     497            else 
     498            { 
     499              return(null); 
     500            } 
     501          } 
     502        }, // change 
     503 
     504      doTranslation: function () 
     505        { 
     506          // set selected value 
     507          return( 
     508            this.each( 
     509              function() 
     510              { 
     511                privateMethods.doTranslation($(this)); 
     512              } 
     513            ) 
     514          ); 
     515        } // doTranslation 
     516 
     517    }; // methods 
     518 
     519 
     520    /* 
     521     * plugin 'private' methods 
     522     */ 
     523    var privateMethods = 
     524    { 
     525      /** 
     526       * return true is given value is a valid numeric value, according to the 
     527       * rules defined by the object 
     528       * @param Object object 
     529       * @param value 
     530       * @return Bool 
     531       */ 
     532      isValid : function (object, value) 
     533        { 
     534          var properties=object.data('properties'); 
     535 
     536          return(properties.re.exec(value)) 
     537        }, 
     538 
     539      setOptions : function (object, value) 
     540        { 
     541          var properties=object.data('properties'), 
     542              options=object.data('options'); 
     543 
     544          if(!$.isPlainObject(value)) return(false); 
     545 
     546          properties.initialized=false; 
     547 
     548          privateMethods.setMultilines(object, (value.multilines!=null)?value.multilines:options.multilines); 
     549          privateMethods.setDisplayChar(object, (value.displayChar!=null)?value.displayChar:options.displayChar); 
     550          privateMethods.setMaxChar(object, (value.maxChar!=null)?value.maxChar:options.maxChar); 
     551          privateMethods.setNumRows(object, (value.numRows!=null)?value.numRows:options.numRows); 
     552          privateMethods.setRegExp(object, (value.regExp!=null)?value.regExp:options.regExp); 
     553 
     554          privateMethods.setLanguages(object, (value.languages!=null)?value.languages:options.languages); 
     555          privateMethods.setLanguagesValues(object, (value.languagesValues!=null)?value.languagesValues:options.languagesValues); 
     556          privateMethods.setCurrentLanguage(object, (value.currentLanguage!=null)?value.currentLanguage:options.currentLanguage); 
     557          privateMethods.setLanguageSelector(object, (value.languageSelector!=null)?value.languageSelector:options.languageSelector); 
     558 
     559          if((properties.languagesValues[options.currentLanguage]!=null && 
     560              properties.languagesValues[options.currentLanguage]!='' || 
     561              properties.languagesValues[options.currentLanguage]==null) && 
     562             (value.value!=null && value.value!='' || options.value!='') 
     563            ) privateMethods.setValue(object, (value.value!=null)?value.value:options.value, true); 
     564 
     565          privateMethods.setTextAlign(object, (value.textAlign!=null)?value.textAlign:options.textAlign); 
     566 
     567          privateMethods.setEventChange(object, (value.change!=null)?value.change:options.change); 
     568 
     569          properties.initialized=true; 
     570        }, 
     571 
     572      /** 
     573       * define the regular expression used to check validity of a numeric value 
     574       * @param Object object 
     575       */ 
     576      setRegExp : function (object, value) 
     577        { 
     578          var properties=object.data('properties'), 
     579              flagRE=/^\/(.*)\/(.*)$/, 
     580              flags=flagRE.exec(value); 
     581 
     582          if(flags==null) 
     583          { 
     584            flags=['.*', '']; 
     585          } 
     586 
     587          delete properties.re; 
     588          properties.re = new RegExp(flags[1],flags[2]); 
     589        }, 
     590 
     591      setIsValid : function (object, value) 
     592        { 
     593          var objects=object.data('objects'), 
     594              properties=object.data('properties'); 
     595 
     596          if(properties.isValid!=value && properties.initialized) 
     597          { 
     598            properties.isValid=value; 
     599            if(properties.isValid) 
     600            { 
     601              objects.container.removeClass('ui-error'); 
     602              objects.input.removeClass('ui-error'); 
     603            } 
     604            else 
     605            { 
     606              objects.container.addClass('ui-error'); 
     607              objects.input.addClass('ui-error'); 
     608            } 
     609          } 
     610          return(properties.isValid); 
     611        }, 
     612 
     613      setDisplayChar : function (object, value) 
     614        { 
     615          var options=object.data('options'), 
     616              objects=object.data('objects'); 
     617              properties=object.data('properties'); 
     618 
     619          if((!properties.initialized || options.displayChar!=value) && value>=0) 
     620          { 
     621            options.displayChar=value; 
     622            if(options.displayChar>0) 
     623            { 
     624              if(options.multilines) 
     625              { 
     626                objects.input.attr('cols', options.displayChar); 
     627              } 
     628              else 
     629              { 
     630                objects.input.attr('size', options.displayChar); 
     631              } 
     632            } 
     633            else 
     634            { 
     635              if(options.multilines) 
     636              { 
     637                objects.input.removeAttr('size'); 
     638              } 
     639              else 
     640              { 
     641                objects.input.removeAttr('cols'); 
     642              } 
     643            } 
     644          } 
     645          if(object.width()>0) 
     646          { 
     647            objects.input.css( 
     648              { 
     649                'width': object.width()+'px', 
     650                'max-width': object.width()+'px' 
     651              } 
     652            ); 
     653          } 
     654          return(options.displayChar); 
     655        }, 
     656 
     657      setMaxChar : function (object, value) 
     658        { 
     659          var options=object.data('options'), 
     660              objects=object.data('objects'), 
     661              properties=object.data('properties'); 
     662 
     663          if((!properties.initialized || options.maxChar!=value) && value>=0) 
     664          { 
     665            options.maxChar=value; 
     666            if(!options.multilines) 
     667            { 
     668              if(options.maxChar>0) 
     669              { 
     670                objects.input.attr('maxlength', options.maxChar); 
     671              } 
     672              else 
     673              { 
     674                objects.input.removeAttr('maxlength'); 
     675              } 
     676            } 
     677          } 
     678          return(options.maxChar); 
     679        }, 
     680 
     681      setNumRows : function (object, value) 
     682        { 
     683          var options=object.data('options'), 
     684              objects=object.data('objects'), 
     685              properties=object.data('properties'); 
     686 
     687          if((!properties.initialized || options.numRows!=value) && value>0) 
     688          { 
     689            options.numRows=value; 
     690            if(options.multilines) 
     691            { 
     692              objects.input.attr('rows', options.numRows); 
     693            } 
     694          } 
     695          return(options.numRows); 
     696        }, 
     697 
     698      setDisabled : function (object, value) 
     699        { 
     700          var options=object.data('options'), 
     701              objects=object.data('objects'), 
     702              properties=object.data('properties'); 
     703 
     704          if((!properties.initialized || options.disabled!=value) && (value==true || value==false)) 
     705          { 
     706            options.disabled=value; 
     707            objects.input.attr('disabled', options.disabled); 
     708          } 
     709          return(options.disabled); 
     710        }, 
     711 
     712      setTextAlign : function (object, value) 
     713        { 
     714          var options=object.data('options'), 
     715              objects=object.data('objects'), 
     716              properties=object.data('properties'); 
     717 
     718          if((!properties.initialized || options.textAlign!=value) && (value=='left' || value=='right')) 
     719          { 
     720            options.textAlign=value; 
     721            objects.input.css('text-align', options.textAlign); 
     722          } 
     723          return(options.textAlign); 
     724        }, 
     725 
     726 
     727      setMultilines : function (object, value) 
     728        { 
     729          var options=object.data('options'), 
     730              objects=object.data('objects'), 
     731              properties=object.data('properties'); 
     732 
     733          if((!properties.initialized || options.multilines!=value) && (value==true || value==false)) 
     734          { 
     735            options.multilines=value; 
     736 
     737            if(options.multilines) 
     738            { 
     739              objects.input=$('<textarea/>'); 
     740            } 
     741            else 
     742            { 
     743              objects.input=$('<input>', 
     744                      { 
     745                        type:"text", 
     746                        value:'' 
     747                      } 
     748                    ); 
     749            } 
     750 
     751            objects.container.append( 
     752                objects.input.bind('keyup.inputText', 
     753                                      function (event) 
     754                                      { 
     755                                        return(privateMethods.keyUp(object, event)); 
     756                                      } 
     757                                    ) 
     758                                  .bind('change.inputText', 
     759                                      function (event) 
     760                                      { 
     761                                        return(privateMethods.change(object, event)); 
     762                                      } 
     763                                    ) 
     764                                  .bind('keydown.inputText', 
     765                                      function (event) 
     766                                      { 
     767                                        return(privateMethods.keyDown(object, event)); 
     768                                      } 
     769                                    ) 
     770            ); 
     771 
     772          } 
     773          return(options.textAlign); 
     774        }, //setMultilines 
     775 
     776      setLanguages : function (object, value) 
     777        { 
     778          var properties=object.data('properties'), 
     779              options=object.data('options'); 
     780 
     781          options.languages=value; 
     782          options.languagesValues={}; 
     783 
     784          if(options.languages.length>0) 
     785          { 
     786            if($.inArray(options.currentLanguage, options.languages)<0 || 
     787               options.currentLanguage=='') options.currentLanguage=options.languages[0]; 
     788 
     789            for(var i=0;i<options.languages.length;i++) 
     790            { 
     791              properties.languagesValues[options.languages[i]]=''; 
     792            } 
     793          } 
     794          else 
     795          { 
     796            options.currentLanguage=''; 
     797          } 
     798 
     799          return(options.languages); 
     800        }, //setLanguages 
     801 
     802      setLanguagesValues : function (object, value) 
     803        { 
     804          var options=object.data('options'), 
     805              properties=object.data('properties'); 
     806 
     807          if(value==':clear') 
     808          { 
     809            for(var langValue in properties.languagesValues) 
     810            { 
     811              privateMethods.setLanguageValue(object, langValue, '', langValue==options.currentLanguage); 
     812            } 
     813          } 
     814          else if(!$.isEmptyObject(value)) 
     815          { 
     816            for(var langValue in value) 
     817            { 
     818              if(properties.languagesValues[langValue]!=null) 
     819                  privateMethods.setLanguageValue(object, langValue, value[langValue], langValue==options.currentLanguage); 
     820            } 
     821          } 
     822 
     823          return(properties.languagesValues); 
     824        }, //setLanguagesValues 
     825 
     826      setLanguageValue : function (object, language, value, updateInput) 
     827        { 
     828          var options=object.data('options'), 
     829              properties=object.data('properties'); 
     830 
     831          if(properties.languagesValues[language]!=null) 
     832          { 
     833            properties.languagesValues[language]=value; 
     834 
     835            if(updateInput) privateMethods.setValue(object, properties.languagesValues[options.currentLanguage], true); 
     836          } 
     837 
     838          return(options.languagesValues); 
     839        }, //setLanguageValue 
     840 
     841      setCurrentLanguage : function (object, value) 
     842        { 
     843          var options=object.data('options'), 
     844              properties=object.data('properties'); 
     845 
     846          if((!properties.initialized || options.currentLanguage!=value) && $.inArray(value, options.languages)>=0) 
     847          { 
     848            options.currentLanguage=value; 
     849 
     850            privateMethods.setValue(object, properties.languagesValues[options.currentLanguage], true); 
     851          } 
     852 
     853          return(options.currentLanguage); 
     854        }, //setCurrentLanguage 
     855 
     856      setLanguageSelector : function (object, value) 
     857        { 
     858          var options=object.data('options'), 
     859              properties=object.data('properties'); 
     860 
     861          if((!properties.initialized || options.languageSelector!=value) && value!='' && $('#'+value).length>0) 
     862          { 
     863            if(options.languageSelector!='') $('#'+options.languageSelector).unbind('inputListChange'); 
     864            options.languageSelector=value; 
     865 
     866            if(options.languageSelector!='') 
     867              $('#'+options.languageSelector).bind('inputListChange', 
     868                function (event, lang) 
     869                { 
     870                  privateMethods.setCurrentLanguage(object, lang); 
     871                } 
     872              ); 
     873          } 
     874 
     875          return(options.currentLanguage); 
     876        }, //setCurrentLanguage 
     877 
     878      setValue : function (object, value, apply) 
     879        { 
     880          var options=object.data('options'), 
     881              properties=object.data('properties'), 
     882              objects=object.data('objects'); 
     883 
     884          if(properties.initialized && properties.value==value) 
     885          { 
     886            return(properties.value); 
     887          } 
     888 
     889          privateMethods.setIsValid(object, true); 
     890 
     891          properties.value=value; 
     892 
     893          if(apply) 
     894          { 
     895            objects.input.val(properties.value); 
     896          } 
     897 
     898          if(options.currentLanguage!='') privateMethods.setLanguageValue(object, options.currentLanguage, value, false); 
     899 
     900          if(options.change) object.trigger('inputTextChange', properties.value); 
     901 
     902          return(properties.value); 
     903        }, //setValue 
     904 
     905      setEventChange : function (object, value) 
     906        { 
     907          var options=object.data('options'); 
     908 
     909          options.change=value; 
     910          object.unbind('inputTextChange'); 
     911          if(value) object.bind('inputTextChange', options.change); 
     912          return(options.change); 
     913        }, 
     914 
     915      keyUp : function (object, event) 
     916        { 
     917          var objects=object.data('objects'); 
     918 
     919          if(event.keyCode==9 || //DOM_VK_TAB 
     920             event.keyCode==12 || //DOM_VK_CLEAR 
     921             event.keyCode==16 || //DOM_VK_SHIFT 
     922             event.keyCode==17 || //DOM_VK_CONTROL 
     923             event.keyCode==18 || //DOM_VK_ALT 
     924             event.keyCode==33 || //DOM_VK_PAGE_UP 
     925             event.keyCode==34 || //DOM_VK_PAGE_DOWN 
     926             event.keyCode==35 || //DOM_VK_END 
     927             event.keyCode==36 || //DOM_VK_HOME 
     928             event.keyCode==37 || //DOM_VK_LEFT 
     929             event.keyCode==38 || //DOM_VK_UP 
     930             event.keyCode==39 || //DOM_VK_RIGHT 
     931             event.keyCode==40 || //DOM_VK_DOWN 
     932             event.keyCode==45 || //DOM_VK_INSERT 
     933             event.keyCode==93  //DOM_VK_CONTEXT_MENU 
     934            ) return(false); 
     935 
     936          return(privateMethods.setValue(object, objects.input.val(), false)); 
     937        }, 
     938 
     939      change : function (object, event) 
     940        { 
     941          var objects=object.data('objects'); 
     942 
     943          return(privateMethods.setValue(object, objects.input.val(), false)) 
     944        }, 
     945 
     946      keyDown : function (object, event) 
     947        { 
     948          var objects=object.data('objects'), 
     949              options=object.data('options'); 
     950 
     951          if(options.maxChar>0 && 
     952             objects.input.val().length>=options.maxChar && 
     953             !(event.keyCode==8 || //DOM_VK_BACK_SPACE 
     954               event.keyCode==9 || //DOM_VK_TAB 
     955               event.keyCode==12 || //DOM_VK_CLEAR 
     956               event.keyCode==16 || //DOM_VK_SHIFT 
     957               event.keyCode==17 || //DOM_VK_CONTROL 
     958               event.keyCode==18 || //DOM_VK_ALT 
     959               event.keyCode==33 || //DOM_VK_PAGE_UP 
     960               event.keyCode==34 || //DOM_VK_PAGE_DOWN 
     961               event.keyCode==35 || //DOM_VK_END 
     962               event.keyCode==36 || //DOM_VK_HOME 
     963               event.keyCode==37 || //DOM_VK_LEFT 
     964               event.keyCode==38 || //DOM_VK_UP 
     965               event.keyCode==39 || //DOM_VK_RIGHT 
     966               event.keyCode==40 || //DOM_VK_DOWN 
     967               event.keyCode==45 || //DOM_VK_INSERT 
     968               event.keyCode==46 || //DOM_VK_DELETE 
     969               event.keyCode==93 || //DOM_VK_CONTEXT_MENU 
     970               objects.input.get(0).selectionStart!=objects.input.get(0).selectionEnd 
     971              ) 
     972          ) return(false); 
     973        }, 
     974 
     975        /** 
     976         * do translation through a google translate API call (need the GPC google_translate.js file is loaded) 
     977         * 
     978         * @param String input : id of input field ; if empty, translate all localized fields 
     979         */ 
     980      doTranslation : function(object) 
     981        { 
     982          var objects=object.data('objects'), 
     983              properties=object.data('properties'), 
     984              options=object.data('options'); 
     985 
     986          if(googleTranslate!=null) 
     987          { 
     988            googleTranslate(properties.value, '', options.currentLanguage.substr(0,2), 
     989              function (result) 
     990              { 
     991                privateMethods.setValue(object, result, true); 
     992              } 
     993            ); 
     994          } 
     995        } 
     996 
     997    }; 
     998 
     999 
     1000    $.fn.inputText = function(method) 
     1001    { 
     1002      if(publicMethods[method]) 
     1003      { 
     1004        return publicMethods[method].apply( this, Array.prototype.slice.call( arguments, 1 )); 
     1005      } 
     1006      else if(typeof method === 'object' || ! method) 
     1007      { 
     1008        return publicMethods.init.apply(this, arguments); 
     1009      } 
     1010      else 
     1011      { 
     1012        $.error( 'Method ' +  method + ' does not exist on jQuery.inputText' ); 
     1013      } 
     1014    } // $.fn.inputText 
     1015 
     1016  } 
     1017)(jQuery); 
     1018 
     1019 
  • extensions/GrumPluginClasses/main.inc.php

    r9009 r9020  
    22/* 
    33Plugin Name: Grum Plugins Classes.3 
    4 Version: 3.4.1 
     4Version: 3.4.2 
    55Description: Collection de classes partagées entre mes plugins (existants, ou à venir) / Partaged classes between my plugins (actuals or futures) 
    66Plugin URI: http://piwigo.org/ext/extension_view.php?eid=199 
     
    135135| 3.4.1   | 2011/01/31 | * mantis bug:2156 
    136136|         |            |   . undefined variable on RBuilder screens 
     137|         |            | 
     138| 3.4.2   | 2011/01/31 | * mantis bug:2162 
     139|         |            |   . Personalised blocks : when adding a new block, 
     140|         |            |     previous title & content are not reseted  (AMM bug 
     141|         |            |     due to inputText.js ui component) 
     142|         |            | 
    137143|         |            | 
    138144|         |            | 
Note: See TracChangeset for help on using the changeset viewer.