Changeset 17562


Ignore:
Timestamp:
Aug 14, 2012, 9:55:13 PM (8 years ago)
Author:
grum
Message:

bug:2723
+ improve some GPC framework functionnalities

Location:
extensions/GrumPluginClasses
Files:
10 added
17 edited

Legend:

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

    r16733 r17562  
    33/* -----------------------------------------------------------------------------
    44  class name     : GPCCore
    5   class version  : 1.4.1
    6   plugin version : 3.5.2
    7   date           : 2011-09-19
     5  class version  : 1.4.2
     6  plugin version : 3.5.3
     7  date           : 2012-07-27
    88  ------------------------------------------------------------------------------
    99  author: grum at piwigo.org
     
    6060|         |            |
    6161|         |            | * Compatibility with jquery 1.7.2 & jquery-ui 1.8.16
    62 |         |            |   . implement getMinified() & setMinifiedState() functions
     62|         |            |   . remove getMinified() & setMinifiedState() functions
    6363|         |            |        (let piwigo combined function manage the minified
    6464|         |            |         state)
     
    7373|         |            | * AddHeaderCSS and AddJS are ignored if called in an ajax session (AJAX_CALL defined)
    7474|         |            |
     75| 1.4.2   | 2012/07/27 | * AddHeaderContent can manage 'raw' content
    7576|         |            |
    7677|         |            |
     
    143144        Array('name' => "GPCAjax", 'version' => "3.1.0"),
    144145        Array('name' => "GPCCategorySelector", 'version' => "1.0.1"),
    145         Array('name' => "GPCCore", 'version' => "1.4.1"),
     146        Array('name' => "GPCCore", 'version' => "1.4.2"),
    146147        //Array('name' => "GPCCss", 'version' => "3.1.0"),  removed with v1.4.1
    147148        Array('name' => "GPCPagesNavigation", 'version' => "2.0.0"),
     
    149150        Array('name' => "GPCRequestBuilder", 'version' => "1.1.7"),
    150151        Array('name' => "GPCTables", 'version' => "1.5.0"),
    151         Array('name' => "GPCTabSheet", 'version' => "1.1.1"),
     152        Array('name' => "GPCTabSheet", 'version' => "1.1.2"),
    152153        Array('name' => "GPCTranslate", 'version' => "2.1.1"),
    153154        Array('name' => "GPCUsersGroups", 'version' => "2.1.0"),
     
    555556  /**
    556557   * used to add a js or css directly in the header
     558   * use 'raw' type to add any raw data in the header
    557559   *
    558560   * @param String $id : a unique id for the file
     
    574576      case 'js':
    575577        $template->block_html_head(null, '<script type="text/javascript">'.$content.'</script>', $null, $null);
     578        break;
     579      case 'raw':
     580        $template->block_html_head(null, $content);
    576581        break;
    577582    }
     
    640645  static public function addUI($list)
    641646  {
    642     global $template;
     647    global $template, $lang_info;
    643648
    644649    if(is_string($list)) $list=explode(',', $list);
     
    662667          self::addHeaderCSS('gpc.css', $fileName.'.css', 10);
    663668          self::addHeaderCSS('gpc.cssT', $fileName.'_'.$template->get_themeconf('name').'.css', 15);
     669          break;
     670        case 'canvasDraw.graph':
     671          self::addHeaderCSS('gpc.canvasDrawT', sprintf($themeFile, 'canvasDraw'));
     672          self::addHeaderJS('jquery.ui', 'themes/default/js/ui/jquery.ui.core.js', array('jquery'));
     673          self::addHeaderJS('jquery.ui.widget', 'themes/default/js/ui/jquery.ui.widget.js', array('jquery.ui'));
     674          self::addHeaderJS('jquery.ui.mouse', 'themes/default/js/ui/jquery.ui.mouse.js', array('jquery.ui.widget'));
     675          self::addHeaderJS('gpc.canvasDraw.commonClasses', GPC_PATH.'js/CanvasDraw.CommonClasses.js', array('jquery.ui.widget'));
     676          self::addHeaderJS('gpc.canvasDraw.graphClasses', GPC_PATH.'js/CanvasDraw.GraphClasses.js', array('gpc.canvasDraw.commonClasses'));
     677          self::addHeaderJS('gpc.canvasDraw.drawing', GPC_PATH.'js/CanvasDraw.Drawing.js', array('gpc.canvasDraw.graphClasses'));
     678          self::addHeaderJS('gpc.canvasDraw', GPC_PATH.'js/canvasDraw.js', array('gpc.canvasDraw.drawing'));
     679          self::addHeaderJS('gpc.canvasDraw.drawingGraph', GPC_PATH.'js/canvasDraw.ui.drawingGraph.js', array('gpc.canvasDraw'));
    664680          break;
    665681        case 'categorySelector':
     
    715731          break;
    716732        case 'inputDate':
     733          self::addHeaderCSS('jquery.ui.datepicker', 'themes/default/js/ui/theme/jquery.ui.datepicker.css');
    717734          self::addHeaderCSS('gpc.inputDate', GPC_PATH.'css/inputDate.css');
    718735          self::addHeaderCSS('gpc.inputDateT', sprintf($themeFile, 'inputDate'));
    719736          self::addHeaderJS('jquery.ui', 'themes/default/js/ui/jquery.ui.core.js', array('jquery'));
    720           self::addHeaderJS('jquery.ui.widget', 'themes/default/js/ui/jquery.ui.widget.js', array('jquery.ui'));
     737          self::addHeaderJS('jquery.ui.widget',     'themes/default/js/ui/jquery.ui.widget.js', array('jquery.ui'));
    721738          self::addHeaderJS('jquery.ui.datepicker', 'themes/default/js/ui/jquery.ui.datepicker.js', array('jquery.ui.widget'));
     739          self::addHeaderJS('jquery.ui.datepicker-'.$lang_info['code'], self::getPiwigoSystemPath().'themes/default/js/ui/i18n/jquery.ui.datepicker-'.$lang_info['code'].'.js');
    722740          self::addHeaderJS('gpc.inputDate', GPC_PATH.'js/ui.inputDate.js', array('jquery.ui.widget'));
    723741          break;
     
    730748          break;
    731749        case 'inputFilterBox':
     750          self::addHeaderCSS('jquery.ui.datepicker', 'themes/default/js/ui/theme/jquery.ui.datepicker.css');
    732751          self::addHeaderCSS('gpc.inputNum', GPC_PATH.'css/inputNum.css');
    733752          self::addHeaderCSS('gpc.inputNumT', sprintf($themeFile, 'inputNum'));
     
    751770          self::addHeaderJS('jquery.ui.sortable', 'themes/default/js/ui/jquery.ui.sortable.js', array('jquery.ui.draggable'));
    752771          self::addHeaderJS('jquery.ui.dialog', 'themes/default/js/ui/jquery.ui.dialog.js', array('jquery.ui.sortable'));
     772          self::addHeaderJS('jquery.ui.datepicker', 'themes/default/js/ui/jquery.ui.datepicker.js', array('jquery.ui.widget'));
     773          self::addHeaderJS('jquery.ui.datepicker-'.$lang_info['code'], self::getPiwigoSystemPath().'themes/default/js/ui/i18n/jquery.ui.datepicker-'.$lang_info['code'].'.js');
    753774
    754775          self::addHeaderJS('gpc.inputNum', GPC_PATH.'js/ui.inputNum.js', array('jquery.ui.dialog'));
     
    841862          break;
    842863        case 'dynamicTable':
     864          self::addHeaderCSS('jquery.ui.datepicker', 'themes/default/js/ui/theme/jquery.ui.datepicker.css');
    843865          self::addHeaderCSS('gpc.inputNum', GPC_PATH.'css/inputNum.css');
    844866          self::addHeaderCSS('gpc.inputNumT', sprintf($themeFile, 'inputNum'));
     
    855877          self::addHeaderCSS('gpc.inputPages', GPC_PATH.'css/inputPages.css');
    856878          self::addHeaderCSS('gpc.inputPagesT', sprintf($themeFile, 'inputPages'));
    857           self::addHeaderCSS('gpc.inputDynamicTable', GPC_PATH.'css/inputDynamicTable.css');
    858           self::addHeaderCSS('gpc.inputDynamicTableT', sprintf($themeFile, 'inputDynamicTable'));
     879          self::addHeaderCSS('gpc.dynamicTable', GPC_PATH.'css/dynamicTable.css');
     880          self::addHeaderCSS('gpc.dynamicTableT', sprintf($themeFile, 'dynamicTable'));
    859881
    860882          self::addHeaderJS('jquery.ui', 'themes/default/js/ui/jquery.ui.core.js', array('jquery'));
     
    867889          self::addHeaderJS('jquery.ui.sortable', 'themes/default/js/ui/jquery.ui.sortable.js', array('jquery.ui.draggable'));
    868890          self::addHeaderJS('jquery.ui.dialog', 'themes/default/js/ui/jquery.ui.dialog.js', array('jquery.ui.sortable'));
     891          self::addHeaderJS('jquery.ui.datepicker', 'themes/default/js/ui/jquery.ui.datepicker.js', array('jquery.ui.widget'));
     892          self::addHeaderJS('jquery.ui.datepicker-'.$lang_info['code'], self::getPiwigoSystemPath().'themes/default/js/ui/i18n/jquery.ui.datepicker-'.$lang_info['code'].'.js');
    869893
    870894          self::addHeaderJS('gpc.inputNum', GPC_PATH.'js/ui.inputNum.js', array('jquery.ui.dialog'));
  • extensions/GrumPluginClasses/classes/GPCTabSheet.class.inc.php

    r7142 r17562  
    22/* -----------------------------------------------------------------------------
    33  class name     : GPCTabSheet
    4   class version  : 1.1.1
    5   plugin version : 3.2.1
    6   date           : 2010-10-01
     4  class version  : 1.1.2
     5  plugin version : 3.5.3
     6  date           : 2012-08-14
    77  ------------------------------------------------------------------------------
    88  author: grum at piwigo.org
     
    1919| 1.1.1   | 2010/10/01 | * add attribute 'id' for tabs (<li> items)
    2020|         |            |
    21 |         |            |
     21| 1.1.2   | 2012/08/14 | * bug:2723 - set select() function to be compatible with
     22|         |            |   piwigo 2.4.3
    2223|         |            |
    2324|         |            |
     
    5253    $this->classes=$classes;
    5354    $this->id=$id;
     55    $this->set_id($this->id);
    5456    $this->setTplFile($tplFile);
    5557  }
     
    139141  }
    140142
     143
     144  public function select($name)
     145  {
     146    /*
     147     * override the tabsheet->select() function (to fix bug:2723)
     148     */
     149    if($this->id!='')
     150    {
     151      $this->sheets = trigger_event('gpc_tabsheet_before_select', $this->sheets, $this->id);
     152      if (!array_key_exists($name, $this->sheets))
     153      {
     154        $keys = array_keys($this->sheets);
     155        if(isset($keys[0]))
     156          $name = $keys[0];
     157      }
     158    }
     159    $this->selected = $name;
     160  }
     161
     162  function set_id($id)
     163  {
     164    /*
     165     * override the tabsheet->select() function (to fix bug:2723)
     166     */
     167    if(method_exists('tabsheet', 'set_id'))
     168    {
     169      parent::set_id($id);
     170    }
     171    else
     172    {
     173      $this->uniqid = $id;
     174    }
     175  }
    141176
    142177  /*
  • extensions/GrumPluginClasses/classes/GPCUserAgent.class.inc.php

    r16458 r17562  
    2525  static public function parse($userAgent)
    2626  {
    27     global $UA_BrowserInfo;
    28 
    2927    $returned=array(
    3028      UA_DATA_OS              => UA_OS_UNKNOWN,
     
    3331      UA_DATA_BROWSER         => UA_BOT_UNKNOWN,
    3432      UA_DATA_BROWSER_NAME    => '',
    35       UA_DATA_BROWSER_TYPE    => UA_PROP_TYPE_UNKNOWN,
     33      UA_DATA_BROWSER_TYPE    => UA_BROWSER_TYPE_UNKNOWN,
    3634      UA_DATA_BROWSER_VERSION => '',
    3735
     
    5149    $tmp=self::getBrowser($userAgent);
    5250    $returned[UA_DATA_BROWSER]=$tmp[UA_DATA_BROWSER];
    53     $returned[UA_DATA_BROWSER_TYPE]=$UA_BrowserInfo[UA_DATA_BROWSER][$tmp[UA_DATA_BROWSER]][UA_PROP_TYPE];
     51    $returned[UA_DATA_BROWSER_TYPE]=GPCUserAgentValues::$UA_BrowserInfo[UA_DATA_BROWSER][$tmp[UA_DATA_BROWSER]][UA_PROP_TYPE];
    5452    $returned[UA_DATA_BROWSER_VERSION]=str_replace(array(';', '(', ')'), array('', '', ''), $tmp[UA_DATA_BROWSER_VERSION]);
    5553
     
    8886  static public function getProperties($userAgent)
    8987  {
    90     global $UA_BrowserInfo;
    91 
    9288    $returned=array();
    93     if(isset($userAgent[UA_DATA_BROWSER]) and isset($UA_BrowserInfo[UA_DATA_BROWSER][$userAgent[UA_DATA_BROWSER]]))
     89    if(isset($userAgent[UA_DATA_BROWSER]) and isset(GPCUserAgentValues::$UA_BrowserInfo[UA_DATA_BROWSER][$userAgent[UA_DATA_BROWSER]]))
    9490    {
    9591      $returned[UA_DATA_BROWSER]=$userAgent[UA_DATA_BROWSER];
    96       $returned[UA_DATA_BROWSER_NAME]=$UA_BrowserInfo[UA_DATA_BROWSER][$userAgent[UA_DATA_BROWSER]][UA_PROP_NAME];
    97       $returned[UA_DATA_BROWSER_URL]=$UA_BrowserInfo[UA_DATA_BROWSER][$userAgent[UA_DATA_BROWSER]][UA_PROP_URL];
     92      $returned[UA_DATA_BROWSER_NAME]=GPCUserAgentValues::$UA_BrowserInfo[UA_DATA_BROWSER][$userAgent[UA_DATA_BROWSER]][UA_PROP_NAME];
     93      $returned[UA_DATA_BROWSER_URL]=GPCUserAgentValues::$UA_BrowserInfo[UA_DATA_BROWSER][$userAgent[UA_DATA_BROWSER]][UA_PROP_URL];
    9894    }
    9995
    10096    if(!isset($userAgent[UA_DATA_BROWSER_TYPE]) and isset($userAgent[UA_DATA_BROWSER]))
    101       $userAgent[UA_DATA_BROWSER_TYPE]=$UA_BrowserInfo[UA_DATA_BROWSER][$userAgent[UA_DATA_BROWSER]][UA_PROP_TYPE];
    102 
    103     if(isset($userAgent[UA_DATA_BROWSER_TYPE]) and isset($UA_BrowserInfo[UA_DATA_BROWSER_TYPE][$userAgent[UA_DATA_BROWSER_TYPE]]))
     97      $userAgent[UA_DATA_BROWSER_TYPE]=GPCUserAgentValues::$UA_BrowserInfo[UA_DATA_BROWSER][$userAgent[UA_DATA_BROWSER]][UA_PROP_TYPE];
     98
     99    if(isset($userAgent[UA_DATA_BROWSER_TYPE]) and isset(GPCUserAgentValues::$UA_BrowserInfo[UA_DATA_BROWSER_TYPE][$userAgent[UA_DATA_BROWSER_TYPE]]))
    104100    {
    105101      $returned[UA_DATA_BROWSER_TYPE]=$userAgent[UA_DATA_BROWSER_TYPE];
    106       $returned[UA_DATA_BROWSER_TYPE_NAME]=$UA_BrowserInfo[UA_DATA_BROWSER_TYPE][$userAgent[UA_DATA_BROWSER_TYPE]];
    107     }
    108 
    109 
    110     if(isset($userAgent[UA_DATA_OS]) and isset($UA_BrowserInfo[UA_DATA_OS][$userAgent[UA_DATA_OS]]))
     102      $returned[UA_DATA_BROWSER_TYPE_NAME]=GPCUserAgentValues::$UA_BrowserInfo[UA_DATA_BROWSER_TYPE][$userAgent[UA_DATA_BROWSER_TYPE]];
     103    }
     104
     105
     106    if(isset($userAgent[UA_DATA_OS]) and isset(GPCUserAgentValues::$UA_BrowserInfo[UA_DATA_OS][$userAgent[UA_DATA_OS]]))
    111107    {
    112108      $returned[UA_DATA_OS]=$userAgent[UA_DATA_OS];
    113       $returned[UA_DATA_OS_NAME]=$UA_BrowserInfo[UA_DATA_OS][$userAgent[UA_DATA_OS]][UA_PROP_NAME];
    114       $returned[UA_DATA_OS_URL]=$UA_BrowserInfo[UA_DATA_OS][$userAgent[UA_DATA_OS]][UA_PROP_URL];
    115     }
    116 
    117     if(isset($userAgent[UA_DATA_ENGINE]) and isset($UA_BrowserInfo[UA_DATA_ENGINE][$userAgent[UA_DATA_ENGINE]]))
     109      $returned[UA_DATA_OS_NAME]=GPCUserAgentValues::$UA_BrowserInfo[UA_DATA_OS][$userAgent[UA_DATA_OS]][UA_PROP_NAME];
     110      $returned[UA_DATA_OS_URL]=GPCUserAgentValues::$UA_BrowserInfo[UA_DATA_OS][$userAgent[UA_DATA_OS]][UA_PROP_URL];
     111    }
     112
     113    if(isset($userAgent[UA_DATA_ENGINE]) and isset(GPCUserAgentValues::$UA_BrowserInfo[UA_DATA_ENGINE][$userAgent[UA_DATA_ENGINE]]))
    118114    {
    119115      $returned[UA_DATA_ENGINE]=$userAgent[UA_DATA_ENGINE];
    120       $returned[UA_DATA_ENGINE_NAME]=$UA_BrowserInfo[UA_DATA_ENGINE][$userAgent[UA_DATA_ENGINE]][UA_PROP_NAME];
    121       $returned[UA_DATA_ENGINE_URL]=$UA_BrowserInfo[UA_DATA_ENGINE][$userAgent[UA_DATA_ENGINE]][UA_PROP_URL];
     116      $returned[UA_DATA_ENGINE_NAME]=GPCUserAgentValues::$UA_BrowserInfo[UA_DATA_ENGINE][$userAgent[UA_DATA_ENGINE]][UA_PROP_NAME];
     117      $returned[UA_DATA_ENGINE_URL]=GPCUserAgentValues::$UA_BrowserInfo[UA_DATA_ENGINE][$userAgent[UA_DATA_ENGINE]][UA_PROP_URL];
    122118    }
    123119
  • extensions/GrumPluginClasses/classes/GPCUserAgent.const.inc.php

    r16458 r17562  
    228228define('UA_ENGINE_WEBKIT',            0x06);
    229229
    230 $UA_BrowserInfo=array(
    231   UA_DATA => array(
    232             UA_DATA_BROWSER => array(UA_PROP_NAME => 'Browser'),
    233             UA_DATA_ENGINE  => array(UA_PROP_NAME => 'Engine'),
    234             UA_DATA_OS      => array(UA_PROP_NAME => 'Operating System')
    235           ),
    236   UA_DATA_BROWSER=> array(
    237             UA_BOT_UNKNOWN           => array(UA_PROP_NAME => 'Unknown',              UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''),
    238 
    239             UA_BOT_008               => array(UA_PROP_NAME => '008',                  UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.80legs.com'),
    240             UA_BOT_ABACHOBOT         => array(UA_PROP_NAME => 'ABACHOBot',            UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.abacho.com'),
    241             UA_BOT_ACCOONA_AI_AGENT  => array(UA_PROP_NAME => 'Accoona-AI-Agent',     UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.accoona.com'),
    242             UA_BOT_ARACHMO           => array(UA_PROP_NAME => 'Arachmo',              UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''),
    243             UA_BOT_BLITZBOT          => array(UA_PROP_NAME => 'BlitzBOT',             UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''),
    244             UA_BOT_MICROSOFT_BING    => array(UA_PROP_NAME => 'Microsoft Bing',       UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.bing.com/bingbot.htm'),
    245             UA_BOT_CHARLOTTE         => array(UA_PROP_NAME => 'Charlotte',            UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.searchme.com'),
    246             UA_BOT_CERBERIAN_DRTRS   => array(UA_PROP_NAME => 'Cerberian Drtrs',      UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''),
    247             UA_BOT_COSMOS            => array(UA_PROP_NAME => 'Cosmos',               UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.xyleme.com/'),
    248             UA_BOT_COVARIO_IDS       => array(UA_PROP_NAME => 'Covario IDS',          UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.covario.com/ids'),
    249             UA_BOT_DATAPARKSEARCH    => array(UA_PROP_NAME => 'DataparkSearch',       UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.dataparksearch.org'),
    250             UA_BOT_GAISBOT           => array(UA_PROP_NAME => 'Gaisbot',              UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://gais.cs.ccu.edu.tw/'),
    251             UA_BOT_GOOGLE            => array(UA_PROP_NAME => 'Google',               UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.google.com/bot.html'),
    252             UA_BOT_GURUJIBOT         => array(UA_PROP_NAME => 'GurujiBot',            UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.guruji.com/en/WebmasterFAQ.html'),
    253             UA_BOT_HOLMES            => array(UA_PROP_NAME => 'Holmes',               UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.ucw.cz/holmes'),
    254             UA_BOT_HTDIG             => array(UA_PROP_NAME => 'htdig',                UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://htdig.sourceforge.net'),
    255             UA_BOT_IA_ARCHIVER       => array(UA_PROP_NAME => 'ia_archiver',          UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.alexa.com/'),
    256             UA_BOT_ICCRAWLER         => array(UA_PROP_NAME => 'iCCrawler',            UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.iccenter.net/bot.htm'),
    257             UA_BOT_ICHIRO            => array(UA_PROP_NAME => 'Ichiro',               UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://help.goo.ne.jp/door/crawler.html'),
    258             UA_BOT_BAIDU             => array(UA_PROP_NAME => 'Baidu',                UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.baidu.com'),
    259             UA_BOT_MSN_SEARCH        => array(UA_PROP_NAME => 'Microsoft MSN Search', UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://search.msn.com/msnbot.htm'),
    260             UA_BOT_EXALEAD           => array(UA_PROP_NAME => 'Exalead',              UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''),
    261             UA_BOT_GAMESPY           => array(UA_PROP_NAME => 'GameSpy',              UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''),
    262             UA_BOT_INKTOMI           => array(UA_PROP_NAME => 'Inktomi',              UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''),
    263             UA_BOT_YAHOO_SEARCH      => array(UA_PROP_NAME => 'Yahoo! Search',        UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.yahoo.com/'),
    264             UA_BOT_LWEBIS            => array(UA_PROP_NAME => 'L.webis',              UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://webalgo.iit.cnr.it/index.php?pg=lwebis'),
    265             UA_BOT_LARBIN            => array(UA_PROP_NAME => 'Larbin',               UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''),
    266             UA_BOT_LINKWALKER        => array(UA_PROP_NAME => 'LinkWalker',           UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.seventwentyfour.com/'),
    267             UA_BOT_LWPTRIVIAL        => array(UA_PROP_NAME => 'lwp-trivial',          UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''),
    268             UA_BOT_MABONLAND         => array(UA_PROP_NAME => 'Mabontland',           UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.mabontland.com'),
    269             UA_BOT_MNOGOSEARCH       => array(UA_PROP_NAME => 'Mnogosearch',          UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://mnogosearch.org'),
    270             UA_BOT_MOGIMOGI          => array(UA_PROP_NAME => 'mogimogi',             UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''),
    271             UA_BOT_MORNINGPAPER      => array(UA_PROP_NAME => 'Morning Paper',        UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.boutell.com'),
    272             UA_BOT_NETRESEARCHSERVER => array(UA_PROP_NAME => 'NetResearchServer',    UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.loopimprovements.com'),
    273             UA_BOT_NEWSGATOR         => array(UA_PROP_NAME => 'NewsGator',            UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.newsgator.com'),
    274             UA_BOT_NGSEARCH          => array(UA_PROP_NAME => 'NG-Search',            UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.ng-search.com'),
    275             UA_BOT_NYMESIS           => array(UA_PROP_NAME => 'Nymesis',              UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.nymesis.com'),
    276             UA_BOT_OEGP              => array(UA_PROP_NAME => 'oegp',                 UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''),
    277             UA_BOT_POMPOS            => array(UA_PROP_NAME => 'Pompos',               UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://dir.com/pompos.html'),
    278             UA_BOT_PYCURL            => array(UA_PROP_NAME => 'PycURL',               UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://pycurl.sourceforge.net'),
    279             UA_BOT_QSEERO            => array(UA_PROP_NAME => 'Qseero',               UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''),
    280             UA_BOT_SBIDER            => array(UA_PROP_NAME => 'SBIder',               UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.sitesell.com'),
    281             UA_BOT_SCOUTJET          => array(UA_PROP_NAME => 'ScoutJet',             UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.scoutjet.com'),
    282             UA_BOT_SCRUBBY           => array(UA_PROP_NAME => 'Scrubby',              UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.scrubtheweb.com'),
    283             UA_BOT_SEARCHSIGHT       => array(UA_PROP_NAME => 'SearchSight',          UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://searchsight.com'),
    284             UA_BOT_SEMANTICDISCOVERY => array(UA_PROP_NAME => 'semanticdiscovery',    UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''),
    285             UA_BOT_SHOULA            => array(UA_PROP_NAME => 'Shoula',               UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''),
    286             UA_BOT_SNAPPY            => array(UA_PROP_NAME => 'Snappy',               UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.urltrends.com'),
    287             UA_BOT_STACKRAMBLER      => array(UA_PROP_NAME => 'StackRambler',         UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''),
    288             UA_BOT_SILK              => array(UA_PROP_NAME => 'Silk',                 UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.slider.com/silk.htm'),
    289             UA_BOT_TEOMA             => array(UA_PROP_NAME => 'Teoma',                UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://sp.ask.com/docs/about/tech_crawling.html'),
    290             UA_BOT_TINEYE            => array(UA_PROP_NAME => 'TinEye',               UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://tineye.com/crawler.html'),
    291             UA_BOT_TRUWOGPS          => array(UA_PROP_NAME => 'truwoGPS',             UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.lan4lano.net/browser.html'),
    292             UA_BOT_UPDATED           => array(UA_PROP_NAME => 'updated',              UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.updated.com'),
    293             UA_BOT_VOYAGER           => array(UA_PROP_NAME => 'voyager',              UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.kosmix.com/crawler.html'),
    294             UA_BOT_VYU2              => array(UA_PROP_NAME => 'vyu2',                 UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''),
    295             UA_BOT_WEBCOLLAGE        => array(UA_PROP_NAME => 'WebCollage',           UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''),
    296             UA_BOT_YOOGLIFETCHAGENT  => array(UA_PROP_NAME => 'yoogliFetchAgent',     UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''),
    297             UA_BOT_ZAO               => array(UA_PROP_NAME => 'Zao',                  UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.kototoi.org/zao'),
    298             UA_BOT_ZEALBOT           => array(UA_PROP_NAME => 'Zealbot',              UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''),
    299 
    300 
    301             UA_BROWSER_UNKNOWN       => array(UA_PROP_NAME => 'Unknown',              UA_PROP_TYPE=>UA_BROWSER_TYPE_UNKNOWN, UA_PROP_URL => ''),
    302 
    303             UA_BROWSER_ANDROID_WEBKIT=> array(UA_PROP_NAME => 'Android WebKit Browser',  UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => ''),
    304             UA_BROWSER_OPERA_MINI    => array(UA_PROP_NAME => 'Opera Mini',              UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => 'http://www.opera.com/'),
    305             UA_BROWSER_OPERA_MOBILE  => array(UA_PROP_NAME => 'Opera Mobile',            UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => 'http://www.opera.com/'),
    306             UA_BROWSER_BLACKBERRY    => array(UA_PROP_NAME => 'BlackBerry',              UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => 'http://worldwide.blackberry.com'),
    307             UA_BROWSER_FENNEC        => array(UA_PROP_NAME => 'Fennec',                  UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => 'http://www.mozilla.org/en-US/mobile'),
    308             UA_BROWSER_GOBROWSER     => array(UA_PROP_NAME => 'Go Browser',              UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => 'http://www.3g.cn/'),
    309             UA_BROWSER_IEMOBILE      => array(UA_PROP_NAME => 'IE Mobile',               UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => ''),
    310             UA_BROWSER_IRIS          => array(UA_PROP_NAME => 'Iris',                    UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => 'http://www.torchmobile.com'),
    311             UA_BROWSER_MAEMO_BROWSER => array(UA_PROP_NAME => 'Maemo Browser',           UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => 'http://browser.garage.maemo.org'),
    312             UA_BROWSER_MIB           => array(UA_PROP_NAME => 'MIB',                     UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => 'http://www.useragentstring.com/pages/MIB/www.motorola.com'),
    313             UA_BROWSER_MINIMO        => array(UA_PROP_NAME => 'Minimo',                  UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => 'http://www-archive.mozilla.org/projects/minimo/'),
    314             UA_BROWSER_NETFRONT      => array(UA_PROP_NAME => 'NetFront',                UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => 'http://www.access-company.com'),
    315             UA_BROWSER_SEMC          => array(UA_PROP_NAME => 'SEMC-Browser',            UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => ''),
    316             UA_BROWSER_TEASHARK      => array(UA_PROP_NAME => 'TeaShark',                UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => 'http://www.navire.fi/teashark/index.html'),
    317             UA_BROWSER_SKYFIRE       => array(UA_PROP_NAME => 'Skyfire',                 UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => 'http://www.skyfire.com'),
    318             UA_BROWSER_SAFARI_MOBILE => array(UA_PROP_NAME => 'Safari',                  UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => 'http://www.apple.com/safari'),
    319 
    320             UA_BROWSER_PS3           => array(UA_PROP_NAME => 'Playstation 3',           UA_PROP_TYPE=>UA_BROWSER_TYPE_CONSOLE, UA_PROP_URL => 'http://us.playstation.com/ps3'),
    321             UA_BROWSER_PSP           => array(UA_PROP_NAME => 'Playstation Portable',    UA_PROP_TYPE=>UA_BROWSER_TYPE_CONSOLE, UA_PROP_URL => 'http://us.playstation.com/psp'),
    322             UA_BROWSER_BUNJALLOO     => array(UA_PROP_NAME => 'Bunjalloo',               UA_PROP_TYPE=>UA_BROWSER_TYPE_CONSOLE, UA_PROP_URL => 'http://code.google.com/p/quirkysoft/'),
    323             UA_BROWSER_OPERA_WII     => array(UA_PROP_NAME => 'Opera',                   UA_PROP_TYPE=>UA_BROWSER_TYPE_CONSOLE, UA_PROP_URL => 'http://www.opera.com'),
    324 
    325             UA_BROWSER_OPERA         => array(UA_PROP_NAME => 'Opera',                  UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://www.opera.com'),
    326             UA_BROWSER_SHIIRA        => array(UA_PROP_NAME => 'Shiira',                 UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://shiira.jp/en'),
    327             UA_BROWSER_THUNDERBIRD   => array(UA_PROP_NAME => 'Thunderbird',            UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://www.mozilla.org/thunderbird'),
    328             UA_BROWSER_NAMOROKA      => array(UA_PROP_NAME => 'Namoroka',               UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'https://wiki.mozilla.org/Firefox/Namoroka'),
    329             UA_BROWSER_MINEFIELD     => array(UA_PROP_NAME => 'Minefield',              UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://www.mozilla.org/projects/minefield'),
    330             UA_BROWSER_LUNASCAPE     => array(UA_PROP_NAME => 'Lunascape',              UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://www.lunascape.tv'),
    331             UA_BROWSER_ARORA         => array(UA_PROP_NAME => 'Arora',                  UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://code.google.com/p/arora'),
    332             UA_BROWSER_CAMINO        => array(UA_PROP_NAME => 'Camino',                 UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://caminobrowser.org'),
    333             UA_BROWSER_KAPIKO        => array(UA_PROP_NAME => 'Kapiko',                 UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://ufoxlab.googlepages.com/cooperation'),
    334             UA_BROWSER_KAZEHAKAZE    => array(UA_PROP_NAME => 'Kazehakase',             UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://kazehakase.sourceforge.jp'),
    335             UA_BROWSER_CHROMEPLUS    => array(UA_PROP_NAME => 'ChromePlus',             UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://coolnovo.com'),
    336             UA_BROWSER_CHROME        => array(UA_PROP_NAME => 'Chrome',                 UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://www.google.com/chrome'),
    337             UA_BROWSER_EPIPHANY      => array(UA_PROP_NAME => 'Epiphany',               UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://projects.gnome.org/epiphany'),
    338             UA_BROWSER_GALEON        => array(UA_PROP_NAME => 'Galeon',                 UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://galeon.sourceforge.net'),
    339             UA_BROWSER_ORCA          => array(UA_PROP_NAME => 'Orca',                   UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://www.orcabrowser.com'),
    340             UA_BROWSER_LOBO          => array(UA_PROP_NAME => 'Lobo',                   UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://lobobrowser.org'),
    341             UA_BROWSER_SEAMONKEY     => array(UA_PROP_NAME => 'SeaMonkey',              UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://www.seamonkey-project.org'),
    342             UA_BROWSER_MIDORI        => array(UA_PROP_NAME => 'Midori',                 UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://twotoasts.de/?/pages/midori_summary.html'),
    343             UA_BROWSER_MAXTHON       => array(UA_PROP_NAME => 'Maxthon',                UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://www.maxthon.com'),
    344             UA_BROWSER_ICEAPE        => array(UA_PROP_NAME => 'Iceape',                 UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://packages.debian.org/fr/squeeze/iceape-browser'),
    345             UA_BROWSER_ICEWEASEL     => array(UA_PROP_NAME => 'Iceweasel',              UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://www.geticeweasel.org'),
    346             UA_BROWSER_NETSCAPE      => array(UA_PROP_NAME => 'Netscape',               UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://isp.netscape.com'),
    347             UA_BROWSER_FIREBIRD      => array(UA_PROP_NAME => 'Firebird',               UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://www.firefox.com'),
    348             UA_BROWSER_FIREFOX       => array(UA_PROP_NAME => 'Firefox',                UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://www.firefox.com'),
    349             UA_BROWSER_INTERNET_EXPLORER=> array(UA_PROP_NAME => 'Internet Explorer',   UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://windows.microsoft.com/en-us/internet-explorer/products/ie/home'),
    350             UA_BROWSER_KONQUEROR     => array(UA_PROP_NAME => 'Konqueror',              UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://www.konqueror.org'),
    351             UA_BROWSER_LINKS         => array(UA_PROP_NAME => 'Links',                  UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://www.jikos.cz/~mikulas/links'),
    352             UA_BROWSER_LYNX          => array(UA_PROP_NAME => 'Lynx',                   UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://lynx.browser.org'),
    353             UA_BROWSER_SAFARI        => array(UA_PROP_NAME => 'Safari',                 UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://www.apple.com/safari')
    354           ),
    355 
    356   UA_DATA_OS => array(
    357             UA_OS_UNKNOWN            => array(UA_PROP_NAME => 'Unknown',                UA_PROP_TYPE=>UA_OS_TYPE_UNKNOWN,   UA_PROP_URL=>''),
    358             UA_OS_LINUX              => array(UA_PROP_NAME => 'Linux',                  UA_PROP_TYPE=>UA_OS_TYPE_LINUX,     UA_PROP_URL=>'http://www.linux.com'),
    359             UA_OS_FREEBSD            => array(UA_PROP_NAME => 'FreeBSD',                UA_PROP_TYPE=>UA_OS_TYPE_BSD,       UA_PROP_URL=>'http://www.freebsd.org'),
    360             UA_OS_OPENBSD            => array(UA_PROP_NAME => 'OpenBSD',                UA_PROP_TYPE=>UA_OS_TYPE_BSD,       UA_PROP_URL=>'http://www.openbsd.org'),
    361             UA_OS_NETBSD             => array(UA_PROP_NAME => 'NetBSD',                 UA_PROP_TYPE=>UA_OS_TYPE_BSD,       UA_PROP_URL=>'http://www.netbsd.org'),
    362             UA_OS_WINDOWS            => array(UA_PROP_NAME => 'Windows',                UA_PROP_TYPE=>UA_OS_TYPE_WINDOWS,   UA_PROP_URL=>'http://windows.microsoft.com'),
    363             UA_OS_SUNOS              => array(UA_PROP_NAME => 'SunOS',                  UA_PROP_TYPE=>UA_OS_TYPE_UNIX,      UA_PROP_URL=>''),
    364             UA_OS_BLACKBERRY         => array(UA_PROP_NAME => 'Blackberry OS',          UA_PROP_TYPE=>UA_OS_TYPE_UNKNOWN,   UA_PROP_URL=>'http://us.blackberry.com/apps-software/devices'),
    365             UA_OS_SYMBIAN_OS         => array(UA_PROP_NAME => 'Symbian OS',             UA_PROP_TYPE=>UA_OS_TYPE_UNKNOWN,   UA_PROP_URL=>'http://symbian.nokia.com'),
    366             UA_OS_SYMBOS             => array(UA_PROP_NAME => 'SymbOS',                 UA_PROP_TYPE=>UA_OS_TYPE_UNKNOWN,   UA_PROP_URL=>'http://www.symbos.de'),
    367             UA_OS_MACINTOSH          => array(UA_PROP_NAME => 'Macintosh',              UA_PROP_TYPE=>UA_OS_TYPE_UNKNOWN,   UA_PROP_URL=>'http://www.apple.com'),
    368             UA_OS_MAC_OS_X           => array(UA_PROP_NAME => 'Mac OS X',               UA_PROP_TYPE=>UA_OS_TYPE_BSD,       UA_PROP_URL=>'http://www.apple.com'),
    369             UA_OS_ANDROID            => array(UA_PROP_NAME => 'Android',                UA_PROP_TYPE=>UA_OS_TYPE_LINUX,     UA_PROP_URL=>'http://www.android.com'),
    370             UA_OS_IOS                => array(UA_PROP_NAME => 'iOS',                    UA_PROP_TYPE=>UA_OS_TYPE_UNKNOWN,   UA_PROP_URL=>'http://www.apple.com'),
    371             UA_OS_NINTENDO_DS        => array(UA_PROP_NAME => 'Nintendo DS',            UA_PROP_TYPE=>UA_OS_TYPE_UNKNOWN,   UA_PROP_URL=>'http://www.nintendo.com/ds'),
    372             UA_OS_NINTENDO_WII       => array(UA_PROP_NAME => 'Nintendo Wii',           UA_PROP_TYPE=>UA_OS_TYPE_UNKNOWN,   UA_PROP_URL=>'http://www.nintendo.com/wii'),
    373             UA_OS_SONY_PS3           => array(UA_PROP_NAME => 'Sony PS3',               UA_PROP_TYPE=>UA_OS_TYPE_UNKNOWN,   UA_PROP_URL=>'http://us.playstation.com/ps3'),
    374             UA_OS_SONY_PSP           => array(UA_PROP_NAME => 'Sony PSP',               UA_PROP_TYPE=>UA_OS_TYPE_UNKNOWN,   UA_PROP_URL=>'http://us.playstation.com/psp'),
    375             UA_OS_CHROME_OS          => array(UA_PROP_NAME => 'Chrome OS',              UA_PROP_TYPE=>UA_OS_TYPE_LINUX,     UA_PROP_URL=>''),
    376             UA_OS_BE_OS              => array(UA_PROP_NAME => 'BeOS',                   UA_PROP_TYPE=>UA_OS_TYPE_BSD,       UA_PROP_URL=>''),
    377             UA_OS_DRAGONFLY          => array(UA_PROP_NAME => 'DragonFly BSD',          UA_PROP_TYPE=>UA_OS_TYPE_BSD,       UA_PROP_URL=>'http://www.dragonflybsd.org'),
    378             UA_OS_UNIX               => array(UA_PROP_NAME => 'UNIX',                   UA_PROP_TYPE=>UA_OS_TYPE_UNIX,      UA_PROP_URL=>''),
    379             UA_OS_DARWIN             => array(UA_PROP_NAME => 'Darwin',                 UA_PROP_TYPE=>UA_OS_TYPE_BSD,       UA_PROP_URL=>'developer.apple.com/darwin'),
    380             UA_OS_OS2                => array(UA_PROP_NAME => 'IBM OS/2',               UA_PROP_TYPE=>UA_OS_TYPE_OS2,       UA_PROP_URL=>''),
    381             UA_OS_AMIGAOS            => array(UA_PROP_NAME => 'AmigaOS',                UA_PROP_TYPE=>UA_OS_TYPE_UNKNOWN,   UA_PROP_URL=>'http://amiga.com')
    382           ),
    383   UA_DATA_ENGINE => array(
    384             UA_ENGINE_UNKNOWN        => array(UA_PROP_NAME => 'Unknown',                UA_PROP_URL=>''),
    385             UA_ENGINE_GECKO          => array(UA_PROP_NAME => 'Gecko',                  UA_PROP_URL=>'https://developer.mozilla.org/en/Gecko'),
    386             UA_ENGINE_KHTML          => array(UA_PROP_NAME => 'KHTML',                  UA_PROP_URL=>'http://api.kde.org/3.5-api/kdelibs-apidocs/khtml/html/index.html'),
    387             UA_ENGINE_PRESTO         => array(UA_PROP_NAME => 'Presto',                 UA_PROP_URL=>'http://dev.opera.com/articles/view/presto-2-1-web-standards-supported-by'),
    388             UA_ENGINE_APPLEWEBKIT    => array(UA_PROP_NAME => 'AppleWebKit',            UA_PROP_URL=>''),
    389             UA_ENGINE_WEBKIT         => array(UA_PROP_NAME => 'WebKit',                 UA_PROP_URL=>'http://www.webkit.org'),
    390             UA_ENGINE_TRIDENT        => array(UA_PROP_NAME => 'Trident',                UA_PROP_URL=>'http://msdn.microsoft.com/en-us/library/aa741317.aspx')
    391           ),
    392 
    393   UA_DATA_BROWSER_TYPE => array(
    394             UA_BROWSER_TYPE_UNKNOWN  => 'Unknown',
    395             UA_BROWSER_TYPE_COMPUTER => 'Computer',
    396             UA_BROWSER_TYPE_CONSOLE  => 'Console',
    397             UA_BROWSER_TYPE_MOBILE   => 'Mobile',
    398             UA_BROWSER_TYPE_CRAWLER  => 'Crawler'
    399           ),
    400 
    401   UA_DATA_OS_TYPE => array(
    402             UA_OS_TYPE_UNKNOWN  => 'Unknown',
    403             UA_OS_TYPE_LINUX    => 'Linux',
    404             UA_OS_TYPE_BSD      => 'BSD',
    405             UA_OS_TYPE_UNIX     => 'Unix',
    406             UA_OS_TYPE_WINDOWS  => 'Windows',
    407             UA_OS_TYPE_OS2      => 'OS/2'
    408           )
    409 
    410 );
    411 
    412 
     230
     231class GPCUserAgentValues
     232{
     233  static public $UA_BrowserInfo=array(
     234    UA_DATA => array(
     235              UA_DATA_BROWSER => array(UA_PROP_NAME => 'Browser'),
     236              UA_DATA_ENGINE  => array(UA_PROP_NAME => 'Engine'),
     237              UA_DATA_OS      => array(UA_PROP_NAME => 'Operating System')
     238            ),
     239    UA_DATA_BROWSER=> array(
     240              UA_BOT_UNKNOWN           => array(UA_PROP_NAME => 'Unknown',              UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''),
     241
     242              UA_BOT_008               => array(UA_PROP_NAME => '008',                  UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.80legs.com'),
     243              UA_BOT_ABACHOBOT         => array(UA_PROP_NAME => 'ABACHOBot',            UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.abacho.com'),
     244              UA_BOT_ACCOONA_AI_AGENT  => array(UA_PROP_NAME => 'Accoona-AI-Agent',     UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.accoona.com'),
     245              UA_BOT_ARACHMO           => array(UA_PROP_NAME => 'Arachmo',              UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''),
     246              UA_BOT_BLITZBOT          => array(UA_PROP_NAME => 'BlitzBOT',             UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''),
     247              UA_BOT_MICROSOFT_BING    => array(UA_PROP_NAME => 'Microsoft Bing',       UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.bing.com/bingbot.htm'),
     248              UA_BOT_CHARLOTTE         => array(UA_PROP_NAME => 'Charlotte',            UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.searchme.com'),
     249              UA_BOT_CERBERIAN_DRTRS   => array(UA_PROP_NAME => 'Cerberian Drtrs',      UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''),
     250              UA_BOT_COSMOS            => array(UA_PROP_NAME => 'Cosmos',               UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.xyleme.com/'),
     251              UA_BOT_COVARIO_IDS       => array(UA_PROP_NAME => 'Covario IDS',          UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.covario.com/ids'),
     252              UA_BOT_DATAPARKSEARCH    => array(UA_PROP_NAME => 'DataparkSearch',       UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.dataparksearch.org'),
     253              UA_BOT_GAISBOT           => array(UA_PROP_NAME => 'Gaisbot',              UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://gais.cs.ccu.edu.tw/'),
     254              UA_BOT_GOOGLE            => array(UA_PROP_NAME => 'Google',               UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.google.com/bot.html'),
     255              UA_BOT_GURUJIBOT         => array(UA_PROP_NAME => 'GurujiBot',            UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.guruji.com/en/WebmasterFAQ.html'),
     256              UA_BOT_HOLMES            => array(UA_PROP_NAME => 'Holmes',               UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.ucw.cz/holmes'),
     257              UA_BOT_HTDIG             => array(UA_PROP_NAME => 'htdig',                UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://htdig.sourceforge.net'),
     258              UA_BOT_IA_ARCHIVER       => array(UA_PROP_NAME => 'ia_archiver',          UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.alexa.com/'),
     259              UA_BOT_ICCRAWLER         => array(UA_PROP_NAME => 'iCCrawler',            UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.iccenter.net/bot.htm'),
     260              UA_BOT_ICHIRO            => array(UA_PROP_NAME => 'Ichiro',               UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://help.goo.ne.jp/door/crawler.html'),
     261              UA_BOT_BAIDU             => array(UA_PROP_NAME => 'Baidu',                UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.baidu.com'),
     262              UA_BOT_MSN_SEARCH        => array(UA_PROP_NAME => 'Microsoft MSN Search', UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://search.msn.com/msnbot.htm'),
     263              UA_BOT_EXALEAD           => array(UA_PROP_NAME => 'Exalead',              UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''),
     264              UA_BOT_GAMESPY           => array(UA_PROP_NAME => 'GameSpy',              UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''),
     265              UA_BOT_INKTOMI           => array(UA_PROP_NAME => 'Inktomi',              UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''),
     266              UA_BOT_YAHOO_SEARCH      => array(UA_PROP_NAME => 'Yahoo! Search',        UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.yahoo.com/'),
     267              UA_BOT_LWEBIS            => array(UA_PROP_NAME => 'L.webis',              UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://webalgo.iit.cnr.it/index.php?pg=lwebis'),
     268              UA_BOT_LARBIN            => array(UA_PROP_NAME => 'Larbin',               UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''),
     269              UA_BOT_LINKWALKER        => array(UA_PROP_NAME => 'LinkWalker',           UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.seventwentyfour.com/'),
     270              UA_BOT_LWPTRIVIAL        => array(UA_PROP_NAME => 'lwp-trivial',          UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''),
     271              UA_BOT_MABONLAND         => array(UA_PROP_NAME => 'Mabontland',           UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.mabontland.com'),
     272              UA_BOT_MNOGOSEARCH       => array(UA_PROP_NAME => 'Mnogosearch',          UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://mnogosearch.org'),
     273              UA_BOT_MOGIMOGI          => array(UA_PROP_NAME => 'mogimogi',             UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''),
     274              UA_BOT_MORNINGPAPER      => array(UA_PROP_NAME => 'Morning Paper',        UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.boutell.com'),
     275              UA_BOT_NETRESEARCHSERVER => array(UA_PROP_NAME => 'NetResearchServer',    UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.loopimprovements.com'),
     276              UA_BOT_NEWSGATOR         => array(UA_PROP_NAME => 'NewsGator',            UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.newsgator.com'),
     277              UA_BOT_NGSEARCH          => array(UA_PROP_NAME => 'NG-Search',            UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.ng-search.com'),
     278              UA_BOT_NYMESIS           => array(UA_PROP_NAME => 'Nymesis',              UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.nymesis.com'),
     279              UA_BOT_OEGP              => array(UA_PROP_NAME => 'oegp',                 UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''),
     280              UA_BOT_POMPOS            => array(UA_PROP_NAME => 'Pompos',               UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://dir.com/pompos.html'),
     281              UA_BOT_PYCURL            => array(UA_PROP_NAME => 'PycURL',               UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://pycurl.sourceforge.net'),
     282              UA_BOT_QSEERO            => array(UA_PROP_NAME => 'Qseero',               UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''),
     283              UA_BOT_SBIDER            => array(UA_PROP_NAME => 'SBIder',               UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.sitesell.com'),
     284              UA_BOT_SCOUTJET          => array(UA_PROP_NAME => 'ScoutJet',             UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.scoutjet.com'),
     285              UA_BOT_SCRUBBY           => array(UA_PROP_NAME => 'Scrubby',              UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.scrubtheweb.com'),
     286              UA_BOT_SEARCHSIGHT       => array(UA_PROP_NAME => 'SearchSight',          UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://searchsight.com'),
     287              UA_BOT_SEMANTICDISCOVERY => array(UA_PROP_NAME => 'semanticdiscovery',    UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''),
     288              UA_BOT_SHOULA            => array(UA_PROP_NAME => 'Shoula',               UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''),
     289              UA_BOT_SNAPPY            => array(UA_PROP_NAME => 'Snappy',               UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.urltrends.com'),
     290              UA_BOT_STACKRAMBLER      => array(UA_PROP_NAME => 'StackRambler',         UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''),
     291              UA_BOT_SILK              => array(UA_PROP_NAME => 'Silk',                 UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.slider.com/silk.htm'),
     292              UA_BOT_TEOMA             => array(UA_PROP_NAME => 'Teoma',                UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://sp.ask.com/docs/about/tech_crawling.html'),
     293              UA_BOT_TINEYE            => array(UA_PROP_NAME => 'TinEye',               UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://tineye.com/crawler.html'),
     294              UA_BOT_TRUWOGPS          => array(UA_PROP_NAME => 'truwoGPS',             UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.lan4lano.net/browser.html'),
     295              UA_BOT_UPDATED           => array(UA_PROP_NAME => 'updated',              UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.updated.com'),
     296              UA_BOT_VOYAGER           => array(UA_PROP_NAME => 'voyager',              UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.kosmix.com/crawler.html'),
     297              UA_BOT_VYU2              => array(UA_PROP_NAME => 'vyu2',                 UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''),
     298              UA_BOT_WEBCOLLAGE        => array(UA_PROP_NAME => 'WebCollage',           UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''),
     299              UA_BOT_YOOGLIFETCHAGENT  => array(UA_PROP_NAME => 'yoogliFetchAgent',     UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''),
     300              UA_BOT_ZAO               => array(UA_PROP_NAME => 'Zao',                  UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => 'http://www.kototoi.org/zao'),
     301              UA_BOT_ZEALBOT           => array(UA_PROP_NAME => 'Zealbot',              UA_PROP_TYPE=>UA_BROWSER_TYPE_CRAWLER, UA_PROP_URL => ''),
     302
     303
     304              UA_BROWSER_UNKNOWN       => array(UA_PROP_NAME => 'Unknown',              UA_PROP_TYPE=>UA_BROWSER_TYPE_UNKNOWN, UA_PROP_URL => ''),
     305
     306              UA_BROWSER_ANDROID_WEBKIT=> array(UA_PROP_NAME => 'Android WebKit Browser',  UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => ''),
     307              UA_BROWSER_OPERA_MINI    => array(UA_PROP_NAME => 'Opera Mini',              UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => 'http://www.opera.com/'),
     308              UA_BROWSER_OPERA_MOBILE  => array(UA_PROP_NAME => 'Opera Mobile',            UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => 'http://www.opera.com/'),
     309              UA_BROWSER_BLACKBERRY    => array(UA_PROP_NAME => 'BlackBerry',              UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => 'http://worldwide.blackberry.com'),
     310              UA_BROWSER_FENNEC        => array(UA_PROP_NAME => 'Fennec',                  UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => 'http://www.mozilla.org/en-US/mobile'),
     311              UA_BROWSER_GOBROWSER     => array(UA_PROP_NAME => 'Go Browser',              UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => 'http://www.3g.cn/'),
     312              UA_BROWSER_IEMOBILE      => array(UA_PROP_NAME => 'IE Mobile',               UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => ''),
     313              UA_BROWSER_IRIS          => array(UA_PROP_NAME => 'Iris',                    UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => 'http://www.torchmobile.com'),
     314              UA_BROWSER_MAEMO_BROWSER => array(UA_PROP_NAME => 'Maemo Browser',           UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => 'http://browser.garage.maemo.org'),
     315              UA_BROWSER_MIB           => array(UA_PROP_NAME => 'MIB',                     UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => 'http://www.useragentstring.com/pages/MIB/www.motorola.com'),
     316              UA_BROWSER_MINIMO        => array(UA_PROP_NAME => 'Minimo',                  UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => 'http://www-archive.mozilla.org/projects/minimo/'),
     317              UA_BROWSER_NETFRONT      => array(UA_PROP_NAME => 'NetFront',                UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => 'http://www.access-company.com'),
     318              UA_BROWSER_SEMC          => array(UA_PROP_NAME => 'SEMC-Browser',            UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => ''),
     319              UA_BROWSER_TEASHARK      => array(UA_PROP_NAME => 'TeaShark',                UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => 'http://www.navire.fi/teashark/index.html'),
     320              UA_BROWSER_SKYFIRE       => array(UA_PROP_NAME => 'Skyfire',                 UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => 'http://www.skyfire.com'),
     321              UA_BROWSER_SAFARI_MOBILE => array(UA_PROP_NAME => 'Safari',                  UA_PROP_TYPE=>UA_BROWSER_TYPE_MOBILE, UA_PROP_URL => 'http://www.apple.com/safari'),
     322
     323              UA_BROWSER_PS3           => array(UA_PROP_NAME => 'Playstation 3',           UA_PROP_TYPE=>UA_BROWSER_TYPE_CONSOLE, UA_PROP_URL => 'http://us.playstation.com/ps3'),
     324              UA_BROWSER_PSP           => array(UA_PROP_NAME => 'Playstation Portable',    UA_PROP_TYPE=>UA_BROWSER_TYPE_CONSOLE, UA_PROP_URL => 'http://us.playstation.com/psp'),
     325              UA_BROWSER_BUNJALLOO     => array(UA_PROP_NAME => 'Bunjalloo',               UA_PROP_TYPE=>UA_BROWSER_TYPE_CONSOLE, UA_PROP_URL => 'http://code.google.com/p/quirkysoft/'),
     326              UA_BROWSER_OPERA_WII     => array(UA_PROP_NAME => 'Opera',                   UA_PROP_TYPE=>UA_BROWSER_TYPE_CONSOLE, UA_PROP_URL => 'http://www.opera.com'),
     327
     328              UA_BROWSER_OPERA         => array(UA_PROP_NAME => 'Opera',                  UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://www.opera.com'),
     329              UA_BROWSER_SHIIRA        => array(UA_PROP_NAME => 'Shiira',                 UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://shiira.jp/en'),
     330              UA_BROWSER_THUNDERBIRD   => array(UA_PROP_NAME => 'Thunderbird',            UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://www.mozilla.org/thunderbird'),
     331              UA_BROWSER_NAMOROKA      => array(UA_PROP_NAME => 'Namoroka',               UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'https://wiki.mozilla.org/Firefox/Namoroka'),
     332              UA_BROWSER_MINEFIELD     => array(UA_PROP_NAME => 'Minefield',              UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://www.mozilla.org/projects/minefield'),
     333              UA_BROWSER_LUNASCAPE     => array(UA_PROP_NAME => 'Lunascape',              UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://www.lunascape.tv'),
     334              UA_BROWSER_ARORA         => array(UA_PROP_NAME => 'Arora',                  UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://code.google.com/p/arora'),
     335              UA_BROWSER_CAMINO        => array(UA_PROP_NAME => 'Camino',                 UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://caminobrowser.org'),
     336              UA_BROWSER_KAPIKO        => array(UA_PROP_NAME => 'Kapiko',                 UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://ufoxlab.googlepages.com/cooperation'),
     337              UA_BROWSER_KAZEHAKAZE    => array(UA_PROP_NAME => 'Kazehakase',             UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://kazehakase.sourceforge.jp'),
     338              UA_BROWSER_CHROMEPLUS    => array(UA_PROP_NAME => 'ChromePlus',             UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://coolnovo.com'),
     339              UA_BROWSER_CHROME        => array(UA_PROP_NAME => 'Chrome',                 UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://www.google.com/chrome'),
     340              UA_BROWSER_EPIPHANY      => array(UA_PROP_NAME => 'Epiphany',               UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://projects.gnome.org/epiphany'),
     341              UA_BROWSER_GALEON        => array(UA_PROP_NAME => 'Galeon',                 UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://galeon.sourceforge.net'),
     342              UA_BROWSER_ORCA          => array(UA_PROP_NAME => 'Orca',                   UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://www.orcabrowser.com'),
     343              UA_BROWSER_LOBO          => array(UA_PROP_NAME => 'Lobo',                   UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://lobobrowser.org'),
     344              UA_BROWSER_SEAMONKEY     => array(UA_PROP_NAME => 'SeaMonkey',              UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://www.seamonkey-project.org'),
     345              UA_BROWSER_MIDORI        => array(UA_PROP_NAME => 'Midori',                 UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://twotoasts.de/?/pages/midori_summary.html'),
     346              UA_BROWSER_MAXTHON       => array(UA_PROP_NAME => 'Maxthon',                UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://www.maxthon.com'),
     347              UA_BROWSER_ICEAPE        => array(UA_PROP_NAME => 'Iceape',                 UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://packages.debian.org/fr/squeeze/iceape-browser'),
     348              UA_BROWSER_ICEWEASEL     => array(UA_PROP_NAME => 'Iceweasel',              UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://www.geticeweasel.org'),
     349              UA_BROWSER_NETSCAPE      => array(UA_PROP_NAME => 'Netscape',               UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://isp.netscape.com'),
     350              UA_BROWSER_FIREBIRD      => array(UA_PROP_NAME => 'Firebird',               UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://www.firefox.com'),
     351              UA_BROWSER_FIREFOX       => array(UA_PROP_NAME => 'Firefox',                UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://www.firefox.com'),
     352              UA_BROWSER_INTERNET_EXPLORER=> array(UA_PROP_NAME => 'Internet Explorer',   UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://windows.microsoft.com/en-us/internet-explorer/products/ie/home'),
     353              UA_BROWSER_KONQUEROR     => array(UA_PROP_NAME => 'Konqueror',              UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://www.konqueror.org'),
     354              UA_BROWSER_LINKS         => array(UA_PROP_NAME => 'Links',                  UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://www.jikos.cz/~mikulas/links'),
     355              UA_BROWSER_LYNX          => array(UA_PROP_NAME => 'Lynx',                   UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://lynx.browser.org'),
     356              UA_BROWSER_SAFARI        => array(UA_PROP_NAME => 'Safari',                 UA_PROP_TYPE=>UA_BROWSER_TYPE_COMPUTER, UA_PROP_URL => 'http://www.apple.com/safari')
     357            ),
     358
     359    UA_DATA_OS => array(
     360              UA_OS_UNKNOWN            => array(UA_PROP_NAME => 'Unknown',                UA_PROP_TYPE=>UA_OS_TYPE_UNKNOWN,   UA_PROP_URL=>''),
     361              UA_OS_LINUX              => array(UA_PROP_NAME => 'Linux',                  UA_PROP_TYPE=>UA_OS_TYPE_LINUX,     UA_PROP_URL=>'http://www.linux.com'),
     362              UA_OS_FREEBSD            => array(UA_PROP_NAME => 'FreeBSD',                UA_PROP_TYPE=>UA_OS_TYPE_BSD,       UA_PROP_URL=>'http://www.freebsd.org'),
     363              UA_OS_OPENBSD            => array(UA_PROP_NAME => 'OpenBSD',                UA_PROP_TYPE=>UA_OS_TYPE_BSD,       UA_PROP_URL=>'http://www.openbsd.org'),
     364              UA_OS_NETBSD             => array(UA_PROP_NAME => 'NetBSD',                 UA_PROP_TYPE=>UA_OS_TYPE_BSD,       UA_PROP_URL=>'http://www.netbsd.org'),
     365              UA_OS_WINDOWS            => array(UA_PROP_NAME => 'Windows',                UA_PROP_TYPE=>UA_OS_TYPE_WINDOWS,   UA_PROP_URL=>'http://windows.microsoft.com'),
     366              UA_OS_SUNOS              => array(UA_PROP_NAME => 'SunOS',                  UA_PROP_TYPE=>UA_OS_TYPE_UNIX,      UA_PROP_URL=>''),
     367              UA_OS_BLACKBERRY         => array(UA_PROP_NAME => 'Blackberry OS',          UA_PROP_TYPE=>UA_OS_TYPE_UNKNOWN,   UA_PROP_URL=>'http://us.blackberry.com/apps-software/devices'),
     368              UA_OS_SYMBIAN_OS         => array(UA_PROP_NAME => 'Symbian OS',             UA_PROP_TYPE=>UA_OS_TYPE_UNKNOWN,   UA_PROP_URL=>'http://symbian.nokia.com'),
     369              UA_OS_SYMBOS             => array(UA_PROP_NAME => 'SymbOS',                 UA_PROP_TYPE=>UA_OS_TYPE_UNKNOWN,   UA_PROP_URL=>'http://www.symbos.de'),
     370              UA_OS_MACINTOSH          => array(UA_PROP_NAME => 'Macintosh',              UA_PROP_TYPE=>UA_OS_TYPE_UNKNOWN,   UA_PROP_URL=>'http://www.apple.com'),
     371              UA_OS_MAC_OS_X           => array(UA_PROP_NAME => 'Mac OS X',               UA_PROP_TYPE=>UA_OS_TYPE_BSD,       UA_PROP_URL=>'http://www.apple.com'),
     372              UA_OS_ANDROID            => array(UA_PROP_NAME => 'Android',                UA_PROP_TYPE=>UA_OS_TYPE_LINUX,     UA_PROP_URL=>'http://www.android.com'),
     373              UA_OS_IOS                => array(UA_PROP_NAME => 'iOS',                    UA_PROP_TYPE=>UA_OS_TYPE_UNKNOWN,   UA_PROP_URL=>'http://www.apple.com'),
     374              UA_OS_NINTENDO_DS        => array(UA_PROP_NAME => 'Nintendo DS',            UA_PROP_TYPE=>UA_OS_TYPE_UNKNOWN,   UA_PROP_URL=>'http://www.nintendo.com/ds'),
     375              UA_OS_NINTENDO_WII       => array(UA_PROP_NAME => 'Nintendo Wii',           UA_PROP_TYPE=>UA_OS_TYPE_UNKNOWN,   UA_PROP_URL=>'http://www.nintendo.com/wii'),
     376              UA_OS_SONY_PS3           => array(UA_PROP_NAME => 'Sony PS3',               UA_PROP_TYPE=>UA_OS_TYPE_UNKNOWN,   UA_PROP_URL=>'http://us.playstation.com/ps3'),
     377              UA_OS_SONY_PSP           => array(UA_PROP_NAME => 'Sony PSP',               UA_PROP_TYPE=>UA_OS_TYPE_UNKNOWN,   UA_PROP_URL=>'http://us.playstation.com/psp'),
     378              UA_OS_CHROME_OS          => array(UA_PROP_NAME => 'Chrome OS',              UA_PROP_TYPE=>UA_OS_TYPE_LINUX,     UA_PROP_URL=>''),
     379              UA_OS_BE_OS              => array(UA_PROP_NAME => 'BeOS',                   UA_PROP_TYPE=>UA_OS_TYPE_BSD,       UA_PROP_URL=>''),
     380              UA_OS_DRAGONFLY          => array(UA_PROP_NAME => 'DragonFly BSD',          UA_PROP_TYPE=>UA_OS_TYPE_BSD,       UA_PROP_URL=>'http://www.dragonflybsd.org'),
     381              UA_OS_UNIX               => array(UA_PROP_NAME => 'UNIX',                   UA_PROP_TYPE=>UA_OS_TYPE_UNIX,      UA_PROP_URL=>''),
     382              UA_OS_DARWIN             => array(UA_PROP_NAME => 'Darwin',                 UA_PROP_TYPE=>UA_OS_TYPE_BSD,       UA_PROP_URL=>'developer.apple.com/darwin'),
     383              UA_OS_OS2                => array(UA_PROP_NAME => 'IBM OS/2',               UA_PROP_TYPE=>UA_OS_TYPE_OS2,       UA_PROP_URL=>''),
     384              UA_OS_AMIGAOS            => array(UA_PROP_NAME => 'AmigaOS',                UA_PROP_TYPE=>UA_OS_TYPE_UNKNOWN,   UA_PROP_URL=>'http://amiga.com')
     385            ),
     386    UA_DATA_ENGINE => array(
     387              UA_ENGINE_UNKNOWN        => array(UA_PROP_NAME => 'Unknown',                UA_PROP_URL=>''),
     388              UA_ENGINE_GECKO          => array(UA_PROP_NAME => 'Gecko',                  UA_PROP_URL=>'https://developer.mozilla.org/en/Gecko'),
     389              UA_ENGINE_KHTML          => array(UA_PROP_NAME => 'KHTML',                  UA_PROP_URL=>'http://api.kde.org/3.5-api/kdelibs-apidocs/khtml/html/index.html'),
     390              UA_ENGINE_PRESTO         => array(UA_PROP_NAME => 'Presto',                 UA_PROP_URL=>'http://dev.opera.com/articles/view/presto-2-1-web-standards-supported-by'),
     391              UA_ENGINE_APPLEWEBKIT    => array(UA_PROP_NAME => 'AppleWebKit',            UA_PROP_URL=>''),
     392              UA_ENGINE_WEBKIT         => array(UA_PROP_NAME => 'WebKit',                 UA_PROP_URL=>'http://www.webkit.org'),
     393              UA_ENGINE_TRIDENT        => array(UA_PROP_NAME => 'Trident',                UA_PROP_URL=>'http://msdn.microsoft.com/en-us/library/aa741317.aspx')
     394            ),
     395
     396    UA_DATA_BROWSER_TYPE => array(
     397              UA_BROWSER_TYPE_UNKNOWN  => 'Unknown',
     398              UA_BROWSER_TYPE_COMPUTER => 'Computer',
     399              UA_BROWSER_TYPE_CONSOLE  => 'Console',
     400              UA_BROWSER_TYPE_MOBILE   => 'Mobile',
     401              UA_BROWSER_TYPE_CRAWLER  => 'Crawler'
     402            ),
     403
     404    UA_DATA_OS_TYPE => array(
     405              UA_OS_TYPE_UNKNOWN  => 'Unknown',
     406              UA_OS_TYPE_LINUX    => 'Linux',
     407              UA_OS_TYPE_BSD      => 'BSD',
     408              UA_OS_TYPE_UNIX     => 'Unix',
     409              UA_OS_TYPE_WINDOWS  => 'Windows',
     410              UA_OS_TYPE_OS2      => 'OS/2'
     411            )
     412
     413  );
     414
     415}
    413416
    414417?>
  • extensions/GrumPluginClasses/css/dynamicTable.css

    r16012 r17562  
    44}
    55
    6 table.ui-dynamicTableHeader, table.ui-dynamicTableContent {
     6table.ui-dynamicTableHeader,
     7table.ui-dynamicTableContent,
     8table.ui-dynamicTableTotalRow {
    79  width:100%;
    810  /* border-collapse: collapse; */
     
    2628
    2729thead.ui-dynamicTableHeader td,
    28 table.ui-dynamicTableContent td {
     30table.ui-dynamicTableContent td,
     31table.ui-dynamicTableTotalRow td {
    2932  padding:0 0 0 2px;
    3033}
     
    3235td.ui-dynamicTableSortColumn {
    3336  width:15px;
     37}
     38
     39table.ui-dynamicTableTotalRow {
     40  display:'none';
    3441}
    3542
     
    5158  margin: 1px;
    5259}
     60div.ui-dynamicTableLoadingWorkInProgress {
     61  display:none;
     62  position:absolute;
     63  z-index:1000;
     64  margin: 1px;
     65  width:16px;
     66  height:16px;
     67  background:url(./../icons/processing.gif) no-repeat scroll 0 40px transparent;
     68}
     69
    5370
    5471div.ui-dynamicTableFooter {
  • extensions/GrumPluginClasses/css/dynamicTable_clear.css

    r16012 r17562  
    77div.ui-dynamicTableContent {
    88  border:1px solid #aaaaaa;
     9}
     10
     11table.ui-dynamicTableTotalRow {
     12  border:1px solid #aaaaaa;
     13  border-top:none;
    914}
    1015
  • extensions/GrumPluginClasses/css/dynamicTable_roma.css

    r16012 r17562  
    77div.ui-dynamicTableContent {
    88  border:1px solid #666666;
     9}
     10
     11table.ui-dynamicTableTotalRow {
     12  border:1px solid #666666;
     13  border-top:none;
    914}
    1015
  • extensions/GrumPluginClasses/css/gpc.css

    r15340 r17562  
    9494  color:#800000;
    9595}
     96.ui-resizable .ui-resizable-handle {
     97  display: none;
     98  background:none repeat scroll 0 0 transparent;
     99}
    96100
    97101
    98102
    99 
    100 
  • extensions/GrumPluginClasses/css/inputColorPicker.css

    r16012 r17562  
    9090
    9191/* --- */
     92.ui-inputDialogColor {
     93  text-align:justify;
     94}
    9295.ui-inputDialogColor div.ui-inputColorPicker {
    9396  min-width:346px;
  • extensions/GrumPluginClasses/css/inputFilterBox.css

    r16012 r17562  
    2121
    2222/* dialog box */
     23.ui-inputDialogFilterBox {
     24  text-align:justify;
     25}
    2326.ui-inputDialogFilterBox div.ui-dialog-titlebar {
    2427  cursor:move;
  • extensions/GrumPluginClasses/css/inputPages.css

    r16012 r17562  
    1414  padding: 0px;
    1515  text-align: center;
    16   width: 15px;
     16  min-width: 15px;
    1717  cursor:default;
    1818}
  • extensions/GrumPluginClasses/css/inputSortBox.css

    r16012 r17562  
    2121
    2222/* dialog box */
     23.ui-inputDialogSortBox {
     24  text-align:justify;
     25}
    2326.ui-inputDialogSortBox div.ui-dialog-titlebar {
    2427  cursor:move;
  • extensions/GrumPluginClasses/css/progressArea.css

    r16733 r17562  
    3333
    3434/* dialog box */
     35.ui-dialogProgressArea {
     36  text-align:justify;
     37}
    3538.ui-dialogProgressArea div.ui-dialog-titlebar {
    3639  cursor:move;
  • extensions/GrumPluginClasses/gpc_version.inc.php

    r12215 r17562  
    44  Author     : Grum
    55    email    : grum@grum.fr
    6     website  : http://photos.grum.fr
     6    website  : http://www.grum.fr
    77    PWG user : http://forum.piwigo.org/profile.php?id=3706
    88
     
    1515  if(!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
    1616
    17   if(!defined('GPC_VERSION')) define('GPC_VERSION',  '3.5.2');
    18   if(!defined('GPC_VERSION2')) define('GPC_VERSION2', '03.05.02');
     17  if(!defined('GPC_VERSION')) define('GPC_VERSION',  '3.5.3');
     18  if(!defined('GPC_VERSION2')) define('GPC_VERSION2', '03.05.03');
    1919?>
  • extensions/GrumPluginClasses/js/ui.dynamicTable.js

    r16012 r17562  
    5454                  options =
    5555                    {
     56                      autoLoad:true,
    5657                      columns:[],
    5758                      postUrl:'',
     
    6566                      currentPage:1,
    6667                      sortBoxTitle:'Sort by',
     68                      showTotalRow:'auto',     // visible, hidden, auto
    6769                      footerString:
    6870                        {
     
    9395                    sortedColumns:[],
    9496                    filteredColumns:[],
    95                     loadedData:[]
     97                    loadedData:[],
     98                    totalRowHasData:false
    9699                  }
    97100                );
     
    131134                        }
    132135                      ),
     136                    loadingContentWorkInProgress:$('<div/>',
     137                        {
     138                          class:'ui-dynamicTableLoadingWorkInProgress'
     139                        }
     140                      ),
     141
     142                    totalRowContent:$('<table/>',
     143                        {
     144                          'class':'ui-dynamicTableTotalRow'
     145                        }
     146                      ),
     147                    totalRowTr:$('<tr/>'),
     148
    133149
    134150                    footer:$('<div/>',
     
    154170                  .append(objects.headerContainer.append(objects.header.append(objects.headerTr)))
    155171                  .append(objects.loadingContent)
     172                  .append(objects.loadingContentWorkInProgress)
    156173                  .append(objects.contentContainer.append(objects.content))
     174                  .append(objects.totalRowContent.append(objects.totalRowTr))
    157175                  .append(objects.footer
    158176                            .append(objects.footerNbItems)
     
    285303        }, // footerString
    286304
     305      autoLoad: function (value)
     306        {
     307          if(value!=null)
     308          {
     309            // set selected value
     310            return(
     311              this.each(
     312                function()
     313                {
     314                  privateMethods.setAutoLoad($(this), value, true);
     315                }
     316              )
     317            );
     318          }
     319          else
     320          {
     321            var options=this.data('options');
     322            return(options.autoLoad);
     323          }
     324        }, // autoLoad
     325
     326
     327      showTotalRow : function (value)
     328        {
     329          if(value!=null)
     330          {
     331            // set selected value
     332            return(
     333              this.each(
     334                function()
     335                {
     336                  privateMethods.setShowTotalRow($(this), value);
     337                }
     338              )
     339            );
     340          }
     341          else
     342          {
     343            var options=this.data('options');
     344            return(options.showTotalRow);
     345          }
     346        }, // showTotalRow
     347
     348
    287349       currentPage: function (value)
    288350        {
     
    509571
    510572          return(properties.loadedData);
    511         } // loadedData
     573        }, // loadedData
     574
     575      /**
     576       * refresh table content
     577       * @param Integer value: page; if not specified, refresh current page
     578       */
     579      refreshContent: function (value)
     580        {
     581          privateMethods.loadContent($(this), value);
     582        },
     583
     584      /**
     585       * force table to resize columns
     586       */
     587      resizeContent: function (value)
     588        {
     589          privateMethods.setColumnsSize($(this));
     590        },
     591
    512592
    513593    }; // methods
     
    528608          properties.initialized=false;
    529609
     610          privateMethods.setAutoLoad(object, (value.autoLoad!=null)?value.autoLoad:options.autoLoad);
     611          privateMethods.setShowTotalRow(object, (value.showTotalRow!=null)?value.showTotalRow:options.showTotalRow);
    530612          privateMethods.setPostData(object, (value.postData!=null)?value.postData:options.postData);
    531613          privateMethods.setPostUrl(object, (value.postUrl!=null)?value.postUrl:options.postUrl);
     
    549631
    550632
    551 
    552           privateMethods.loadContent(object);
     633          if(options.autoLoad)
     634            privateMethods.loadContent(object);
    553635
    554636        },
     637
     638      setAutoLoad : function (object, value)
     639        {
     640          var properties=object.data('properties'),
     641              options=object.data('options');
     642
     643          if((!properties.initialized || value!=options.autoLoad) && (value==true || value==false))
     644          {
     645            options.autoLoad=value;
     646          }
     647
     648          return(options.autoLoad);
     649        }, // setAutoLoad
     650
     651      setShowTotalRow : function (object, value)
     652        {
     653          var properties=object.data('properties'),
     654              options=object.data('options');
     655
     656          if((!properties.initialized || value!=options.showTotalRow) && (value=='visible' || value=='hidden' || value=='auto'))
     657          {
     658            options.showTotalRow=value;
     659            if(properties.initialized)
     660              privateMethods.showTotalRow(object);
     661          }
     662
     663          return(options.showTotalRow);
     664        }, // setAutoLoad
     665
    555666
    556667      setColumns : function (object, value)
     
    827938
    828939      /*
    829        * update DOM for headers & footer
     940       * update DOM for headers & footer & total row
    830941       */
    831942      updateTable : function (object)
     
    840951
    841952          objects.headerTr.children().remove();
     953          objects.totalRowTr.children().remove();
    842954
    843955          properties.hasSortableButton=false;
     
    9301042
    9311043            objects.headerTr.append(td);
     1044
     1045            td=$('<td/>');
     1046            if(options.columns[i].width!='') td.attr('style', 'width:'+options.columns[i].width+';');
     1047            objects.totalRowTr.append(td);
    9321048          }
    9331049
     
    9591075                            modal:true,
    9601076                            width:cWidth,
    961                             height:150,
     1077                            height:250,
    9621078                            autoHeight:false,
    9631079                            title:options.sortBoxTitle,
     
    9821098                ).append(button);
    9831099            objects.headerTr.append(td);
     1100
     1101            td=$('<td/>');
     1102            objects.totalRowTr.append(td);
    9841103          }
    9851104        }, //updateTable
    9861105
    987 
    988       loadContent : function (object)
     1106      /**
     1107       * load table content
     1108       *
     1109       * @param Integer page: page to load; if not specified, use the current page
     1110       */
     1111      loadContent : function (object, page)
    9891112        {
    9901113          var data=null,
     
    9971120          if(options.postUrl=='') return(false);
    9981121
     1122          if(page>0 && page <= objects.footerPagesNavigator.inputPages('nbPages'))
     1123            options.currentPage=page;
    9991124          privateMethods.displayLoading(object, true);
    10001125
     
    10301155                  msg=$.parseJSON(msg);
    10311156
    1032                   if(msg==null) return(false);
     1157                  if(msg==null || msg.rows==null)
     1158                  {
     1159                    privateMethods.displayLoading(object, false);
     1160                    return(false);
     1161                  }
    10331162
    10341163                  if(options.contentLoaded) object.trigger('dynamicTableContentLoaded', msg);
     
    10361165                  objects.content.find('tr').unbind('click.dynamicTable');
    10371166                  objects.content.children().remove();
     1167                  objects.contentContainer.scrollTop('0px');
    10381168
    10391169                  delete properties.loadedData;
     
    10781208                  }
    10791209
     1210                  if(msg.total!=null && $.isArray(msg.total))
     1211                  {
     1212                    properties.totalRowHasData=true;
     1213                    objects.totalRowTr.children().each(
     1214                      function (index)
     1215                      {
     1216                        $(this).html(msg.total[index]);
     1217                      }
     1218                    );
     1219                  }
     1220                  else
     1221                  {
     1222                    properties.totalRowHasData=false;
     1223                  }
     1224
    10801225                  if(options.click)
    10811226                    objects.content.find('tr').bind('click.dynamicTable', options.click);
    10821227
     1228                  privateMethods.showTotalRow(object);
    10831229                  privateMethods.setColumnsSize(object);
    10841230                  privateMethods.displayLoading(object, false);
     
    10881234                  //
    10891235                  objects.loadingContent.attr('style', 'display:none;');
     1236                  objects.loadingContentWorkInProgress.attr('style', 'display:none;');
    10901237                },
    10911238            }
     
    10961243        {
    10971244          var cols=[],
     1245              options=object.data('options'),
     1246              properties=object.data('properties'),
    10981247              objects=object.data('objects');
    10991248
     
    11071256          );
    11081257
    1109 
     1258          // resize first row of table content
    11101259          objects.content.find('tr:first td').each(
    11111260            function (index)
     
    11251274          );
    11261275
     1276          // resize total row if displayed
     1277          if(options.showTotalRow=='visible' ||
     1278             options.showTotalRow=='auto' && properties.totalRowHasData)
     1279          {
     1280            objects.totalRowTr.find('td').each(
     1281              function (index)
     1282              {
     1283                var style='';
     1284
     1285                if(index==(cols.length-1))
     1286                {
     1287                  style='max-width:';
     1288                }
     1289                else
     1290                {
     1291                  style='width:';
     1292                }
     1293                $(this).attr('style', style+cols[index]+'px;');
     1294              }
     1295            );
     1296          }
     1297
    11271298          return(true);
    11281299        }, //setColumnsSize
     
    11351306          {
    11361307            objects.loadingContent.attr('style', 'display:block;width:'+objects.contentContainer.width()+'px;height:'+objects.contentContainer.height()+'px;');
     1308            objects.loadingContentWorkInProgress.css(
     1309              {
     1310                'display':'block',
     1311                'width':objects.contentContainer.width()+'px',
     1312                'height':objects.contentContainer.height()+'px',
     1313                'background-position':Math.round((objects.contentContainer.width()-16)/2)+'px '+Math.round((objects.contentContainer.height()-16)/2)+'px'
     1314              }
     1315            );
    11371316          }
    11381317          else
    11391318          {
    11401319            objects.loadingContent.attr('style', 'display:none;');
     1320            objects.loadingContentWorkInProgress.attr('style', 'display:none;');
    11411321          }
    11421322        }, //displayLoading
    11431323
    1144       updateNbItems: function (object)
     1324      showTotalRow : function (object)
    11451325        {
    11461326          var options=object.data('options'),
     
    11481328              properties=object.data('properties');
    11491329
     1330          switch(options.showTotalRow)
     1331          {
     1332            case 'visible':
     1333              objects.totalRowContent.css('display',  'block');
     1334              break;
     1335            case 'hidden':
     1336              objects.totalRowContent.css('display', 'none');
     1337              break;
     1338            case 'auto':
     1339              if(properties.totalRowHasData)
     1340              {
     1341                objects.totalRowContent.css('display', 'block');
     1342              }
     1343              else
     1344              {
     1345                objects.totalRowContent.css('display', 'none');
     1346              }
     1347              break;
     1348          }
     1349        }, // showTotalRow
     1350
     1351      updateNbItems: function (object)
     1352        {
     1353          var options=object.data('options'),
     1354              objects=object.data('objects'),
     1355              properties=object.data('properties');
     1356
    11501357          if(properties.nbItems>1)
    11511358          {
     
    11571364          }
    11581365
    1159         }
     1366        } // updateNbItems
    11601367
    11611368    };
  • extensions/GrumPluginClasses/js/ui.inputFilterBox.js

    r16012 r17562  
    644644                  multiple:($.inArray('in', options.filterOperators)>-1),
    645645                  colsWidth:[],
     646                  colsCss:['col1', 'col2', 'col3'],
    646647                  items:itemsList,
    647648                  serverUrl:serverUrl,
  • extensions/GrumPluginClasses/main.inc.php

    r16012 r17562  
    22/*
    33Plugin Name: Grum Plugins Classes.3
    4 Version: 3.5.2
     4Version: 3.5.3
    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
    77Author: grum@piwigo.org
    8 Author URI: http://photos.grum.fr/
     8Author URI: http://www.grum.fr/
    99*/
    1010
     
    1313  Author     : Grum
    1414    email    : grum@piwigo.org
    15     website  : http://photos.grum.fr
     15    website  : http://www.grum.fr
    1616
    1717    << May the Little SpaceFrog be with you ! >>
     
    163163|         |            |   . Request builder interface don't work
    164164|         |            |
    165 | 3.5.2   | 2011/05/15 | * Add function to manage special markup
     165| 3.5.2   | 2012/05/15 | * Add function to manage special markup
    166166|         |            |   . BB like markup [b],[i],[url]...
    167167|         |            |   . [var=<name>] markup
     
    179179|         |            |
    180180|         |            | * optimization & rename of some JS framework components
     181|         |            |
     182| 3.5.3   | 2012/08/14 | * mantis bug:2723
     183|         |            |   . Error message when on page using GPC tabsheets
     184|         |            |
    181185|         |            |
    182186|         |            |
Note: See TracChangeset for help on using the changeset viewer.