Changeset 10246


Ignore:
Timestamp:
04/10/11 19:43:01 (9 years ago)
Author:
grum
Message:

bug:2149
Compatibility with Piwigo 2.2

Location:
extensions/GrumPluginClasses
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • extensions/GrumPluginClasses/classes/GPCCore.class.inc.php

    r9066 r10246  
    33/* ----------------------------------------------------------------------------- 
    44  class name     : GPCCore 
    5   class version  : 1.3.3 
    6   plugin version : 3.4.4 
    7   date           : 2011-02-02 
     5  class version  : 1.4.0 
     6  plugin version : 3.5.0 
     7  date           : 2011-04-10 
    88  ------------------------------------------------------------------------------ 
    99  author: grum at piwigo.org 
     
    5353|         |            |     with Lightbox, GMaps & ASE plugins (and probably other) 
    5454|         |            | 
     55| 1.4.0   | 2011/04/10 | * Updated for piwigo 2.2 
    5556|         |            | 
    5657|         |            | 
     
    107108        Array('name' => "GPCAjax", 'version' => "3.0.0"), 
    108109        Array('name' => "GPCCategorySelector", 'version' => "1.0.1"), 
    109         Array('name' => "GPCCore", 'version' => "1.3.4"), 
    110         Array('name' => "GPCCss", 'version' => "3.0.0"), 
     110        Array('name' => "GPCCore", 'version' => "1.4.0"), 
     111        Array('name' => "GPCCss", 'version' => "3.1.0"), 
    111112        Array('name' => "GPCPagesNavigation", 'version' => "2.0.0"), 
    112113        Array('name' => "GPCPublicIntegration", 'version' => "2.0.0"), 
    113         Array('name' => "GPCRequestBuilder", 'version' => "1.1.4"), 
     114        Array('name' => "GPCRequestBuilder", 'version' => "1.1.2"), 
    114115        Array('name' => "GPCTables", 'version' => "1.5.0"), 
    115116        Array('name' => "GPCTabSheet", 'version' => "1.1.1"), 
     
    369370   * @param String $file : the css file 
    370371   */ 
    371   static public function addHeaderCSS($id, $file) 
    372   { 
     372  static public function addHeaderCSS($id, $file, $order=0) 
     373  { 
     374    global $template; 
     375 
    373376    if(!array_key_exists($file, self::$headerItems['css'])) 
    374377    { 
    375378      self::$headerItems['css'][$id]=$file; 
    376     } 
    377   } 
    378   static public function addHeaderJS($id, $file) 
     379      $template->func_combine_css(array('path'=>$file, 'order'=>$order), $template->smarty); 
     380    } 
     381  } 
     382  static public function addHeaderJS($id, $file, $require=array()) 
    379383  { 
    380384    global $template; 
    381385 
    382     if(!isset($template->known_scripts)) $template->known_scripts=array(); 
    383  
    384     if(!array_key_exists($id,  $template->known_scripts) and !array_key_exists($file, self::$headerItems['js'])) 
    385     { 
    386       $dummy=null; 
    387  
    388       $template->func_known_script( 
    389         array('id'=>$id, 
    390               'src'=>$file), 
    391         $dummy); 
    392      //$template->known_scripts[$id]=$file; 
    393      self::$headerItems['js'][$id]=$file; 
    394     } 
    395   } 
    396  
    397   /** 
    398    * declared as public to be accessible by the event manager, but this funcion 
    399    * is not aimed to be used directly 
    400    */ 
    401   static public function applyHeaderItems() 
    402   { 
    403     global $template; 
    404     $dummy1=null; 
    405     $dummy2=null; 
    406  
    407     foreach(self::$headerItems['css'] as $file) 
    408     { 
    409       $template->append('head_elements', '<link rel="stylesheet" type="text/css" href="'.$file.'"/>'); 
    410     } 
    411 /* 
    412     foreach(self::$headerItems['js'] as $file) 
    413     { 
    414       //$template->append('head_elements', '<script type="text/javascript" src="'.$file.'"></script>'); 
    415       $template->block_html_head(null, '<script type="text/javascript" src="'.$file.'"></script>', $dummy1, $dummy2); 
    416     } 
    417 */ 
     386    if(!array_key_exists($file, self::$headerItems['js'])) 
     387    { 
     388      self::$headerItems['js'][$id]=$file; 
     389      $template->scriptLoader->add($id, 'header', $require, $file, 0); 
     390    } 
    418391  } 
    419392 
     
    457430        case 'googleTranslate': 
    458431          self::addHeaderJS('google.jsapi', 'http://www.google.com/jsapi'); 
    459           self::addHeaderJS('gpc.googleTranslate', 'plugins/GrumPluginClasses/js/google_translate'.self::$minified.'.js'); 
     432          self::addHeaderJS('gpc.googleTranslate', 'plugins/GrumPluginClasses/js/google_translate'.self::$minified.'.js', array('jquery', 'google.jsapi')); 
    460433        case 'categorySelector': 
    461434          self::addHeaderCSS('gpc.categorySelector', GPC_PATH.'css/categorySelector.css'); 
    462435          self::addHeaderCSS('gpc.categorySelectorT', sprintf($themeFile, 'categorySelector')); 
    463           self::addHeaderJS('gpc.categorySelector', GPC_PATH.'js/ui.categorySelector'.self::$minified.'.js'); 
     436          self::addHeaderJS('gpc.categorySelector', GPC_PATH.'js/ui.categorySelector'.self::$minified.'.js', array('jquery')); 
    464437          break; 
    465438        case 'inputCheckbox': 
    466439          self::addHeaderCSS('gpc.inputCheckbox', GPC_PATH.'css/inputCheckbox.css'); 
    467           self::addHeaderJS('gpc.inputCheckbox', GPC_PATH.'js/ui.inputCheckbox'.self::$minified.'.js'); 
     440          self::addHeaderJS('gpc.inputCheckbox', GPC_PATH.'js/ui.inputCheckbox'.self::$minified.'.js', array('jquery')); 
    468441          break; 
    469442        case 'inputColorPicker': 
     
    478451          self::addHeaderCSS('gpc.inputDotAreaT', sprintf($themeFile, 'inputDotArea')); 
    479452          self::addHeaderCSS('gpc.inputColorPickerT', sprintf($themeFile, 'inputColorPicker')); 
    480           self::addHeaderJS('jquery.ui', 'themes/default/js/ui/packed/ui.core.packed.js'); 
    481           self::addHeaderJS('jquery.ui.slider', 'themes/default/js/ui/packed/ui.slider.packed.js'); 
    482           self::addHeaderJS('jquery.ui.draggable', 'themes/default/js/ui/packed/ui.draggable.packed.js'); 
    483           self::addHeaderJS('jquery.ui.dialog', 'themes/default/js/ui/packed/ui.dialog.packed.js'); 
    484           self::addHeaderJS('gpc.inputText', GPC_PATH.'js/ui.inputText'.self::$minified.'.js'); 
    485           self::addHeaderJS('gpc.inputNum', GPC_PATH.'js/ui.inputNum'.self::$minified.'.js'); 
    486           self::addHeaderJS('gpc.inputColorsFB', GPC_PATH.'js/ui.inputColorsFB'.self::$minified.'.js'); 
    487           self::addHeaderJS('gpc.inputDotArea', GPC_PATH.'js/ui.inputDotArea'.self::$minified.'.js'); 
    488           self::addHeaderJS('gpc.inputColorPicker', GPC_PATH.'js/ui.inputColorPicker'.self::$minified.'.js'); 
     453          self::addHeaderJS('jquery.ui', 'themes/default/js/ui/minified/jquery.ui.core.min.js', array('jquery')); 
     454          self::addHeaderJS('jquery.ui.slider', 'themes/default/js/ui/minified/jquery.ui.slider.min.js', array('jquery.ui')); 
     455          self::addHeaderJS('jquery.ui.draggable', 'themes/default/js/ui/minified/jquery.ui.draggable.min.js', array('jquery.ui')); 
     456          self::addHeaderJS('jquery.ui.dialog', 'themes/default/js/ui/minified/jquery.ui.slider.dialog.js', array('jquery.ui')); 
     457          self::addHeaderJS('gpc.inputText', GPC_PATH.'js/ui.inputText'.self::$minified.'.js', array('jquery')); 
     458          self::addHeaderJS('gpc.inputNum', GPC_PATH.'js/ui.inputNum'.self::$minified.'.js', array('jquery')); 
     459          self::addHeaderJS('gpc.inputColorsFB', GPC_PATH.'js/ui.inputColorsFB'.self::$minified.'.js', array('jquery')); 
     460          self::addHeaderJS('gpc.inputDotArea', GPC_PATH.'js/ui.inputDotArea'.self::$minified.'.js', array('jquery')); 
     461          self::addHeaderJS('gpc.inputColorPicker', GPC_PATH.'js/ui.inputColorPicker'.self::$minified.'.js', array('jquery.ui.slider','gpc.inputText','gpc.inputNum','gpc.inputColorsFB','gpc.inputDotArea')); 
    489462          break; 
    490463        case 'inputColorsFB': 
    491464          self::addHeaderCSS('gpc.inputColorsFB', GPC_PATH.'css/inputColorsFB.css'); 
    492465          self::addHeaderCSS('gpc.inputColorsFBT', sprintf($themeFile, 'inputColorsFB')); 
    493           self::addHeaderJS('gpc.inputColorsFB', GPC_PATH.'js/ui.inputColorsFB'.self::$minified.'.js'); 
     466          self::addHeaderJS('gpc.inputColorsFB', GPC_PATH.'js/ui.inputColorsFB'.self::$minified.'.js', array('jquery')); 
    494467          break; 
    495468        case 'inputConsole': 
    496469          self::addHeaderCSS('gpc.inputConsole', GPC_PATH.'css/inputConsole.css'); 
    497470          self::addHeaderCSS('gpc.inputConsoleT', sprintf($themeFile, 'inputConsole')); 
    498           self::addHeaderJS('gpc.inputConsole', GPC_PATH.'js/ui.inputConsole'.self::$minified.'.js'); 
     471          self::addHeaderJS('gpc.inputConsole', GPC_PATH.'js/ui.inputConsole'.self::$minified.'.js', array('jquery')); 
    499472          break; 
    500473        case 'inputDotArea': 
    501474          self::addHeaderCSS('gpc.inputDotArea', GPC_PATH.'css/inputDotArea.css'); 
    502475          self::addHeaderCSS('gpc.inputDotAreaT', sprintf($themeFile, 'inputDotArea')); 
    503           self::addHeaderJS('gpc.inputDotArea', GPC_PATH.'js/ui.inputDotArea'.self::$minified.'.js'); 
     476          self::addHeaderJS('gpc.inputDotArea', GPC_PATH.'js/ui.inputDotArea'.self::$minified.'.js', array('jquery')); 
    504477          break; 
    505478        case 'inputList': 
    506479          self::addHeaderCSS('gpc.inputList', GPC_PATH.'css/inputList.css'); 
    507480          self::addHeaderCSS('gpc.inputListT', sprintf($themeFile, 'inputList')); 
    508           self::addHeaderJS('gpc.inputList', GPC_PATH.'js/ui.inputList'.self::$minified.'.js'); 
     481          self::addHeaderJS('gpc.inputList', GPC_PATH.'js/ui.inputList'.self::$minified.'.js', array('jquery')); 
    509482          break; 
    510483        case 'inputNum': 
    511484          self::addHeaderCSS('gpc.inputNum', GPC_PATH.'css/inputNum.css'); 
    512485          self::addHeaderCSS('gpc.inputNumT', sprintf($themeFile, 'inputNum')); 
    513           self::addHeaderJS('jquery.ui', 'themes/default/js/ui/packed/ui.core.packed.js'); 
    514           self::addHeaderJS('jquery.ui.slider', 'themes/default/js/ui/packed/ui.slider.packed.js'); 
    515           self::addHeaderJS('gpc.inputNum', GPC_PATH.'js/ui.inputNum'.self::$minified.'.js'); 
     486          self::addHeaderJS('jquery.ui', 'themes/default/js/ui/minified/jquery.ui.core.min.js', array('jquery')); 
     487          self::addHeaderJS('jquery.ui.slider', 'themes/default/js/ui/minified/jquery.ui.slider.min.js', array('jquery.ui')); 
     488          self::addHeaderJS('gpc.inputNum', GPC_PATH.'js/ui.inputNum'.self::$minified.'.js', array('jquery','jquery.ui.slider')); 
    516489          break; 
    517490        case 'inputPosition': 
    518491          self::addHeaderCSS('gpc.inputPosition', GPC_PATH.'css/inputPosition.css'); 
    519492          self::addHeaderCSS('gpc.inputPositionT', sprintf($themeFile, 'inputPosition')); 
    520           self::addHeaderJS('gpc.inputPosition', GPC_PATH.'js/ui.inputPosition'.self::$minified.'.js'); 
     493          self::addHeaderJS('gpc.inputPosition', GPC_PATH.'js/ui.inputPosition'.self::$minified.'.js', array('jquery')); 
    521494          break; 
    522495        case 'inputRadio': 
    523           self::addHeaderJS('gpc.inputRadio', GPC_PATH.'js/ui.inputRadio'.self::$minified.'.js'); 
     496          self::addHeaderJS('gpc.inputRadio', GPC_PATH.'js/ui.inputRadio'.self::$minified.'.js', array('jquery')); 
    524497          break; 
    525498        case 'inputStatusBar': 
    526499          self::addHeaderCSS('gpc.inputStatusBar', GPC_PATH.'css/inputStatusBar.css'); 
    527500          self::addHeaderCSS('gpc.inputStatusBarT', sprintf($themeFile, 'inputStatusBar')); 
    528           self::addHeaderJS('gpc.inputStatusBar', GPC_PATH.'js/ui.inputStatusBar'.self::$minified.'.js'); 
     501          self::addHeaderJS('gpc.inputStatusBar', GPC_PATH.'js/ui.inputStatusBar'.self::$minified.'.js', array('jquery')); 
    529502          break; 
    530503        case 'inputText': 
    531504          self::addHeaderCSS('gpc.inputText', GPC_PATH.'css/inputText.css'); 
    532505          self::addHeaderCSS('gpc.inputTextT', sprintf($themeFile, 'inputText')); 
    533           self::addHeaderJS('gpc.inputText', GPC_PATH.'js/ui.inputText'.self::$minified.'.js'); 
     506          self::addHeaderJS('gpc.inputText', GPC_PATH.'js/ui.inputText'.self::$minified.'.js', array('jquery')); 
    534507          break; 
    535508      } 
     
    707680} //class 
    708681 
    709 add_event_handler('loc_begin_page_header', array('GPCCore', 'applyHeaderItems'), 10); 
     682//add_event_handler('loc_begin_page_header', array('GPCCore', 'applyHeaderItems'), 10); 
    710683 
    711684GPCCore::init(); 
  • extensions/GrumPluginClasses/classes/GPCCss.class.inc.php

    r5958 r10246  
    33/* ----------------------------------------------------------------------------- 
    44  class name: GPCCss 
    5   class version  : 3.0.0 
    6   plugin version : 3.0.0 
    7   date           : 2010-03-30 
     5  class version  : 3.1.0 
     6  plugin version : 3.5.0 
     7  date           : 2011-01-31 
    88 
    99  ------------------------------------------------------------------------------ 
     
    2121| 3.0.0   | 2010/03/30 | * Update class & function names 
    2222|         |            | 
    23 |         |            | 
     23| 3.1.0   | 2011/01/31 | * Updated for piwigo 2.2 
    2424|         |            | 
    2525|         |            | 
     
    5454    { 
    5555      //if no filename given, load the gpc.css file 
    56       $fileName=basename(dirname(dirname(__FILE__))).'/css/gpc.css'; 
    57       $template->append('head_elements', '<link rel="stylesheet" type="text/css" href="plugins/'.$fileName.'">'); 
     56      $fileName='./plugins/'.basename(dirname(dirname(__FILE__))).'/css/gpc.css'; 
     57      GPCCore::addHeaderCSS('gpc', $fileName); 
    5858    } 
    5959    elseif(file_exists($fileName)) 
    6060    { 
    61       $template->append('head_elements', '<link rel="stylesheet" type="text/css" href="plugins/'.basename(dirname($fileName))."/".basename($fileName).'">'); 
     61      GPCCore::addHeaderCSS(basename(dirname($fileName)), 'plugins/'.basename(dirname($fileName)).'/'.basename($fileName).''); 
    6262    } 
    6363  } 
  • extensions/GrumPluginClasses/classes/GPCRequestBuilder.class.inc.php

    r9034 r10246  
    22/* ----------------------------------------------------------------------------- 
    33  class name: GCPRequestBuilder 
    4   class version  : 1.1.4 
     4  class version  : 1.1.5 
    55  plugin version : 3.4.3 
    66  date           : 2010-09-08 
     
    8484| 1.1.4   | 2011/01/31 | * mantis bug:2167 
    8585|         |            | 
     86| 1.1.5   | 2011/04/10 | * Compatibility with piwigo 2.2 
    8687|         |            | 
    8788|         |            | 
     
    9192|         |            | 
    9293 
    93  --------------------------------------------------------------------------- */ 
     94  --------------------------------------------------------------------------- */ 
    9495 
    9596if(!defined('GPC_DIR')) define('GPC_DIR' , baseName(dirname(dirname(__FILE__)))); 
     
    539540 
    540541    $baseName=basename(dirname(dirname(__FILE__))).'/js/'; 
    541     GPCCore::addHeaderJS('jquery', 'themes/default/js/jquery.packed.js'); 
    542     GPCCore::addHeaderJS('gpc.interface', 'plugins/'.$baseName.'external/interface/interface.js'); 
    543     GPCCore::addHeaderJS('gpc.inestedsortable', 'plugins/'.$baseName.'external/inestedsortable.pack.js'); 
    544     GPCCore::addHeaderJS('gpc.rbCriteriaBuilder', 'plugins/'.$baseName.'rbCriteriaBuilder'.GPCCore::getMinified().'.js'); 
     542    GPCCore::addHeaderJS('jquery', 'themes/default/js/jquery.min.js'); 
     543    GPCCore::addHeaderJS('gpc.interface', 'plugins/'.$baseName.'external/interface/interface.js', array('jquery')); 
     544    GPCCore::addHeaderJS('gpc.inestedsortable', 'plugins/'.$baseName.'external/inestedsortable.pack.js', array('jquery', 'gpc.interface')); 
     545    GPCCore::addHeaderJS('gpc.rbCriteriaBuilder', 'plugins/'.$baseName.'rbCriteriaBuilder'.GPCCore::getMinified().'.js', array('gpc.inestedsortable')); 
    545546 
    546547    $template->append('head_elements', 
     
    13941395    $filter=array_flip($filter); 
    13951396 
    1396     GPCCore::addHeaderJS('jquery', 'themes/default/js/jquery.packed.js'); 
    13971397    GPCCore::addHeaderJS('jquery.ui', 'themes/default/js/ui/packed/ui.core.packed.js'); 
    13981398    GPCCore::addHeaderJS('jquery.ui.dialog', 'themes/default/js/ui/packed/ui.dialog.packed.js'); 
  • extensions/GrumPluginClasses/classes/GPCUsersGroups.class.inc.php

    r9001 r10246  
    2323    - (public) function isAllowed($id) 
    2424    - (private) function initList() 
    25  
     25  
    2626 
    2727| release | date       | 
     
    4141class GPCAllowedAccess 
    4242{ 
    43   public $access_list; 
     43  protected $accessList; 
    4444  protected $accessMode='a'; // 'a' : allowed, 'n' : not allowed 
    4545 
     
    6262  public function __destruct() 
    6363  { 
    64     unset($this->access_list); 
     64    unset($this->accessList); 
    6565  } 
    6666 
     
    7070  protected function initList() 
    7171  { 
    72     $this->access_list=array(); 
     72    $this->accessList=array(); 
    7373  } 
    7474 
     
    8484  function getList() 
    8585  { 
    86     return($this->access_list); 
     86    return($this->accessList); 
    8787  } 
    8888 
     
    9595  function setAllowed($id, $allowed) 
    9696  { 
    97     if(isset($this->access_list[$id])) 
    98     { 
    99       $this->access_list[$id]['allowed']=$allowed; 
     97    if(isset($this->accessList[$id])) 
     98    { 
     99      $this->accessList[$id]['allowed']=$allowed; 
    100100    } 
    101101  } 
     
    116116    $idList=array_flip($idList); 
    117117 
    118     foreach($this->access_list as $key => $val) 
     118    foreach($this->accessList as $key => $val) 
    119119    { 
    120120      if(isset($idList[$key])) 
    121121      { 
    122         $this->access_list[$key]['allowed']=$allowed; 
     122        $this->accessList[$key]['allowed']=$allowed; 
    123123      } 
    124124      else 
    125125      { 
    126         $this->access_list[$key]['allowed']=!$allowed; 
     126        $this->accessList[$key]['allowed']=!$allowed; 
    127127      } 
    128128    } 
     
    139139    $returned=Array(); 
    140140 
    141     foreach($this->access_list as $key => $val) 
     141    foreach($this->accessList as $key => $val) 
    142142    { 
    143143      if($val['allowed']) $returned[]=$val; 
     
    155155  function isAllowed($id) 
    156156  { 
    157     if(isset($this->access_list[$id])) 
    158     { 
    159       return($this->access_list[$id]['allowed']); 
     157    if(isset($this->accessList[$id])) 
     158    { 
     159      return($this->accessList[$id]['allowed']); 
    160160    } 
    161161    else 
     
    177177 * ---------------------------------------------------------------------------- 
    178178 *  this class provides base functions to manage groups access 
    179  *  initList redefined to initialize access_list from database GROUPS 
     179 *  initList redefined to initialize accessList from database GROUPS 
    180180 * ---------------------------------------------------------------------------- 
    181181 */ 
     
    187187  protected  function initList() 
    188188  { 
    189     $this->access_list=array(); 
     189    $this->accessList=array(); 
    190190    $sql="SELECT id, name FROM ".GROUPS_TABLE." ORDER BY name"; 
    191191    $result=pwg_query($sql); 
     
    194194      while($row=pwg_db_fetch_assoc($result)) 
    195195      { 
    196         $this->access_list[$row['id']]=array( 
     196        $this->accessList[$row['id']]=array( 
    197197            'id' => $row['id'], 
    198198            'name' => $row['name'], 
     
    214214 * ---------------------------------------------------------------------------- 
    215215 *  this class provides base functions to manage users access 
    216  *  initList redefined to initialize access_list from piwigo's predefined values 
     216 *  initList redefined to initialize accessList from piwigo's predefined values 
    217217 * ---------------------------------------------------------------------------- 
    218218 */ 
     
    225225  { 
    226226    $usersList = array('guest', 'generic', 'normal', 'webmaster', 'admin'); 
    227     $this->access_list=array(); 
     227    $this->accessList=array(); 
    228228    foreach($usersList as $val) 
    229229    { 
    230       $this->access_list[$val]=array( 
     230      $this->accessList[$val]=array( 
    231231          'id' => $val, 
    232232          'name' => l10n('user_status_'.$val), 
  • extensions/GrumPluginClasses/gpc_version.inc.php

    r9066 r10246  
    1515  if(!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!'); 
    1616 
    17   if(!defined('GPC_VERSION')) define('GPC_VERSION',  '3.4.4'); 
    18   if(!defined('GPC_VERSION2')) define('GPC_VERSION2', '03.04.04'); 
     17  if(!defined('GPC_VERSION')) define('GPC_VERSION',  '3.5.0'); 
     18  if(!defined('GPC_VERSION2')) define('GPC_VERSION2', '03.05.00'); 
    1919?> 
  • extensions/GrumPluginClasses/js/ui.inputText.min.js

    r9020 r10246  
    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  
     1(function($) 
     2{var publicMethods={init:function(opt) 
     3{return this.each(function() 
     4{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) 
     5{$this.data('properties',{initialized:false,re:/.*/,value:0,isValid:true,languagesValues:{}});properties=$this.data('properties');} 
     6if(!objects) 
     7{objects={container:$('<div/>',{'class':'ui-inputText',css:{width:'100%'}}).bind('click.inputText',function() 
     8{objects.input.focus();}),input:null};$this.html('').append(objects.container);$this.data('objects',objects);} 
     9privateMethods.setOptions($this,opt);});},destroy:function() 
     10{return this.each(function() 
     11{var $this=$(this),objects=$this.data('objects');objects.input.unbind().remove();objects.container.unbind().remove();$this.unbind('.inputText').css({width:'',height:''});});},options:function(value) 
     12{return(this.each(function() 
     13{privateMethods.setOptions($(this),value);}));},disabled:function(value) 
     14{if(value!=null) 
     15{return(this.each(function() 
     16{privateMethods.setDisabled($(this),value);}));} 
     17else 
     18{var options=this.data('options');if(options) 
     19{return(options.disabled);} 
     20else 
     21{return('');}}},textAlign:function(value) 
     22{if(value!=null) 
     23{return(this.each(function() 
     24{privateMethods.setTextAlign($(this),value);}));} 
     25else 
     26{var options=this.data('options');if(options) 
     27{return(options.textAlign);} 
     28else 
     29{return('');}}},displayChar:function(value) 
     30{if(value!=null) 
     31{return(this.each(function() 
     32{privateMethods.setDisplayChar($(this),value);}));} 
     33else 
     34{var options=this.data('options');if(options) 
     35{return(options.displayChar);} 
     36else 
     37{return('');}}},maxChar:function(value) 
     38{if(value!=null) 
     39{return(this.each(function() 
     40{privateMethods.setMaxChar($(this),value);}));} 
     41else 
     42{var options=this.data('options');if(options) 
     43{return(options.maxChar);} 
     44else 
     45{return('');}}},numRows:function(value) 
     46{if(value!=null) 
     47{return(this.each(function() 
     48{privateMethods.setNumRows($(this),value);}));} 
     49else 
     50{var options=this.data('options');if(options) 
     51{return(options.numRows);} 
     52else 
     53{return('');}}},regExp:function(value) 
     54{if(value!=null) 
     55{return(this.each(function() 
     56{privateMethods.setRegExp($(this),value);}));} 
     57else 
     58{var options=this.data('options');if(options) 
     59{return(options.regExp);} 
     60else 
     61{return('');}}},multilines:function() 
     62{var properties=this.data('properties');return(properties.multilines);},languages:function(value) 
     63{if(value!=null) 
     64{return(this.each(function() 
     65{privateMethods.setLanguages($(this),value);}));} 
     66else 
     67{var options=this.data('options');return(options.languages);}},currentLanguage:function(value) 
     68{if(value!=null) 
     69{return(this.each(function() 
     70{privateMethods.setCurrentLanguage($(this),value);}));} 
     71else 
     72{var options=this.data('options');return(options.currentLanguage);}},languageSelector:function(value) 
     73{if(value!=null) 
     74{return(this.each(function() 
     75{privateMethods.setLanguageSelector($(this),value);}));} 
     76else 
     77{var options=this.data('options');return(options.languageSelector);}},languagesValues:function(value) 
     78{if(value!=null) 
     79{return(this.each(function() 
     80{privateMethods.setLanguagesValues($(this),value);}));} 
     81else 
     82{var properties=this.data('properties');return(properties.languagesValues);}},value:function(value,language) 
     83{if(value!=null) 
     84{var options=this.data('options');return(this.each(function() 
     85{if(language!=null) 
     86{privateMethods.setLanguageValue($(this),language,value,options.currentLanguage==language);} 
     87else 
     88{privateMethods.setValue($(this),value,true);}}));} 
     89else 
     90{var properties=this.data('properties');return(properties.value);}},isValid:function(value) 
     91{if(value!=null) 
     92{return(this.each(function() 
     93{privateMethods.setIsValid($(this),value);}));} 
     94else 
     95{var properties=this.data('properties');return(properties.isValid);}},change:function(value) 
     96{if(value!=null&&$.isFunction(value)) 
     97{return(this.each(function() 
     98{privateMethods.setEventChange($(this),value);}));} 
     99else 
     100{var options=this.data('options');if(options) 
     101{return(options.change);} 
     102else 
     103{return(null);}}},doTranslation:function() 
     104{return(this.each(function() 
     105{privateMethods.doTranslation($(this));}));}};var privateMethods={isValid:function(object,value) 
     106{var properties=object.data('properties');return(properties.re.exec(value))},setOptions:function(object,value) 
     107{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) 
     108{var properties=object.data('properties'),flagRE=/^\/(.*)\/(.*)$/,flags=flagRE.exec(value);if(flags==null) 
     109{flags=['.*',''];} 
     110delete properties.re;properties.re=new RegExp(flags[1],flags[2]);},setIsValid:function(object,value) 
     111{var objects=object.data('objects'),properties=object.data('properties');if(properties.isValid!=value&&properties.initialized) 
     112{properties.isValid=value;if(properties.isValid) 
     113{objects.container.removeClass('ui-error');objects.input.removeClass('ui-error');} 
     114else 
     115{objects.container.addClass('ui-error');objects.input.addClass('ui-error');}} 
     116return(properties.isValid);},setDisplayChar:function(object,value) 
     117{var options=object.data('options'),objects=object.data('objects');properties=object.data('properties');if((!properties.initialized||options.displayChar!=value)&&value>=0) 
     118{options.displayChar=value;if(options.displayChar>0) 
     119{if(options.multilines) 
     120{objects.input.attr('cols',options.displayChar);} 
     121else 
     122{objects.input.attr('size',options.displayChar);}} 
     123else 
     124{if(options.multilines) 
     125{objects.input.removeAttr('size');} 
     126else 
     127{objects.input.removeAttr('cols');}}} 
     128if(object.width()>0) 
     129{objects.input.css({'width':object.width()+'px','max-width':object.width()+'px'});} 
     130return(options.displayChar);},setMaxChar:function(object,value) 
     131{var options=object.data('options'),objects=object.data('objects'),properties=object.data('properties');if((!properties.initialized||options.maxChar!=value)&&value>=0) 
     132{options.maxChar=value;if(!options.multilines) 
     133{if(options.maxChar>0) 
     134{objects.input.attr('maxlength',options.maxChar);} 
     135else 
     136{objects.input.removeAttr('maxlength');}}} 
     137return(options.maxChar);},setNumRows:function(object,value) 
     138{var options=object.data('options'),objects=object.data('objects'),properties=object.data('properties');if((!properties.initialized||options.numRows!=value)&&value>0) 
     139{options.numRows=value;if(options.multilines) 
     140{objects.input.attr('rows',options.numRows);}} 
     141return(options.numRows);},setDisabled:function(object,value) 
     142{var options=object.data('options'),objects=object.data('objects'),properties=object.data('properties');if((!properties.initialized||options.disabled!=value)&&(value==true||value==false)) 
     143{options.disabled=value;objects.input.attr('disabled',options.disabled);} 
     144return(options.disabled);},setTextAlign:function(object,value) 
     145{var options=object.data('options'),objects=object.data('objects'),properties=object.data('properties');if((!properties.initialized||options.textAlign!=value)&&(value=='left'||value=='right')) 
     146{options.textAlign=value;objects.input.css('text-align',options.textAlign);} 
     147return(options.textAlign);},setMultilines:function(object,value) 
     148{var options=object.data('options'),objects=object.data('objects'),properties=object.data('properties');if((!properties.initialized||options.multilines!=value)&&(value==true||value==false)) 
     149{options.multilines=value;if(options.multilines) 
     150{objects.input=$('<textarea/>');} 
     151else 
     152{objects.input=$('<input>',{type:"text",value:''});} 
     153objects.container.append(objects.input.bind('keyup.inputText',function(event) 
     154{return(privateMethods.keyUp(object,event));}).bind('change.inputText',function(event) 
     155{return(privateMethods.change(object,event));}).bind('keydown.inputText',function(event) 
     156{return(privateMethods.keyDown(object,event));}));} 
     157return(options.textAlign);},setLanguages:function(object,value) 
     158{var properties=object.data('properties'),options=object.data('options');options.languages=value;options.languagesValues={};if(options.languages.length>0) 
     159{if($.inArray(options.currentLanguage,options.languages)<0||options.currentLanguage=='')options.currentLanguage=options.languages[0];for(var i=0;i<options.languages.length;i++) 
     160{properties.languagesValues[options.languages[i]]='';}} 
     161else 
     162{options.currentLanguage='';} 
     163return(options.languages);},setLanguagesValues:function(object,value) 
     164{var options=object.data('options'),properties=object.data('properties');if(value==':clear') 
     165{for(var langValue in properties.languagesValues) 
     166{privateMethods.setLanguageValue(object,langValue,'',langValue==options.currentLanguage);}} 
     167else if(!$.isEmptyObject(value)) 
     168{for(var langValue in value) 
     169{if(properties.languagesValues[langValue]!=null) 
     170privateMethods.setLanguageValue(object,langValue,value[langValue],langValue==options.currentLanguage);}} 
     171return(properties.languagesValues);},setLanguageValue:function(object,language,value,updateInput) 
     172{var options=object.data('options'),properties=object.data('properties');if(properties.languagesValues[language]!=null) 
     173{properties.languagesValues[language]=value;if(updateInput)privateMethods.setValue(object,properties.languagesValues[options.currentLanguage],true);} 
     174return(options.languagesValues);},setCurrentLanguage:function(object,value) 
     175{var options=object.data('options'),properties=object.data('properties');if((!properties.initialized||options.currentLanguage!=value)&&$.inArray(value,options.languages)>=0) 
     176{options.currentLanguage=value;privateMethods.setValue(object,properties.languagesValues[options.currentLanguage],true);} 
     177return(options.currentLanguage);},setLanguageSelector:function(object,value) 
     178{var options=object.data('options'),properties=object.data('properties');if((!properties.initialized||options.languageSelector!=value)&&value!=''&&$('#'+value).length>0) 
     179{if(options.languageSelector!='')$('#'+options.languageSelector).unbind('inputListChange');options.languageSelector=value;if(options.languageSelector!='') 
     180$('#'+options.languageSelector).bind('inputListChange',function(event,lang) 
     181{privateMethods.setCurrentLanguage(object,lang);});} 
     182return(options.currentLanguage);},setValue:function(object,value,apply) 
     183{var options=object.data('options'),properties=object.data('properties'),objects=object.data('objects');if(properties.initialized&&properties.value==value) 
     184{return(properties.value);} 
     185privateMethods.setIsValid(object,true);properties.value=value;if(apply) 
     186{objects.input.val(properties.value);} 
     187if(options.currentLanguage!='')privateMethods.setLanguageValue(object,options.currentLanguage,value,false);if(options.change)object.trigger('inputTextChange',properties.value);return(properties.value);},setEventChange:function(object,value) 
     188{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) 
     189{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) 
     190{var objects=object.data('objects');return(privateMethods.setValue(object,objects.input.val(),false))},keyDown:function(object,event) 
     191{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) 
     192{var objects=object.data('objects'),properties=object.data('properties'),options=object.data('options');if(googleTranslate!=null) 
     193{googleTranslate(properties.value,'',options.currentLanguage.substr(0,2),function(result) 
     194{privateMethods.setValue(object,result,true);});}}};$.fn.inputText=function(method) 
     195{if(publicMethods[method]) 
     196{return publicMethods[method].apply(this,Array.prototype.slice.call(arguments,1));} 
     197else if(typeof method==='object'||!method) 
     198{return publicMethods.init.apply(this,arguments);} 
     199else 
     200{$.error('Method '+method+' does not exist on jQuery.inputText');}}})(jQuery); 
  • extensions/GrumPluginClasses/language/de_DE/rbuilder.lang.php

    r7372 r10246  
    2020$lang['There is no criteria ! At least, one criteria is required to do search...']="Es gibt kein Kriterium! Es muss mindestens ein Kriterium angegeben werden um die Suche starten zu können..."; 
    2121 
    22 // need to be translated ! thanks :-) 
    2322$lang['gpc_help_edit_criteria']="Kriterium bearbeiten"; 
    2423$lang['gpc_help_delete_criteria']="Kriterium löschen"; 
  • extensions/GrumPluginClasses/language/hu_HU/rbuilder.lang.php

    r7397 r10246  
    1818$lang['gpc_something_is_wrong_on_the_server_side'] = 'Hiba történt a szerver oldalon'; 
    1919 
    20 // need to be translated ! thanks :-) 
     20 
    2121// GPC 3.3.2 
    2222$lang['There is no criteria ! At least, one criteria is required to do search...']="Nincsenek feltételek ! Legalább egy feltételre szükség van a kereséshez..."; 
  • extensions/GrumPluginClasses/language/it_IT/plugin.lang.php

    r7418 r10246  
    11<?php 
    2  
    32$lang['Module'] = 'Modulo'; 
    43$lang['Version'] = 'Versione'; 
     
    98$lang['Installed'] = 'Installato il'; 
    109$lang['Infos'] = 'Informazioni'; 
    11 $lang['Some plugins are dependent on Grum Plugin Classes: before uninstall, you must first uninstall the plugins dependent'] = 'Alcuni plugin dipendono da Grum Plugin Classes. Prima di disinstallare Grum Plugin Classes, dovete disinstallare i plugin dipendenti'; 
     10$lang['Some plugins are dependent on Grum Plugin Classes: before uninstall, you must first uninstall the plugins dependent'] = 'Alcuni plug-in dipendono da Grum Plugin Classes. Prima di disinstallare Grum Plugin Classes, si devono disinstallare i plug-in dipendenti da questo'; 
     11 
    1212 
    1313// gpc > 3.3.0 
  • extensions/GrumPluginClasses/main.inc.php

    r9066 r10246  
    22/* 
    33Plugin Name: Grum Plugins Classes.3 
    4 Version: 3.4.4 
     4Version: 3.5.0 
    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 
     
    157157|         |            | * add language pt_PT (thanks to translator) 
    158158|         |            | 
    159 |         |            | 
    160 |         |            | 
     159| 3.5.0   | 2011/04/10 | * mantis bug:2149  
     160|         |            | 
     161|         |            | 
     162|         |            | 
     163|         |            | 
     164|         |            | 
     165|         |            |   . Compatibility with piwigo 2.2 
    161166|         |            | 
    162167|         |            | ===== Don't forget to update the plugin version ! ===== 
Note: See TracChangeset for help on using the changeset viewer.