Ignore:
Timestamp:
01/28/11 16:54:02 (9 years ago)
Author:
grum
Message:

release 3.4.0
fix bug:1984, bug:2109
js file are minified, remove packed files

Location:
extensions/GrumPluginClasses
Files:
63 added
5 deleted
19 edited

Legend:

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

    r7310 r8961  
    88  ------------------------------------------------------------------------------ 
    99  Author     : Grum 
    10     email    : grum@grum.dnsalias.com 
    11     website  : http://photos.grum.dnsalias.com 
     10    email    : grum@piwigo.org 
     11    website  : http://photos.grum.fr 
    1212    PWG user : http://forum.phpwebgallery.net/profile.php?id=3706 
    1313 
  • extensions/GrumPluginClasses/classes/GPCCore.class.inc.php

    r7387 r8961  
    33/* ----------------------------------------------------------------------------- 
    44  class name     : GPCCore 
    5   class version  : 1.3.1 
    6   plugin version : 3.3.2 
    7   date           : 2010-10-20 
     5  class version  : 1.3.2 
     6  plugin version : 3.4.0 
     7  date           : 2011-01-28 
    88  ------------------------------------------------------------------------------ 
    99  author: grum at piwigo.org 
     
    2828|         |            |   extended description function if present 
    2929|         |            | 
    30 |         |            | * implement the getPiwigoSystemPath function 
    31 |         |            | 
    32 |         |            | * implement the rmDir function 
     30|         |            | * implement the getPiwigoSystemPath() function 
     31|         |            | 
     32|         |            | * implement the rmDir() function 
     33|         |            | 
     34| 1.3.2   | 2011/01/28 | * implement the addUI() function 
     35|         |            | 
     36|         |            | * implement getMinified() & setMinifiedState() functions 
     37|         |            | 
    3338|         |            | 
    3439|         |            | 
     
    4752    - static function addHeaderCSS 
    4853    - static function addHeaderJS 
     54    - static function addUI 
     55    - static function getMinified 
     56    - static function setMinifiedState 
    4957    - static function getUserLanguageDesc 
    5058    - static function getPiwigoSystemPath 
     
    5866{ 
    5967  static private $piwigoSystemPath; 
     68  static private $minified='.min'; 
    6069 
    6170  static public $pluginName = "GPCCore"; 
     
    7988        Array('name' => "CommonPlugin", 'version' => "2.2.0"), 
    8089        Array('name' => "GPCAjax", 'version' => "3.0.0"), 
    81         Array('name' => "GPCCore", 'version' => "1.3.1"), 
     90        Array('name' => "GPCCategorySelector", 'version' => "1.0.1"), 
     91        Array('name' => "GPCCore", 'version' => "1.3.2"), 
    8292        Array('name' => "GPCCss", 'version' => "3.0.0"), 
    83         Array('name' => "GPCPagesNavigations", 'version' => "2.0.0"), 
     93        Array('name' => "GPCPagesNavigation", 'version' => "2.0.0"), 
    8494        Array('name' => "GPCPublicIntegration", 'version' => "2.0.0"), 
    85         Array('name' => "GPCRequestBuilder", 'version' => "1.1.0"), 
     95        Array('name' => "GPCRequestBuilder", 'version' => "1.1.2"), 
    8696        Array('name' => "GPCTables", 'version' => "1.5.0"), 
    8797        Array('name' => "GPCTabSheet", 'version' => "1.1.1"), 
    88         Array('name' => "GPCTranslate", 'version' => "2.1.0"), 
    89         Array('name' => "GPCUsersGroups", 'version' => "2.0.0"), 
     98        Array('name' => "GPCTranslate", 'version' => "2.1.1"), 
     99        Array('name' => "GPCUsersGroups", 'version' => "2.1.0") 
    90100      ) 
    91101    ); 
     
    365375  { 
    366376    global $template; 
     377    $dummy1=null; 
     378    $dummy2=null; 
    367379 
    368380    foreach(self::$headerItems['css'] as $file) 
     
    373385    foreach(self::$headerItems['js'] as $file) 
    374386    { 
    375       $template->append('head_elements', '<script type="text/javascript" src="'.$file.'"></script>'); 
    376     } 
    377   } 
     387      //$template->append('head_elements', '<script type="text/javascript" src="'.$file.'"></script>'); 
     388      $template->block_html_head(null, '<script type="text/javascript" src="'.$file.'"></script>', $dummy1, $dummy2); 
     389    } 
     390  } 
     391 
     392  /** 
     393   * add a ui component ; css & js dependencies are managed 
     394   * 
     395   * @param Array $list : possibles values are 
     396   *                        - inputCheckbox 
     397   *                        - inputColorPicker 
     398   *                        - inputColorsFB 
     399   *                        - inputConsole 
     400   *                        - inputDotArea 
     401   *                        - inputList 
     402   *                        - inputNum 
     403   *                        - inputPosition 
     404   *                        - inputRadio 
     405   *                        - inputStatusBar 
     406   *                        - inputText 
     407   *                        - categorySelector 
     408   */ 
     409  static public function addUI($list) 
     410  { 
     411    global $template; 
     412 
     413    if(is_string($list)) $list=explode(',', $list); 
     414    if(!is_array($list)) return(false); 
     415 
     416    if(defined('IN_ADMIN')) 
     417    { 
     418      $themeFile=GPC_PATH.'css/%s_'.$template->get_themeconf('name').'.css'; 
     419    } 
     420    else 
     421    { 
     422      $themeFile='themes/'.$template->get_themeconf('name').'/css/GPC%s.css'; 
     423    } 
     424 
     425    foreach($list as $ui) 
     426    { 
     427      switch($ui) 
     428      { 
     429        case 'googleTranslate': 
     430          self::addHeaderJS('google.jsapi', 'http://www.google.com/jsapi'); 
     431          self::addHeaderJS('gpc.googleTranslate', 'plugins/GrumPluginClasses/js/google_translate'.self::$minified.'.js'); 
     432        case 'categorySelector': 
     433          self::addHeaderCSS('gpc.categorySelector', GPC_PATH.'css/categorySelector.css'); 
     434          self::addHeaderCSS('gpc.categorySelectorT', sprintf($themeFile, 'categorySelector')); 
     435          self::addHeaderJS('gpc.categorySelector', GPC_PATH.'js/ui.categorySelector'.self::$minified.'.js'); 
     436          break; 
     437        case 'inputCheckbox': 
     438          self::addHeaderCSS('gpc.inputCheckbox', GPC_PATH.'css/inputCheckbox.css'); 
     439          self::addHeaderJS('gpc.inputCheckbox', GPC_PATH.'js/ui.inputCheckbox'.self::$minified.'.js'); 
     440          break; 
     441        case 'inputColorPicker': 
     442          self::addHeaderCSS('gpc.inputText', GPC_PATH.'css/inputText.css'); 
     443          self::addHeaderCSS('gpc.inputNum', GPC_PATH.'css/inputNum.css'); 
     444          self::addHeaderCSS('gpc.inputColorsFB', GPC_PATH.'css/inputColorsFB.css'); 
     445          self::addHeaderCSS('gpc.inputDotArea', GPC_PATH.'css/inputDotArea.css'); 
     446          self::addHeaderCSS('gpc.inputColorPicker', GPC_PATH.'css/inputColorPicker.css'); 
     447          self::addHeaderCSS('gpc.inputTextT', sprintf($themeFile, 'inputText')); 
     448          self::addHeaderCSS('gpc.inputNumT', sprintf($themeFile, 'inputNum')); 
     449          self::addHeaderCSS('gpc.inputColorsFBT', sprintf($themeFile, 'inputColorsFB')); 
     450          self::addHeaderCSS('gpc.inputDotAreaT', sprintf($themeFile, 'inputDotArea')); 
     451          self::addHeaderCSS('gpc.inputColorPickerT', sprintf($themeFile, 'inputColorPicker')); 
     452          self::addHeaderJS('jquery.ui', 'themes/default/js/ui/packed/ui.core.packed.js'); 
     453          self::addHeaderJS('jquery.ui.slider', 'themes/default/js/ui/packed/ui.slider.packed.js'); 
     454          self::addHeaderJS('jquery.ui.draggable', 'themes/default/js/ui/packed/ui.draggable.packed.js'); 
     455          self::addHeaderJS('jquery.ui.dialog', 'themes/default/js/ui/packed/ui.slider.dialog.js'); 
     456          self::addHeaderJS('gpc.inputText', GPC_PATH.'js/ui.inputText'.self::$minified.'.js'); 
     457          self::addHeaderJS('gpc.inputNum', GPC_PATH.'js/ui.inputNum'.self::$minified.'.js'); 
     458          self::addHeaderJS('gpc.inputColorsFB', GPC_PATH.'js/ui.inputColorsFB'.self::$minified.'.js'); 
     459          self::addHeaderJS('gpc.inputDotArea', GPC_PATH.'js/ui.inputDotArea'.self::$minified.'.js'); 
     460          self::addHeaderJS('gpc.inputColorPicker', GPC_PATH.'js/ui.inputColorPicker'.self::$minified.'.js'); 
     461          break; 
     462        case 'inputColorsFB': 
     463          self::addHeaderCSS('gpc.inputColorsFB', GPC_PATH.'css/inputColorsFB.css'); 
     464          self::addHeaderCSS('gpc.inputColorsFBT', sprintf($themeFile, 'inputColorsFB')); 
     465          self::addHeaderJS('gpc.inputColorsFB', GPC_PATH.'js/ui.inputColorsFB'.self::$minified.'.js'); 
     466          break; 
     467        case 'inputConsole': 
     468          self::addHeaderCSS('gpc.inputConsole', GPC_PATH.'css/inputConsole.css'); 
     469          self::addHeaderCSS('gpc.inputConsoleT', sprintf($themeFile, 'inputConsole')); 
     470          self::addHeaderJS('gpc.inputConsole', GPC_PATH.'js/ui.inputConsole'.self::$minified.'.js'); 
     471          break; 
     472        case 'inputDotArea': 
     473          self::addHeaderCSS('gpc.inputDotArea', GPC_PATH.'css/inputDotArea.css'); 
     474          self::addHeaderCSS('gpc.inputDotAreaT', sprintf($themeFile, 'inputDotArea')); 
     475          self::addHeaderJS('gpc.inputDotArea', GPC_PATH.'js/ui.inputDotArea'.self::$minified.'.js'); 
     476          break; 
     477        case 'inputList': 
     478          self::addHeaderCSS('gpc.inputList', GPC_PATH.'css/inputList.css'); 
     479          self::addHeaderCSS('gpc.inputListT', sprintf($themeFile, 'inputList')); 
     480          self::addHeaderJS('gpc.inputList', GPC_PATH.'js/ui.inputList'.self::$minified.'.js'); 
     481          break; 
     482        case 'inputNum': 
     483          self::addHeaderCSS('gpc.inputNum', GPC_PATH.'css/inputNum.css'); 
     484          self::addHeaderCSS('gpc.inputNumT', sprintf($themeFile, 'inputNum')); 
     485          self::addHeaderJS('jquery.ui', 'themes/default/js/ui/packed/ui.core.packed.js'); 
     486          self::addHeaderJS('jquery.ui.slider', 'themes/default/js/ui/packed/ui.slider.packed.js'); 
     487          self::addHeaderJS('gpc.inputNum', GPC_PATH.'js/ui.inputNum'.self::$minified.'.js'); 
     488          break; 
     489        case 'inputPosition': 
     490          self::addHeaderCSS('gpc.inputPosition', GPC_PATH.'css/inputPosition.css'); 
     491          self::addHeaderCSS('gpc.inputPositionT', sprintf($themeFile, 'inputPosition')); 
     492          self::addHeaderJS('gpc.inputPosition', GPC_PATH.'js/ui.inputPosition'.self::$minified.'.js'); 
     493          break; 
     494        case 'inputRadio': 
     495          self::addHeaderJS('gpc.inputRadio', GPC_PATH.'js/ui.inputRadio'.self::$minified.'.js'); 
     496          break; 
     497        case 'inputStatusBar': 
     498          self::addHeaderCSS('gpc.inputStatusBar', GPC_PATH.'css/inputStatusBar.css'); 
     499          self::addHeaderCSS('gpc.inputStatusBarT', sprintf($themeFile, 'inputStatusBar')); 
     500          self::addHeaderJS('gpc.inputStatusBar', GPC_PATH.'js/ui.inputStatusBar'.self::$minified.'.js'); 
     501          break; 
     502        case 'inputText': 
     503          self::addHeaderCSS('gpc.inputText', GPC_PATH.'css/inputText.css'); 
     504          self::addHeaderCSS('gpc.inputTextT', sprintf($themeFile, 'inputText')); 
     505          self::addHeaderJS('gpc.inputText', GPC_PATH.'js/ui.inputText'.self::$minified.'.js'); 
     506          break; 
     507      } 
     508    } 
     509  } 
     510 
     511  /** 
     512   * return the minified value 
     513   * 
     514   * @return String 
     515   */ 
     516  static public function getMinified() 
     517  { 
     518    return(self::$minified); 
     519  } 
     520 
     521  /** 
     522   * set the minified state 
     523   * 
     524   * @param Bool $state 
     525   * @return Bool 
     526   */ 
     527  static public function setMinifiedState($state) 
     528  { 
     529    if($state) 
     530    { 
     531      self::$minified='.min'; 
     532    } 
     533    else 
     534    { 
     535      self::$minified=''; 
     536    } 
     537    return(self::$minified!=''); 
     538  } 
     539 
    378540 
    379541  /** 
  • extensions/GrumPluginClasses/classes/GPCRequestBuilder.class.inc.php

    r7451 r8961  
    22/* ----------------------------------------------------------------------------- 
    33  class name: GCPRequestBuilder 
    4   class version  : 1.1.1 
    5   plugin version : 3.3.2 
     4  class version  : 1.1.2 
     5  plugin version : 3.3.3 
    66  date           : 2010-09-08 
    77 
     
    7575|         |            | * fix bug on user level access to picture 
    7676|         |            | 
    77 |         |            | 
    78 |         |            | 
     77| 1.1.2   | 2010/11/01 | * mantis bug:1984 
     78|         |            |   . RBuilder returns an error message when one picture 
     79|         |            |     have multiple categories 
    7980|         |            | 
    8081|         |            | 
     
    522523    GPCCore::addHeaderJS('gpc.interface', 'plugins/'.$baseName.'external/interface/interface.js'); 
    523524    GPCCore::addHeaderJS('gpc.inestedsortable', 'plugins/'.$baseName.'external/inestedsortable.pack.js'); 
    524     GPCCore::addHeaderJS('gpc.rbCriteriaBuilder', 'plugins/'.$baseName.'rbCriteriaBuilder.packed.js'); 
     525    GPCCore::addHeaderJS('gpc.rbCriteriaBuilder', 'plugins/'.$baseName.'rbCriteriaBuilder'.GPCCore::getMinified().'.js'); 
    525526 
    526527    $template->append('head_elements', 
     
    829830      'SELECT' => Array( 
    830831        'RB_PIT' => "pit.id AS imageId, pit.name AS imageName, pit.path AS imagePath", // from the piwigo's image table 
    831         'RB_PIC' => "GROUP_CONCAT(DISTINCT pic.category_id SEPARATOR ',') AS imageCategoriesId",     // from the piwigo's image_category table 
    832         'RB_PCT' => "GROUP_CONCAT(DISTINCT CASE WHEN pct.name IS NULL THEN '' ELSE pct.name END SEPARATOR '#sep#') AS imageCategoriesNames, 
    833                      GROUP_CONCAT(DISTINCT CASE WHEN pct.permalink IS NULL THEN '' ELSE pct.permalink END SEPARATOR '#sep#') AS imageCategoriesPLink, 
    834                      GROUP_CONCAT(DISTINCT CASE WHEN pct.dir IS NULL THEN 'V' ELSE 'P' END) AS imageCategoriesDir",   //from the piwigo's categories table 
     832        'RB_PIC' => "GROUP_CONCAT( pic.category_id SEPARATOR ',') AS imageCategoriesId",     // from the piwigo's image_category table 
     833        'RB_PCT' => "GROUP_CONCAT( CASE WHEN pct.name IS NULL THEN '' ELSE pct.name END SEPARATOR '#sep#') AS imageCategoriesNames, 
     834                     GROUP_CONCAT( CASE WHEN pct.permalink IS NULL THEN '' ELSE pct.permalink END SEPARATOR '#sep#') AS imageCategoriesPLink, 
     835                     GROUP_CONCAT( CASE WHEN pct.dir IS NULL THEN 'V' ELSE 'P' END) AS imageCategoriesDir",   //from the piwigo's categories table 
    835836      ), 
    836837      'FROM' => Array( 
     
    13741375    $filter=array_flip($filter); 
    13751376 
     1377    GPCCore::addHeaderJS('jquery.ui', 'themes/default/js/ui/packed/ui.core.packed.js'); 
     1378    GPCCore::addHeaderJS('jquery.ui.dialog', 'themes/default/js/ui/packed/ui.dialog.packed.js'); 
     1379    GPCCore::addHeaderJS('gpc.pagesNavigator', 'plugins/'.$baseName.'/js/pagesNavigator'.GPCCore::getMinified().'.js'); 
     1380    GPCCore::addHeaderJS('gpc.rbSearch', 'plugins/'.$baseName.'/js/rbSearch'.GPCCore::getMinified().'.js'); 
     1381 
     1382 
    13761383    $template->set_filename('gpc_search_page', 
    13771384                dirname(dirname(__FILE__)).'/templates/GPCRequestBuilder_search.tpl'); 
  • extensions/GrumPluginClasses/classes/GPCTranslate.class.inc.php

    r5550 r8961  
    33/* ----------------------------------------------------------------------------- 
    44  class name     : GPCTranslate 
    5   class version  : 2.1.0 
    6   plugin version : 3.0.0 
    7   date           : 2010-03-31 
     5  class version  : 2.1.1 
     6  plugin version : 3.4.0 
     7  date           : 2011-01-28 
    88  ------------------------------------------------------------------------------ 
    99  author: grum at piwigo.org 
    1010  << May the Little SpaceFrog be with you >> 
    1111  ------------------------------------------------------------------------------ 
    12  
    1312 
    1413  ------------------------------------------------------------------------------ 
     
    1918| 2.1.0   | 2010/03/31 | * update class & functions names 
    2019|         |            | 
     20| 2.1.1   | 2011/01/09 | * fixbug on js loading 
    2121|         |            | 
    22 |         |            | 
     22|         |            | * use GPCCore::addUI function (the class is kept for 
     23|         |            |   compatibility with older plugins) 
    2324|         |            | 
    2425|         |            | 
    2526 
    2627  ------------------------------------------------------------------------------ 
    27  
    28  
    2928   class call API in HTML header, and provide a .js file manage API call 
    3029        >>  http://code.google.com/apis/ajaxlanguage/ 
    3130 
    3231    - constructor 
    33  
    3432   ---------------------------------------------------------------------- */ 
    3533class GPCTranslate 
     
    3735  public function __construct() 
    3836  { 
    39     add_event_handler('loc_end_page_header', array(&$this, 'loadJS')); 
     37    GPCCore::addUI('googleTranslate'); 
    4038  } 
    41  
    42   public function loadJS() 
    43   { 
    44     global $template; 
    45  
    46     $googleload=' 
    47 <script type="text/javascript" src="http://www.google.com/jsapi"></script> 
    48 <script type="text/javascript" src="plugins/'.basename(dirname(__FILE__)).'/google_translate.js"></script>'; 
    49  
    50     $template->append('head_elements', $googleload); 
    51   } 
    52  
    5339} //class 
    5440 
  • extensions/GrumPluginClasses/classes/GPCUsersGroups.class.inc.php

    r5550 r8961  
    33/* ----------------------------------------------------------------------------- 
    44  class name: GPCAllowedAccess, GPCGroups, GPCUsers 
    5   class version  : 2.0.0 
    6   plugin version : 3.0.0 
     5  class version  : 2.1.0 
     6  plugin version : 3.4.0 
    77  date           : 2010-03-30 
    88  ------------------------------------------------------------------------------ 
     
    1414  groups and users classes extends GPCAllowedAccess classes 
    1515 
    16     - constructor GPCAllowedAccess($alloweds="") 
    17     - constructor groups($alloweds="") 
    18     - constructor users($alloweds="") 
     16    - constructor GPCAllowedAccess($alloweds = array(), $accessMode='a') 
     17    - constructor groups($alloweds = array(), $accessMode='a') 
     18    - constructor users($alloweds = array(), $accessMode='a') 
    1919    - (public) function getList() 
    2020    - (public) function setAllowed($id, $allowed) 
    21     - (public) function setAlloweds() 
    22     - (public) function getAlloweds($return_type) 
     21    - (public) function setAlloweds($idList, $allowed) 
     22    - (public) function getAlloweds() 
    2323    - (public) function isAllowed($id) 
    24     - (public) function htmlView($sep=", ", $empty="") 
    25     - (public) function htmlForm($basename) 
    2624    - (private) function initList() 
    2725 
     
    3432|         |            | * update classes & functions names 
    3533|         |            | 
     34| 2.1.0   | 2011/01/15 | * remove html function 
     35|         |            | 
     36|         |            | * implement accessMode 
     37|         |            | 
    3638|         |            | 
    3739 
     
    3941class GPCAllowedAccess 
    4042{ 
    41   public $access_list; 
    42  
    43   /* 
    44     constructor initialize the groups_getListgetListlist 
    45   */ 
    46   public function __construct($alloweds = "") 
     43  protected $accessList; 
     44  protected $accessMode='a'; // 'a' : allowed, 'n' : not allowed 
     45 
     46  /** 
     47   * constructor initialize default values 
     48   * 
     49   * @param Array $alloweds  : list of items 
     50   *        String $alloweds : list of items (separator : '/') 
     51   * 
     52   * @param String $accessMode : 'a' = access is allowed by default for all values, $allowed param is a list of not allowed values 
     53   *                             'n' = access is not allowed by default for all values, $allowed param is a list of allowed values 
     54   *                             priority is given to the $allowed value 
     55   */ 
     56  public function __construct($alloweds = array(), $accessMode='a') 
    4757  { 
    4858    $this->initList(); 
    49     $this->setAlloweds($alloweds); 
     59    $this->setAlloweds($alloweds, $accessMode=='n'); 
    5060  } 
    5161 
    5262  public function __destruct() 
    5363  { 
    54     unset($this->access_list); 
    55   } 
    56  
    57   /* 
    58     initialize the groups list 
    59   */ 
     64    unset($this->accessList); 
     65  } 
     66 
     67  /** 
     68   * destroy the groups list 
     69   */ 
    6070  protected function initList() 
    6171  { 
    62     $this->access_list=array(); 
    63   } 
    64  
    65   /* 
    66     returns list (as an array) 
    67   */ 
     72    $this->accessList=array(); 
     73  } 
     74 
     75  /** 
     76   * returns list of items (as an array) 
     77   * each array item is an array : 
     78   *  'id'      : (String) id of item 
     79   *  'name'    : (String) name of item 
     80   *  'allowed' : (Bool)   access is allowed or not 
     81   * 
     82   * @return Array 
     83   */ 
    6884  function getList() 
    6985  { 
    70     return($this->access_list); 
    71   } 
    72  
    73   /* 
    74     set element an allowed state 
    75   */ 
     86    return($this->accessList); 
     87  } 
     88 
     89  /** 
     90   * set allowed value for an item 
     91   * 
     92   * @param String $id : id of item 
     93   * @param Bool $allowed : access allowed or not 
     94   */ 
    7695  function setAllowed($id, $allowed) 
    7796  { 
    78     if(isset($this->access_list[$id])) 
    79     { 
    80       $this->access_list[$id]['allowed']=$allowed; 
    81     } 
    82   } 
    83  
    84   /* 
    85     set a group enabled/disabled state 
    86   */ 
    87   function setState($id, $enabled) 
    88   { 
    89     if(isset($this->access_list[$id])) 
    90     { 
    91       $this->access_list[$id]['enabled']=$enabled; 
    92     } 
    93   } 
    94  
    95   /* 
    96     set alloweds list 
    97     $list is string of id, separated with "/" 
    98   */ 
    99   function setAlloweds($list) 
    100   { 
    101     $alloweds=explode("/", $list); 
    102     $alloweds=array_flip($alloweds); 
    103     foreach($this->access_list as $key => $val) 
    104     { 
    105       if(isset($alloweds[$key])) 
     97    if(isset($this->accessList[$id])) 
     98    { 
     99      $this->accessList[$id]['allowed']=$allowed; 
     100    } 
     101  } 
     102 
     103 
     104  /** 
     105   * set alloweds items (can be given as an array or a string with separator '/') 
     106   * according to the 
     107   * 
     108   * @param Array $idList  : list of items to set 
     109   * @param String $idList 
     110   * @param Bool $allowed : access allowed or not 
     111   */ 
     112  function setAlloweds($idList, $allowed) 
     113  { 
     114    if(!is_array($idList)) $idList=explode("/", $idList); 
     115 
     116    $idList=array_flip($idList); 
     117 
     118    foreach($this->accessList as $key => $val) 
     119    { 
     120      if(isset($idList[$key])) 
    106121      { 
    107         $this->access_list[$key]['allowed']=true; 
     122        $this->accessList[$key]['allowed']=$allowed; 
    108123      } 
    109124      else 
    110125      { 
    111         $this->access_list[$key]['allowed']=false; 
     126        $this->accessList[$key]['allowed']=!$allowed; 
    112127      } 
    113128    } 
    114129  } 
    115130 
    116   /* 
    117     get alloweds list 
    118     return a string of groups, separated with "/" 
    119   */ 
    120   function getAlloweds($return_type = 'name') 
    121   { 
    122     $returned=""; 
    123     foreach($this->access_list as $key => $val) 
    124     { 
    125       if($val['allowed']) 
    126       { $returned.=$val[$return_type]."/"; } 
     131 
     132  /** 
     133   * return list of alloweds items 
     134   * 
     135   * @return Array 
     136   */ 
     137  function getAlloweds() 
     138  { 
     139    $returned=Array(); 
     140 
     141    foreach($this->accessList as $key => $val) 
     142    { 
     143      if($val['allowed']) $returned[]=$val; 
    127144    } 
    128145    return($returned); 
     
    130147 
    131148 
    132   /* 
    133     returns true if is allowed 
    134   */ 
     149  /** 
     150   * returns true if is allowed 
     151   * 
     152   * @param String $id : item id 
     153   * @retrun Bool 
     154   */ 
    135155  function isAllowed($id) 
    136156  { 
    137     if(isset($this->access_list[$id])) 
    138     { return($this->access_list[$id]['allowed']); } 
     157    if(isset($this->accessList[$id])) 
     158    { 
     159      return($this->accessList[$id]['allowed']); 
     160    } 
    139161    else 
    140     { return(false); } 
    141   } 
    142  
    143   /* 
    144     returns true if all or one is allowed 
    145       ids is an array 
    146   */ 
    147   function areAllowed($ids, $all=false) 
    148   { 
    149     foreach($ids as $val) 
    150     { 
    151       if($all) 
    152       { 
    153         if(!$this->isAllowed($val)) 
    154         { 
    155           return(false); 
    156         } 
    157       } 
    158       else 
    159       { 
    160         if($this->isAllowed($val)) 
    161         { 
    162           return(true); 
    163         } 
    164       } 
    165     } 
    166     return(false); 
    167   } 
    168  
    169   /* 
    170     returns an HTML list with label rather than id 
    171   */ 
    172   function htmlView($sep=", ", $empty="") 
    173   { 
    174     $returned=""; 
    175     foreach($this->access_list as $key => $val) 
    176     { 
    177       if($val['allowed']) 
    178       { 
    179         if($returned!="") 
    180         { 
    181           $returned.=$sep; 
    182         } 
    183         $returned.=$val['name']; 
    184       } 
    185     } 
    186     if($returned=="") 
    187     { 
    188       $returned=$empty; 
    189     } 
    190     return($returned); 
    191   } 
    192   /* 
    193     returns a generic HTML form to manage the groups access 
    194   */ 
    195   function htmlForm($basename) 
    196   { 
    197     /* 
    198     <!-- BEGIN allowed_group_row --> 
    199     <label><input type="checkbox" name="fmypolls_att_allowed_groups_{allowed_group_row.ID}" {allowed_group_row.CHECKED}/>&nbsp;{allowed_group_row.NAME}</label> 
    200     <!-- END allowed_group_row --> 
    201     */ 
    202     $text=''; 
    203     foreach($this->access_list as $key => $val) 
    204     { 
    205       if($val['allowed']) 
    206       { 
    207         $checked=' checked'; 
    208       } 
    209       else 
    210       { 
    211         $checked=''; 
    212       } 
    213  
    214       if($val['enabled']) 
    215       { 
    216         $enabled=''; 
    217       } 
    218       else 
    219       { 
    220         $enabled=' disabled'; 
    221       } 
    222  
    223       $text.='<label><input type="checkbox" name="'.$basename.$val['id'].'" '.$checked.$enabled.'/> 
    224           &nbsp;'.$val['name'].'</label>&nbsp;'; 
    225     } 
    226     return($text); 
    227   } 
     162    { 
     163      return($this->accessMode=='a'); 
     164    } 
     165  } 
     166 
    228167} //GPCAllowedAccess 
    229168 
     
    235174 
    236175 
    237 /* ---------------------------------------------------------------------- 
    238    this class provides base functions to manage groups access 
    239     initList redefined to initialize access_list from database GROUPS 
    240    ---------------------------------------------------------------------- */ 
     176/** 
     177 * ---------------------------------------------------------------------------- 
     178 *  this class provides base functions to manage groups access 
     179 *  initList redefined to initialize accessList from database GROUPS 
     180 * ---------------------------------------------------------------------------- 
     181 */ 
    241182class GPCGroups extends GPCAllowedAccess 
    242183{ 
    243   /* 
    244     initialize the groups list 
    245   */ 
     184  /** 
     185   * initialize the groups list 
     186   */ 
    246187  protected  function initList() 
    247188  { 
    248     $this->access_list=array(); 
     189    $this->accessList=array(); 
    249190    $sql="SELECT id, name FROM ".GROUPS_TABLE." ORDER BY name"; 
    250191    $result=pwg_query($sql); 
     
    253194      while($row=pwg_db_fetch_assoc($result)) 
    254195      { 
    255         $this->access_list[$row['id']] = 
    256                    array('id' => $row['id'], 
    257                          'name' => $row['name'], 
    258                          'allowed' => false, 
    259                          'enabled' => true); 
     196        $this->accessList[$row['id']]=array( 
     197            'id' => $row['id'], 
     198            'name' => $row['name'], 
     199            'allowed' => ($this->accessMode=='a') 
     200          ); 
    260201      } 
    261202    } 
     
    270211 
    271212 
    272 /* ----------------------------------------------------------------------------- 
    273    this class provides base functions to manage users access 
    274 ----------------------------------------------------------------------------- */ 
     213/** 
     214 * ---------------------------------------------------------------------------- 
     215 *  this class provides base functions to manage users access 
     216 *  initList redefined to initialize accessList from piwigo's predefined values 
     217 * ---------------------------------------------------------------------------- 
     218 */ 
    275219class GPCUsers extends GPCAllowedAccess 
    276220{ 
    277   /* 
    278     constructor 
    279   */ 
    280   public function __construct($alloweds = "") 
    281   { 
    282     parent::__construct($alloweds); 
    283     $this->setState('admin', false); 
    284     $this->setAllowed('admin', true); 
    285   } 
    286  
    287   /* 
    288     initialize the groups list 
    289   */ 
     221  /** 
     222   * initialize the users list 
     223   */ 
    290224  protected function initList() 
    291225  { 
    292     $users_list = array('guest', 'generic', 'normal', 'webmaster', 'admin'); 
    293     $this->access_list=array(); 
    294     foreach($users_list as $val) 
    295     { 
    296       $this->access_list[$val] = 
    297                   array('id' => $val, 
    298                         'name' => l10n('user_status_'.$val), 
    299                         'allowed' => false, 
    300                         'enabled' => true); 
     226    $usersList = array('guest', 'generic', 'normal', 'webmaster', 'admin'); 
     227    $this->accessList=array(); 
     228    foreach($usersList as $val) 
     229    { 
     230      $this->accessList[$val]=array( 
     231          'id' => $val, 
     232          'name' => l10n('user_status_'.$val), 
     233          'allowed' => ($this->accessMode=='a') 
     234        ); 
    301235    } 
    302236  } 
  • extensions/GrumPluginClasses/classes/genericjs.class.inc.php

    r5958 r8961  
    11<?php 
    2  
    3 /* ----------------------------------------------------------------------------- 
    4   class name: genericjs 
    5   class version: 2.0 
    6   date: 2008-07-20 
    7   ------------------------------------------------------------------------------ 
    8   author: grum at grum.dnsalias.com 
    9   << May the Little SpaceFrog be with you >> 
    10   ------------------------------------------------------------------------------ 
    11  
    12    this classes provides base functions to add genericjs.js file into html page 
    13  
    14    > see genericjs.js file to know javascript functions added 
    15  
    16     - constructor genericjs() 
    17    ---------------------------------------------------------------------- */ 
    18  
    19  
    20 class genericjs 
    21 { 
    22   function genericjs() 
    23   { 
    24     add_event_handler('loc_end_page_header', array(&$this, 'load_JS')); 
    25   } 
    26  
    27   function load_JS() 
    28   { 
    29     global $template; 
    30  
    31     $name='plugins/'.basename(dirname(dirname(__FILE__))).'/js/genericjs.js'; 
    32  
    33     $template->append('head_elements', '<script src="'.$name.'" type="text/javascript"></script>'); 
    34  
    35   } 
    36  
    37 } //class 
    38  
    39 $genericjs=new genericjs(); 
    40  
     2/* 
     3 * dummy file to avoid compatibility problem with older plugin. 
     4 * 
     5 * this file have to be removed on the next release. 
     6 */ 
    417?> 
  • extensions/GrumPluginClasses/css/categorySelector_clear.css

    r7349 r8961  
    22.ui-category-selector { 
    33  cursor:default; 
    4   padding:2px; 
     4  min-height:17px; 
     5  padding:0; 
     6} 
     7div.ui-category-selector:focus { 
     8  outline:none; 
    59} 
    610 
     
    1014  float:right; 
    1115  font-size:8px; 
     16  max-height:8px; 
    1217} 
    1318 
     
    1722  font-size:14px; 
    1823  font-family:sans-serif; 
     24  z-index:9999; 
    1925} 
    2026 
     
    2329} 
    2430 
    25 li.ui-category-selector-item div { 
    26   margin:2px; 
     31div.ui-category-selector-multiple div.ui-category-selector-check, 
     32div.ui-category-selector-multiple div.ui-category-selector-name { 
     33   display:inline-block; 
    2734} 
    28  
    2935.ui-category-selector-expandable-item, 
    3036.ui-category-selector-collapsable-item { 
     
    3339 
    3440.ui-category-selector-check { 
    35   position:absolute; 
    36   left:0px; 
    37   width:15px; 
    38   height:15px; 
    39   background: none no-repeat scroll 0px 0px; 
     41  background:none no-repeat scroll 0 0 transparent; 
     42  display:inline-block; 
     43  height:13px; 
     44  width:17px; 
    4045} 
     46 
     47 
     48/* --- */ 
     49.ui-category-selector-name ul { list-style:none; margin:0; padding:0; } 
     50.ui-category-selector-name li.ui-category-selector-selected-cat { 
     51  -moz-border-radius:3px; 
     52  -webkit-border-radius:3px; 
     53  -khtml-border-radius:3px; 
     54  border-radius:3px; 
     55  float:left; 
     56  margin-bottom:1px; 
     57  margin-right:1px; 
     58  padding:0 4px; 
     59  cursor:default; 
     60} 
     61.ui-category-selector-name ul li.ui-category-selector-selected-cat span { cursor:pointer; } 
     62.ui-category-selector-name li span { 
     63  font-family:sans; 
     64  font-size:80%; 
     65  font-weight:bold; 
     66  padding:0 3px; 
     67  position:relative; 
     68  top:-1px; 
     69} 
     70.ui-category-selector-arrow { 
     71  border-style:solid; 
     72  border-width:1px; 
     73  cursor:pointer; 
     74  font-weight:bold; 
     75  width:14px; 
     76  margin-top:1px; 
     77  height:14px; 
     78  text-align:center; 
     79  display:inline-block; 
     80} 
     81.ui-category-selector-name { 
     82  padding:1px; 
     83} 
     84 
     85 
    4186 
    4287/* clear css */ 
     
    77122  background-image:url(./../icons/check_checked_clear.png); 
    78123} 
     124 
     125/* --- */ 
     126.ui-category-selector-name ul li.ui-category-selector-selected-cat { 
     127  background:#999999; 
     128  color:#DDDDDD; 
     129  margin-top:1px; 
     130  padding-top:1px; 
     131} 
     132 
     133.ui-error, input[type='text'].ui-error { 
     134  background:#ff8080; 
     135  border-color:#800000; 
     136  color:#800000; 
     137} 
     138 
     139.ui-category-selector-arrow { 
     140  background:none repeat scroll 0 0 #999999; 
     141  border-color:#DDDDDD #666666 #666666 #DDDDDD; 
     142  color:#005E89; 
     143} 
     144 
     145.ui-category-selector-arrow-active { 
     146  border-color:#666666 #DDDDDD #DDDDDD #666666; 
     147} 
  • extensions/GrumPluginClasses/css/categorySelector_roma.css

    r7175 r8961  
    22.ui-category-selector { 
    33  cursor:default; 
    4   padding:2px; 
     4  min-height:17px; 
     5  padding:0; 
     6} 
     7div.ui-category-selector:focus { 
     8  outline:none; 
    59} 
    610 
     
    1014  float:right; 
    1115  font-size:8px; 
     16  max-height:8px; 
    1217} 
    1318 
     
    1722  font-size:14px; 
    1823  font-family:sans-serif; 
     24  z-index:9999; 
    1925} 
    2026 
     
    2329} 
    2430 
    25 li.ui-category-selector-item div { 
    26   margin:2px; 
     31div.ui-category-selector-multiple div.ui-category-selector-check, 
     32div.ui-category-selector-multiple div.ui-category-selector-name { 
     33   display:inline-block; 
    2734} 
    28  
    2935.ui-category-selector-expandable-item, 
    3036.ui-category-selector-collapsable-item { 
     
    3339 
    3440.ui-category-selector-check { 
    35   position:absolute; 
    36   left:0px; 
    37   width:15px; 
    38   height:15px; 
    39   background: none no-repeat scroll 0px 0px; 
     41  background:none no-repeat scroll 0 0 transparent; 
     42  display:inline-block; 
     43  height:13px; 
     44  width:17px; 
     45} 
     46 
     47 
     48/* --- */ 
     49.ui-category-selector-name ul { list-style:none; margin:0; padding:0; } 
     50.ui-category-selector-name li.ui-category-selector-selected-cat { 
     51  -moz-border-radius:3px; 
     52  -webkit-border-radius:3px; 
     53  -khtml-border-radius:3px; 
     54  border-radius:3px; 
     55  float:left; 
     56  margin-bottom:1px; 
     57  margin-right:1px; 
     58  padding:0 4px; 
     59  cursor:default; 
     60} 
     61.ui-category-selector-name ul li.ui-category-selector-selected-cat span { cursor:pointer; } 
     62.ui-category-selector-name li span { 
     63  font-family:sans; 
     64  font-size:80%; 
     65  font-weight:bold; 
     66  padding:0 3px; 
     67  position:relative; 
     68  top:-1px; 
     69} 
     70.ui-category-selector-arrow { 
     71  border-style:solid; 
     72  border-width:1px; 
     73  cursor:pointer; 
     74  font-weight:bold; 
     75  width:14px; 
     76  margin-top:1px; 
     77  height:14px; 
     78  text-align:center; 
     79  display:inline-block; 
     80} 
     81.ui-category-selector-name { 
     82  padding:1px; 
    4083} 
    4184 
    4285/* roma css */ 
    43  
    44 .ui-category-selector-arrow { 
    45   color:#FF3363; 
    46 } 
    4786 
    4887.ui-category-selector, 
     
    75114  background-image:url(./../icons/check_checked_roma.png); 
    76115} 
     116 
     117/* --- */ 
     118.ui-category-selector-name ul li.ui-category-selector-selected-cat { 
     119  background:#666666; 
     120  color:#999999; 
     121  margin-top:1px; 
     122  padding-top:1px; 
     123} 
     124 
     125.ui-error, input[type='text'].ui-error { 
     126  background:#ff8080; 
     127  border-color:#800000; 
     128  color:#800000; 
     129} 
     130 
     131.ui-category-selector-arrow { 
     132  background:none repeat scroll 0 0 #666666; 
     133  border-color:#999999 #444444 #444444 #999999; 
     134  color:#FF3363; 
     135} 
     136 
     137.ui-category-selector-arrow-active { 
     138  border-color:#444444 #999999 #999999 #444444; 
     139} 
  • extensions/GrumPluginClasses/css/tagSelector_roma.css

    r7349 r8961  
    5959  background:#666666; 
    6060} 
     61 
     62.ui-error, input[type='text'].ui-error { 
     63  background:#ff8080; 
     64  border-color:#800000; 
     65  color:#800000; 
     66} 
  • extensions/GrumPluginClasses/gpc_version.inc.php

    r8809 r8961  
    1515  if(!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!'); 
    1616 
    17   if(!defined('GPC_VERSION')) define('GPC_VERSION',  '3.3.4'); 
    18   if(!defined('GPC_VERSION2')) define('GPC_VERSION2', '03.03.04'); 
     17  if(!defined('GPC_VERSION')) define('GPC_VERSION',  '3.4.0'); 
     18  if(!defined('GPC_VERSION2')) define('GPC_VERSION2', '03.04.00'); 
    1919?> 
  • extensions/GrumPluginClasses/js/google_translate.js

    r5550 r8961  
    11/* ----------------------------------------------------------------------------- 
    22  file: google_translate.js 
    3   file version: 2.0.0 
    4   date: 2008-05-25 
     3  file version: 2.1.0 
     4  date: 2011-01-09 
    55  ------------------------------------------------------------------------------ 
    66  author: grum at piwigo.org 
     
    1212  HISTORY VERSION 
    1313  v2.0.0  + 
     14  v2.1.0  + add googleTranslate function with callback parameter 
    1415  --------------------------------------------------------------------------- */ 
    1516 
     
    1718 
    1819  var global_google_translate_plugin_objdest; 
     20  var global_google_translate_plugin_callback; 
    1921  var global_google_translate_plugin_objproperty; 
    2022 
     
    4042    } 
    4143  } 
     44 
     45  function googleTranslate(text, pfrom, pto, callback) 
     46  { 
     47    global_google_translate_plugin_callback=callback; 
     48    google.language.translate(text, pfrom, pto, googleTranslateDo); 
     49  } 
     50 
     51  function googleTranslateDo(result) 
     52  { 
     53    if (!result.error) 
     54    { 
     55      global_google_translate_plugin_callback(result.translation); 
     56    } 
     57  } 
     58 
  • extensions/GrumPluginClasses/js/rbCriteriaBuilder.js

    r7370 r8961  
    22 * ----------------------------------------------------------------------------- 
    33 * file: criteriaBuilder.js 
    4  * file version: 1.1.0 
    5  * date: 2010-10-21 
     4 * file version: 1.1.1 
     5 * date: 2010-01-13 
    66 * 
    77 * JS file provided by the piwigo's plugin "GrumPluginClasses" 
     
    5858 * |         |            |   request 
    5959 * |         |            | 
    60  * |         |            | 
    61  * |         |            | 
     60 * | 1.1.1   | 2011/01/13 | * fix bug:2109 
     61 * |         |            |   . Incompatibility with IE8 
    6262 * |         |            | 
    6363 * |         |            | 
     
    354354  var serializeData=function(prefix, value) 
    355355  { 
    356     returned=''; 
     356    var returned=''; 
    357357    if(typeof value =='object') 
    358358    { 
     
    363363          returned+=serializeData(prefix+'['+key+']', value[key]); 
    364364        } 
    365         else 
     365        else if(typeof value[key] =='string' || typeof value[key] =='number' || typeof value[key] =='boolean') 
    366366        { 
    367367          returned+='&'+prefix+'['+key+']='+value[key]; 
     
    369369      } 
    370370    } 
    371     else 
     371    else if(typeof value =='string' || typeof value =='number' || typeof value =='boolean') 
    372372    { 
    373373      returned+='&'+prefix+'='+value; 
  • extensions/GrumPluginClasses/js/simpleTip.js

    r7175 r8961  
    22 * ----------------------------------------------------------------------------- 
    33 * file: simpleTip.js 
    4  * file version: 1.0.0 
    5  * date: 2010-07-10 
     4 * file version: 1.0.1 
     5 * date: 2010-12-23 
    66 * 
    77 * JS file provided by the piwigo's plugin "GrumPluginClasses" 
     
    3030 * 
    3131 * | release | date       | 
    32  * | 1.0.0   | 2010/07/10 | start to coding 
     32 * | 1.0.0   | 2010-07-10 | start to coding 
    3333 * |         |            | 
    34  * |         |            | 
     34 * | 1.0.1   | 2010-12-23 | fix minor bugs 
    3535 * |         |            | 
    3636 * |         |            | 
     
    7070      offsetY:0, 
    7171      classes:'', 
    72       arrowImgDir: './plugins/GrumPluginClasses/icons/', 
     72      arrowImgDir: '', 
    7373      arrowWidth: 12, 
    74       arrowHeight: 12, 
     74      arrowHeight: 12 
    7575    }, 
    7676    options 
     
    8484      itemIndexInc = 0, 
    8585      options={ 
    86           name:'', 
     86          name:'' 
    8787        }; 
    8888 
     
    150150          { 
    151151           title: '', 
    152            simpleTip: tip.index, 
     152           simpleTip: tip.index 
    153153          } 
    154154        ) 
     
    253253          left: '-1500px', 
    254254          top:  '-1500px', 
    255           display: 'block', 
     255          display: 'block' 
    256256        } 
    257257      ); 
     
    306306 
    307307 
    308     stWidth=$('#iSimpleTip').outerWidth(); 
    309     stHeight=$('#iSimpleTip').outerHeight(); 
    310     stWidthI=$('#iSimpleTip').innerWidth(); 
    311     stHeightI=$('#iSimpleTip').innerHeight(); 
     308    stWidth=$('#iSimpleTipContent'+options.name).outerWidth(); 
     309    stHeight=$('#iSimpleTipContent'+options.name).outerHeight(); 
     310    stWidthI=$('#iSimpleTipContent'+options.name).innerWidth(); 
     311    stHeightI=$('#iSimpleTipContent'+options.name).innerHeight(); 
    312312    bwX=(stWidth-stWidthI)/2; 
    313313    bwY=(stHeight-stHeightI)/2; 
     
    321321        y+=items[itemIndex].options.offsetY; 
    322322        arrowX=-bwX; 
    323         arrowY=-10-bwY; 
     323        arrowY=-items[itemIndex].options.arrowHeight+bwY; 
    324324        arrowModel='up'; 
    325325        break; 
     
    328328        x-=stWidth/2; 
    329329        y+=items[itemIndex].options.offsetY; 
    330         arrowX=(stWidthI-10)/2; 
    331         arrowY=-10-bwY; 
     330        arrowX=(stWidthI-items[itemIndex].options.arrowWidth)/2; 
     331        arrowY=-items[itemIndex].options.arrowHeight+bwY; 
    332332        arrowModel='up'; 
    333333        break; 
     
    336336        x-=stWidth+items[itemIndex].options.offsetX; 
    337337        y+=items[itemIndex].options.offsetY; 
    338         arrowX=stWidthI-10+bwX; 
    339         arrowY=-10-bwY; 
     338        arrowX=stWidthI-items[itemIndex].options.arrowWidth+bwX; 
     339        arrowY=-items[itemIndex].options.arrowHeight+bwY; 
    340340        arrowModel='up'; 
    341341        break; 
    342342 
    343343      case 'middle-left': 
     344        x+=items[itemIndex].options.offsetX; 
    344345        y-=stHeight/2; 
    345         arrowX=-10-bwX; 
    346         arrowY=(stHeightI-10)/2; 
     346        arrowX=-items[itemIndex].options.arrowWidth+bwX; 
     347        arrowY=(stHeightI-items[itemIndex].options.arrowHeight)/2+bwY; 
    347348        arrowModel='left'; 
    348349        break; 
     
    357358        y-=stHeight/2; 
    358359        arrowX=stWidthI+bwX; 
    359         arrowY=(stHeightI-10)/2; 
     360        arrowY=(stHeightI-items[itemIndex].options.arrowHeight)/2+bwY; 
    360361        arrowModel='right'; 
    361362        break; 
    362363 
    363364      case 'bottom-left': 
     365        x+=items[itemIndex].options.offsetX; 
    364366        y-=stHeight+items[itemIndex].options.offsetY; 
    365367        arrowX=-bwX; 
     
    371373        x-=stWidth/2; 
    372374        y-=stHeight+items[itemIndex].options.offsetY; 
    373         arrowX=(stWidthI-10)/2; 
     375        arrowX=(stWidthI-items[itemIndex].options.arrowWidth)/2+bwX; 
    374376        arrowY=stHeightI+bwY; 
    375377        arrowModel='down'; 
     
    379381        x-=stWidth+items[itemIndex].options.offsetX; 
    380382        y-=stHeight+items[itemIndex].options.offsetY; 
    381         arrowX=stWidthI-10+bwX; 
     383        arrowX=stWidthI-items[itemIndex].options.arrowWidth+bwX; 
    382384        arrowY=stHeightI+bwY; 
    383385        arrowModel='down'; 
     
    394396          marginTop: arrowY+'px', 
    395397          width: items[itemIndex].options.arrowWidth+'px', 
    396           height: items[itemIndex].options.arrowHeight+'px', 
     398          height: items[itemIndex].options.arrowHeight+'px' 
    397399        } 
    398400      ); 
     
    409411          left: x+'px', 
    410412          top:  y+'px', 
    411           display: 'none', 
     413          display: 'none' 
    412414        } 
    413415      ) 
  • extensions/GrumPluginClasses/js/ui.categorySelector.js

    r7181 r8961  
    22 * ----------------------------------------------------------------------------- 
    33 * file: ui.categorySelector.js 
    4  * file version: 1.0.1 
    5  * date: 2010-10-10 
     4 * file version: 1.1.0 
     5 * date: 2011-01-12 
    66 * 
    77 * A jQuery plugin provided by the piwigo's plugin "GrumPluginClasses" 
     
    2828 * |         |            | * add 'name' property 
    2929 * |         |            | 
     30 * | 1.1.0   | 2011/01/12 | * checkbox moved between +/- button and text 
     31 * |         |            | 
     32 * |         |            | * dropdown list is managed like dropdown list on 
     33 * |         |            |   <select> object (hidden only when object loose 
     34 * |         |            |   focus ) 
     35 * |         |            | 
     36 * |         |            | * selected values are dislayed like tags 
     37 * |         |            | 
     38 * |         |            | * add 'isValid' method 
     39 * |         |            | 
     40 * |         |            | * add 'displayPath' property 
     41 * |         |            | 
    3042 * |         |            | 
    3143 * 
     
    6173                      levelIndent:16, 
    6274                      iconWidthEC:15, 
    63                       iconWidthCheck:18, 
    6475                      serverUrl:'plugins/GrumPluginClasses/gpc_ajax.php', 
    6576                      filter:'accessible', 
     
    6879                      load:null, 
    6980                      multiple:false, 
    70                       userMode:'public' 
     81                      userMode:'public', 
     82                      popupMode:'click', 
     83                      displayPath:false, 
     84                      downArrow:'&dArr;' 
    7185                    }; 
    7286 
     
    86100                    categories:[], 
    87101                    labelStatus:['', ''], 
     102                    mouseOver:false, 
     103                    isValid:true 
    88104                  } 
    89105                ); 
     
    98114                        { 
    99115                          'class':'ui-category-selector', 
     116                          tabindex:0, 
    100117                          css:{ 
    101118                            width:'100%' 
     
    106123                        { 
    107124                          privateMethods.displaySelector($this, !$this.data('properties').selectorVisible); 
     125                          $(this).focus(); 
    108126                        } 
    109127                      ), 
     
    111129                      { 
    112130                        html: '&nbsp;', 
    113                         'class':'ui-category-selector-name', 
     131                        'class':'ui-category-selector-name' 
    114132                      } 
    115133                    ), 
     134                    containerList:null, 
    116135                    containerStatus:$('<div/>', 
    117136                      { 
     
    132151                        } 
    133152                      } 
     153                    ).bind('mousedown', 
     154                        function () 
     155                        { 
     156                          $(this).addClass('ui-category-selector-arrow-active'); 
     157                        } 
     158                    ).bind('mouseup', 
     159                        function () 
     160                        { 
     161                          $(this).removeClass('ui-category-selector-arrow-active'); 
     162                        } 
    134163                    ), 
    135  
    136164                    listContainer:$('<div/>', 
    137165                        { 
     
    144172                          } 
    145173                        } 
    146                     ).bind('mouseleave.categorySelector', 
    147                         function () 
    148                         { 
    149                           privateMethods.displaySelector($this, false); 
    150                         } 
    151                       ), 
     174                    ), 
    152175                    list:$('<ul/>', 
    153176                      { 
     
    160183                    ) 
    161184                  }; 
    162  
    163                 $this 
    164                   .html('') 
    165                   .append(objects.container.append(objects.containerArrow).append(objects.containerStatus).append(objects.containerName)) 
    166                   .append(objects.listContainer.append(objects.list)); 
    167  
    168                 $this.data('objects', objects); 
    169               } 
     185              } 
     186 
     187              $this.data('objects', objects); 
    170188 
    171189              privateMethods.setOptions($this, opt); 
     190 
     191 
     192              if($this.html()!='') privateMethods.setItems($this, $this.html()); 
     193 
     194              $this 
     195                .html('') 
     196                .append(objects.container.append(objects.containerArrow).append(objects.containerStatus).append(objects.containerName)) 
     197                .append(objects.listContainer.append(objects.list)); 
     198 
    172199            } 
    173200          ); 
     
    258285      listMaxWidth: function (value) 
    259286        { 
    260           if(value) 
     287          if(value!=null) 
    261288          { 
    262289            return this.each(function() 
     
    283310      listMaxHeight: function (value) 
    284311        { 
    285           if(value) 
     312          if(value!=null) 
    286313          { 
    287314            return this.each(function() 
     
    333360      levelIndent: function (value) 
    334361        { 
    335           if(value) 
     362          if(value!=null) 
    336363          { 
    337364            return this.each(function() 
     
    358385      serverUrl: function (value) 
    359386        { 
    360           if(value) 
     387          if(value!=null) 
    361388          { 
    362389            return this.each(function() 
     
    383410      filter: function (value) 
    384411        { 
    385           if(value) 
     412          if(value!=null) 
    386413          { 
    387414            return this.each(function() 
     
    428455      iconWidthEC: function (value) 
    429456        { 
    430           if(value) 
     457          if(value!=null) 
    431458          { 
    432459            return this.each(function() 
     
    451478        }, // iconWidthEC 
    452479 
    453       iconWidthCheck: function (value) 
    454         { 
    455           if(value) 
     480      userMode: function (value) 
     481        { 
     482          if(value!=null) 
    456483          { 
    457484            return this.each(function() 
    458485              { 
    459                 privateMethods.setIconWidthCheck($(this), value); 
     486                privateMethods.setUserMode($(this), value); 
    460487              } 
    461488            ); 
     
    467494            if(options) 
    468495            { 
    469               return(options.iconWidthCheck); 
     496              return(options.userMode); 
    470497            } 
    471498            else 
     
    474501            } 
    475502          } 
    476         }, // iconWidthCheck 
    477  
    478       userMode: function (value) 
    479         { 
    480           if(value) 
    481           { 
    482             return this.each(function() 
    483               { 
    484                 privateMethods.setUserMode($(this), value); 
    485               } 
    486             ); 
    487           } 
    488           else 
    489           { 
    490             var options = this.data('options'); 
    491  
    492             if(options) 
    493             { 
    494               return(options.userMode); 
    495             } 
    496             else 
    497             { 
    498               return(0); 
    499             } 
    500           } 
    501503        }, // userMode 
    502504 
     
    504506        { 
    505507          var options=this.data('options'), 
    506               properties=this.data('properties'), 
    507               objects=this.data('objects'); 
     508              properties=this.data('properties'); 
    508509 
    509510          if(!options.multiple) 
     
    522523        }, // userMode 
    523524 
     525      popupMode: function (value) 
     526        { 
     527          if(value!=null) 
     528          { 
     529            return this.each(function() 
     530              { 
     531                privateMethods.setPopupMode($(this), value); 
     532              } 
     533            ); 
     534          } 
     535          else 
     536          { 
     537            var options = this.data('options'); 
     538 
     539            if(options) 
     540            { 
     541              return(options.popupMode); 
     542            } 
     543            else 
     544            { 
     545              return(0); 
     546            } 
     547          } 
     548        }, // popupMode 
     549 
     550      displayPath: function (value) 
     551        { 
     552          if(value!=null) 
     553          { 
     554            return this.each(function() 
     555              { 
     556                privateMethods.setDisplayPath($(this), value); 
     557              } 
     558            ); 
     559          } 
     560          else 
     561          { 
     562            var options = this.data('options'); 
     563 
     564            if(options) 
     565            { 
     566              return(options.displayPath); 
     567            } 
     568            else 
     569            { 
     570              return(0); 
     571            } 
     572          } 
     573        }, // displayPath 
     574 
     575      downArrow: function (value) 
     576        { 
     577          if(value!=null) 
     578          { 
     579            return this.each(function() 
     580              { 
     581                privateMethods.setDownArrow($(this), value); 
     582              } 
     583            ); 
     584          } 
     585          else 
     586          { 
     587            var options = this.data('options'); 
     588 
     589            if(options) 
     590            { 
     591              return(options.downArrow); 
     592            } 
     593            else 
     594            { 
     595              return(''); 
     596            } 
     597          } 
     598        }, // downArrow 
     599 
    524600      value: function (value) 
    525601        { 
    526           if(value) 
     602          if(value!=null) 
    527603          { 
    528604            // set selected value 
     
    559635          } 
    560636        }, // value 
     637 
     638      isValid: function (value) 
     639        { 
     640          if(value!=null) 
     641          { 
     642            return this.each(function() 
     643              { 
     644                privateMethods.setIsValid($(this), value); 
     645              } 
     646            ); 
     647          } 
     648          else 
     649          { 
     650            var properties=this.data('properties'); 
     651            return(properties.isValid); 
     652          } 
     653        }, // isValid 
     654 
    561655      load: function (value) 
    562656        { 
     
    634728          } 
    635729        }, // popup 
     730 
    636731      numberOfCategories: function () 
    637732        { 
     
    647742          } 
    648743        }, // numberOfCategories 
     744 
    649745      properties: function (value) 
    650746        { 
    651           var properties=this.data('properties'); 
     747          var properties=this.data('properties'), 
     748              options=this.data('options'); 
    652749 
    653750          if(properties && value==':first' && properties.categories.length>0) 
     
    657754          else if(properties && properties.index!=null && (value==':selected' || value==null) && properties.categories.length>0) 
    658755          { 
    659             if(!option.multiple && properties.index>-1 && properties.index<properties.categories.length) 
     756            if(!options.multiple && properties.index>-1 && properties.index<properties.categories.length) 
    660757            { 
    661758              return(properties.categories[properties.index]); 
    662759            } 
    663             else if(option.multiple) 
     760            else if(options.multiple) 
    664761            { 
    665762              var returned=[]; 
     
    686783            return(null); 
    687784          } 
    688         }, // numberOfCategories 
     785        } // numberOfCategories 
    689786    }; // methods 
    690787 
     
    711808          privateMethods.setLevelIndent(object, (value.levelIndent!=null)?value.levelIndent:options.levelIndent); 
    712809          privateMethods.setIconWidthEC(object, (value.iconWidthEC!=null)?value.iconWidthEC:options.iconWidthEC); 
    713           privateMethods.setIconWidthCheck(object, (value.iconWidthCheck!=null)?value.iconWidthCheck:options.iconWidthCheck); 
    714810          privateMethods.setServerUrl(object, (value.serverUrl!=null)?value.serverUrl:options.serverUrl); 
    715811          privateMethods.setFilter(object, (value.filter!=null)?value.filter:options.filter); 
    716812          privateMethods.setUserMode(object, (value.userMode!=null)?value.userMode:options.userMode); 
     813          privateMethods.setPopupMode(object, (value.popupMode!=null)?value.popupMode:options.popupMode); 
     814          privateMethods.setDisplayPath(object, (value.displayPath!=null)?value.displayPath:options.displayPath); 
     815          privateMethods.setDownArrow(object, (value.downArrow!=null)?value.downArrow:options.downArrow); 
    717816          privateMethods.setEventPopup(object, (value.popup!=null)?value.popup:options.popup); 
    718817          privateMethods.setEventChange(object, (value.change!=null)?value.change:options.change); 
     
    725824        }, 
    726825 
     826      setIsValid : function (object, value) 
     827        { 
     828          var objects=object.data('objects'), 
     829              properties=object.data('properties'); 
     830 
     831          if(properties.isValid!=value) 
     832          { 
     833            properties.isValid=value; 
     834            if(properties.isValid) 
     835            { 
     836              objects.container.removeClass('ui-error'); 
     837            } 
     838            else 
     839            { 
     840              objects.container.addClass('ui-error'); 
     841            } 
     842          } 
     843          return(properties.isValid); 
     844        }, 
     845 
    727846      setAutoLoad : function (object, value) 
    728847        { 
    729848          var options=object.data('options'), 
    730849              properties=object.data('properties'); 
     850 
    731851          if((!properties.initialized || options.autoLoad!=value) && (value==true || value==false)) 
    732852          { 
     
    740860          var options=object.data('options'), 
    741861              properties=object.data('properties'); 
     862 
    742863          if((!properties.initialized || options.galleryRoot!=value) && (value==true || value==false)) 
    743864          { 
     
    753874              properties=object.data('properties'), 
    754875              objects=object.data('objects'); 
     876 
    755877          if((!properties.initialized || options.listMaxWidth!=value) && value>=0) 
    756878          { 
     
    773895              properties=object.data('properties'), 
    774896              objects=object.data('objects'); 
     897 
    775898          if((!properties.initialized || options.listMaxHeight!=value) && value>=0) 
    776899          { 
     
    793916              properties=object.data('properties'), 
    794917              objects=object.data('objects'); 
     918 
    795919          if((!properties.initialized || options.displayStatus!=value) && (value==true || value==false)) 
    796920          { 
     
    813937              properties=object.data('properties'), 
    814938              objects=object.data('objects'); 
     939 
    815940          if((!properties.initialized || options.levelIndent!=value) && value>=0) 
    816941          { 
     
    819944              function () 
    820945              { 
    821                 $(this).css('padding-left', (options.iconWidthEC+options.iconWidthCheck+$(this).attr('level')*options.levelIndent)+'px'); 
     946                $(this).css('padding-left', (options.iconWidthEC+$(this).attr('level')*options.levelIndent)+'px'); 
    822947              } 
    823948            ); 
     
    830955          var options=object.data('options'), 
    831956              properties=object.data('properties'); 
     957 
    832958          if(!properties.initialized || options.serverUrl!=value) 
    833959          { 
     
    838964        }, 
    839965 
    840  
    841966      setFilter : function (object, value) 
    842967        { 
    843968          var options=object.data('options'), 
    844969              properties=object.data('properties'); 
     970 
    845971          if((!properties.initialized || options.filter!=value) && (value=='none' || value=='accessible' || value=='public')) 
    846972          { 
     
    856982              properties=object.data('properties'), 
    857983              objects=object.data('objects'); 
     984 
    858985          if((!properties.initialized || options.iconWidthEC!=value) && value>=0) 
    859986          { 
     
    862989              function () 
    863990              { 
    864                 $(this).css('padding-left', (options.iconWidthEC+options.iconWidthCheck+$(this).attr('level')*options.levelIndent)+'px'); 
    865               } 
    866             ); 
    867           } 
    868           return(options.filter); 
    869         }, 
    870  
    871       setIconWidthCheck : function (object, value) 
     991                $(this).css('padding-left', (options.iconWidthEC+$(this).attr('level')*options.levelIndent)+'px'); 
     992              } 
     993            ); 
     994          } 
     995          return(options.iconWidthEC); 
     996        }, 
     997 
     998      setMultiple : function (object, value) 
    872999        { 
    8731000          var options=object.data('options'), 
    8741001              properties=object.data('properties'), 
    8751002              objects=object.data('objects'); 
    876           if((!properties.initialized || options.iconWidthCheck!=value) && (value>=0 && options.multiple || !options.multiple && value==0)) 
    877           { 
    878             options.iconWidthCheck=value; 
    879             objects.list.find('.ui-category-selector-item').each( 
    880               function () 
    881               { 
    882                 $(this).css('padding-left', (options.iconWidthEC+options.iconWidthCheck+$(this).attr('level')*options.levelIndent)+'px'); 
    883               } 
    884             ); 
    885           } 
    886           return(options.filter); 
    887         }, 
    888  
    889       setMultiple : function (object, value) 
     1003 
     1004          if((!properties.initialized || options.multiple!=value) && (value==true || value==false)) 
     1005          { 
     1006            if(!value) 
     1007            { 
     1008              properties.index=-1; 
     1009              if(objects.containerList!=null) 
     1010              { 
     1011                objects.containerList.remove(); 
     1012                objects.containerList=null; 
     1013              } 
     1014            } 
     1015            else 
     1016            { 
     1017              properties.index=[]; 
     1018              objects.listContainer.addClass('ui-category-selector-multiple'); 
     1019              if(objects.containerList==null) 
     1020              { 
     1021                objects.containerList=$('<ul/>', 
     1022                  { 
     1023                    css: { 
     1024                      listStyle:'none', 
     1025                      padding:'0px', 
     1026                      margin:'0px', 
     1027                      overflow:"auto" 
     1028                    }, 
     1029                    html:'<li>&nbsp;</li>' 
     1030                  } 
     1031                ); 
     1032                objects.containerName.html('').append(objects.containerList); 
     1033              } 
     1034            } 
     1035            options.multiple=value; 
     1036          } 
     1037          return(options.multiple); 
     1038        }, //setMultiple 
     1039 
     1040      setUserMode : function (object, value) 
     1041        { 
     1042          var options=object.data('options'), 
     1043              properties=object.data('properties'); 
     1044 
     1045          if((!properties.initialized || options.userMode!=value) && (value=='admin' || value=='public')) 
     1046          { 
     1047            options.userMode=value; 
     1048            if(options.autoLoad && properties.initialized) privateMethods.load(object); 
     1049          } 
     1050          return(options.userMode); 
     1051        }, //setUserMode 
     1052 
     1053      setPopupMode : function (object, value) 
    8901054        { 
    8911055          var options=object.data('options'), 
    8921056              properties=object.data('properties'), 
    8931057              objects=object.data('objects'); 
    894           if((!properties.initialized || options.multiple!=value) && (value==true || value==false)) 
    895           { 
    896             if(!value) 
    897             { 
    898               privateMethods.setIconWidthCheck(object, 0); 
    899               properties.index=-1; 
    900             } 
    901             else 
    902             { 
    903               properties.index=[]; 
    904               objects.listContainer.addClass('ui-category-selector-multiple'); 
    905             } 
    906             options.multiple=value; 
    907           } 
    908           return(options.filter); 
    909         }, //setMultiple 
    910  
    911       setUserMode : function (object, value) 
     1058 
     1059          if((!properties.initialized || options.popupMode!=value) && (value=='click' || value=='mouseout')) 
     1060          { 
     1061            options.popupMode=value; 
     1062 
     1063            if(value=='mouseout') 
     1064            { 
     1065              objects.listContainer 
     1066                .unbind('mouseleave.categorySelector') 
     1067                .unbind('mouseenter.categorySelector') 
     1068                .bind('mouseleave.categorySelector', 
     1069                  function () 
     1070                  { 
     1071                    privateMethods.displaySelector(object, false); 
     1072                  } 
     1073                ); 
     1074            } 
     1075            else 
     1076            { 
     1077              objects.listContainer 
     1078                .unbind('mouseleave.categorySelector') 
     1079                .bind('mouseleave.categorySelector', 
     1080                  function () 
     1081                  { 
     1082                    properties.mouseOver=false; 
     1083                  } 
     1084                ) 
     1085                .bind('mouseenter.categorySelector', 
     1086                  function () 
     1087                  { 
     1088                    properties.mouseOver=true; 
     1089                  } 
     1090                ); 
     1091              $(document).bind('focusout focusin', 
     1092                function (event) 
     1093                { 
     1094                  if(!properties.mouseOver) privateMethods.displaySelector(object, false); 
     1095                } 
     1096              ); 
     1097            } 
     1098          } 
     1099          return(options.popupMode); 
     1100        }, //setUserMode 
     1101 
     1102 
     1103      setDisplayPath : function (object, value) 
    9121104        { 
    9131105          var options=object.data('options'), 
    9141106              properties=object.data('properties'), 
    9151107              objects=object.data('objects'); 
    916           if((!properties.initialized || options.userMode!=value) && (value=='admin' || value=='public')) 
    917           { 
    918             options.userMode=value; 
    919             if(options.autoLoad && properties.initialized) privateMethods.load(object); 
    920           } 
    921           return(options.filter); 
    922         }, //setUserMode 
     1108 
     1109          if((!properties.initialized || options.displayPath!=value) && (value==true || value==false)) 
     1110          { 
     1111            options.displayPath=value; 
     1112 
     1113          } 
     1114          return(options.userMode); 
     1115        }, //setDisplayPath 
     1116 
     1117      setDownArrow : function (object, value) 
     1118        { 
     1119          var options=object.data('options'), 
     1120              properties=object.data('properties'), 
     1121              objects=object.data('objects'); 
     1122 
     1123          if(!properties.initialized || options.downArrow!=value) 
     1124          { 
     1125            options.downArrow=value; 
     1126            objects.containerArrow.html(options.downArrow); 
     1127          } 
     1128          return(options.downArrow); 
     1129        }, //setDownArrow 
     1130 
     1131 
     1132      setItems : function (object, value) 
     1133        { 
     1134          var properties=object.data('properties'), 
     1135              options=object.data('options'), 
     1136              objects=object.data('objects'); 
     1137 
     1138          if(value=='' || value==null) 
     1139          { 
     1140            value={ 
     1141              status:['',''], 
     1142              categories:[] 
     1143            } 
     1144          } 
     1145          else if($.isArray(value)) 
     1146          { 
     1147            value={ 
     1148              status:'public', 
     1149              categories:value 
     1150            } 
     1151          } 
     1152          else 
     1153          { 
     1154            try 
     1155            { 
     1156              value=$.parseJSON($.trim(value)); 
     1157            } 
     1158            catch (e) 
     1159            { 
     1160              return(false); 
     1161            } 
     1162          } 
     1163 
     1164          properties.labelStatus=value.status; 
     1165          privateMethods.listClear(object); 
     1166          if(value.categories.length>0) privateMethods.listAddItems(object, value.categories, objects.list); 
     1167 
     1168          properties.initialized=false; 
     1169          if(options.multiple) 
     1170          { 
     1171            privateMethods.setValue(object, ':none'); 
     1172          } 
     1173          else 
     1174          { 
     1175            privateMethods.setValue(object, ':first'); 
     1176          } 
     1177          properties.initialized=true; 
     1178 
     1179          if(options.load) object.trigger('categorySelectorLoad'); 
     1180        }, 
    9231181 
    9241182      /** 
     
    11981456          if(!options.multiple && (!properties.initialized || properties.index!=index) && index>-1) 
    11991457          { 
     1458 
    12001459            objects.list.find('.ui-category-selector-selected-item').removeClass('ui-category-selector-selected-item'); 
    12011460            objects.list.find('[catId="'+value+'"]').addClass('ui-category-selector-selected-item'); 
     1461            title=privateMethods.getParentName(object, objects.list.find('[catId="'+value+'"] div.ui-category-selector-name')).replace('&amp;', '&').replace('&gt;', '>').replace('&lt;', '<'); 
    12021462            properties.index=index; 
    1203             objects.containerName.html(properties.categories[properties.index].name); 
     1463            objects.containerName.html(properties.categories[properties.index].name).attr('title', title); 
    12041464            objects.containerStatus.html(properties.labelStatus[properties.categories[properties.index].status]); 
    12051465            if(trigger && options.change) object.trigger('categorySelectorChange', [properties.categories[properties.index].id]); 
     
    12321492              tmp.push(properties.categories[index[i]].id); 
    12331493            } 
    1234             containerHtml=''; 
     1494            objects.containerList.html(''); 
    12351495            objects.list.find('.ui-category-selector-selected-item div.ui-category-selector-name').each( 
    12361496              function () 
    12371497              { 
    1238                 containerHtml+=((containerHtml=='')?'':'&nbsp;; ')+$(this).html(); 
    1239               } 
    1240             ); 
    1241             if(containerHtml=='') containerHtml="&nbsp;"; 
    1242             objects.containerName.html(containerHtml); 
     1498                var path=''; 
     1499 
     1500                title=privateMethods.getParentName(object, $(this)).replace('&amp;', '&').replace('&gt;', '>').replace('&lt;', '<'); 
     1501                if(!options.displayPath) 
     1502                { 
     1503                  path=$(this).html(); 
     1504                } 
     1505                else 
     1506                { 
     1507                  path=title; 
     1508                } 
     1509 
     1510                objects.containerList.append( 
     1511                  $('<li/>', 
     1512                    { 
     1513                      html:path, 
     1514                      title:title, 
     1515                      'class':'ui-category-selector-selected-cat' 
     1516                    } 
     1517                  ).prepend( 
     1518                      $('<span/>', 
     1519                        { 
     1520                          html:'x' 
     1521                        } 
     1522                       ).bind('click.categorySelector', 
     1523                          {object:object, value:$(this).parent().parent().attr('catid')}, 
     1524                          function (event) 
     1525                          { 
     1526                            event.stopPropagation(); 
     1527                            privateMethods.setValue(event.data.object, event.data.value); 
     1528                          } 
     1529                        ) 
     1530                      ) 
     1531                ) 
     1532              } 
     1533            ); 
     1534 
     1535            if(objects.containerList.children().length==0) objects.containerList.append('<li>&nbsp;</li>'); 
     1536 
    12431537            if(trigger && options.change) object.trigger('categorySelectorChange', [tmp]); 
    12441538            return(tmp); 
     
    12461540          return(null); 
    12471541        }, 
     1542 
     1543      getParentName : function (object, item) 
     1544      { 
     1545        if(item==null || item.length==0) return(''); 
     1546        foundItem=item.parent().parent().parent().prev().find('div.ui-category-selector-name'); 
     1547 
     1548        if(foundItem.length==0) return(item.html()); 
     1549 
     1550        return(privateMethods.getParentName(object, foundItem)+' / '+item.html()); 
     1551      }, 
    12481552 
    12491553      displaySelector : function (object, value) 
     
    12521556              properties=object.data('properties'), 
    12531557              objects=object.data('objects'); 
     1558 
    12541559          if(properties.selectorVisible!=value) 
    12551560          { 
     
    12661571                  } 
    12671572                ); 
     1573 
    12681574              if($.isArray(properties.index)) 
    12691575              { 
     
    12891595          // load datas from server through an asynchronous ajax call 
    12901596          var options=object.data('options'), 
    1291               properties=object.data('properties'), 
    12921597              objects=object.data('objects'); 
     1598 
     1599          if(options.serverUrl=='') return(false); 
    12931600 
    12941601          $.ajax( 
     
    13061613              success: function(msg) 
    13071614                { 
    1308                   list=$.parseJSON(msg); 
    1309  
    1310                   properties.labelStatus=list.status; 
    1311                   privateMethods.listClear(object); 
    1312                   privateMethods.listAddItems(object, list.categories, objects.list); 
    1313  
    1314                   properties.initialized=false; 
    1315                   privateMethods.setValue(object, ':first'); 
    1316                   properties.initialized=true; 
    1317  
    1318                   if(options.load) object.trigger('categorySelectorLoad'); 
     1615                  privateMethods.setItems(object, msg); 
    13191616                }, 
    13201617              error: function(msg) 
    13211618                { 
    13221619                  objects.listContainer.html('Error ! '+msg); 
    1323                 }, 
     1620                } 
    13241621            } 
    13251622         ); 
     
    13451642          properties.categories=[]; 
    13461643        }, 
     1644 
    13471645      listAddItems : function (object, listItems, parent) 
    13481646        { 
     
    13741672            } 
    13751673 
    1376             var spaceWidth = (options.iconWidthEC+options.iconWidthCheck+listItems[i].level*options.levelIndent), 
     1674            var spaceWidth = (options.iconWidthEC+listItems[i].level*options.levelIndent), 
    13771675                li=$('<li/>', 
    13781676                      { 
     
    13891687                        function (event) 
    13901688                        { 
    1391                           if(!event.layerX && event.offsetX) 
    1392                           { 
    1393                             // trick for IE.. 
    1394                             event.layerX=event.offsetX; 
    1395                             event.layerY=event.offsetY; 
    1396                           } 
     1689                          event.layerX=event.pageX-$(event.currentTarget).offset().left; 
     1690                          event.layerY=event.pageY-$(event.currentTarget).offset().top; 
    13971691 
    13981692                          if(event.layerX<event.data.expandArea && event.data.nbchilds>0 ) 
     
    14241718                            } 
    14251719                          } 
     1720 
     1721                          if(options.multiple) objects.container.focus(); 
    14261722                        } 
    14271723                      ); 
    14281724            if(listItems[i].childs.length>0) 
    14291725            { 
    1430               li.addClass('ui-category-selector-collapsable-item').css('background-position', (options.iconWidthCheck+options.levelIndent*listItems[i].level)+'px 0px'); 
     1726              li.addClass('ui-category-selector-collapsable-item').css('background-position', (options.levelIndent*listItems[i].level)+'px 0px'); 
    14311727            } 
    14321728 
    14331729            if(options.multiple) 
    14341730            { 
    1435               li.prepend('<div class="ui-category-selector-check"></div>'); 
     1731              li.children().prepend('<div class="ui-category-selector-check"></div>'); 
    14361732            } 
    14371733 
     
    14651761           */ 
    14661762          var properties=object.data('properties'); 
     1763 
    14671764          for(var i=0;i<properties.categories.length;i++) 
    14681765          { 
     
    14711768          return(-1); 
    14721769        }, 
     1770 
    14731771      setEventPopup : function (object, value) 
    14741772        { 
    14751773          var options=object.data('options'); 
     1774 
    14761775          options.popup=value; 
    14771776          object.unbind('categorySelectorPopup'); 
     
    14791778          return(options.popup); 
    14801779        }, 
     1780 
    14811781      setEventChange : function (object, value) 
    14821782        { 
    14831783          var options=object.data('options'); 
     1784 
    14841785          options.change=value; 
    14851786          object.unbind('categorySelectorChange'); 
     
    14871788          return(options.change); 
    14881789        }, 
     1790 
    14891791      setEventLoad : function (object, value) 
    14901792        { 
    14911793          var options=object.data('options'); 
     1794 
    14921795          options.load=value; 
    14931796          object.unbind('categorySelectorLoad'); 
  • extensions/GrumPluginClasses/js/ui.categorySelector.packed.js

    r7181 r8961  
    1 /* file: ui.categorySelector.js - v1.0.1 | packed on 2010/10/14 with http://joliclic.free.fr/php/javascript-packer/ */ 
    2 eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('(g($){k 1T={2T:g(2w){c b.t(g(){k $b=$(b),e=$b.e(\'6\'),f=$b.e(\'f\'),8=$b.e(\'8\'),6={R:K,1b:K,11:K,17:0,12:0,T:16,10:15,V:18,1d:\'3C/3x/3u.3E\',N:\'2D\',1e:q,13:q,M:q,D:G,1h:\'22\'};$b.e(\'6\',6);a(!8){$b.e(\'8\',{h:-1,F:G,1v:G,u:[],1N:[\'\',\'\'],});8=$b.e(\'8\')}a(!f){f={28:$(\'<O/>\',{\'1f\':\'p-o-m\',I:{1C:\'2U%\'}}).1A(\'2N.1p\',g(){j.1U($b,!$b.e(\'8\').1v)}),1K:$(\'<O/>\',{1a:\'&20;\',\'1f\':\'p-o-m-1c\',}),25:$(\'<O/>\',{\'1f\':\'p-o-m-Z\',I:{2y:\'2z\',1O:(6.11)?\'2Q\':\'1n\'}}),2x:$(\'<O/>\',{1a:\'&3N;\',\'1f\':\'p-o-m-35\',I:{\'2y\':\'2z\',3v:\'3h\'}}),Q:$(\'<O/>\',{1a:"",\'1f\':\'p-o-m-v\',I:{3g:"3f",1O:\'1n\',2i:\'3d\'}}).1A(\'3e.1p\',g(){j.1U($b,G)}),v:$(\'<1z/>\',{I:{2P:\'1n\',1H:\'1I\',2W:\'1I\'}})};$b.1a(\'\').1w(f.28.1w(f.2x).1w(f.25).1w(f.1K)).1w(f.Q.1w(f.v));$b.e(\'f\',f)}j.29($b,2w)})},3o:g(){c b.t(g(){k $b=$(b),f=$b.e(\'f\');f.28.1s().2A();f.v.2J().1s();f.Q.2A();$b.1s(\'.1p\').I({1C:\'\',2g:\'\'})})},6:g(7){c b.t(g(){j.29($(b),7)})},R:g(7){a(7!=q){c b.t(g(){j.2b($(b),7)})}l{k 6=b.e(\'6\');a(6){c(6.R)}l{c(K)}}},1b:g(7){a(7!=q){c b.t(g(){j.2a($(b),7)})}l{k 6=b.e(\'6\');a(6){c(6.1b)}l{c(K)}}},17:g(7){a(7){c b.t(g(){j.24($(b),7)})}l{k 6=b.e(\'6\');a(6){c(6.17)}l{c(0)}}},12:g(7){a(7){c b.t(g(){j.21($(b),7)})}l{k 6=b.e(\'6\');a(6){c(6.12)}l{c(0)}}},11:g(7){a(7!=q){c b.t(g(){j.2r($(b),7)})}l{k 6=b.e(\'6\');a(6){c(6.11)}l{c(K)}}},T:g(7){a(7){c b.t(g(){j.2s($(b),7)})}l{k 6=b.e(\'6\');a(6){c(6.T)}l{c(0)}}},1d:g(7){a(7){c b.t(g(){j.2t($(b),7)})}l{k 6=b.e(\'6\');a(6){c(6.1d)}l{c(\'\')}}},N:g(7){a(7){c b.t(g(){j.2q($(b),7)})}l{k 6=b.e(\'6\');a(6){c(6.N)}l{c(\'\')}}},3k:g(7){c b.t(g(){a(!7)7=\':1y\';j.2n($(b),7,\'C\')})},3l:g(7){c b.t(g(){a(!7)7=\':1y\';j.2n($(b),7,\'E\')})},10:g(7){a(7){c b.t(g(){j.2v($(b),7)})}l{k 6=b.e(\'6\');a(6){c(6.10)}l{c(0)}}},V:g(7){a(7){c b.t(g(){j.1P($(b),7)})}l{k 6=b.e(\'6\');a(6){c(6.V)}l{c(0)}}},1h:g(7){a(7){c b.t(g(){j.2h($(b),7)})}l{k 6=b.e(\'6\');a(6){c(6.1h)}l{c(0)}}},1c:g(){k 6=b.e(\'6\'),8=b.e(\'8\'),f=b.e(\'f\');a(!6.D){c(8.u[8.h].1c)}l{k 27=[];1u(k i=0;i<8.h.A;i++){27.1i(8.u[8.h[i]].1c)}c(27)}},7:g(7){a(7){c b.t(g(){j.1r($(b),7)})}l{k 8=b.e(\'8\'),6=b.e(\'6\');a(8&&8.h!=q&&!6.D&&8.h>-1&&8.h<8.u.A){c(8.u[8.h].19)}l a(8&&8.h!=q&&6.D){k 1B=[];1u(k i=0;i<8.h.A;i++){a(8.h[i]>-1&&8.h[i]<8.u.A)1B.1i(8.u[8.h[i]].19)}c(1B)}l{c(q)}}},M:g(7){a(7&&$.2d(7)){c b.t(g(){j.1X($(b),7)})}l{j.M(b)}},1e:g(7){a(7&&$.2d(7)){c b.t(g(){j.1Z($(b),7)})}l{k 6=b.e(\'6\');a(6){c(6.1e)}l{c(q)}}},13:g(7){a(7&&$.2d(7)){c b.t(g(){j.1V($(b),7)})}l{k 6=b.e(\'6\');a(6){c(6.13)}l{c(q)}}},3b:g(){k 8=b.e(\'8\');a(8){c(8.u.A)}l{c(q)}},8:g(7){k 8=b.e(\'8\');a(8&&7==\':2e\'&&8.u.A>0){c(8.u[0])}l a(8&&8.h!=q&&(7==\':P\'||7==q)&&8.u.A>0){a(!2E.D&&8.h>-1&&8.h<8.u.A){c(8.u[8.h])}l a(2E.D){k 1B=[];1u(k i=0;i<8.h.A;i++){a(8.h[i]>-1&&8.h<8.u.A)1B.1i(8.u[8.h[i]])}c(1B)}c(q)}l a(8&&7>-1){k h=j.1x(b,7);a(h>-1){c(8.u[h])}c(q)}l{c(q)}},};k j={29:g(9,7){k 8=9.e(\'8\'),6=9.e(\'6\');a(!$.2Y(7))c(G);8.F=G;j.2b(9,(7.R!=q)?7.R:6.R);j.2a(9,(7.1b!=q)?7.1b:6.1b);j.2r(9,(7.11!=q)?7.11:6.11);j.24(9,(7.17!=q)?7.17:6.17);j.21(9,(7.12!=q)?7.12:6.12);j.2s(9,(7.T!=q)?7.T:6.T);j.2v(9,(7.10!=q)?7.10:6.10);j.1P(9,(7.V!=q)?7.V:6.V);j.2t(9,(7.1d!=q)?7.1d:6.1d);j.2q(9,(7.N!=q)?7.N:6.N);j.2h(9,(7.1h!=q)?7.1h:6.1h);j.1Z(9,(7.1e!=q)?7.1e:6.1e);j.1V(9,(7.13!=q)?7.13:6.13);j.1X(9,(7.M!=q)?7.M:6.M);j.2G(9,(7.D!=q)?7.D:6.D);a(6.R)j.M(9);8.F=K},2b:g(9,7){k 6=9.e(\'6\'),8=9.e(\'8\');a((!8.F||6.R!=7)&&(7==K||7==G)){6.R=7}c(6.R)},2a:g(9,7){k 6=9.e(\'6\'),8=9.e(\'8\');a((!8.F||6.1b!=7)&&(7==K||7==G)){6.1b=7;a(6.R&&8.F)j.M(9)}c(6.1b)},24:g(9,7){k 6=9.e(\'6\'),8=9.e(\'8\'),f=9.e(\'f\');a((!8.F||6.17!=7)&&7>=0){6.17=7;a(6.17>0){f.Q.I(\'1S-1C\',6.17+\'1q\')}l{f.Q.I(\'1S-1C\',\'\')}}c(6.17)},21:g(9,7){k 6=9.e(\'6\'),8=9.e(\'8\'),f=9.e(\'f\');a((!8.F||6.12!=7)&&7>=0){6.12=7;a(6.12>0){f.Q.I(\'1S-2g\',6.12+\'1q\')}l{f.Q.I(\'1S-2g\',\'\')}}c(6.12)},2r:g(9,7){k 6=9.e(\'6\'),8=9.e(\'8\'),f=9.e(\'f\');a((!8.F||6.11!=7)&&(7==K||7==G)){6.11=7;a(6.11){9.B(\'.p-o-m-Z\').2f()}l{9.B(\'.p-o-m-Z\').2p()}}c(6.11)},2s:g(9,7){k 6=9.e(\'6\'),8=9.e(\'8\'),f=9.e(\'f\');a((!8.F||6.T!=7)&&7>=0){6.T=7;f.v.B(\'.p-o-m-r\').t(g(){$(b).I(\'1H-1J\',(6.10+6.V+$(b).H(\'z\')*6.T)+\'1q\')})}c(6.T)},2t:g(9,7){k 6=9.e(\'6\'),8=9.e(\'8\');a(!8.F||6.1d!=7){6.1d=7;a(6.R&&8.F)j.M(9)}c(6.1d)},2q:g(9,7){k 6=9.e(\'6\'),8=9.e(\'8\');a((!8.F||6.N!=7)&&(7==\'1n\'||7==\'2D\'||7==\'22\')){6.N=7;a(6.R&&8.F)j.M(9)}c(6.N)},2v:g(9,7){k 6=9.e(\'6\'),8=9.e(\'8\'),f=9.e(\'f\');a((!8.F||6.10!=7)&&7>=0){6.10=7;f.v.B(\'.p-o-m-r\').t(g(){$(b).I(\'1H-1J\',(6.10+6.V+$(b).H(\'z\')*6.T)+\'1q\')})}c(6.N)},1P:g(9,7){k 6=9.e(\'6\'),8=9.e(\'8\'),f=9.e(\'f\');a((!8.F||6.V!=7)&&(7>=0&&6.D||!6.D&&7==0)){6.V=7;f.v.B(\'.p-o-m-r\').t(g(){$(b).I(\'1H-1J\',(6.10+6.V+$(b).H(\'z\')*6.T)+\'1q\')})}c(6.N)},2G:g(9,7){k 6=9.e(\'6\'),8=9.e(\'8\'),f=9.e(\'f\');a((!8.F||6.D!=7)&&(7==K||7==G)){a(!7){j.1P(9,0);8.h=-1}l{8.h=[];f.Q.1g(\'p-o-m-D\')}6.D=7}c(6.N)},2h:g(9,7){k 6=9.e(\'6\'),8=9.e(\'8\'),f=9.e(\'f\');a((!8.F||6.1h!=7)&&(7==\'3O\'||7==\'22\')){6.1h=7;a(6.R&&8.F)j.M(9)}c(6.N)},2n:g(9,7,14){k f=9.e(\'f\');1L=/^(?:(:1y)(?:(=|<|>|\\+)(\\d+))?)|(?:(\\d+)(<|>|\\+))?$/i;s=1L.2H(7);a(s!=q){1o(14){x\'C\':X=j.2u;w;x\'E\':X=j.2j;w}a(s[1]==\':1y\'){f.v.B(\'.p-o-m-1k-r, .p-o-m-1j-r\').t(X)}l a(s[4]!=q){1o(s[5]){x\'+\':f.v.B(\'.p-o-m-1k-r, .p-o-m-1j-r\').t(j.2u);f.v.B(\':2I([S=\'+s[4]+\'])\').2B().t(j.2j);f.v.B(\'[S=\'+s[4]+\']\').t(X);w;x\'>\':f.v.B(\'[S=\'+s[4]+\'] + 1z\').B(\'.p-o-m-1k-r, .p-o-m-1j-r\').t(X);f.v.B(\'[S=\'+s[4]+\']\').t(X);w;x\'<\':f.v.B(\':2I([S=\'+s[4]+\'])\').2B().t(X);f.v.B(\'[S=\'+s[4]+\']\').t(X);w;2C:f.v.B(\'[S=\'+s[4]+\']\').t(X);w}}}},2j:g(h,U){j.X(h,U,\'E\')},2u:g(h,U){j.X(h,U,\'C\')},X:g(h,U,14){1m=\'\';k $U=$(U);a(s.A>2&&s[2]!=q&&s[3]!=q){1o(s[2]){x\'=\':a($U.H(\'z\')==s[3])1m=14;w;x\'>\':a($U.H(\'z\')>=s[3])1m=14;w;x\'<\':a($U.H(\'z\')<=s[3])1m=14;w;x\'+\':a((14==\'E\'&&$U.H(\'z\')<=s[3])||(14==\'C\'&&$U.H(\'z\')>=s[3])){1m=14}l{1m=(14==\'C\')?\'E\':\'C\'}w}}l 1m=14;1o(1m){x\'C\':$U.1l(\'p-o-m-1k-r p-o-m-1j-r\').1g(\'p-o-m-1k-r\').1Q().2p();w;x\'E\':$U.1l(\'p-o-m-1k-r p-o-m-1j-r\').1g(\'p-o-m-1j-r\').1Q().2f();w}},1r:g(9,7,1t){k 6=9.e(\'6\'),8=9.e(\'8\'),f=9.e(\'f\'),h=-1;1L=/^(:2F|:1y|:1n)(?:(=|<|>)(\\d+))$/i;s=1L.2H(7);a(s!=q)7=s[1];1o(7){x\':2e\':a(8.u.A>0)h=0;w;x\':3y\':h=8.u.A-1;w;x\':2F\':a(!6.D)c(G);8.h=[];f.v.B(\'.p-o-m-r\').t(g(){k $b=$(b),L=K;a(s!=q){1o(s[2]){x\'=\':L=($b.H(\'z\')==s[3]);w;x\'>\':L=($b.H(\'z\')>=s[3]);w;x\'<\':L=($b.H(\'z\')<=s[3]);w}}a(L){a($b.2l(\'p-o-m-P-r\')){$b.1l(\'p-o-m-P-r\')}l{$b.1g(\'p-o-m-P-r\');W=j.1x(9,$b.H(\'S\'));a(W>-1)8.h.1i(W)}}});j.1r(9,[],G);c(G);w;x\':1n\':a(!6.D)c(G);8.h=[];f.v.B(\'.p-o-m-P-r\').t(g(){k $b=$(b),L=K;a(s!=q){1o(s[2]){x\'=\':L=($b.H(\'z\')==s[3]);w;x\'>\':L=($b.H(\'z\')>=s[3]);w;x\'<\':L=($b.H(\'z\')<=s[3]);w}}a(L)$b.1l(\'p-o-m-P-r\')});j.1r(9,[],G);c(G);w;x\':1y\':a(!6.D)c(G);8.h=[];f.v.B(\'.p-o-m-r\').t(g(){k $b=$(b),L=K;a(s!=q){1o(s[2]){x\'=\':L=($b.H(\'z\')==s[3]);w;x\'>\':L=($b.H(\'z\')>=s[3]);w;x\'<\':L=($b.H(\'z\')<=s[3]);w}}a(L){W=j.1x(9,$b.H(\'S\'));a(W>-1)8.h.1i(W);$b.1g(\'p-o-m-P-r\')}});j.1r(9,[],G);c(G);w;2C:a($.1W(7)&&6.D){h=[];1u(k i=0;i<7.A;i++){W=j.1x(9,7[i]);a(W>-1)h.1i(W)}}l{h=j.1x(9,7)}w}a(!6.D&&(!8.F||8.h!=h)&&h>-1){f.v.B(\'.p-o-m-P-r\').1l(\'p-o-m-P-r\');f.v.B(\'[S="\'+7+\'"]\').1g(\'p-o-m-P-r\');8.h=h;f.1K.1a(8.u[8.h].1c);f.25.1a(8.1N[8.u[8.h].Z]);a(1t&&6.13)9.1t(\'1R\',[8.u[8.h].19]);a(8.h>-1)c(8.u[8.h].19)}l a(6.D){a(!$.1W(h)){a(h<0||h==q)c(-1);h=[h]}W=[];1u(k i=0;i<h.A;i++){k r=f.v.B(\'[S="\'+8.u[h[i]].19+\'"]\');a(r.2l(\'p-o-m-P-r\')){r.1l(\'p-o-m-P-r\');26=$.3I(h[i],8.h);a(26>-1)8.h.3J(26,1)}l{r.1g(\'p-o-m-P-r\');8.h.1i(h[i])}W.1i(8.u[h[i]].19)}1G=\'\';f.v.B(\'.p-o-m-P-r O.p-o-m-1c\').t(g(){1G+=((1G==\'\')?\'\':\'&20;; \')+$(b).1a()});a(1G==\'\')1G="&20;";f.1K.1a(1G);a(1t&&6.13)9.1t(\'1R\',[W]);c(W)}c(q)},1U:g(9,7){k 6=9.e(\'6\'),8=9.e(\'8\'),f=9.e(\'f\');a(8.1v!=7){8.1v=7;a(8.1v&&8.u.A>0){k h=0;f.Q.I({1O:\'2Q\',\'3m-1C\':f.Q.2o().I(\'1C\')});a($.1W(8.h)){a(8.h.A>0)h=8.h[0]}l a(8.h>-1){h=8.h}f.Q.2X(f.Q.2X()+f.v.B(\'[S="\'+8.u[h].19+\'"]\').2i().3c)}l{f.Q.I(\'1O\',\'1n\')}a(6.1e)9.1t(\'1Y\',[8.1v])}c(8.1v)},M:g(9){k 6=9.e(\'6\'),8=9.e(\'8\'),f=9.e(\'f\');$.36({3Q:"3P",3D:6.1d,3r:K,e:{3s:6.1h+\'.1p.3a\',N:6.N,1b:6.1b?\'y\':\'n\',3z:\'y\'},3A:g(1M){v=$.3B(1M);8.1N=v.Z;j.2V(9);j.2c(9,v.u,f.v);8.F=G;j.1r(9,\':2e\');8.F=K;a(6.M)9.1t(\'23\')},2R:g(1M){f.Q.1a(\'3w ! \'+1M)},})},2V:g(9){k f=9.e(\'f\'),6=9.e(\'6\'),8=9.e(\'8\');f.v.2J().1s();f.v.1a(\'\');a(6.D){8.h=[]}l{8.h=-1}8.u=[]},2c:g(9,J,2o){k 6=9.e(\'6\'),8=9.e(\'8\'),f=9.e(\'f\');k 3t=-1;1u(k i=0;i<J.A;i++){8.u.1i({19:J[i].19,z:J[i].z,1c:J[i].1c,Z:J[i].Z,1E:J[i].1E.A});a(6.11){Z="<O 1f=\'p-o-m-Z\'>"+8.1N[J[i].Z]+"</O>"}l{Z=""}k 2k=(6.10+6.V+J[i].z*6.T),1F=$(\'<1F/>\',{\'1f\':\'p-o-m-r\',1a:"<O>"+Z+"<O 1f=\'p-o-m-1c\'>"+J[i].1c+"</O></O>",S:J[i].19,z:J[i].z,I:{\'1H-1J\':2k+\'1q\'}}).1A(\'2N.1p\',{9:9,2K:2k,2L:J[i].1E.A},g(Y){a(!Y.2m&&Y.2M){Y.2m=Y.2M;Y.3G=Y.3M}a(Y.2m<Y.e.2K&&Y.e.2L>0){a($(b).2l(\'p-o-m-1k-r\')){$(b).1l(\'p-o-m-1k-r\').1g(\'p-o-m-1j-r\').1Q().2f()}l{$(b).1l(\'p-o-m-1j-r\').1g(\'p-o-m-1k-r\').1Q().2p()}}l{j.1r(Y.e.9,$(b).H(\'S\'),K);a(6.D){}l{j.1U(Y.e.9,G)}}});a(J[i].1E.A>0){1F.1g(\'p-o-m-1j-r\').I(\'3K-2i\',(6.V+6.T*J[i].z)+\'1q 1I\')}a(6.D){1F.3L(\'<O 1f="p-o-m-3F"></O>\')}2o.1w(1F);a(J[i].1E.A>0){k 1z=$(\'<1z/>\',{\'1f\':\'p-o-m-3H\',I:{2P:\'1n\',1H:\'1I\',2W:\'1I\',\'3q-3p\':(2U-J[i].z*2)+\'%\'}});1F.37(1z);j.2c(9,J[i].1E,1z)}}},1x:g(9,7){k 8=9.e(\'8\');1u(k i=0;i<8.u.A;i++){a(8.u[i].19==7)c(i)}c(-1)},1Z:g(9,7){k 6=9.e(\'6\');6.1e=7;9.1s(\'1Y\');a(7)9.1A(\'1Y\',6.1e);c(6.1e)},1V:g(9,7){k 6=9.e(\'6\');6.13=7;9.1s(\'1R\');a(7)9.1A(\'1R\',6.13);c(6.13)},1X:g(9,7){k 6=9.e(\'6\');6.M=7;9.1s(\'23\');a(7)9.1A(\'23\',6.M);c(6.M)}};$.39.1p=g(1D){a(1T[1D]){c 1T[1D].L(b,34.33.2Z.30(2S,1))}l a(32 1D===\'9\'||!1D){c 1T.2T.L(b,2S)}l{$.2R(\'3n \'+1D+\' 3j 3i 31 38 2O.1p\')}}})(2O);',62,239,'||||||options|value|properties|object|if|this|return||data|objects|function|index||privateMethods|var|else|selector||category|ui|null|item|target|each|categories|list|break|case||level|length|find||multiple||initialized|false|attr|css|listItems|true|apply|load|filter|div|selected|listContainer|autoLoad|catId|levelIndent|domElt|iconWidthCheck|tmp|applyExpandCollapse|event|status|iconWidthEC|displayStatus|listMaxHeight|change|mode|||listMaxWidth||id|html|galleryRoot|name|serverUrl|popup|class|addClass|userMode|push|collapsable|expandable|removeClass|action|none|switch|categorySelector|px|setValue|unbind|trigger|for|selectorVisible|append|findIndexByValue|all|ul|bind|returned|width|method|childs|li|containerHtml|padding|0px|left|containerName|re|msg|labelStatus|display|setIconWidthCheck|next|categorySelectorChange|max|publicMethods|displaySelector|setEventChange|isArray|setEventLoad|categorySelectorPopup|setEventPopup|nbsp|setListMaxHeight|public|categorySelectorLoad|setListMaxWidth|containerStatus|tmpIndex|listNames|container|setOptions|setGalleryRoot|setAutoLoad|listAddItems|isFunction|first|show|height|setUserMode|position|applyExpand|spaceWidth|hasClass|layerX|setExpandCollapse|parent|hide|setFilter|setDisplayStatus|setLevelIndent|setServerUrl|applyCollapse|setIconWidthEC|opt|containerArrow|float|right|remove|prev|default|accessible|option|invert|setMultiple|exec|has|children|expandArea|nbchilds|offsetX|click|jQuery|listStyle|block|error|arguments|init|100|listClear|margin|scrollTop|isPlainObject|slice|call|exist|typeof|prototype|Array|arrow|ajax|after|on|fn|getList|numberOfCategories|top|absolute|mouseleave|auto|overflow|pointer|not|does|collapse|expand|min|Method|destroy|size|font|async|ajaxfct|previousLevel|gpc_ajax|cursor|Error|GrumPluginClasses|last|tree|success|parseJSON|plugins|url|php|check|layerY|group|inArray|splice|background|prepend|offsetY|dArr|admin|POST|type'.split('|'),0,{})) 
     1/* file: ui.categorySelector.js - v1.1.0 | packed on 2011/01/27 with http://joliclic.free.fr/php/javascript-packer/ */ 
     2eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('(h($){l 22={2X:h(36){c b.u(h(){l $b=$(b),g=$b.g(\'6\'),f=$b.g(\'f\'),8=$b.g(\'8\'),6={X:L,1a:L,14:L,1c:0,1b:0,Y:16,18:15,1f:\'3s/3r/3t.3u\',1g:\'32\',1n:o,1k:o,R:o,H:w,1h:\'27\',1u:\'1S\',1w:w,1o:\'&3m;\'};$b.g(\'6\',6);a(!8){$b.g(\'8\',{j:-1,G:w,1A:w,v:[],1V:[\'\',\'\'],2a:w,1G:L});8=$b.g(\'8\')}a(!f){f={1L:$(\'<Q/>\',{\'19\':\'p-r-q\',3v:0,M:{1H:\'35%\'}}).12(\'1S.10\',h(){k.1R($b,!$b.g(\'8\').1A);$(b).3n()}),23:$(\'<Q/>\',{K:\'&2k;\',\'19\':\'p-r-q-17\'}),1e:o,2d:$(\'<Q/>\',{\'19\':\'p-r-q-W\',M:{38:\'37\',1Z:(6.14)?\'3k\':\'1q\'}}),2F:$(\'<Q/>\',{K:\'&3m;\',\'19\':\'p-r-q-2r\',M:{\'38\':\'37\',3G:\'3x\'}}).12(\'3F\',h(){$(b).13(\'p-r-q-2r-39\')}).12(\'3H\',h(){$(b).1m(\'p-r-q-2r-39\')}),S:$(\'<Q/>\',{K:"",\'19\':\'p-r-q-B\',M:{2W:"33",1Z:\'1q\',2C:\'3I\'}}),B:$(\'<1F/>\',{M:{2B:\'1q\',1K:\'1D\',2Q:\'1D\'}})}}$b.g(\'f\',f);k.2f($b,36);a($b.K()!=\'\')k.2K($b,$b.K());$b.K(\'\').1l(f.1L.1l(f.2F).1l(f.2d).1l(f.23)).1l(f.S.1l(f.B))})},3J:h(){c b.u(h(){l $b=$(b),f=$b.g(\'f\');f.1L.1p().2N();f.B.28().1p();f.S.2N();$b.1p(\'.10\').M({1H:\'\',2o:\'\'})})},6:h(7){c b.u(h(){k.2f($(b),7)})},X:h(7){a(7!=o){c b.u(h(){k.2l($(b),7)})}m{l 6=b.g(\'6\');a(6){c(6.X)}m{c(L)}}},1a:h(7){a(7!=o){c b.u(h(){k.2q($(b),7)})}m{l 6=b.g(\'6\');a(6){c(6.1a)}m{c(L)}}},1c:h(7){a(7!=o){c b.u(h(){k.2j($(b),7)})}m{l 6=b.g(\'6\');a(6){c(6.1c)}m{c(0)}}},1b:h(7){a(7!=o){c b.u(h(){k.2n($(b),7)})}m{l 6=b.g(\'6\');a(6){c(6.1b)}m{c(0)}}},14:h(7){a(7!=o){c b.u(h(){k.2i($(b),7)})}m{l 6=b.g(\'6\');a(6){c(6.14)}m{c(L)}}},Y:h(7){a(7!=o){c b.u(h(){k.2h($(b),7)})}m{l 6=b.g(\'6\');a(6){c(6.Y)}m{c(0)}}},1f:h(7){a(7!=o){c b.u(h(){k.2e($(b),7)})}m{l 6=b.g(\'6\');a(6){c(6.1f)}m{c(\'\')}}},1g:h(7){a(7!=o){c b.u(h(){k.2g($(b),7)})}m{l 6=b.g(\'6\');a(6){c(6.1g)}m{c(\'\')}}},3E:h(7){c b.u(h(){a(!7)7=\':1J\';k.2s($(b),7,\'C\')})},3D:h(7){c b.u(h(){a(!7)7=\':1J\';k.2s($(b),7,\'E\')})},18:h(7){a(7!=o){c b.u(h(){k.2P($(b),7)})}m{l 6=b.g(\'6\');a(6){c(6.18)}m{c(0)}}},1h:h(7){a(7!=o){c b.u(h(){k.2y($(b),7)})}m{l 6=b.g(\'6\');a(6){c(6.1h)}m{c(0)}}},17:h(){l 6=b.g(\'6\'),8=b.g(\'8\');a(!6.H){c(8.v[8.j].17)}m{l 2c=[];1C(l i=0;i<8.j.A;i++){2c.1t(8.v[8.j[i]].17)}c(2c)}},1u:h(7){a(7!=o){c b.u(h(){k.2t($(b),7)})}m{l 6=b.g(\'6\');a(6){c(6.1u)}m{c(0)}}},1w:h(7){a(7!=o){c b.u(h(){k.2D($(b),7)})}m{l 6=b.g(\'6\');a(6){c(6.1w)}m{c(0)}}},1o:h(7){a(7!=o){c b.u(h(){k.2G($(b),7)})}m{l 6=b.g(\'6\');a(6){c(6.1o)}m{c(\'\')}}},7:h(7){a(7!=o){c b.u(h(){k.1s($(b),7)})}m{l 8=b.g(\'8\'),6=b.g(\'6\');a(8&&8.j!=o&&!6.H&&8.j>-1&&8.j<8.v.A){c(8.v[8.j].1i)}m a(8&&8.j!=o&&6.H){l 1Q=[];1C(l i=0;i<8.j.A;i++){a(8.j[i]>-1&&8.j[i]<8.v.A)1Q.1t(8.v[8.j[i]].1i)}c(1Q)}m{c(o)}}},1G:h(7){a(7!=o){c b.u(h(){k.34($(b),7)})}m{l 8=b.g(\'8\');c(8.1G)}},R:h(7){a(7&&$.2b(7)){c b.u(h(){k.2M($(b),7)})}m{k.R(b)}},1n:h(7){a(7&&$.2b(7)){c b.u(h(){k.2H($(b),7)})}m{l 6=b.g(\'6\');a(6){c(6.1n)}m{c(o)}}},1k:h(7){a(7&&$.2b(7)){c b.u(h(){k.2R($(b),7)})}m{l 6=b.g(\'6\');a(6){c(6.1k)}m{c(o)}}},3z:h(){l 8=b.g(\'8\');a(8){c(8.v.A)}m{c(o)}},8:h(7){l 8=b.g(\'8\'),6=b.g(\'6\');a(8&&7==\':2J\'&&8.v.A>0){c(8.v[0])}m a(8&&8.j!=o&&(7==\':U\'||7==o)&&8.v.A>0){a(!6.H&&8.j>-1&&8.j<8.v.A){c(8.v[8.j])}m a(6.H){l 1Q=[];1C(l i=0;i<8.j.A;i++){a(8.j[i]>-1&&8.j<8.v.A)1Q.1t(8.v[8.j[i]])}c(1Q)}c(o)}m a(8&&7>-1){l j=k.1O(b,7);a(j>-1){c(8.v[j])}c(o)}m{c(o)}},};l k={2f:h(9,7){l 8=9.g(\'8\'),6=9.g(\'6\');a(!$.3y(7))c(w);8.G=w;k.2l(9,(7.X!=o)?7.X:6.X);k.2q(9,(7.1a!=o)?7.1a:6.1a);k.2i(9,(7.14!=o)?7.14:6.14);k.2j(9,(7.1c!=o)?7.1c:6.1c);k.2n(9,(7.1b!=o)?7.1b:6.1b);k.2h(9,(7.Y!=o)?7.Y:6.Y);k.2P(9,(7.18!=o)?7.18:6.18);k.2e(9,(7.1f!=o)?7.1f:6.1f);k.2g(9,(7.1g!=o)?7.1g:6.1g);k.2y(9,(7.1h!=o)?7.1h:6.1h);k.2t(9,(7.1u!=o)?7.1u:6.1u);k.2D(9,(7.1w!=o)?7.1w:6.1w);k.2G(9,(7.1o!=o)?7.1o:6.1o);k.2H(9,(7.1n!=o)?7.1n:6.1n);k.2R(9,(7.1k!=o)?7.1k:6.1k);k.2M(9,(7.R!=o)?7.R:6.R);k.31(9,(7.H!=o)?7.H:6.H);a(6.X)k.R(9);8.G=L},34:h(9,7){l f=9.g(\'f\'),8=9.g(\'8\');a(8.1G!=7){8.1G=7;a(8.1G){f.1L.1m(\'p-1U\')}m{f.1L.13(\'p-1U\')}}c(8.1G)},2l:h(9,7){l 6=9.g(\'6\'),8=9.g(\'8\');a((!8.G||6.X!=7)&&(7==L||7==w)){6.X=7}c(6.X)},2q:h(9,7){l 6=9.g(\'6\'),8=9.g(\'8\');a((!8.G||6.1a!=7)&&(7==L||7==w)){6.1a=7;a(6.X&&8.G)k.R(9)}c(6.1a)},2j:h(9,7){l 6=9.g(\'6\'),8=9.g(\'8\'),f=9.g(\'f\');a((!8.G||6.1c!=7)&&7>=0){6.1c=7;a(6.1c>0){f.S.M(\'29-1H\',6.1c+\'1M\')}m{f.S.M(\'29-1H\',\'\')}}c(6.1c)},2n:h(9,7){l 6=9.g(\'6\'),8=9.g(\'8\'),f=9.g(\'f\');a((!8.G||6.1b!=7)&&7>=0){6.1b=7;a(6.1b>0){f.S.M(\'29-2o\',6.1b+\'1M\')}m{f.S.M(\'29-2o\',\'\')}}c(6.1b)},2i:h(9,7){l 6=9.g(\'6\'),8=9.g(\'8\'),f=9.g(\'f\');a((!8.G||6.14!=7)&&(7==L||7==w)){6.14=7;a(6.14){9.F(\'.p-r-q-W\').2z()}m{9.F(\'.p-r-q-W\').2A()}}c(6.14)},2h:h(9,7){l 6=9.g(\'6\'),8=9.g(\'8\'),f=9.g(\'f\');a((!8.G||6.Y!=7)&&7>=0){6.Y=7;f.B.F(\'.p-r-q-s\').u(h(){$(b).M(\'1K-1X\',(6.18+$(b).J(\'I\')*6.Y)+\'1M\')})}c(6.Y)},2e:h(9,7){l 6=9.g(\'6\'),8=9.g(\'8\');a(!8.G||6.1f!=7){6.1f=7;a(6.X&&8.G)k.R(9)}c(6.1f)},2g:h(9,7){l 6=9.g(\'6\'),8=9.g(\'8\');a((!8.G||6.1g!=7)&&(7==\'1q\'||7==\'32\'||7==\'27\')){6.1g=7;a(6.X&&8.G)k.R(9)}c(6.1g)},2P:h(9,7){l 6=9.g(\'6\'),8=9.g(\'8\'),f=9.g(\'f\');a((!8.G||6.18!=7)&&7>=0){6.18=7;f.B.F(\'.p-r-q-s\').u(h(){$(b).M(\'1K-1X\',(6.18+$(b).J(\'I\')*6.Y)+\'1M\')})}c(6.18)},31:h(9,7){l 6=9.g(\'6\'),8=9.g(\'8\'),f=9.g(\'f\');a((!8.G||6.H!=7)&&(7==L||7==w)){a(!7){8.j=-1;a(f.1e!=o){f.1e.2N();f.1e=o}}m{8.j=[];f.S.13(\'p-r-q-H\');a(f.1e==o){f.1e=$(\'<1F/>\',{M:{2B:\'1q\',1K:\'1D\',2Q:\'1D\',2W:"33"},K:\'<1j>&2k;</1j>\'});f.23.K(\'\').1l(f.1e)}}6.H=7}c(6.H)},2y:h(9,7){l 6=9.g(\'6\'),8=9.g(\'8\');a((!8.G||6.1h!=7)&&(7==\'3K\'||7==\'27\')){6.1h=7;a(6.X&&8.G)k.R(9)}c(6.1h)},2t:h(9,7){l 6=9.g(\'6\'),8=9.g(\'8\'),f=9.g(\'f\');a((!8.G||6.1u!=7)&&(7==\'1S\'||7==\'2V\')){6.1u=7;a(7==\'2V\'){f.S.1p(\'24.10\').1p(\'2S.10\').12(\'24.10\',h(){k.1R(9,w)})}m{f.S.1p(\'24.10\').12(\'24.10\',h(){8.2a=w}).12(\'2S.10\',h(){8.2a=L});$(3q).12(\'3A 3U\',h(O){a(!8.2a)k.1R(9,w)})}}c(6.1u)},2D:h(9,7){l 6=9.g(\'6\'),8=9.g(\'8\'),f=9.g(\'f\');a((!8.G||6.1w!=7)&&(7==L||7==w)){6.1w=7}c(6.1h)},2G:h(9,7){l 6=9.g(\'6\'),8=9.g(\'8\'),f=9.g(\'f\');a(!8.G||6.1o!=7){6.1o=7;f.2F.K(6.1o)}c(6.1o)},2K:h(9,7){l 8=9.g(\'8\'),6=9.g(\'6\'),f=9.g(\'f\');a(7==\'\'||7==o){7={W:[\'\',\'\'],v:[]}}m a($.1W(7)){7={W:\'27\',v:7}}m{4g{7=$.4h($.4f(7))}4e(e){c(w)}}8.1V=7.W;k.3a(9);a(7.v.A>0)k.2E(9,7.v,f.B);8.G=w;a(6.H){k.1s(9,\':1q\')}m{k.1s(9,\':2J\')}8.G=L;a(6.R)9.1E(\'2O\')},2s:h(9,7,1d){l f=9.g(\'f\');21=/^(?:(:1J)(?:(=|<|>|\\+)(\\d+))?)|(?:(\\d+)(<|>|\\+))?$/i;t=21.2U(7);a(t!=o){1y(1d){D\'C\':11=k.2w;z;D\'E\':11=k.2v;z}a(t[1]==\':1J\'){f.B.F(\'.p-r-q-1v-s, .p-r-q-1r-s\').u(11)}m a(t[4]!=o){1y(t[5]){D\'+\':f.B.F(\'.p-r-q-1v-s, .p-r-q-1r-s\').u(k.2w);f.B.F(\':30([T=\'+t[4]+\'])\').2m().u(k.2v);f.B.F(\'[T=\'+t[4]+\']\').u(11);z;D\'>\':f.B.F(\'[T=\'+t[4]+\'] + 1F\').F(\'.p-r-q-1v-s, .p-r-q-1r-s\').u(11);f.B.F(\'[T=\'+t[4]+\']\').u(11);z;D\'<\':f.B.F(\':30([T=\'+t[4]+\'])\').2m().u(11);f.B.F(\'[T=\'+t[4]+\']\').u(11);z;2Z:f.B.F(\'[T=\'+t[4]+\']\').u(11);z}}}},2v:h(j,V){k.11(j,V,\'E\')},2w:h(j,V){k.11(j,V,\'C\')},11:h(j,V,1d){1x=\'\';l $V=$(V);a(t.A>2&&t[2]!=o&&t[3]!=o){1y(t[2]){D\'=\':a($V.J(\'I\')==t[3])1x=1d;z;D\'>\':a($V.J(\'I\')>=t[3])1x=1d;z;D\'<\':a($V.J(\'I\')<=t[3])1x=1d;z;D\'+\':a((1d==\'E\'&&$V.J(\'I\')<=t[3])||(1d==\'C\'&&$V.J(\'I\')>=t[3])){1x=1d}m{1x=(1d==\'C\')?\'E\':\'C\'}z}}m 1x=1d;1y(1x){D\'C\':$V.1m(\'p-r-q-1v-s p-r-q-1r-s\').13(\'p-r-q-1v-s\').25().2A();z;D\'E\':$V.1m(\'p-r-q-1v-s p-r-q-1r-s\').13(\'p-r-q-1r-s\').25().2z();z}},1s:h(9,7,1E){l 6=9.g(\'6\'),8=9.g(\'8\'),f=9.g(\'f\'),j=-1;21=/^(:2Y|:1J|:1q)(?:(=|<|>)(\\d+))$/i;t=21.2U(7);a(t!=o)7=t[1];1y(7){D\':2J\':a(8.v.A>0)j=0;z;D\':4d\':j=8.v.A-1;z;D\':2Y\':a(!6.H)c(w);8.j=[];f.B.F(\'.p-r-q-s\').u(h(){l $b=$(b),P=L;a(t!=o){1y(t[2]){D\'=\':P=($b.J(\'I\')==t[3]);z;D\'>\':P=($b.J(\'I\')>=t[3]);z;D\'<\':P=($b.J(\'I\')<=t[3]);z}}a(P){a($b.2u(\'p-r-q-U-s\')){$b.1m(\'p-r-q-U-s\')}m{$b.13(\'p-r-q-U-s\');Z=k.1O(9,$b.J(\'T\'));a(Z>-1)8.j.1t(Z)}}});k.1s(9,[],w);c(w);z;D\':1q\':a(!6.H)c(w);8.j=[];f.B.F(\'.p-r-q-U-s\').u(h(){l $b=$(b),P=L;a(t!=o){1y(t[2]){D\'=\':P=($b.J(\'I\')==t[3]);z;D\'>\':P=($b.J(\'I\')>=t[3]);z;D\'<\':P=($b.J(\'I\')<=t[3]);z}}a(P)$b.1m(\'p-r-q-U-s\')});k.1s(9,[],w);c(w);z;D\':1J\':a(!6.H)c(w);8.j=[];f.B.F(\'.p-r-q-s\').u(h(){l $b=$(b),P=L;a(t!=o){1y(t[2]){D\'=\':P=($b.J(\'I\')==t[3]);z;D\'>\':P=($b.J(\'I\')>=t[3]);z;D\'<\':P=($b.J(\'I\')<=t[3]);z}}a(P){Z=k.1O(9,$b.J(\'T\'));a(Z>-1)8.j.1t(Z);$b.13(\'p-r-q-U-s\')}});k.1s(9,[],w);c(w);z;2Z:a($.1W(7)&&6.H){j=[];1C(l i=0;i<7.A;i++){Z=k.1O(9,7[i]);a(Z>-1)j.1t(Z)}}m{j=k.1O(9,7)}z}a(!6.H&&(!8.G||8.j!=j)&&j>-1){f.B.F(\'.p-r-q-U-s\').1m(\'p-r-q-U-s\');f.B.F(\'[T="\'+7+\'"]\').13(\'p-r-q-U-s\');1B=k.1T(9,f.B.F(\'[T="\'+7+\'"] Q.p-r-q-17\')).1N(\'&3b;\',\'&\').1N(\'&3j;\',\'>\').1N(\'&3i;\',\'<\');8.j=j;f.23.K(8.v[8.j].17).J(\'1B\',1B);f.2d.K(8.1V[8.v[8.j].W]);a(1E&&6.1k)9.1E(\'20\',[8.v[8.j].1i]);a(8.j>-1)c(8.v[8.j].1i)}m a(6.H){a(!$.1W(j)){a(j<0||j==o)c(-1);j=[j]}Z=[];1C(l i=0;i<j.A;i++){l s=f.B.F(\'[T="\'+8.v[j[i]].1i+\'"]\');a(s.2u(\'p-r-q-U-s\')){s.1m(\'p-r-q-U-s\');2L=$.3L(j[i],8.j);a(2L>-1)8.j.4i(2L,1)}m{s.13(\'p-r-q-U-s\');8.j.1t(j[i])}Z.1t(8.v[j[i]].1i)}f.1e.K(\'\');f.B.F(\'.p-r-q-U-s Q.p-r-q-17\').u(h(){l 26=\'\';1B=k.1T(9,$(b)).1N(\'&3b;\',\'&\').1N(\'&3j;\',\'>\').1N(\'&3i;\',\'<\');a(!6.1w){26=$(b).K()}m{26=1B}f.1e.1l($(\'<1j/>\',{K:26,1B:1B,\'19\':\'p-r-q-U-4k\'}).3f($(\'<4m/>\',{K:\'x\'}).12(\'1S.10\',{9:9,7:$(b).1z().1z().J(\'4n\')},h(O){O.4o();k.1s(O.g.9,O.g.7)})))});a(f.1e.28().A==0)f.1e.1l(\'<1j>&2k;</1j>\');a(1E&&6.1k)9.1E(\'20\',[Z]);c(Z)}c(o)},1T:h(9,s){a(s==o||s.A==0)c(\'\');2p=s.1z().1z().1z().2m().F(\'Q.p-r-q-17\');a(2p.A==0)c(s.K());c(k.1T(9,2p)+\' / \'+s.K())},1R:h(9,7){l 6=9.g(\'6\'),8=9.g(\'8\'),f=9.g(\'f\');a(8.1A!=7){8.1A=7;a(8.1A&&8.v.A>0){l j=0;f.S.M({1Z:\'3k\',\'4a-1H\':f.S.1z().M(\'1H\')});a($.1W(8.j)){a(8.j.A>0)j=8.j[0]}m a(8.j>-1){j=8.j}f.S.3l(f.S.3l()+f.B.F(\'[T="\'+8.v[j].1i+\'"]\').2C().3g)}m{f.S.M(\'1Z\',\'1q\')}a(6.1n)9.1E(\'2I\',[8.1A])}c(8.1A)},R:h(9){l 6=9.g(\'6\'),f=9.g(\'f\');a(6.1f==\'\')c(w);$.3W({3S:"3R",3N:6.1f,3O:L,g:{3P:6.1h+\'.10.3Q\',1g:6.1g,1a:6.1a?\'y\':\'n\',3X:\'y\'},3Y:h(1Y){k.2K(9,1Y)},1U:h(1Y){f.S.K(\'45 ! \'+1Y)},})},3a:h(9){l f=9.g(\'f\'),6=9.g(\'6\'),8=9.g(\'8\');f.B.28().1p();f.B.K(\'\');a(6.H){8.j=[]}m{8.j=-1}8.v=[]},2E:h(9,N,1z){l 6=9.g(\'6\'),8=9.g(\'8\'),f=9.g(\'f\');l 46=-1;1C(l i=0;i<N.A;i++){8.v.1t({1i:N[i].1i,I:N[i].I,17:N[i].17,W:N[i].W,1P:N[i].1P.A});a(6.14){W="<Q 19=\'p-r-q-W\'>"+8.1V[N[i].W]+"</Q>"}m{W=""}l 2x=(6.18+N[i].I*6.Y),1j=$(\'<1j/>\',{\'19\':\'p-r-q-s\',K:"<Q>"+W+"<Q 19=\'p-r-q-17\'>"+N[i].17+"</Q></Q>",T:N[i].1i,I:N[i].I,M:{\'1K-1X\':2x+\'1M\'}}).12(\'1S.10\',{9:9,3c:2x,3d:N[i].1P.A},h(O){O.3p=O.44-$(O.3o).3h().1X;O.43=O.3Z-$(O.3o).3h().3g;a(O.3p<O.g.3c&&O.g.3d>0){a($(b).2u(\'p-r-q-1v-s\')){$(b).1m(\'p-r-q-1v-s\').13(\'p-r-q-1r-s\').25().2z()}m{$(b).1m(\'p-r-q-1r-s\').13(\'p-r-q-1v-s\').25().2A()}}m{k.1s(O.g.9,$(b).J(\'T\'),L);a(6.H){}m{k.1R(O.g.9,w)}}a(6.H)f.1L.3n()});a(N[i].1P.A>0){1j.13(\'p-r-q-1r-s\').M(\'42-2C\',(6.Y*N[i].I)+\'1M 1D\')}a(6.H){1j.28().3f(\'<Q 19="p-r-q-40"></Q>\')}1z.1l(1j);a(N[i].1P.A>0){l 1F=$(\'<1F/>\',{\'19\':\'p-r-q-4p\',M:{2B:\'1q\',1K:\'1D\',2Q:\'1D\',\'47-48\':(35-N[i].I*2)+\'%\'}});1j.41(1F);k.2E(9,N[i].1P,1F)}}},1O:h(9,7){l 8=9.g(\'8\');1C(l i=0;i<8.v.A;i++){a(8.v[i].1i==7)c(i)}c(-1)},2H:h(9,7){l 6=9.g(\'6\');6.1n=7;9.1p(\'2I\');a(7)9.12(\'2I\',6.1n);c(6.1n)},2R:h(9,7){l 6=9.g(\'6\');6.1k=7;9.1p(\'20\');a(7)9.12(\'20\',6.1k);c(6.1k)},2M:h(9,7){l 6=9.g(\'6\');6.R=7;9.1p(\'2O\');a(7)9.12(\'2O\',6.R);c(6.R)}};$.3M.10=h(1I){a(22[1I]){c 22[1I].P(b,3V.3T.49.4c(2T,1))}m a(4l 1I===\'9\'||!1I){c 22.2X.P(b,2T)}m{$.1U(\'4j \'+1I+\' 4b 3w 3C 3B 3e.10\')}}})(3e);',62,274,'||||||options|value|properties|object|if|this|return|||objects|data|function||index|privateMethods|var|else||null|ui|selector|category|item|target|each|categories|false|||break|length|list||case||find|initialized|multiple|level|attr|html|true|css|listItems|event|apply|div|load|listContainer|catId|selected|domElt|status|autoLoad|levelIndent|tmp|categorySelector|applyExpandCollapse|bind|addClass|displayStatus|||name|iconWidthEC|class|galleryRoot|listMaxHeight|listMaxWidth|mode|containerList|serverUrl|filter|userMode|id|li|change|append|removeClass|popup|downArrow|unbind|none|collapsable|setValue|push|popupMode|expandable|displayPath|action|switch|parent|selectorVisible|title|for|0px|trigger|ul|isValid|width|method|all|padding|container|px|replace|findIndexByValue|childs|returned|displaySelector|click|getParentName|error|labelStatus|isArray|left|msg|display|categorySelectorChange|re|publicMethods|containerName|mouseleave|next|path|public|children|max|mouseOver|isFunction|listNames|containerStatus|setServerUrl|setOptions|setFilter|setLevelIndent|setDisplayStatus|setListMaxWidth|nbsp|setAutoLoad|prev|setListMaxHeight|height|foundItem|setGalleryRoot|arrow|setExpandCollapse|setPopupMode|hasClass|applyExpand|applyCollapse|spaceWidth|setUserMode|show|hide|listStyle|position|setDisplayPath|listAddItems|containerArrow|setDownArrow|setEventPopup|categorySelectorPopup|first|setItems|tmpIndex|setEventLoad|remove|categorySelectorLoad|setIconWidthEC|margin|setEventChange|mouseenter|arguments|exec|mouseout|overflow|init|invert|default|has|setMultiple|accessible|auto|setIsValid|100|opt|right|float|active|listClear|amp|expandArea|nbchilds|jQuery|prepend|top|offset|lt|gt|block|scrollTop|dArr|focus|currentTarget|layerX|document|GrumPluginClasses|plugins|gpc_ajax|php|tabindex|not|pointer|isPlainObject|numberOfCategories|focusout|on|exist|expand|collapse|mousedown|cursor|mouseup|absolute|destroy|admin|inArray|fn|url|async|ajaxfct|getList|POST|type|prototype|focusin|Array|ajax|tree|success|pageY|check|after|background|layerY|pageX|Error|previousLevel|font|size|slice|min|does|call|last|catch|trim|try|parseJSON|splice|Method|cat|typeof|span|catid|stopPropagation|group'.split('|'),0,{})) 
  • extensions/GrumPluginClasses/js/ui.iconSelector.js

    r7175 r8961  
    148148                    container:$('<div/>', 
    149149                        { 
    150                           'class':' ui-icon-selector ', 
     150                          'class':' ui-icon-selector ' 
    151151                        } 
    152152                    ).bind('click.iconSelector', 
  • extensions/GrumPluginClasses/js/ui.tagSelector.js

    r7370 r8961  
    2222 * 
    2323 * | release | date       | 
    24  * | 1.0.0   | 2010/10/10 | first release 
     24 * | 1.0.0   | 2010/10/10 | * first release 
    2525 * |         |            | 
     26 * | 1.1.0   | 2010/11/03 | * add 'isValid' method 
    2627 * |         |            | 
    2728 * |         |            | 
     
    9394                    cache:[], 
    9495                    timerHandle:null, 
     96                    isValid:true 
    9597                  } 
    9698                ); 
     
    118120                      { 
    119121                        html: '', 
    120                         'class':'ui-tag-selector-selected-tag-list', 
     122                        'class':'ui-tag-selector-selected-tag-list' 
    121123                      } 
    122124                    ), 
     
    151153                            display:'none', 
    152154                            position:'absolute', 
    153                             zIndex:9999, 
     155                            zIndex:9999 
    154156                          } 
    155157                        } 
     
    166168                          padding:'0px', 
    167169                          margin:'0px', 
    168                           overflow:"auto", 
     170                          overflow:"auto" 
    169171                        } 
    170172                      } 
     
    217219      options: function (value) 
    218220        { 
    219           this.each(function() 
    220             { 
    221               var $this=$(this); 
    222               privateMethods.setOptions($this, value); 
    223               return($this); 
     221          return this.each(function() 
     222            { 
     223              privateMethods.setOptions($(this), value); 
    224224            } 
    225225          ); 
     
    229229      ignoreCase: function (value) 
    230230        { 
    231           if(value) 
    232           { 
    233             this.each(function() 
    234               { 
    235                 var $this=$(this); 
    236                 privateMethods.setIgnoreCase($this, value); 
    237                 return($this); 
     231          if(value!=null) 
     232          { 
     233            return this.each(function() 
     234              { 
     235                privateMethods.setIgnoreCase($(this), value); 
    238236              } 
    239237            ); 
     
    256254      inputNumCar: function (value) 
    257255        { 
    258           if(value) 
    259           { 
    260             this.each(function() 
    261               { 
    262                 var $this=$(this); 
    263                 privateMethods.setInputNumCar($this, value); 
    264                 return($this); 
     256          if(value!=null) 
     257          { 
     258            return this.each(function() 
     259              { 
     260                privateMethods.setInputNumCar($(this), value); 
    265261              } 
    266262            ); 
     
    311307      maximumTagLoaded: function (value) 
    312308        { 
    313           if(value) 
    314           { 
    315             this.each(function() 
    316               { 
    317                 var $this=$(this); 
    318                 privateMethods.setMaximumTagLoaded($this, value); 
    319                 return($this); 
     309          if(value!=null) 
     310          { 
     311            return this.each(function() 
     312              { 
     313                privateMethods.setMaximumTagLoaded($(this), value); 
    320314              } 
    321315            ); 
     
    338332      listMaxWidth: function (value) 
    339333        { 
    340           if(value) 
    341           { 
    342             this.each(function() 
    343               { 
    344                 var $this=$(this); 
    345                 privateMethods.setListMaxWidth($this, value); 
    346                 return($this); 
     334          if(value!=null) 
     335          { 
     336            return this.each(function() 
     337              { 
     338                privateMethods.setListMaxWidth($(this), value); 
    347339              } 
    348340            ); 
     
    365357      listMaxHeight: function (value) 
    366358        { 
    367           if(value) 
    368           { 
    369             this.each(function() 
    370               { 
    371                 var $this=$(this); 
    372                 privateMethods.setListMaxHeight($this, value); 
    373                 return($this); 
     359          if(value!=null) 
     360          { 
     361            return this.each(function() 
     362              { 
     363                privateMethods.setListMaxHeight($(this), value); 
    374364              } 
    375365            ); 
     
    393383      serverCallDelay: function (value) 
    394384        { 
    395           if(value) 
    396           { 
    397             this.each(function() 
    398               { 
    399                 var $this=$(this); 
    400                 privateMethods.setServerCallDelay($this, value); 
    401                 return($this); 
     385          if(value!=null) 
     386          { 
     387            return this.each(function() 
     388              { 
     389                privateMethods.setServerCallDelay($(this), value); 
    402390              } 
    403391            ); 
     
    421409      serverUrl: function (value) 
    422410        { 
    423           if(value) 
    424           { 
    425             this.each(function() 
    426               { 
    427                 var $this=$(this); 
    428                 privateMethods.setServerUrl($this, value); 
    429                 return($this); 
     411          if(value!=null) 
     412          { 
     413            return this.each(function() 
     414              { 
     415                privateMethods.setServerUrl($(this), value); 
    430416              } 
    431417            ); 
     
    448434      textStart: function (value) 
    449435        { 
    450           if(value) 
    451           { 
    452             this.each(function() 
    453               { 
    454                 var $this=$(this); 
    455                 privateMethods.setTextStart($this, value); 
    456                 return($this); 
     436          if(value!=null) 
     437          { 
     438            return this.each(function() 
     439              { 
     440                privateMethods.setTextStart($(this), value); 
    457441              } 
    458442            ); 
     
    475459      textFound: function (value) 
    476460        { 
    477           if(value) 
    478           { 
    479             this.each(function() 
    480               { 
    481                 var $this=$(this); 
    482                 privateMethods.setTextFound($this, value); 
    483                 return($this); 
     461          if(value!=null) 
     462          { 
     463            return this.each(function() 
     464              { 
     465                privateMethods.setTextFound($(this), value); 
    484466              } 
    485467            ); 
     
    502484      textDisplay: function (value) 
    503485        { 
    504           if(value) 
    505           { 
    506             this.each(function() 
    507               { 
    508                 var $this=$(this); 
    509                 privateMethods.setTextDisplay($this, value); 
    510                 return($this); 
     486          if(value!=null) 
     487          { 
     488            return this.each(function() 
     489              { 
     490                privateMethods.setTextDisplay($(this), value); 
    511491              } 
    512492            ); 
     
    529509      filter: function (value) 
    530510        { 
    531           if(value) 
    532           { 
    533             this.each(function() 
    534               { 
    535                 var $this=$(this); 
    536                 privateMethods.setFilter($this, value); 
    537                 return($this); 
     511          if(value!=null) 
     512          { 
     513            return this.each(function() 
     514              { 
     515                privateMethods.setFilter($(this), value); 
    538516              } 
    539517            ); 
     
    556534      mode: function (value) 
    557535        { 
    558           if(value) 
    559           { 
    560             this.each(function() 
    561               { 
    562                 var $this=$(this); 
    563                 privateMethods.setMode($this, value); 
    564                 return($this); 
     536          if(value!=null) 
     537          { 
     538            return this.each(function() 
     539              { 
     540                privateMethods.setMode($(this), value); 
    565541              } 
    566542            ); 
     
    583559      value: function (value) 
    584560        { 
    585           if(value) 
     561          if(value!=null) 
    586562          { 
    587563            // set selected value 
     
    596572            // return the selected tags 
    597573            var properties=this.data('properties'); 
     574 
    598575            return(properties.tags); 
    599576          } 
    600577        }, // value 
     578 
     579      isValid: function (value) 
     580        { 
     581          if(value!=null) 
     582          { 
     583            // set selected value 
     584            return this.each(function() 
     585              { 
     586                privateMethods.setIsValid($(this), value); 
     587              } 
     588            ); 
     589          } 
     590          else 
     591          { 
     592            // return the selected tags 
     593            var properties=this.data('properties'); 
     594 
     595            return(properties.isValid); 
     596          } 
     597        }, // isValid 
    601598 
    602599      load: function (value) 
     
    610607          { 
    611608            // set selected value 
    612             this.each(function() 
    613               { 
    614                 var $this=$(this); 
    615                 privateMethods.setEventLoad($this, value); 
    616                 return($this); 
     609            return this.each(function() 
     610              { 
     611                privateMethods.setEventLoad($(this), value); 
    617612              } 
    618613            ); 
     
    630625          { 
    631626            // set selected value 
    632             this.each(function() 
    633               { 
    634                 var $this=$(this); 
    635                 privateMethods.setEventPopup($this, value); 
    636                 return($this); 
     627            return this.each(function() 
     628              { 
     629                privateMethods.setEventPopup($(this), value); 
    637630              } 
    638631            ); 
     
    658651          { 
    659652            // set selected value 
    660             this.each(function() 
    661               { 
    662                 var $this=$(this); 
    663                 privateMethods.setEventAdd($this, value); 
    664                 return($this); 
     653            return this.each(function() 
     654              { 
     655                privateMethods.setEventAdd($(this), value); 
    665656              } 
    666657            ); 
     
    686677          { 
    687678            // set selected value 
    688             this.each(function() 
    689               { 
    690                 var $this=$(this); 
    691                 privateMethods.setEventRemove($this, value); 
    692                 return($this); 
     679            return this.each(function() 
     680              { 
     681                privateMethods.setEventRemove($(this), value); 
    693682              } 
    694683            ); 
     
    764753        }, 
    765754 
     755      setIsValid : function (object, value) 
     756        { 
     757          var objects=object.data('objects'), 
     758              properties=object.data('properties'); 
     759 
     760          if(properties.isValid!=value) 
     761          { 
     762            properties.isValid=value; 
     763            if(properties.isValid) 
     764            { 
     765              objects.container.removeClass('ui-error'); 
     766              objects.input.removeClass('ui-error'); 
     767            } 
     768            else 
     769            { 
     770              objects.container.addClass('ui-error'); 
     771              objects.input.addClass('ui-error'); 
     772            } 
     773          } 
     774          return(properties.isValid); 
     775        }, 
     776 
    766777      setIgnoreCase : function (object, value) 
    767778        { 
    768779          var options=object.data('options'), 
    769780              properties=object.data('properties'); 
     781 
    770782          if((!properties.initialized || options.ignoreCase!=value) && (value==true || value==false)) 
    771783          { 
     
    780792              objects=object.data('objects'), 
    781793              properties=object.data('properties'); 
     794 
    782795          if((!properties.initialized || options.inputNumCar!=value) && value>0) 
    783796          { 
     
    805818          var options=object.data('options'), 
    806819              properties=object.data('properties'); 
     820 
    807821          if((!properties.initialized || options.setMaximumTagLoaded!=value) && value>=0) 
    808822          { 
     
    817831          var options=object.data('options'), 
    818832              properties=object.data('properties'); 
     833 
    819834          if(!properties.initialized || options.textStart!=value) 
    820835          { 
     
    828843          var options=object.data('options'), 
    829844              properties=object.data('properties'); 
     845 
    830846          if(!properties.initialized || options.textFound!=value) 
    831847          { 
     
    839855          var options=object.data('options'), 
    840856              properties=object.data('properties'); 
     857 
    841858          if(!properties.initialized || options.textDisplay!=value) 
    842859          { 
     
    851868              properties=object.data('properties'), 
    852869              objects=object.data('objects'); 
     870 
    853871          if((!properties.initialized || options.listMaxWidth!=value) && value>=0) 
    854872          { 
     
    871889              properties=object.data('properties'), 
    872890              objects=object.data('objects'); 
     891 
    873892          if((!properties.initialized || options.listMaxHeight!=value) && value>=0) 
    874893          { 
     
    890909          var options=object.data('options'), 
    891910              properties=object.data('properties'); 
     911 
    892912          if((!properties.initialized || options.serverCallDelay!=value) && value>0 ) 
    893913          { 
     
    901921          var options=object.data('options'), 
    902922              properties=object.data('properties'); 
     923 
    903924          if(!properties.initialized || options.serverUrl!=value) 
    904925          { 
     
    914935          var options=object.data('options'), 
    915936              properties=object.data('properties'); 
     937 
    916938          if((!properties.initialized || options.mode!=value) && (value=='admin' || value=='public')) 
    917939          { 
     
    925947          var options=object.data('options'), 
    926948              properties=object.data('properties'); 
     949 
    927950          if((!properties.initialized || options.filter!=value) && (value=='all' || value=='affected')) 
    928951          { 
     
    935958      setValue : function (object, value) 
    936959        { 
    937           var options=object.data('options'), 
    938               properties=object.data('properties'), 
     960          var properties=object.data('properties'), 
    939961              objects=object.data('objects'); 
    940962 
     
    10711093                { 
    10721094                  objects.selectorList.html('Error ! '+msg); 
    1073                 }, 
     1095                } 
    10741096            } 
    10751097         ); 
     
    10801102          // clear the cache tag list 
    10811103          var objects=object.data('objects'), 
    1082               options=object.data('options'), 
    10831104              properties=object.data('properties'); 
    10841105 
     
    10861107          properties.cache=[]; 
    10871108        }, 
     1109 
    10881110      cacheAddItems : function (object, listItems) 
    10891111        { 
     
    10981120              { 
    10991121                id:listItems[i].id, 
    1100                 name:listItems[i].name, 
     1122                name:listItems[i].name 
    11011123              } 
    11021124            ); 
     
    12131235        { 
    12141236          var options=object.data('options'); 
     1237 
    12151238          options.popup=value; 
    12161239          object.unbind('tagSelectorPopup'); 
     
    12181241          return(options.popup); 
    12191242        }, 
     1243 
    12201244      setEventAdd : function (object, value) 
    12211245        { 
    12221246          var options=object.data('options'); 
     1247 
    12231248          options.add=value; 
    12241249          object.unbind('tagSelectorAdd'); 
     
    12261251          return(options.add); 
    12271252        }, 
     1253 
    12281254      setEventRemove : function (object, value) 
    12291255        { 
    12301256          var options=object.data('options'); 
     1257 
    12311258          options.remove=value; 
    12321259          object.unbind('tagSelectorRemove'); 
     
    12341261          return(options.remove); 
    12351262        }, 
     1263 
    12361264      setEventLoad : function (object, value) 
    12371265        { 
     
    12531281          } 
    12541282        }, 
     1283 
    12551284      setTimerHandle : function(object) 
    12561285        { 
  • extensions/GrumPluginClasses/main.inc.php

    r8809 r8961  
    22/* 
    33Plugin Name: Grum Plugins Classes.3 
    4 Version: 3.3.4 
     4Version: 3.4.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 
     
    104104|         |            |   . optimization for RBuilder loading language management 
    105105|         |            | 
    106 | 3.3.4   | 2011/01/20 | * Add languages 
    107 |         |            | 
     106| 3.4.0   | 2011/01/28 | * mantis bug:1984 
     107|         |            |   . RBuilder returns an error message when one picture 
     108|         |            |     have multiple categories 
     109|         |            | 
     110|         |            | * fix bug:2109 
     111|         |            |   . Incompatibility with IE8 (rbuilder) 
     112|         |            | 
     113|         |            | * Fix bug on simpleTip.js (script release 1.0.1) 
     114|         |            | 
     115|         |            | * GPCCore, GPCTranslate, GPCUsersGroups classes updated 
     116|         |            | 
     117|         |            | * add jQuery plugin pack & associated css files 
     118|         |            |   . inputText 
     119|         |            |   . inputList 
     120|         |            |   . inputRadio 
     121|         |            |   . inputCheckbox 
     122|         |            |   . inputColorPicker 
     123|         |            |   . inputColorsFB 
     124|         |            |   . inputConsole 
     125|         |            |   . inputDotArea 
     126|         |            |   . inputNum 
     127|         |            |   . inputPosition 
     128|         |            |   . inputStatusBar 
     129|         |            | 
     130|         |            | * update categorySelector jQuery plugin 
     131|         |            | 
     132|         |            | * minify js scripts (larger size than packed files but 
     133|         |            |   better performance) 
    108134|         |            | 
    109135|         |            | 
     
    137163    GPCUsersGroups.class.inc.php 
    138164 
    139     genericjs.class.inc.php  + genericjs.js 
    140165 
    141166See each file to know more about them 
  • extensions/GrumPluginClasses/templates/GPCRequestBuilder_search.tpl

    r7370 r8961  
    1 {known_script id="jquery.ui" src=$ROOT_URL|@cat:"themes/default/js/ui/packed/ui.core.packed.js"} 
    2 {known_script id="jquery.ui.dialog" src=$ROOT_URL|@cat:"themes/default/js/ui/packed/ui.dialog.packed.js"} 
    3 {known_script id="gpc.pagesNavigator" src=$ROOT_URL|@cat:"plugins/GrumPluginClasses/js/pagesNavigator.packed.js"} 
    4 {known_script id="gpc.rbSearch" src=$ROOT_URL|@cat:"plugins/GrumPluginClasses/js/rbSearch.packed.js"} 
    51 
    62{foreach from=$datas.dialogBox item=dialogBox} 
Note: See TracChangeset for help on using the changeset viewer.