Changeset 20181


Ignore:
Timestamp:
Jan 16, 2013, 2:15:29 AM (8 years ago)
Author:
mistic100
Message:

impove display, add LiveValidation

Location:
extensions/GuestBook
Files:
1 added
1 deleted
8 edited

Legend:

Unmodified
Added
Removed
  • extensions/GuestBook/include/functions.inc.php

    r17495 r20181  
    33if (!defined('GUESTBOOK_PATH')) die('Hacking attempt!');
    44
    5 if (!function_exists('is_valid_email'))
     5function gb_is_valid_email($mail_address)
    66{
    7   function is_valid_email($mail_address)
     7  if (function_exists('email_check_format'))
    88  {
    9     if (version_compare(PHP_VERSION, '5.2.0') >= 0)
    10     {
    11       return filter_var($mail_address, FILTER_VALIDATE_EMAIL)!==false;
    12     }
    13     else
    14     {
    15       $atom   = '[-a-z0-9!#$%&\'*+\\/=?^_`{|}~]';   // before  arobase
    16       $domain = '([a-z0-9]([-a-z0-9]*[a-z0-9]+)?)'; // domain name
    17       $regex = '/^' . $atom . '+' . '(\.' . $atom . '+)*' . '@' . '(' . $domain . '{1,63}\.)+' . $domain . '{2,63}$/i';
     9    return email_check_format($email_address);
     10  }
     11  else if (version_compare(PHP_VERSION, '5.2.0') >= 0)
     12  {
     13    return filter_var($mail_address, FILTER_VALIDATE_EMAIL)!==false;
     14  }
     15  else
     16  {
     17    $atom   = '[-a-z0-9!#$%&\'*+\\/=?^_`{|}~]';   // before  arobase
     18    $domain = '([a-z0-9]([-a-z0-9]*[a-z0-9]+)?)'; // domain name
     19    $regex = '/^' . $atom . '+' . '(\.' . $atom . '+)*' . '@' . '(' . $domain . '{1,63}\.)+' . $domain . '{2,63}$/i';
    1820
    19       if (!preg_match($regex, $mail_address)) return false;
    20       return true;
    21     }
     21    return (bool)preg_match($regex, $mail_address);
    2222  }
    2323}
    2424
    25 function is_valid_url($url)
     25function gb_is_valid_url($url)
    2626{
    27   if (version_compare(PHP_VERSION, '5.2.0') >= 0)
     27  if (function_exists('url_check_format'))
     28  {
     29    return url_check_format($url);
     30  }
     31  else if (version_compare(PHP_VERSION, '5.2.0') >= 0)
    2832  {
    2933    return filter_var($url, FILTER_VALIDATE_URL)!==false;
     
    3337    $regex = '#^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$#i';
    3438
    35     if (!preg_match($regex, $url)) return false;
    36     return true;
     39    return (bool)preg_match($regex, $url);
    3740  }
    3841}
  • extensions/GuestBook/include/functions_comment.inc.php

    r16000 r20181  
    66  EVENT_HANDLER_PRIORITY_NEUTRAL, 2);
    77
    8 function insert_user_comment_guestbook( &$comm, $key, &$infos )
     8function insert_user_comment_guestbook( &$comm, $key )
    99{
    1010  global $conf, $user, $page;
     
    1616    )
    1717   );
    18 
    19   $infos = array();
     18 
    2019  if (!$conf['guestbook']['comments_validation'] or is_admin())
    2120  {
     
    7574    $comm['email'] = $user['email'];
    7675  }
    77   else if ( !empty($comm['email']) and !is_valid_email($comm['email']) )
     76  else if ( !empty($comm['email']) and !gb_is_valid_email($comm['email']) )
    7877  {
    7978    array_push($page['errors'], l10n('mail address must be like xxx@yyy.eee (example : jack@altern.org)'));
     
    8685    $comm['website'] = 'http://'.$comm['website'];
    8786  }
    88   if ( !empty($comm['website']) and !is_valid_url($comm['website']) )
     87  if ( !empty($comm['website']) and !gb_is_valid_url($comm['website']) )
    8988  {
    9089    array_push($page['errors'], l10n('invalid website address'));
     
    121120    if ($counter > 0)
    122121    {
    123       array_push( $infos, l10n('Anti-flood system : please wait for a moment before trying to post another comment') );
     122      array_push($page['errors'], l10n('Anti-flood system : please wait for a moment before trying to post another comment') );
    124123      $comment_action='reject';
    125124    }
  • extensions/GuestBook/include/guestbook.inc.php

    r17717 r20181  
    11<?php
    22if (!defined('GUESTBOOK_PATH')) die('Hacking attempt!');
     3
     4global $user;
    35
    46include(GUESTBOOK_PATH . '/include/functions.inc.php');
     
    116118  include_once(GUESTBOOK_PATH.'include/functions_comment.inc.php');
    117119
    118   $comment_action = insert_user_comment_guestbook($comm, @$_POST['key'], $page['infos']);
     120  $comment_action = insert_user_comment_guestbook($comm, @$_POST['key']);
    119121
    120122  switch ($comment_action)
     
    303305    }
    304306  }
     307  if (is_classic_user())
     308  {
     309    $author = $user['username'];
     310    $email = $user['email'];
     311  }
     312  if (empty($conf['comments_email_mandatory'])) // < 2.5 compatibility
     313  {
     314    $conf['comments_email_mandatory'] = false;
     315  }
     316
    305317  $template->assign('comment_add',
    306318      array(
     
    308320        'KEY' => get_ephemeral_key(3),
    309321        'CONTENT' => $content,
    310         'SHOW_AUTHOR' => !is_classic_user(),
    311         'AUTHOR' => $author ,
    312         'WEBSITE' => $website ,
    313         'EMAIL' => $email ,
     322        'IS_LOGGED' => is_classic_user(),
     323        'AUTHOR' => $author,
     324        'WEBSITE' => $website,
     325        'EMAIL' => $email,
    314326        'ACTIVATE_RATING' => $conf['guestbook']['activate_rating'],
     327        'EMAIL_MANDATORY' => $conf['comments_email_mandatory'],
    315328      ));
    316329}
     
    319332$template->assign('GUESTBOOK_PATH', GUESTBOOK_PATH);
    320333
    321 $template->assign('clear_themes', array(
    322   'clear',
    323   'gally-minimalist',
    324   'hr_os',
    325   'hr_os_xl',
    326   'kardon',
    327   'montblancxl',
    328   'Naive',
    329   'OS_glass_clear',
    330   'p0w0',
    331   'Pure_autumn',
    332   'Pure_clear_blue',
    333   'Pure_sky',
    334   'Pure_tr_clear_blue',
    335   'simple-white',
    336   'VerticalWhite',
    337   ));
    338 
    339334$template->set_filename('index', dirname(__FILE__).'/../template/guestbook.tpl');
    340335
  • extensions/GuestBook/language/en_UK/plugin.lang.php

    r16347 r20181  
    22
    33$lang['Please enter your username'] = 'Please enter your username';
     4$lang['Please enter your e-mail'] = 'Please enter your e-mail';
     5$lang['Please enter a message'] = 'Please enter a message';
    46$lang['invalid website address'] = 'invalid website address';
    57$lang['GuestBook'] = 'Guestbook';
  • extensions/GuestBook/language/fr_FR/plugin.lang.php

    r16347 r20181  
    22
    33$lang['Please enter your username'] = 'Veuillez renseigner votre nom';
     4$lang['Please enter your e-mail'] = 'Veuillez renseigner votre e-mail';
     5$lang['Please enter a message'] = 'Veuillez écrire un message';
    46$lang['invalid website address'] = 'adresse du site web invalide';
    57$lang['GuestBook'] = 'Livre d\'or';
    68$lang['Sign the guestbook'] = 'Signer le livre d\'or';
    7 $lang['not publicly visible'] = 'not visible';
     9$lang['not publicly visible'] = 'non visible';
    810$lang['Website'] = 'Site web';
    911$lang['* : mandatory fields'] = '* : champs obligatoires';
    1012$lang['There are %d messages'] = 'Il y a %d messages';
    11 $lang['Activate rating'] = 'Activater la notation';
     13$lang['Activate rating'] = 'Activer la notation';
    1214$lang['%s says on %s :'] = '%s a dit le %s :';
    1315
  • extensions/GuestBook/template/comment_list.tpl

    r16347 r20181  
    1313      <a href="{$comment.U_CANCEL}">
    1414        {'Cancel'|@translate}
    15       </a>{if isset($comment.U_VALIDATE) or isset($comment.U_EDIT)} | {/if}
     15      </a>{if isset($comment.U_VALIDATE)} | {/if}
    1616    {/if}
    1717    {if isset($comment.U_EDIT) and !isset($comment.IN_EDIT)}
  • extensions/GuestBook/template/guestbook.tpl

    r17732 r20181  
    11{combine_css path=$GUESTBOOK_PATH|@cat:"template/style.css"}
    2 {if $themeconf.name|in_array:$clear_themes}
    3   {combine_css path=$GUESTBOOK_PATH|@cat:"template/style-clear.css"}
     2{combine_script id="livevalidation" load="footer" path=$GUESTBOOK_PATH|@cat:"template/livevalidation.min.js"}
     3
     4{footer_script require='livevalidation'}
     5{if !$comment_add.IS_LOGGED}
     6var author = new LiveValidation('author', {ldelim} onlyOnSubmit: true });
     7author.add(Validate.Presence, {ldelim} failureMessage: "{'Please enter your username'|@translate}" });
    48{/if}
     9
     10{if $add_comment.EMAIL_MANDATORY and (!$add_comment.IS_LOGGED or empty($add_comment.EMAIL))}
     11var email = new LiveValidation('email', {ldelim} onlyOnSubmit: true });
     12email.add(Validate.Presence, {ldelim} failureMessage: "{'Please enter your e-mail'|@translate}" });
     13email.add(Validate.Email, {ldelim} failureMessage: "{'mail address must be like xxx@yyy.eee (example : jack@altern.org)'|@translate}" });
     14{/if}
     15
     16var website = new LiveValidation('website', {ldelim} onlyOnSubmit: true });
     17website.add(Validate.Format, {ldelim} pattern: /^https?:\/\/(-\.)?([^\s\/?\.#-]+\.?)+(\/[^\s]*)?$/i,
     18  failureMessage: "{'invalid website address'|@translate}"});
     19
     20var content = new LiveValidation('contentid', {ldelim} onlyOnSubmit: true });
     21content.add(Validate.Presence, {ldelim} failureMessage: "{'Please enter a message'|@translate}" });
     22 
     23jQuery("#addComment").hide();
     24jQuery("#guestbookAdd").css('width','180px');
     25jQuery("#expandForm").click(function() {ldelim}
     26  jQuery("#guestbookAdd").animate({ldelim}"width": "550px"}, function() {ldelim}
     27    jQuery("#expandForm").slideUp();
     28    jQuery("#addComment").slideDown("slow");
     29  });
     30});
     31{/footer_script}
    532
    633{if $comment_add.ACTIVATE_RATING}
     
    1340  {/footer_script}
    1441{/if}
    15 
    16 {footer_script}
    17 jQuery("#expandForm").click(function() {ldelim}
    18   jQuery("#guestbookAdd").animate({ldelim}"width": "500px"}, function() {ldelim}
    19     jQuery("#addComment").slideDown("slow");
    20   });
    21 });
    22 {/footer_script}
    2342
    2443
     
    4160{if isset($comment_add)}
    4261<div id="guestbookAdd">
    43 <h4 id="expandForm">{'Sign the guestbook'|@translate}</h4>
    44 <form method="post" action="{$comment_add.F_ACTION}" id="addComment" style="display:none;">
    45   <table>
    46   {if $comment_add.SHOW_AUTHOR}
    47     <tr>
    48     <td>
    49       <p><label for="author">{'Author'|@translate}* :</label></p>
    50       <p><input type="text" name="author" id="author" value="{$comment_add.AUTHOR}"></p>
    51     </td>
    52     <td>
    53       <p><label for="email">{'Email address'|@translate} ({'not publicly visible'|@translate}) :</label></p>
    54       <p><input type="text" name="email" id="email" size="30" value="{$comment_add.EMAIL}"></p>
    55     </td>
    56     </tr>
    57   {/if}
    58     <tr>
    59   {if $comment_add.ACTIVATE_RATING}
    60     <td>
    61       <p>{'Rate'|@translate} :</p>
    62       <p><span id="comment_rate"></span></p>
    63     </td>
    64   {/if}
    65     <td>
    66       <p><label for="website">{'Website'|@translate} :</label></p>
    67       <p><input type="text" name="website" id="website" size="30" value="{$comment_add.WEBSITE}"></p>
    68     </td>
    69     </tr>
    70   </table>
    71  
    72   <p><label for="contentid">{'Comment'|@translate}* :</label></p>
    73   <p><textarea name="content" id="contentid" rows="10" style="width:100%;">{$comment_add.CONTENT}</textarea></p>
    74   <p><input type="hidden" name="key" value="{$comment_add.KEY}">
    75     <input type="submit" value="{'Submit'|@translate}"> {'* : mandatory fields'|@translate}</p>
    76 </form>
     62  <h4 id="expandForm">{'Sign the guestbook'|@translate}</h4>
     63  <form method="post" action="{$comment_add.F_ACTION}" id="addComment" class="contact">
     64    <table>
     65    {if not $comment_add.IS_LOGGED or empty($comment_add.EMAIL)}
     66      <tr>
     67        <td>
     68          <label for="author">{'Author'|@translate}* :</label>
     69        {if $comment_add.IS_LOGGED}
     70          {$comment_add.AUTHOR}
     71          <input type="hidden" name="author" value="{$comment_add.AUTHOR}">
     72        {else}
     73          <input type="text" name="author" id="author" value="{$comment_add.AUTHOR}">
     74        {/if}
     75        </td>
     76        <td>
     77          <label for="email">{'Email address'|@translate}{if $comment_add.EMAIL_MANDATORY}*{/if} ({'not publicly visible'|@translate}) :</label>
     78          <input type="text" name="email" id="email" value="{$comment_add.EMAIL}">
     79        </td>
     80      </tr>
     81    {/if}
     82      <tr>
     83      {if $comment_add.ACTIVATE_RATING}
     84        <td>
     85          <label>{'Rate'|@translate} :</label>
     86          <span id="comment_rate"></span>
     87        </td>
     88      {/if}
     89        <td>
     90          <label for="website">{'Website'|@translate} :</label>
     91          <input type="text" name="website" id="website" value="{$comment_add.WEBSITE}">
     92        </td>
     93      </tr>
     94      <tr>
     95        <td colspan="2">
     96          <label for="contentid">{'Comment'|@translate}* :</label>
     97          <textarea name="content" id="contentid" rows="7">{$comment_add.CONTENT}</textarea>
     98        </td>
     99      </tr>
     100      <tr>
     101        <td colspan="2">
     102          <input type="submit" value="{'Send'|@translate}">
     103          {'* : mandatory fields'|@translate}
     104        </td>
     105      </tr>
     106    </table>
     107   
     108    <input type="hidden" name="key" value="{$comment_add.KEY}">
     109  </form>
    77110</div>
    78111{/if}
  • extensions/GuestBook/template/style.css

    r17717 r20181  
    11#guestbookAdd {
    22  padding:15px;
    3   width:180px;
     3  width:550px;
    44  margin:10px auto 25px auto;
    5   background: #333333;
    6   background: -moz-linear-gradient(top, #333333 0%, #252525 100%);
    7   background: -webkit-linear-gradient(top, #333333 0%, #252525 100%);
    8   background: -o-linear-gradient(top, #333333 0%, #252525 100%);
    9   background: -ms-linear-gradient(top, #333333 0%, #252525 100%);
    10   background: linear-gradient(top, #333333 0%, #252525 100%);
    115  border-radius:5px;
    126  border:1px solid #555;
    137  box-shadow:5px 5px 5px rgba(0, 0, 0, 0.25);
    14   color:#aaa;
     8  overflow:hidden;
    159}
    1610
     
    1913  cursor:pointer;
    2014  text-align:center;
     15  font-size:13px;
    2116}
    22   #guestbookAdd h4:hover {
    23     color:#fff;
    24   }
     17 
    2518
    26 #guestbookAdd table {
     19.contact table {
    2720  width:100%;
    2821  text-align:left;
    2922}
     23  .contact table td {
     24    width:50%;
     25    text-align:left;
     26  }
     27.contact label {
     28  font-weight:bold;
     29  display:block;
     30}
     31.contact input[type="text"], .contact textarea, .contact select {
     32  border-radius:2px;
     33  padding:3px;
     34}
     35.contact textarea {
     36  width:535px;
     37}
     38.contact input[type="text"] {
     39  width:260px;
     40}
    3041
    31 #addComment {
    32   margin-top:5px;
     42
     43.LV_validation_message{
     44  display:block;
     45  font-weight:bold;
     46  margin:0 0 0 5px;
    3347}
     48.LV_valid {
     49   display:none;
     50}
     51.LV_invalid {
     52  color:#cc0000;
     53}
     54.LV_invalid_field,
     55input.LV_invalid_field:hover,
     56input.LV_invalid_field:active,
     57textarea.LV_invalid_field:hover,
     58textarea.LV_invalid_field:active {
     59  border: 1px solid #cc0000;
     60}
     61
    3462
    3563p.comment_count {
     
    4068}
    4169
    42 #guestbookAdd p, .commentElement p {
     70.commentElement p {
    4371  text-align:left;
    4472  margin-bottom:0.5em;
     
    4775
    4876.commentElement {
    49   padding:0;
     77  padding:0 !important;
    5078  list-style:none;
    5179  text-align:left;
     80  border:1px solid #555;
     81  border-radius:5px;
     82  margin:5px;
     83  overflow:hidden;
    5284}
    5385  .commentElement .description {
    5486    padding:7px !important;
     87    min-height:0;
    5588  }
    5689  .commentHeader  {
    57     background:#444;
     90    background:rgba(127,127,127,0.5);
    5891    margin:-7px;
    5992    margin-bottom:0;
Note: See TracChangeset for help on using the changeset viewer.