Changeset 12215


Ignore:
Timestamp:
Sep 24, 2011, 1:00:36 PM (9 years ago)
Author:
grum
Message:

fix bugs
bug:2160 - CategorySelector : extended description are not managed
+add some functions to GPCCore

Location:
extensions/GrumPluginClasses
Files:
8 added
8 edited

Legend:

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

    r7310 r12215  
    301301        $row['rank']=implode('.', $row['rank']);
    302302
     303        $row['name']=GPCCore::getUserLanguageDesc($row['name']);
     304
    303305        $returned[]=$row;
    304306      }
  • extensions/GrumPluginClasses/classes/GPCCore.class.inc.php

    r10246 r12215  
    33/* -----------------------------------------------------------------------------
    44  class name     : GPCCore
    5   class version  : 1.4.0
    6   plugin version : 3.5.0
    7   date           : 2011-04-10
     5  class version  : 1.4.1
     6  plugin version : 3.5.2
     7  date           : 2011-09-19
    88  ------------------------------------------------------------------------------
    99  author: grum at piwigo.org
     
    5555| 1.4.0   | 2011/04/10 | * Updated for piwigo 2.2
    5656|         |            |
     57| 1.4.1   | 2011/09/19 | * Add [var] and [form_mail] markup interpreter
    5758|         |            |
    5859|         |            |
     
    6970    - static function unregister
    7071    - static function BBtoHTML
     72    - static function VarToHTML
     73    - static function FormMailToHTML
    7174    - static function addHeaderCSS
    7275    - static function addHeaderJS
     
    7881    - static function formatOctet
    7982    - static function rmDir
     83    - static function applyMarkups
    8084   ---------------------------------------------------------------------- */
    8185
     
    9599  static public function init()
    96100  {
     101    global $conf;
     102
    97103    self::$piwigoSystemPath=dirname(dirname(dirname(dirname(__FILE__))));
     104
     105    if(isset($conf['gpc.script.minify'])) self::setMinifiedState($conf['gpc.script.minify']);
     106
     107    if((isset($conf['gpc.markup.bb']) && $conf['gpc.markup.bb']) ||
     108       (isset($conf['gpc.markup.var']) && $conf['gpc.markup.var']) ||
     109       (isset($conf['gpc.markup.form']) && $conf['gpc.markup.form'])
     110      )
     111    {
     112      add_event_handler('render_category_name', array('GPCCore', 'applyMarkups'), EVENT_HANDLER_PRIORITY_NEUTRAL+5);
     113      add_event_handler('render_category_description', array('GPCCore', 'applyMarkups'), EVENT_HANDLER_PRIORITY_NEUTRAL+5, 2);
     114      add_event_handler('render_element_description', array('GPCCore', 'applyMarkups'), EVENT_HANDLER_PRIORITY_NEUTRAL+5);
     115      add_event_handler('AP_render_content', array('GPCCore', 'applyMarkups'), EVENT_HANDLER_PRIORITY_NEUTRAL+5);
     116    }
    98117  }
    99118
     
    108127        Array('name' => "GPCAjax", 'version' => "3.0.0"),
    109128        Array('name' => "GPCCategorySelector", 'version' => "1.0.1"),
    110         Array('name' => "GPCCore", 'version' => "1.4.0"),
     129        Array('name' => "GPCCore", 'version' => "1.4.1"),
    111130        Array('name' => "GPCCss", 'version' => "3.1.0"),
    112131        Array('name' => "GPCPagesNavigation", 'version' => "2.0.0"),
     
    362381
    363382    return(preg_replace($patterns, $replacements, $text));
     383  }
     384
     385  /**
     386   * apply [var] tag
     387   *
     388   * [var=<name>]
     389   * with <name> :
     390   *  - USER
     391   *  - GALLERY_TITLE
     392   *  - NB_PHOTOS
     393   *  - CATEGORY
     394   *  - TOKEN
     395   *  - IP
     396   *
     397   * @param String $text : text to convert
     398   * @return String : processed text
     399   */
     400  static public function VarToHTML($text)
     401  {
     402    global $user, $page, $conf;
     403
     404    $patterns = Array(
     405      '/\[var=user\]/im',
     406      '/\[var=gallery_title\]/im',
     407      '/\[var=nb_photos\]/im',
     408      '/\[var=category\]/im',
     409      '/\[var=token\]/im',
     410      '/\[var=ip\]/im'
     411    );
     412    $replacements = Array(
     413      isset($user['username'])?$user['username']:'',
     414      isset($conf['gallery_title'])?$conf['gallery_title']:'',
     415      isset($user['nb_total_images'])?$user['nb_total_images']:'',
     416      isset($page['category']['name'])?$page['category']['name']:'',
     417      get_pwg_token(),
     418      $_SERVER['REMOTE_ADDR']
     419    );
     420
     421    return(preg_replace($patterns, $replacements, $text));
     422  }
     423
     424  /**
     425   * apply [form_mail] tag
     426   *
     427   * @param String $text : text to convert
     428   * @return String : processed text
     429   */
     430  static public function FormMailToHTML($text)
     431  {
     432    global $template;
     433
     434    $file=GPCCore::getPiwigoSystemPath().'/'.PWG_LOCAL_DIR.'templates/GPCFormMsg.tpl';
     435    if(!file_exists($file)) $file=dirname(dirname(__FILE__))."/templates/GPCFormMsg.tpl";
     436
     437    $template->set_filename('gpc_form', $file);
     438
     439    $template->assign('token', get_pwg_token() );
     440
     441    $patterns = Array(
     442      '/\[form_mail\]/im'
     443    );
     444    $replacements = Array(
     445      $template->parse('gpc_form', true)
     446    );
     447
     448    if(preg_match($patterns[0], $text)>0)
     449    {
     450      GPCCore::addHeaderJS('gpc.markup.formMail', GPC_PATH.'js/markup.formMail'.self::$minified.'.js', array('jquery'));
     451      return(preg_replace($patterns, $replacements, $text));
     452    }
     453    return($text);
     454  }
     455
     456  /**
     457   * apply [tab], [/tab] and [tabs] tags
     458   *
     459   * @param String $text : text to convert
     460   * @return String : processed text
     461   */
     462  static public function TabsToHTML($text)
     463  {
     464    $result=array();
     465
     466    $tabs='';
     467    if(preg_match_all('/\[tab=([^(;\]).]*)(?:;(default))?;([^\].]*)\]/im', $text, $result, PREG_SET_ORDER)>0)
     468    {
     469      foreach($result as $val)
     470      {
     471        $tabs.="<li class='gpcTabSeparator'><a id='iGpcTab".$val[1]."' class='".($val[2]=='default'?'gpcTabSelected':'gpcTabNotSelected')."' tabId='#iGpcTabContent".$val[1]."'>".$val[3]."</a></li>";
     472      }
     473      $tabs="<div id='iGpcTabs'><ul>".$tabs."</ul></div>";
     474    }
     475    else return($text);
     476
     477    $patterns = Array(
     478      '/\[tabs\]/im',
     479      '/\[tab=([^(;\]).]*)(?!;default);.*\]/im',
     480      '/\[tab=([^(;\]).]*);default;(.*)\]/im',
     481      '/\[\/tab\]/im'
     482    );
     483    $replacements = Array(
     484      $tabs,
     485      '<div id="iGpcTabContent\1" class="gpcTabContent" style="display:none;">',
     486      '<div id="iGpcTabContent\1" class="gpcTabContent">',
     487      '</div>'
     488    );
     489
     490    if(preg_match($patterns[0], $text)>0)
     491    {
     492      GPCCore::addHeaderJS('gpc.markup.tabs', GPC_PATH.'js/markup.tabs'.self::$minified.'.js', array('jquery'));
     493      GPCCore::addHeaderCSS('gpc.markup.tabs', GPC_PATH.'css/gpcTabs.css');
     494      return(preg_replace($patterns, $replacements, $text));
     495    }
     496    return($text);
     497  }
     498
     499  static public function applyMarkups($text)
     500  {
     501    global $conf;
     502
     503    if(isset($conf['gpc.markup.form']) && $conf['gpc.markup.form'])
     504    {
     505      $text=GPCCore::FormMailToHTML($text);
     506    }
     507
     508    if(isset($conf['gpc.markup.tabs']) && $conf['gpc.markup.tabs'])
     509    {
     510      $text=GPCCore::TabsToHTML($text);
     511    }
     512
     513    if(isset($conf['gpc.markup.var']) && $conf['gpc.markup.var'])
     514    {
     515      $text=GPCCore::VarToHTML($text);
     516    }
     517
     518    if(isset($conf['gpc.markup.bb']) && $conf['gpc.markup.bb'])
     519    {
     520      $text=GPCCore::BBtoHTML($text);
     521    }
     522
     523
     524    return($text);
    364525  }
    365526
  • extensions/GrumPluginClasses/gpc_ajax.php

    r7451 r12215  
    2525 *  - public.tagSelector.get
    2626 *  - admin.tagSelector.get
     27 *  - public.contact.sendMsg
    2728 *
    2829 *
     
    3132
    3233  define('PHPWG_ROOT_PATH',dirname(dirname(dirname(__FILE__))).'/');
     34
    3335
    3436  /*
     
    4345  // the common.inc.php file loads all the main.inc.php plugins files
    4446  include_once(PHPWG_ROOT_PATH.'include/common.inc.php' );
     47  include_once(PHPWG_ROOT_PATH.'include/functions_mail.inc.php' );
    4548  include_once(PHPWG_PLUGINS_PATH.'GrumPluginClasses/classes/CommonPlugin.class.inc.php');
    4649  include_once(PHPWG_PLUGINS_PATH.'GrumPluginClasses/classes/GPCAjax.class.inc.php');
     
    98101           $_REQUEST['ajaxfct']=='public.categorySelector.getList' or
    99102           $_REQUEST['ajaxfct']=='public.tagSelector.get' or
    100            $_REQUEST['ajaxfct']=='admin.tagSelector.get'
     103           $_REQUEST['ajaxfct']=='admin.tagSelector.get' or
     104           $_REQUEST['ajaxfct']=='public.contact.sendMsg'
    101105          )
    102106        ) $_REQUEST['ajaxfct']='';
     
    192196        }
    193197
     198        /*
     199         * check public.contact.sendMsg
     200         */
     201        if($_REQUEST['ajaxfct']=="public.contact.sendMsg")
     202        {
     203          if(!isset($_REQUEST['email'])) $_REQUEST['email']='';
     204          if(!isset($_REQUEST['subject'])) $_REQUEST['subject']='';
     205          if(!isset($_REQUEST['msg'])) $_REQUEST['msg']='';
     206          if(!isset($_REQUEST['token'])) $_REQUEST['token']='';
     207
     208          if($_REQUEST['token']!=get_pwg_token()) $_REQUEST['ajaxfct']='';
     209        }
     210
    194211      }
    195212    } //checkRequest()
     
    225242          $result=$this->ajax_gpc_both_TagSelectorGet('public', $_REQUEST['letters'], $_REQUEST['filter'], $_REQUEST['maxTags'], $_REQUEST['ignoreCase']);
    226243          break;
     244        case 'public.contact.sendMsg':
     245          $result=$this->ajax_gpc_public_contactSendMsg($_REQUEST['email'], $_REQUEST['subject'], $_REQUEST['msg']);
     246          break;
    227247      }
    228248      GPCAjax::returnResult($result);
    229249    }
    230250
     251
     252    /**
     253     * check validity of an email address
     254     *
     255     * @param String $email : email to check
     256     * @returned Boolean :
     257     */
     258    private function emailAdressValid($email)
     259    {
     260      return(preg_match('#^[_a-z0-9\.\-]*[_a-z0-9\-]+@[_a-z0-9\.\-]+\.[a-z0-9\-]{2,}$#im', $email)>0);
     261    }
    231262
    232263
     
    454485
    455486
     487    /**
     488     *
     489     *
     490     * @param String $email :
     491     * @param String $subject :
     492     * @param String $msg :
     493     * @param Integer $token :
     494     * @return String : json string
     495     */
     496    private function ajax_gpc_public_contactSendMsg($email, $subject, $msg)
     497    {
     498      global $user, $conf;
     499
     500      $returned=array('result' => false, 'msg' => '');
     501
     502      if($email==null or trim($email)=='')
     503      {
     504        $returned['msg']=l10n('Email is mandatory');
     505        return(json_encode($returned));
     506      }
     507
     508      if(!$this->emailAdressValid($email))
     509      {
     510        $returned['msg']=l10n('Email is not valid');
     511        return(json_encode($returned));
     512      }
     513
     514      if($subject==null or trim($subject)=='')
     515      {
     516        $returned['msg']=l10n('Subject is mandatory');
     517        return(json_encode($returned));
     518      }
     519
     520      if($msg==null or trim($msg)=='')
     521      {
     522        $returned['msg']=l10n('Message is mandatory');
     523        return(json_encode($returned));
     524      }
     525
     526
     527
     528      $admins=array();
     529      $sql="SELECT put.".$conf['user_fields']['username']." AS username,
     530                   put.".$conf['user_fields']['email']." AS mail_address
     531            FROM ".USERS_TABLE." AS put
     532              JOIN ".USER_INFOS_TABLE." AS puit
     533                ON puit.user_id =  put.".$conf['user_fields']['id']."
     534            WHERE puit.status IN ('webmaster',  'admin')
     535              AND ".$conf['user_fields']['email']." IS NOT NULL
     536              AND puit.user_id <> ".$user['id']."
     537            ORDER BY username;";
     538
     539      $result = pwg_query($sql);
     540      if($result)
     541      {
     542        while ($row = pwg_db_fetch_assoc($result))
     543        {
     544          if(!empty($row['mail_address']))
     545          {
     546            array_push($admins, format_email($row['username'], $row['mail_address']));
     547          }
     548        }
     549      }
     550
     551      $args=array(
     552        'subject' => sprintf(l10n('[%s][Message from %s] %s'), $conf['gallery_title'], $email, $subject),
     553        'content' => sprintf("[%s]\n%s\n%s\n--------\n%s", $_SERVER['REMOTE_ADDR'], $email, $subject, stripslashes($msg))
     554      );
     555
     556      $send=pwg_mail(implode(',', $admins), $args);
     557
     558      if(!$send)
     559      {
     560        $returned['msg']=l10n('Sorry, an error has occured while sending the message to the webmaster');
     561      }
     562      else
     563      {
     564        $returned['result']=true;
     565        $returned['msg']=l10n('Your message was sent to the webmaster!');
     566      }
     567
     568      return(json_encode($returned));
     569
     570    }
     571
     572
    456573  } //class
    457574
  • extensions/GrumPluginClasses/gpc_version.inc.php

    r10884 r12215  
    1515  if(!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
    1616
    17   if(!defined('GPC_VERSION')) define('GPC_VERSION',  '3.5.1');
    18   if(!defined('GPC_VERSION2')) define('GPC_VERSION2', '03.05.01');
     17  if(!defined('GPC_VERSION')) define('GPC_VERSION',  '3.5.2');
     18  if(!defined('GPC_VERSION2')) define('GPC_VERSION2', '03.05.02');
    1919?>
  • extensions/GrumPluginClasses/js/ui.inputConsole.js

    r8961 r12215  
    22 * -----------------------------------------------------------------------------
    33 * file: ui.inputConsole.js
    4  * file version: 1.0.0
     4 * file version: 1.0.1
    55 * date: 2010-11-05
    66 *
     
    5858                      historyHeight:60,
    5959                      change:null,
    60                       submit:null
     60                      submit:null,
     61                      submited:null,
     62                      focusChanged:null
    6163                    };
    6264
     
    7678                    mouseIsOver:false,
    7779                    historyIsVisible:false,
    78                     inputMargins:0
     80                    inputMargins:0,
     81                    focus:false
    7982                  }
    8083                );
     
    153156                      }
    154157                    ),
     158                    historyBackground:$('<div/>',
     159                      {
     160                        'class':'ui-inputConsole-historyBg'
     161                      }
     162                    ),
     163                    historyListContainer:$('<div/>',
     164                      {
     165                        'class':'ui-inputConsole-historyListContainer'
     166                      }
     167                    ),
    155168                    historyList:$('<ul/>')
    156169
     
    162175                    objects.container
    163176                    .append(
    164                       objects.historyContainer.append(objects.historyList)
     177                      objects.historyContainer
     178                        .append(objects.historyBackground)
     179                        .append(objects.historyListContainer.append(objects.historyList))
    165180                    )
    166181                    .append(
     
    334349        }, // value
    335350
    336       history: function (value)
     351      history: function (value, param)
    337352        {
    338353          var objects=this.data('objects');
     
    343358            return this.each(function()
    344359              {
    345                 if(value=='clear')
     360                switch(value)
    346361                {
    347                   objects.historyList.html('');
     362                  case 'clear':
     363                    objects.historyList.html('');
     364                    break;
     365                  case 'addResult':
     366                    privateMethods.updateHistoryResult($(this), param);
     367                    break;
    348368                }
    349369              }
     
    383403        }, // isValid
    384404
     405      focus: function (value)
     406        {
     407          if(value!=null)
     408          {
     409            // set selected value
     410            return this.each(function()
     411              {
     412                privateMethods.setFocus($(this), value);
     413              }
     414            );
     415          }
     416          else
     417          {
     418            // return the selected tags
     419            var properties=this.data('properties');
     420            return(properties.focus);
     421          }
     422        }, // isValid
     423
    385424      change: function (value)
    386425        {
     
    436475            }
    437476          }
    438         } // submit
     477        }, // submit
     478
     479      submited: function (value)
     480        {
     481          if(value!=null && $.isFunction(value))
     482          {
     483            // set selected value
     484            return this.each(function()
     485              {
     486                privateMethods.setEventSubmited($(this), value);
     487              }
     488            );
     489          }
     490          else
     491          {
     492            // return the selected value
     493            var options=this.data('options');
     494
     495            if(options)
     496            {
     497              return(options.submited);
     498            }
     499            else
     500            {
     501              return(null);
     502            }
     503          }
     504        }, // submited
     505
     506      focusChanged: function (value)
     507        {
     508          if(value!=null && $.isFunction(value))
     509          {
     510            // set selected value
     511            return this.each(function()
     512              {
     513                privateMethods.setEventFocusChanged($(this), value);
     514              }
     515            );
     516          }
     517          else
     518          {
     519            // return the selected value
     520            var options=this.data('options');
     521
     522            if(options)
     523            {
     524              return(options.focusChanged);
     525            }
     526            else
     527            {
     528              return(null);
     529            }
     530          }
     531        }, // focusChanged
     532
    439533
    440534
     
    464558          privateMethods.setEventChange(object, (value.change!=null)?value.change:options.change);
    465559          privateMethods.setEventSubmit(object, (value.submit!=null)?value.submit:options.submit);
     560          privateMethods.setEventSubmited(object, (value.submited!=null)?value.submited:options.submited);
     561          privateMethods.setEventFocusChanged(object, (value.focusChanged!=null)?value.focusChanged:options.focusChanged);
    466562
    467563          properties.initialized=true;
     
    566662
    567663
     664      setFocus : function (object, value)
     665        {
     666          var objects=object.data('objects'),
     667              options=object.data('options'),
     668              properties=object.data('properties');
     669
     670          if(value===true||value===false)
     671          {
     672            if(value)
     673            {
     674              objects.input.focus();
     675            }
     676            else
     677            {
     678              objects.input.blur();
     679            }
     680
     681            properties.focus=value;
     682            if(options.focusChanged) object.trigger('inputConsoleFocusChanged', properties.focus);
     683          }
     684
     685          return(properties.focus);
     686        },
     687
    568688      getFocus : function (object)
    569689        {
    570           var objects=object.data('objects');
    571 
     690          var objects=object.data('objects'),
     691              options=object.data('options'),
     692              properties=object.data('properties');
     693
     694          properties.focus=true;
    572695          objects.historyContainer.css('display', 'block');
    573696          privateMethods.setObjectsWidth(object);
     697          if(options.focusChanged) object.trigger('inputConsoleFocusChanged', properties.focus);
    574698        },
    575699
    576700      lostFocus : function (object)
    577701        {
    578           var objects=object.data('objects');
    579 
     702          var objects=object.data('objects'),
     703              options=object.data('options'),
     704              properties=object.data('properties');
     705
     706          properties.focus=false;
    580707          objects.historyContainer.css('display', 'none');
     708          if(options.focusChanged) object.trigger('inputConsoleFocusChanged', properties.focus);
    581709        },
    582710
     
    601729        },
    602730
     731      setEventSubmited : function (object, value)
     732        {
     733          var options=object.data('options');
     734
     735          options.submited=value;
     736          object.unbind('inputConsoleSubmited');
     737          if(value) object.bind('inputConsoleSubmited', options.submited);
     738          return(options.submited);
     739        },
     740
     741      setEventFocusChanged : function (object, value)
     742        {
     743          var options=object.data('options');
     744
     745          options.focusChanged=value;
     746          object.unbind('inputConsoleFocusChanged');
     747          if(value) object.bind('inputConsoleFocusChanged', options.focusChanged);
     748          return(options.focusChanged);
     749        },
     750
    603751      keyUp : function (object, event)
    604752        {
     
    612760            if(options.submit) object.trigger('inputConsoleSubmit', properties.value);
    613761            privateMethods.updateHistory(object, properties.value);
     762            if(options.submited) object.trigger('inputConsoleSubmited', properties.value);
    614763            privateMethods.setValue(object, '', true);
    615764          }
     
    625774              objects=object.data('objects');
    626775
    627           if(item!='' && item!=null) objects.historyList.append($('<li/>', { html: item }));
     776          if(item!='' && item!=null)
     777            objects.historyList.append(
     778              $('<li/>', { html: '<span class="ui-inputConsole-historyCmd">'+item+'</span>' } )
     779                .bind('click', object,
     780                  function (event)
     781                    {
     782                      privateMethods.setValue(event.data, $(this).children('.ui-inputConsole-historyCmd').html(), true);
     783                    }
     784                )
     785            );
    628786
    629787          while(objects.historyList.children().length>options.historySize)
     
    632790          }
    633791          objects.historyContainer.scrollTop(objects.historyList.height());
     792        },
     793
     794      updateHistoryResult : function (object, item)
     795        {
     796          var options=object.data('options'),
     797              objects=object.data('objects');
     798
     799          if(item!='' && item!=null)
     800          {
     801            objects.historyList.children(':last').html(
     802              objects.historyList.children(':last').html() + "<span class='ui-inputConsole-historyResult'>"+item+"</span>"
     803            );
     804          }
     805
     806          objects.historyListContainer.scrollTop(objects.historyList.height());
    634807        },
    635808
     
    674847  }
    675848)(jQuery);
    676 
    677 
  • extensions/GrumPluginClasses/js/ui.inputConsole.min.js

    r8961 r12215  
    1 /* file: ui.inputColorsFB.js - v1.0.0 | minified on 2011/01/27 with http://jscompress.com/ */
    2 (function($)
    3 {var publicMethods={init:function(opt)
    4 {return this.each(function()
    5 {var $this=$(this),data=$this.data('options'),objects=$this.data('objects'),properties=$this.data('properties'),options={disabled:false,prompt:'>',historySize:8,historyHeight:60,change:null,submit:null};$this.data('options',options);if(!properties)
    6 {$this.data('properties',{initialized:false,value:'',isValid:true,mouseIsOver:false,historyIsVisible:false,inputMargins:0});properties=$this.data('properties');}
    7 if(!objects)
    8 {objects={container:$('<div/>',{'class':'ui-inputConsole',css:{width:'100%'}}).bind('click.inputConsole',function()
    9 {objects.input.focus();}).bind('mouseenter',function()
    10 {properties.mouseIsOver=true;}).bind('mouseleave',function()
    11 {properties.mouseIsOver=false;}),inputContainer:$('<div/>',{'class':'ui-inputConsole-input'}),input:$('<input>',{type:"text",value:''}).bind('focusout.inputConsole',function()
    12 {privateMethods.lostFocus($this);}).bind('focus.inputConsole',function()
    13 {privateMethods.getFocus($this);}).bind('keyup.inputConsole',function(event)
    14 {privateMethods.keyUp($this,event);}),prompt:$('<div/>',{html:options.prompt,'class':'ui-inputConsole-prompt'}),historyContainer:$('<div/>',{'class':'ui-inputConsole-history',css:{display:'none'}}),historyList:$('<ul/>')};$this.html('').append(objects.container.append(objects.historyContainer.append(objects.historyList)).append(objects.inputContainer.append(objects.prompt).append(objects.input))).bind('resize.inputConsole',function()
    15 {privateMethods.setObjectsWidth($this);});properties.inputMargins=objects.input.outerWidth(true)-objects.input.width();$this.data('objects',objects);}
    16 privateMethods.setOptions($this,opt);});},destroy:function()
    17 {return this.each(function()
    18 {var $this=$(this),objects=$this.data('objects');objects.input.unbind().remove();objects.container.unbind().remove();$this.unbind('.inputConsole').css({width:'',height:''});});},options:function(value)
    19 {return this.each(function()
    20 {privateMethods.setOptions($(this),value);});},disabled:function(value)
    21 {if(value!=null)
    22 {return this.each(function()
    23 {privateMethods.setDisabled($(this),value);});}
    24 else
    25 {var options=this.data('options');if(options)
    26 {return(options.disabled);}
    27 else
    28 {return('');}}},prompt:function(value)
    29 {if(value!=null)
    30 {return this.each(function()
    31 {privateMethods.setPrompt($(this),value);});}
    32 else
    33 {var options=this.data('options');if(options)
    34 {return(options.prompt);}
    35 else
    36 {return('');}}},historySize:function(value)
    37 {if(value!=null)
    38 {return this.each(function()
    39 {privateMethods.setHistorySize($(this),value);});}
    40 else
    41 {var options=this.data('options');if(options)
    42 {return(options.historySize);}
    43 else
    44 {return('');}}},historyHeight:function(value)
    45 {if(value!=null)
    46 {return this.each(function()
    47 {privateMethods.setHistoryHeight($(this),value);});}
    48 else
    49 {var options=this.data('options');if(options)
    50 {return(options.historyHeight);}
    51 else
    52 {return('');}}},value:function(value)
    53 {if(value!=null)
    54 {return this.each(function()
    55 {privateMethods.setValue($(this),value,true);});}
    56 else
    57 {var properties=this.data('properties');return(properties.value);}},history:function(value)
    58 {var objects=this.data('objects');if(value!=null)
    59 {return this.each(function()
    60 {if(value=='clear')
    61 {objects.historyList.html('');}});}
    62 else
    63 {var returned=[];objects.historyList.children().each(function(index,item)
    64 {returned.push($(item).text());});return(returned);}},isValid:function(value)
    65 {if(value!=null)
    66 {return this.each(function()
    67 {privateMethods.setIsValid($(this),value);});}
    68 else
    69 {var properties=this.data('properties');return(properties.isValid);}},change:function(value)
    70 {if(value!=null&&$.isFunction(value))
    71 {return this.each(function()
    72 {privateMethods.setEventChange($(this),value);});}
    73 else
    74 {var options=this.data('options');if(options)
    75 {return(options.change);}
    76 else
    77 {return(null);}}},submit:function(value)
    78 {if(value!=null&&$.isFunction(value))
    79 {return this.each(function()
    80 {privateMethods.setEventSubmit($(this),value);});}
    81 else
    82 {var options=this.data('options');if(options)
    83 {return(options.submit);}
    84 else
    85 {return(null);}}}};var privateMethods={setOptions:function(object,value)
    86 {var properties=object.data('properties'),options=object.data('options');if(!$.isPlainObject(value))return(false);properties.initialized=false;privateMethods.setHistoryHeight(object,(value.historyHeight!=null)?value.historyHeight:options.historyHeight);privateMethods.setHistorySize(object,(value.historySize!=null)?value.historySize:options.historySize);privateMethods.setPrompt(object,(value.prompt!=null)?value.prompt:options.prompt);privateMethods.setValue(object,(value.value!=null)?value.value:options.value,true);privateMethods.setDisabled(object,(value.disabled!=null)?value.disabled:options.disabled);privateMethods.setEventChange(object,(value.change!=null)?value.change:options.change);privateMethods.setEventSubmit(object,(value.submit!=null)?value.submit:options.submit);properties.initialized=true;},setPrompt:function(object,value)
    87 {var objects=object.data('objects'),options=object.data('options'),properties=object.data('properties');if(!properties.initialized||options.prompt!=value)
    88 {options.prompt=value;objects.prompt.html(options.prompt);privateMethods.setObjectsWidth(object);}
    89 return(options.prompt);},setHistorySize:function(object,value)
    90 {var options=object.data('options'),properties=object.data('properties');if(!properties.initialized||options.historySize!=value)
    91 {options.historySize=value;privateMethods.updateHistory(object,null);}
    92 return(options.historySize);},setHistoryHeight:function(object,value)
    93 {var objects=object.data('objects'),options=object.data('options'),properties=object.data('properties');if(!properties.initialized||options.historyHeight!=value)
    94 {options.historyHeight=value;objects.historyContainer.css({height:options.historyHeight+'px','margin-top':(-options.historyHeight)+'px'});}
    95 return(options.historyHeight);},setIsValid:function(object,value)
    96 {var objects=object.data('objects'),properties=object.data('properties');if(properties.isValid!=value)
    97 {properties.isValid=value;if(properties.isValid)
    98 {objects.container.removeClass('ui-error');objects.input.removeClass('ui-error');}
    99 else
    100 {objects.container.addClass('ui-error');objects.input.addClass('ui-error');}}
    101 return(properties.isValid);},setDisabled:function(object,value)
    102 {var options=object.data('options'),properties=object.data('properties');if((!properties.initialized||options.disabled!=value)&&(value==true||value==false))
    103 {options.disabled=value;}
    104 return(options.disabled);},setValue:function(object,value,apply)
    105 {var options=object.data('options'),properties=object.data('properties'),objects=object.data('objects');properties.value=value;if(apply)objects.input.val(properties.value);if(options.change)object.trigger('inputConsoleChange',properties.value);return(true);},getFocus:function(object)
    106 {var objects=object.data('objects');objects.historyContainer.css('display','block');privateMethods.setObjectsWidth(object);},lostFocus:function(object)
    107 {var objects=object.data('objects');objects.historyContainer.css('display','none');},setEventChange:function(object,value)
    108 {var options=object.data('options');options.change=value;object.unbind('inputConsoleChange');if(value)object.bind('inputConsoleChange',options.change);return(options.change);},setEventSubmit:function(object,value)
    109 {var options=object.data('options');options.submit=value;object.unbind('inputConsoleSubmit');if(value)object.bind('inputConsoleSubmit',options.submit);return(options.submit);},keyUp:function(object,event)
    110 {var properties=object.data('properties'),options=object.data('options'),objects=object.data('objects');if(event.keyCode==13&&properties.isValid)
    111 {if(options.submit)object.trigger('inputConsoleSubmit',properties.value);privateMethods.updateHistory(object,properties.value);privateMethods.setValue(object,'',true);}
    112 else
    113 {privateMethods.setValue(object,objects.input.val(),false);}},updateHistory:function(object,item)
    114 {var options=object.data('options'),objects=object.data('objects');if(item!=''&&item!=null)objects.historyList.append($('<li/>',{html:item}));while(objects.historyList.children().length>options.historySize)
    115 {objects.historyList.children(':first').remove();}
    116 objects.historyContainer.scrollTop(objects.historyList.height());},setObjectsWidth:function(object)
    117 {var objects=object.data('objects')
    118 properties=object.data('properties');if(objects.inputContainer.width()>0)
    119 {objects.input.css('width',(objects.inputContainer.innerWidth()-objects.prompt.outerWidth(true)-properties.inputMargins)+'px');objects.historyContainer.css({width:objects.inputContainer.innerWidth()+'px','margin-left':((objects.historyContainer.width()-objects.historyContainer.outerWidth())/2)+'px'});}}};$.fn.inputConsole=function(method)
    120 {if(publicMethods[method])
    121 {return publicMethods[method].apply(this,Array.prototype.slice.call(arguments,1));}
    122 else if(typeof method==='object'||!method)
    123 {return publicMethods.init.apply(this,arguments);}
    124 else
    125 {$.error('Method '+method+' does not exist on jQuery.inputConsole');}}})(jQuery);
     1/* file: ui.inputConsole.js - v1.0.1 | minified on 2011/09/21 with http://jscompress.com/ */
     2(function(a){var b={init:function(b){return this.each(function(){var d=a(this),e=d.data("options"),f=d.data("objects"),g=d.data("properties"),h={disabled:false,prompt:">",historySize:8,historyHeight:60,change:null,submit:null,submited:null,focusChanged:null};d.data("options",h);if(!g){d.data("properties",{initialized:false,value:"",isValid:true,mouseIsOver:false,historyIsVisible:false,inputMargins:0,focus:false});g=d.data("properties")}if(!f){f={container:a("<div/>",{"class":"ui-inputConsole",css:{width:"100%"}}).bind("click.inputConsole",function(){f.input.focus()}).bind("mouseenter",function(){g.mouseIsOver=true}).bind("mouseleave",function(){g.mouseIsOver=false}),inputContainer:a("<div/>",{"class":"ui-inputConsole-input"}),input:a("<input>",{type:"text",value:""}).bind("focusout.inputConsole",function(){c.lostFocus(d)}).bind("focus.inputConsole",function(){c.getFocus(d)}).bind("keyup.inputConsole",function(a){c.keyUp(d,a)}),prompt:a("<div/>",{html:h.prompt,"class":"ui-inputConsole-prompt"}),historyContainer:a("<div/>",{"class":"ui-inputConsole-history",css:{display:"none"}}),historyBackground:a("<div/>",{"class":"ui-inputConsole-historyBg"}),historyListContainer:a("<div/>",{"class":"ui-inputConsole-historyListContainer"}),historyList:a("<ul/>")};d.html("").append(f.container.append(f.historyContainer.append(f.historyBackground).append(f.historyListContainer.append(f.historyList))).append(f.inputContainer.append(f.prompt).append(f.input))).bind("resize.inputConsole",function(){c.setObjectsWidth(d)});g.inputMargins=f.input.outerWidth(true)-f.input.width();d.data("objects",f)}c.setOptions(d,b)})},destroy:function(){return this.each(function(){var b=a(this),c=b.data("objects");c.input.unbind().remove();c.container.unbind().remove();b.unbind(".inputConsole").css({width:"",height:""})})},options:function(b){return this.each(function(){c.setOptions(a(this),b)})},disabled:function(b){if(b!=null){return this.each(function(){c.setDisabled(a(this),b)})}else{var d=this.data("options");if(d){return d.disabled}else{return""}}},prompt:function(b){if(b!=null){return this.each(function(){c.setPrompt(a(this),b)})}else{var d=this.data("options");if(d){return d.prompt}else{return""}}},historySize:function(b){if(b!=null){return this.each(function(){c.setHistorySize(a(this),b)})}else{var d=this.data("options");if(d){return d.historySize}else{return""}}},historyHeight:function(b){if(b!=null){return this.each(function(){c.setHistoryHeight(a(this),b)})}else{var d=this.data("options");if(d){return d.historyHeight}else{return""}}},value:function(b){if(b!=null){return this.each(function(){c.setValue(a(this),b,true)})}else{var d=this.data("properties");return d.value}},history:function(b,d){var e=this.data("objects");if(b!=null){return this.each(function(){switch(b){case"clear":e.historyList.html("");break;case"addResult":c.updateHistoryResult(a(this),d);break}})}else{var f=[];e.historyList.children().each(function(b,c){f.push(a(c).text())});return f}},isValid:function(b){if(b!=null){return this.each(function(){c.setIsValid(a(this),b)})}else{var d=this.data("properties");return d.isValid}},focus:function(b){if(b!=null){return this.each(function(){c.setFocus(a(this),b)})}else{var d=this.data("properties");return d.focus}},change:function(b){if(b!=null&&a.isFunction(b)){return this.each(function(){c.setEventChange(a(this),b)})}else{var d=this.data("options");if(d){return d.change}else{return null}}},submit:function(b){if(b!=null&&a.isFunction(b)){return this.each(function(){c.setEventSubmit(a(this),b)})}else{var d=this.data("options");if(d){return d.submit}else{return null}}},submited:function(b){if(b!=null&&a.isFunction(b)){return this.each(function(){c.setEventSubmited(a(this),b)})}else{var d=this.data("options");if(d){return d.submited}else{return null}}},focusChanged:function(b){if(b!=null&&a.isFunction(b)){return this.each(function(){c.setEventFocusChanged(a(this),b)})}else{var d=this.data("options");if(d){return d.focusChanged}else{return null}}}};var c={setOptions:function(b,d){var e=b.data("properties"),f=b.data("options");if(!a.isPlainObject(d))return false;e.initialized=false;c.setHistoryHeight(b,d.historyHeight!=null?d.historyHeight:f.historyHeight);c.setHistorySize(b,d.historySize!=null?d.historySize:f.historySize);c.setPrompt(b,d.prompt!=null?d.prompt:f.prompt);c.setValue(b,d.value!=null?d.value:f.value,true);c.setDisabled(b,d.disabled!=null?d.disabled:f.disabled);c.setEventChange(b,d.change!=null?d.change:f.change);c.setEventSubmit(b,d.submit!=null?d.submit:f.submit);c.setEventSubmited(b,d.submited!=null?d.submited:f.submited);c.setEventFocusChanged(b,d.focusChanged!=null?d.focusChanged:f.focusChanged);e.initialized=true},setPrompt:function(a,b){var d=a.data("objects"),e=a.data("options"),f=a.data("properties");if(!f.initialized||e.prompt!=b){e.prompt=b;d.prompt.html(e.prompt);c.setObjectsWidth(a)}return e.prompt},setHistorySize:function(a,b){var d=a.data("options"),e=a.data("properties");if(!e.initialized||d.historySize!=b){d.historySize=b;c.updateHistory(a,null)}return d.historySize},setHistoryHeight:function(a,b){var c=a.data("objects"),d=a.data("options"),e=a.data("properties");if(!e.initialized||d.historyHeight!=b){d.historyHeight=b;c.historyContainer.css({height:d.historyHeight+"px","margin-top":-d.historyHeight+"px"})}return d.historyHeight},setIsValid:function(a,b){var c=a.data("objects"),d=a.data("properties");if(d.isValid!=b){d.isValid=b;if(d.isValid){c.container.removeClass("ui-error");c.input.removeClass("ui-error")}else{c.container.addClass("ui-error");c.input.addClass("ui-error")}}return d.isValid},setDisabled:function(a,b){var c=a.data("options"),d=a.data("properties");if((!d.initialized||c.disabled!=b)&&(b==true||b==false)){c.disabled=b}return c.disabled},setValue:function(a,b,c){var d=a.data("options"),e=a.data("properties"),f=a.data("objects");e.value=b;if(c)f.input.val(e.value);if(d.change)a.trigger("inputConsoleChange",e.value);return true},setFocus:function(a,b){var c=a.data("objects"),d=a.data("options"),e=a.data("properties");if(b===true||b===false){if(b){c.input.focus()}else{c.input.blur()}e.focus=b;if(d.focusChanged)a.trigger("inputConsoleFocusChanged",e.focus)}return e.focus},getFocus:function(a){var b=a.data("objects"),d=a.data("options"),e=a.data("properties");e.focus=true;b.historyContainer.css("display","block");c.setObjectsWidth(a);if(d.focusChanged)a.trigger("inputConsoleFocusChanged",e.focus)},lostFocus:function(a){var b=a.data("objects"),c=a.data("options"),d=a.data("properties");d.focus=false;b.historyContainer.css("display","none");if(c.focusChanged)a.trigger("inputConsoleFocusChanged",d.focus)},setEventChange:function(a,b){var c=a.data("options");c.change=b;a.unbind("inputConsoleChange");if(b)a.bind("inputConsoleChange",c.change);return c.change},setEventSubmit:function(a,b){var c=a.data("options");c.submit=b;a.unbind("inputConsoleSubmit");if(b)a.bind("inputConsoleSubmit",c.submit);return c.submit},setEventSubmited:function(a,b){var c=a.data("options");c.submited=b;a.unbind("inputConsoleSubmited");if(b)a.bind("inputConsoleSubmited",c.submited);return c.submited},setEventFocusChanged:function(a,b){var c=a.data("options");c.focusChanged=b;a.unbind("inputConsoleFocusChanged");if(b)a.bind("inputConsoleFocusChanged",c.focusChanged);return c.focusChanged},keyUp:function(a,b){var d=a.data("properties"),e=a.data("options"),f=a.data("objects");if(b.keyCode==13&&d.isValid){if(e.submit)a.trigger("inputConsoleSubmit",d.value);c.updateHistory(a,d.value);if(e.submited)a.trigger("inputConsoleSubmited",d.value);c.setValue(a,"",true)}else{c.setValue(a,f.input.val(),false)}},updateHistory:function(b,d){var e=b.data("options"),f=b.data("objects");if(d!=""&&d!=null)f.historyList.append(a("<li/>",{html:'<span class="ui-inputConsole-historyCmd">'+d+"</span>"}).bind("click",b,function(b){c.setValue(b.data,a(this).children(".ui-inputConsole-historyCmd").html(),true)}));while(f.historyList.children().length>e.historySize){f.historyList.children(":first").remove()}f.historyContainer.scrollTop(f.historyList.height())},updateHistoryResult:function(a,b){var c=a.data("options"),d=a.data("objects");if(b!=""&&b!=null){d.historyList.children(":last").html(d.historyList.children(":last").html()+"<span class='ui-inputConsole-historyResult'>"+b+"</span>")}d.historyListContainer.scrollTop(d.historyList.height())},setObjectsWidth:function(a){var b=a.data("objects");properties=a.data("properties");if(b.inputContainer.width()>0){b.input.css("width",b.inputContainer.innerWidth()-b.prompt.outerWidth(true)-properties.inputMargins+"px");b.historyContainer.css({width:b.inputContainer.innerWidth()+"px","margin-left":(b.historyContainer.width()-b.historyContainer.outerWidth())/2+"px"})}}};a.fn.inputConsole=function(c){if(b[c]){return b[c].apply(this,Array.prototype.slice.call(arguments,1))}else if(typeof c==="object"||!c){return b.init.apply(this,arguments)}else{a.error("Method "+c+" does not exist on jQuery.inputConsole")}}})(jQuery)
  • extensions/GrumPluginClasses/language/fr_FR/plugin.lang.php

    r7199 r12215  
    1616$lang['All the gallery'] = 'Toute la galerie';
    1717
     18
     19// gpc 3.5.2
     20$lang['Your email']='Adresse email';
     21$lang['Subject']='Sujet';
     22$lang['Message']='Message';
     23$lang['Submit']='Soumettre';
     24$lang['Email is mandatory']='L\'adresse email est obligatoire';
     25$lang['Email is not valid']='L\'adresse email est invalide';
     26$lang['Subject is mandatory']='Le sujet du message est obligatoire';
     27$lang['Message is mandatory']='Le message ne peut pas &ecirc;tre vide !';
     28$lang['[%s][Message from %s] %s']='[%s][Message de %s] %s';
     29$lang['Sorry, an error has occured while sending the message to the webmaster']='D&eacute;sol&eacute;, une erreur est survenue lors de l\'envoi du message au webmaster';
     30$lang['Your message was sent to the webmaster!']='Votre message a bien &eacute;t&eacute; transmis !';
     31
    1832?>
  • extensions/GrumPluginClasses/main.inc.php

    r10884 r12215  
    22/*
    33Plugin Name: Grum Plugins Classes.3
    4 Version: 3.5.1
     4Version: 3.5.2
    55Description: Collection de classes partagées entre mes plugins (existants, ou à venir) / Partaged classes between my plugins (actuals or futures)
    66Plugin URI: http://piwigo.org/ext/extension_view.php?eid=199
     
    163163|         |            |   . Request builder interface don't work
    164164|         |            |
     165| 3.5.2   | 2011/05/15 | * Add function to manage special markup
     166|         |            |   . BB like markup [b],[i],[url]...
     167|         |            |   . [var=<name>] markup
     168|         |            |   . [tabs],[tab=id(;default);<tab title>]
     169|         |            |   . [form_mail]
     170|         |            |
     171|         |            | * mantis bug:2160
     172|         |            |   . CategorySelector : extended description are not
     173|         |            |     managed
    165174|         |            |
    166175|         |            |
     
    168177|         |            |
    169178|         |            | ===== Don't forget to update the plugin version ! =====
    170 |         |            |
    171 |         |            |
    172179|         |            |
    173180|         |            |
Note: See TracChangeset for help on using the changeset viewer.