Changeset 20181 for extensions/GuestBook
- Timestamp:
- Jan 16, 2013, 2:15:29 AM (11 years ago)
- Location:
- extensions/GuestBook
- Files:
-
- 1 added
- 1 deleted
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
extensions/GuestBook/include/functions.inc.php
r17495 r20181 3 3 if (!defined('GUESTBOOK_PATH')) die('Hacking attempt!'); 4 4 5 if (!function_exists('is_valid_email'))5 function gb_is_valid_email($mail_address) 6 6 { 7 function is_valid_email($mail_address)7 if (function_exists('email_check_format')) 8 8 { 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'; 18 20 19 if (!preg_match($regex, $mail_address)) return false; 20 return true; 21 } 21 return (bool)preg_match($regex, $mail_address); 22 22 } 23 23 } 24 24 25 function is_valid_url($url)25 function gb_is_valid_url($url) 26 26 { 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) 28 32 { 29 33 return filter_var($url, FILTER_VALIDATE_URL)!==false; … … 33 37 $regex = '#^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$#i'; 34 38 35 if (!preg_match($regex, $url)) return false; 36 return true; 39 return (bool)preg_match($regex, $url); 37 40 } 38 41 } -
extensions/GuestBook/include/functions_comment.inc.php
r16000 r20181 6 6 EVENT_HANDLER_PRIORITY_NEUTRAL, 2); 7 7 8 function insert_user_comment_guestbook( &$comm, $key , &$infos)8 function insert_user_comment_guestbook( &$comm, $key ) 9 9 { 10 10 global $conf, $user, $page; … … 16 16 ) 17 17 ); 18 19 $infos = array(); 18 20 19 if (!$conf['guestbook']['comments_validation'] or is_admin()) 21 20 { … … 75 74 $comm['email'] = $user['email']; 76 75 } 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']) ) 78 77 { 79 78 array_push($page['errors'], l10n('mail address must be like xxx@yyy.eee (example : jack@altern.org)')); … … 86 85 $comm['website'] = 'http://'.$comm['website']; 87 86 } 88 if ( !empty($comm['website']) and ! is_valid_url($comm['website']) )87 if ( !empty($comm['website']) and !gb_is_valid_url($comm['website']) ) 89 88 { 90 89 array_push($page['errors'], l10n('invalid website address')); … … 121 120 if ($counter > 0) 122 121 { 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') ); 124 123 $comment_action='reject'; 125 124 } -
extensions/GuestBook/include/guestbook.inc.php
r17717 r20181 1 1 <?php 2 2 if (!defined('GUESTBOOK_PATH')) die('Hacking attempt!'); 3 4 global $user; 3 5 4 6 include(GUESTBOOK_PATH . '/include/functions.inc.php'); … … 116 118 include_once(GUESTBOOK_PATH.'include/functions_comment.inc.php'); 117 119 118 $comment_action = insert_user_comment_guestbook($comm, @$_POST['key'] , $page['infos']);120 $comment_action = insert_user_comment_guestbook($comm, @$_POST['key']); 119 121 120 122 switch ($comment_action) … … 303 305 } 304 306 } 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 305 317 $template->assign('comment_add', 306 318 array( … … 308 320 'KEY' => get_ephemeral_key(3), 309 321 '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, 314 326 'ACTIVATE_RATING' => $conf['guestbook']['activate_rating'], 327 'EMAIL_MANDATORY' => $conf['comments_email_mandatory'], 315 328 )); 316 329 } … … 319 332 $template->assign('GUESTBOOK_PATH', GUESTBOOK_PATH); 320 333 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 339 334 $template->set_filename('index', dirname(__FILE__).'/../template/guestbook.tpl'); 340 335 -
extensions/GuestBook/language/en_UK/plugin.lang.php
r16347 r20181 2 2 3 3 $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'; 4 6 $lang['invalid website address'] = 'invalid website address'; 5 7 $lang['GuestBook'] = 'Guestbook'; -
extensions/GuestBook/language/fr_FR/plugin.lang.php
r16347 r20181 2 2 3 3 $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'; 4 6 $lang['invalid website address'] = 'adresse du site web invalide'; 5 7 $lang['GuestBook'] = 'Livre d\'or'; 6 8 $lang['Sign the guestbook'] = 'Signer le livre d\'or'; 7 $lang['not publicly visible'] = 'no tvisible';9 $lang['not publicly visible'] = 'non visible'; 8 10 $lang['Website'] = 'Site web'; 9 11 $lang['* : mandatory fields'] = '* : champs obligatoires'; 10 12 $lang['There are %d messages'] = 'Il y a %d messages'; 11 $lang['Activate rating'] = 'Activ ater la notation';13 $lang['Activate rating'] = 'Activer la notation'; 12 14 $lang['%s says on %s :'] = '%s a dit le %s :'; 13 15 -
extensions/GuestBook/template/comment_list.tpl
r16347 r20181 13 13 <a href="{$comment.U_CANCEL}"> 14 14 {'Cancel'|@translate} 15 </a>{if isset($comment.U_VALIDATE) or isset($comment.U_EDIT)} | {/if}15 </a>{if isset($comment.U_VALIDATE)} | {/if} 16 16 {/if} 17 17 {if isset($comment.U_EDIT) and !isset($comment.IN_EDIT)} -
extensions/GuestBook/template/guestbook.tpl
r17732 r20181 1 1 {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} 6 var author = new LiveValidation('author', {ldelim} onlyOnSubmit: true }); 7 author.add(Validate.Presence, {ldelim} failureMessage: "{'Please enter your username'|@translate}" }); 4 8 {/if} 9 10 {if $add_comment.EMAIL_MANDATORY and (!$add_comment.IS_LOGGED or empty($add_comment.EMAIL))} 11 var email = new LiveValidation('email', {ldelim} onlyOnSubmit: true }); 12 email.add(Validate.Presence, {ldelim} failureMessage: "{'Please enter your e-mail'|@translate}" }); 13 email.add(Validate.Email, {ldelim} failureMessage: "{'mail address must be like xxx@yyy.eee (example : jack@altern.org)'|@translate}" }); 14 {/if} 15 16 var website = new LiveValidation('website', {ldelim} onlyOnSubmit: true }); 17 website.add(Validate.Format, {ldelim} pattern: /^https?:\/\/(-\.)?([^\s\/?\.#-]+\.?)+(\/[^\s]*)?$/i, 18 failureMessage: "{'invalid website address'|@translate}"}); 19 20 var content = new LiveValidation('contentid', {ldelim} onlyOnSubmit: true }); 21 content.add(Validate.Presence, {ldelim} failureMessage: "{'Please enter a message'|@translate}" }); 22 23 jQuery("#addComment").hide(); 24 jQuery("#guestbookAdd").css('width','180px'); 25 jQuery("#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} 5 32 6 33 {if $comment_add.ACTIVATE_RATING} … … 13 40 {/footer_script} 14 41 {/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}23 42 24 43 … … 41 60 {if isset($comment_add)} 42 61 <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> 77 110 </div> 78 111 {/if} -
extensions/GuestBook/template/style.css
r17717 r20181 1 1 #guestbookAdd { 2 2 padding:15px; 3 width: 180px;3 width:550px; 4 4 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%);11 5 border-radius:5px; 12 6 border:1px solid #555; 13 7 box-shadow:5px 5px 5px rgba(0, 0, 0, 0.25); 14 color:#aaa;8 overflow:hidden; 15 9 } 16 10 … … 19 13 cursor:pointer; 20 14 text-align:center; 15 font-size:13px; 21 16 } 22 #guestbookAdd h4:hover { 23 color:#fff; 24 } 17 25 18 26 #guestbookAddtable {19 .contact table { 27 20 width:100%; 28 21 text-align:left; 29 22 } 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 } 30 41 31 #addComment { 32 margin-top:5px; 42 43 .LV_validation_message{ 44 display:block; 45 font-weight:bold; 46 margin:0 0 0 5px; 33 47 } 48 .LV_valid { 49 display:none; 50 } 51 .LV_invalid { 52 color:#cc0000; 53 } 54 .LV_invalid_field, 55 input.LV_invalid_field:hover, 56 input.LV_invalid_field:active, 57 textarea.LV_invalid_field:hover, 58 textarea.LV_invalid_field:active { 59 border: 1px solid #cc0000; 60 } 61 34 62 35 63 p.comment_count { … … 40 68 } 41 69 42 #guestbookAdd p,.commentElement p {70 .commentElement p { 43 71 text-align:left; 44 72 margin-bottom:0.5em; … … 47 75 48 76 .commentElement { 49 padding:0 ;77 padding:0 !important; 50 78 list-style:none; 51 79 text-align:left; 80 border:1px solid #555; 81 border-radius:5px; 82 margin:5px; 83 overflow:hidden; 52 84 } 53 85 .commentElement .description { 54 86 padding:7px !important; 87 min-height:0; 55 88 } 56 89 .commentHeader { 57 background: #444;90 background:rgba(127,127,127,0.5); 58 91 margin:-7px; 59 92 margin-bottom:0;
Note: See TracChangeset
for help on using the changeset viewer.