Changeset 6782 for extensions/ContestResults
- Timestamp:
- Aug 20, 2010, 12:33:47 PM (14 years ago)
- Location:
- extensions/ContestResults
- Files:
-
- 4 added
- 2 deleted
- 19 edited
Legend:
- Unmodified
- Added
- Removed
-
extensions/ContestResults/admin/config.php
r6768 r6782 8 8 $user_config = array( 9 9 'menubar_mode' => array( 10 'link' => ( $_POST['menubar_mode_link']) ? 1 : 0,11 'block' => ( $_POST['menubar_mode_block']) ? 1 : 010 'link' => (isset($_POST['menubar_mode_link'])) ? 1 : 0, 11 'block' => (isset($_POST['menubar_mode_block'])) ? 1 : 0 12 12 ), 13 13 'menubar_link' => array( 14 'menu' => ( $_POST['menubar_link_menu']) ? 1 : 0,15 'specials' => ( $_POST['menubar_link_specials']) ? 1 : 014 'menu' => (isset($_POST['menubar_link_menu'])) ? 1 : 0, 15 'specials' => (isset($_POST['menubar_link_specials'])) ? 1 : 0 16 16 ), 17 17 'menubar_block' => array( -
extensions/ContestResults/admin/new.php
r6768 r6782 11 11 // Pour les quatre zones de texte crée un tableau définissant le mode d'affichage 12 12 foreach($textareas AS $key){ 13 if(isset($_POST[$key.'_pending'])) $_POST[$key.'_display']['pending'] = true; else $_POST[$key.'_display']['pending'] =false;14 if(isset($_POST[$key.'_finished'])) $_POST[$key.'_display']['finished'] = true; else $_POST[$key.'_display']['finished'] =false;13 $_POST[$key.'_display']['pending'] = (isset($_POST[$key.'_pending'])) ? true : false; 14 $_POST[$key.'_display']['finished'] = (isset($_POST[$key.'_finished'])) ? true : false; 15 15 $_POST[$key.'_display'] = serialize($_POST[$key.'_display']); 16 16 } -
extensions/ContestResults/admin/results.php
r6768 r6782 25 25 26 26 // +-----------------------------------------------------------------------+ 27 // Suppression d'un résultat28 // +-----------------------------------------------------------------------+29 if(isset($_GET['delete_result'])){30 pwg_query('DELETE FROM ' . CR_TABLE_2 . ' WHERE contest_id = ' . $_GET['contest_id'] . ' AND image_id = ' . $_GET['delete_result'] . ';');31 redirect(CR_ADMIN . '&tab=results&contest_id=' . $_GET['contest_id']);32 }33 34 // +-----------------------------------------------------------------------+35 27 // Affichage des résultats 36 28 // +-----------------------------------------------------------------------+ … … 46 38 47 39 while($result = pwg_db_fetch_assoc($results)){ 48 $ template->append('results',array(40 $data = array( 49 41 'RANK' => $result['rank'], 50 'I D' => $result['image_id'],42 'IMAGE_ID' => $result['image_id'], 51 43 'AUTHOR' => $result['author'], 52 44 'COMMENT' => $result['comment'], 53 45 'U_DELETE' => CR_ADMIN . '&tab=results&contest_id=' . $_GET['contest_id'] . '&delete_result=' . $result['image_id'], 54 )); 46 ); 47 48 // Infos de l'image 49 $query = "SELECT id, name, file, path, tn_ext 50 FROM " . IMAGES_TABLE . " 51 WHERE id = " . $result['image_id'] . ";"; 52 $image = pwg_query($query); 53 54 if(!pwg_db_num_rows($image)){ 55 $themeconf = $template->get_template_vars('themeconf'); 56 $data['TN_SRC'] = $themeconf['admin_icon_dir'] . '/errors.png'; 57 $data['IMAGE_NAME'] = 'N/A'; 58 $page['errors'][] = l10n_dec('CR_id_unknown %d', 'CR_id_unknown %d', $result['image_id']); 59 }else{ 60 $image = pwg_db_fetch_assoc($image); 61 $data['TN_SRC'] = get_thumbnail_url($image); 62 $data['IMAGE_NAME'] = (empty($image['name'])) ? get_name_from_file($image['file']) : $image['name']; 63 } 64 65 $template->append('results', $data); 55 66 } 56 67 -
extensions/ContestResults/admin/template/config.tpl
r6768 r6782 1 {html_head}2 <link rel="stylesheet" type="text/css" href="{$CR_PATH}admin/template/style.css">3 <style>4 td {ldelim} width:300px; }5 </style>6 {/html_head}7 8 1 {known_script id="jquery" src=$ROOT_URL|@cat:"themes/default/js/jquery.packed.js"} 9 2 10 <script type="text/javascript"> 11 function ToggleConfig(sel, section){ldelim} 12 var obj = $('#config_'+section); 13 if(sel.checked){ldelim} 14 obj.slideDown("slow"); 15 }else{ldelim} 16 obj.slideUp("slow"); 3 {html_head} 4 <link rel="stylesheet" type="text/css" href="{$CR_PATH}admin/template/style.css"> 5 <style> 6 tr td:first-child {ldelim} 7 max-width:300px; 8 min-width:300px; 17 9 } 18 } 19 </script> 10 </style> 11 <script type="text/javascript"> 12 function ToggleConfig(sel, section){ldelim} 13 var obj = $('#config_'+section); 14 if(sel.checked){ldelim} 15 obj.slideDown("slow"); 16 }else{ldelim} 17 obj.slideUp("slow"); 18 } 19 } 20 </script> 21 {/html_head} 20 22 21 23 <h2 style="float:right;top:-24px;position:relative;font-style:italic;margin-bottom:-20px;font-size:12px;font-weight:normal;">{$CR_VERSION}</h2> … … 33 35 <td> 34 36 <label><input type="checkbox" name="menubar_mode_link" value="true" onchange="ToggleConfig(this, 'link');" {$MODE_LINK}> {'CR_menubar_link'|@translate}</label> 35 < label><input type="checkbox" name="menubar_mode_block" value="true" onchange="ToggleConfig(this, 'block');" {$MODE_BLOCK}> {'CR_menubar_block'|@translate}</label>37 <br><label><input type="checkbox" name="menubar_mode_block" value="true" onchange="ToggleConfig(this, 'block');" {$MODE_BLOCK}> {'CR_menubar_block'|@translate}</label> 36 38 </td> 37 39 </tr> … … 44 46 <td> 45 47 <label><input type="checkbox" name="menubar_link_menu" value="true" {$LINK_MENU}> {'Menu'|@translate}</label> 46 < label><input type="checkbox" name="menubar_link_specials" value="true" {$LINK_SPECIALS}> {'Specials'|@translate}</label>48 <br><label><input type="checkbox" name="menubar_link_specials" value="true" {$LINK_SPECIALS}> {'Specials'|@translate}</label> 47 49 </td> 48 50 </tr> -
extensions/ContestResults/admin/template/manage.tpl
r6768 r6782 1 1 {html_head} 2 <link rel="stylesheet" type="text/css" href="{$CR_PATH}admin/template/style.css">2 <link rel="stylesheet" type="text/css" href="{$CR_PATH}admin/template/style.css"> 3 3 {/html_head} 4 4 … … 20 20 <ul class="categoryUl"> 21 21 {foreach from=$contests_pending item=contest name=pending_loop} 22 <li class="categoryLi {if $smarty.foreach.pending_loop.index is odd}virtual_cat{/if} {if $contest.VISIBLE == 0} hidden{/if}">22 <li class="categoryLi {if $smarty.foreach.pending_loop.index is odd}virtual_cat{/if} {if $contest.VISIBLE == 0}novisible{/if}"> 23 23 <ul class="categoryActions"> 24 24 <li> -
extensions/ContestResults/admin/template/new.tpl
r6768 r6782 1 {html_head}2 <link rel="stylesheet" type="text/css" href="{$CR_PATH}admin/template/style.css">3 {/html_head}4 5 1 {known_script id="jquery" src=$ROOT_URL|@cat:"themes/default/js/jquery.packed.js"} 6 2 {known_script id="jquery.cluetip" src=$ROOT_URL|@cat:"themes/default/js/plugins/jquery.cluetip.packed.js"} … … 9 5 {include file='include/datepicker.inc.tpl'} 10 6 11 <script type="text/javascript"> 12 $(function() {ldelim} 13 $("#DateBegin").datepicker({ldelim}dateFormat:"yy-mm-dd", firstDay:1}); 14 $("#DateEnd").datepicker({ldelim}dateFormat:"yy-mm-dd", firstDay:1}); 15 }); 7 {html_head} 8 <link rel="stylesheet" type="text/css" href="{$CR_PATH}admin/template/style.css"> 9 <style type="text/css"> 10 .cluetip:after {ldelim} 11 content:url('{$themeconf.admin_icon_dir}/help.png'); 12 } 13 </style> 14 <script type="text/javascript"> 15 $(function() {ldelim} 16 $('#DateBegin').datepicker({ldelim}dateFormat:'yy-mm-dd', firstDay:1}); 17 $('#DateEnd').datepicker({ldelim}dateFormat:'yy-mm-dd', firstDay:1}); 18 }); 16 19 17 jQuery().ready(function(){ldelim} 18 jQuery('.cluetip').cluetip({ldelim} 19 width: 550, 20 splitTitle: '|' 20 jQuery().ready(function(){ldelim} 21 jQuery('.cluetip').cluetip({ldelim} 22 width: 550, 23 splitTitle: '|' 24 }); 21 25 }); 22 });23 </script> 26 </script> 27 {/html_head} 24 28 25 29 <h2 style="float:right;top:-24px;position:relative;font-style:italic;margin-bottom:-20px;font-size:12px;font-weight:normal;">{$CR_VERSION}</h2> -
extensions/ContestResults/admin/template/results.tpl
r6768 r6782 7 7 8 8 {html_head} 9 <link rel="stylesheet" type="text/css" href="{$CR_PATH}admin/template/style.css"> 9 <link rel="stylesheet" type="text/css" href="{$CR_PATH}admin/template/style.css"> 10 <script type="text/javascript" src="{$CR_PATH}admin/template/vtip.js"></script> 10 11 11 <script type="text/javascript"> 12 function CreateResultField(j, new_contest){ldelim} 13 // Si il n'y a aucun résultats on efface le message 14 if(new_contest) document.getElementById('categoryUl').innerHTML = ''; 12 <script type="text/javascript"> 13 // AJOUTE UN CHAMP DE RESULTAT 14 function CreateResultField(j, new_contest){ldelim} 15 // Si il n'y a aucun résultats on efface le message 16 if(new_contest) document.getElementById('categoryUl').innerHTML = ''; 17 18 // Ajoute à la fin de la liste une nouvelle ligne de résultat vide 19 var new_result = document.createElement('li'); 20 new_result.setAttribute('id', 'result_'+(j)); 21 new_result.setAttribute('class', 'categoryLi virtual_cat'); 22 document.getElementById('categoryUl').appendChild(new_result); 23 24 // Contenu de la ligne 25 new_result.innerHTML = '<ul class="categoryActions"> '+ 26 '<li> '+ 27 '<a href="#" title="{'CR_delete_result'|@translate}" onclick="DeleteResultField('+ j +');return false;"> '+ 28 '<img src="{$themeconf.admin_icon_dir}/category_delete.png" class="button" alt="{'CR_delete_result'|@translate}"/> '+ 29 '</a> '+ 30 '</li> '+ 31 '</ul> '+ 32 '<p> '+ 33 '<img src="{$themeconf.admin_icon_dir}/cat_move.png" class="button drag_button" style="display:none;" title="{'Drag to re-order'|@translate}"> '+ 34 '{'CR_image_no'|@translate} <input type="text" size="6" name="results['+ j +'][image_id]" value="" onkeyup="UpdatePreview('+ j +', this);"/> '+ 35 '<span id="preview-'+ j +'"> '+ 36 '<span class="vtip" title="<img src=\'{$themeconf.admin_icon_dir}/errors.png\'/><br>N/A"> '+ 37 '<img src="{$CR_PATH}admin/template/image/images.png"/> '+ 38 '</span> '+ 39 '</span> '+ 40 '{'CR_author'|@translate} : <input type="text" name="results['+ j +'][author]" value=""/> '+ 41 '<textarea class="result_comment" name="results['+ j +'][comment]"></textarea> '+ 42 '</p> '+ 43 '<p class="catPos">{'CR_rank'|@translate} : <input type="text" name="results['+ j +'][rank]" value=""/></p>'; 44 45 // Remplace le lien de création 46 document.getElementById('AddLink').innerHTML = '<input class="submit" type="submit" onclick="CreateResultField('+ (j+1) +');return false;" value="{'CR_addfield'|@translate}"/>'; 47 48 // Réinitiliase les fonctions jQuery 49 jQuery('.catPos').hide(); 50 jQuery('.drag_button').show(); 51 jQuery('.categoryLi').css('cursor', 'move'); 52 jQuery('textarea').autogrow(); 53 jQuery('textarea').css('overflow-y', 'hidden'); 54 vtip(); 55 } 15 56 16 // Ajoute à la fin de la liste une nouvelle ligne de résultat vide 17 var new_result = document.createElement('li'); 18 new_result.setAttribute('id', 'result_'+(j)); 19 new_result.setAttribute('class', 'categoryLi virtual_cat'); 57 // SUPPRIME UN CHAMP DE RESULTAT (champs non enregistrés uniquement) 58 function DeleteResultField(k){ldelim} 59 var result = document.getElementById('result_'+k); 60 var parent = result.parentNode; 61 parent.removeChild(result); 62 } 63 64 jQuery().ready(function(){ldelim} 65 // Drag-and-Drop 66 jQuery('.catPos').hide(); 67 jQuery('.drag_button').show(); 68 jQuery('.categoryLi').css('cursor', 'move'); 69 jQuery('.categoryUl').sortable({ldelim} 70 axis: 'y', 71 opacity: 0.8 72 }); 73 jQuery('#categoryOrdering').submit(function(){ldelim} 74 ar = jQuery('.categoryUl').sortable('toArray'); 75 for(i=0; i<ar.length; i++) {ldelim} 76 cat = ar[i].split('result_'); 77 document.getElementsByName('results[' + cat[1] + '][rank]')[0].value = i+1; 78 } 79 }); 80 // Cluetip 81 jQuery('.cluetip').cluetip({ldelim} 82 width: 550, 83 splitTitle: '|' 84 }); 85 }); 20 86 21 document.getElementById('categoryUl').appendChild(new_result); 22 23 new_result.innerHTML = '<ul class="categoryActions"> '+ 24 '<li> '+ 25 '<a href="#" title="{'CR_delete_result'|@translate}" onclick="DeleteResultField('+j+');return false;"> '+ 26 '<img src="{$themeconf.admin_icon_dir}/category_delete.png" class="button" alt="{'CR_delete_result'|@translate}" /> '+ 27 '</a> '+ 28 '</li> '+ 29 '</ul> '+ 30 '<p> '+ 31 '<img src="{$themeconf.admin_icon_dir}/cat_move.png" class="button drag_button" style="display:none;" alt="{'Drag to re-order'|@translate}" title="{'Drag to re-order'|@translate}"> '+ 32 '{'CR_image_no'|@translate} <input type="text" size="6" name="results['+j+'][image_id]" value=""/> '+ 33 '{'CR_author'|@translate} : <input type="text" name="results['+j+'][author]" value=""/> '+ 34 '<textarea class="result_comment" name="results['+j+'][comment]">{'CR_comment'|@translate}</textarea> '+ 35 '</p> '+ 36 '<p class="catPos">{'CR_rank'|@translate} : <input type="text" name="results['+j+'][rank]" value=""/></p>'; 37 38 // Remplace le lien de création 39 document.getElementById('AddLink').innerHTML = '<input class="submit" type="submit" onclick="CreateResultField('+(j+1)+');return false;" value="{'CR_addfield'|@translate}"/>'; 40 41 // Réinitiliase les fonctions jQuery 42 jQuery(".catPos").hide(); 43 jQuery(".drag_button").show(); 44 jQuery(".categoryLi").css("cursor","move"); 45 jQuery('textarea').autogrow(); 46 jQuery('textarea').css('overflow-y', 'hidden'); 47 } 48 49 function DeleteResultField(k){ldelim} 50 var result = document.getElementById('result_'+k); 51 var parent = result.parentNode; 52 parent.removeChild(result); 53 } 54 55 jQuery().ready(function(){ldelim} 56 jQuery(".catPos").hide(); 57 jQuery(".drag_button").show(); 58 jQuery(".categoryLi").css("cursor","move"); 59 jQuery(".categoryUl").sortable({ldelim} 60 axis: "y", 61 opacity: 0.8 62 }); 63 jQuery("#categoryOrdering").submit(function(){ldelim} 64 ar = jQuery('.categoryUl').sortable('toArray'); 65 for(i=0;i<ar.length;i++) {ldelim} 66 cat = ar[i].split('result_'); 67 document.getElementsByName('results[' + cat[1] + '][rank]')[0].value = i+1; 68 } 69 }); 70 jQuery('.cluetip').cluetip({ldelim} 71 width: 550, 72 splitTitle: '|' 73 }); 74 }); 75 </script> 87 // MET A JOUR LA PREVISUALISATION DE L'IMAGE 88 function UpdatePreview(image_id, input){ldelim} 89 $.get("{$CR_PATH}admin/get_tn.php", {ldelim}image_id: input.value}, 90 function success(data){ldelim} 91 document.getElementById('preview-'+image_id).innerHTML = '<span class="vtip" title="'+ data + '">'+ 92 '<img src="{$CR_PATH}admin/template/image/images.png"/>'+ 93 '</span>'; 94 vtip(); 95 } 96 ); 97 } 98 </script> 99 <style type="text/css"> 100 .cluetip:after {ldelim} 101 content:url('{$themeconf.admin_icon_dir}/help.png'); 102 } 103 </style> 76 104 {/html_head} 77 105 … … 81 109 <h2> 82 110 {'CR_results_tab'|@translate|cat:' : '|cat:$NAME} 83 <span class="cluetip" title="{'CR_results_tab'|@translate}|{'CR_help_results'|@translate}{'CR_help_lang'|@translate}"> 84 <img src="{$ROOT_URL}{$themeconf.admin_icon_dir}/help.png"/> 85 </span> 111 <span class="cluetip" title="{'CR_results_tab'|@translate}|{'CR_help_results'|@translate}{'CR_help_lang'|@translate}"></span> 86 112 </h2> 87 113 </div> … … 92 118 {if isset($results)} 93 119 {foreach from=$results item=result name=result_loop} 94 <li class="categoryLi " id="result_{$i}">120 <li class="categoryLi {if $result.IMAGE_NAME == 'N/A'}error_cat{/if}" id="result_{$i}"> 95 121 <ul class="categoryActions"> 96 122 <li> 97 <a href=" {$result.U_DELETE}">98 <img src="{$themeconf.admin_icon_dir}/category_delete.png" class="button" alt="{'CR_delete_result'|@translate}" 123 <a href="#" title="{'CR_delete_result'|@translate}" onclick="DeleteResultField({$i});return false;"> 124 <img src="{$themeconf.admin_icon_dir}/category_delete.png" class="button" alt="{'CR_delete_result'|@translate}"/> 99 125 </a> 100 126 </li> 101 127 </ul> 102 128 <p> 103 <img src="{$themeconf.admin_icon_dir}/cat_move.png" class="button drag_button" style="display:none;" alt="{'Drag to re-order'|@translate}" title="{'Drag to re-order'|@translate}"> 104 {'CR_image_no'|@translate} <input type="text" size="6" name="results[{$i}][image_id]" value="{$result.ID}"/> 129 <img src="{$themeconf.admin_icon_dir}/cat_move.png" class="button drag_button" style="display:none;" title="{'Drag to re-order'|@translate}"> 130 {'CR_image_no'|@translate} <input type="text" size="6" name="results[{$i}][image_id]" value="{$result.IMAGE_ID}" onkeyup="UpdatePreview({$i}, this);"/> 131 <span id="preview-{$i}"> 132 <span class="vtip" title="<img src='{$result.TN_SRC}'/><br>{$result.IMAGE_NAME}"> 133 <img src="{$CR_PATH}admin/template/image/images.png"/> 134 </span> 135 </span> 105 136 {'CR_author'|@translate} : <input type="text" name="results[{$i}][author]" value="{$result.AUTHOR}"/> 106 137 <textarea class="result_comment" name="results[{$i}][comment]">{$result.COMMENT}</textarea> … … 116 147 117 148 <p> 118 <span id="AddLink"><input class="submit" type="submit" onclick="CreateResultField({$i}{if !isset($results)}, true{/if});return false;" value="{'CR_addfield'|@translate}"/></span>119 149 <input type="hidden" name="contest_id" value="{$CONTEST_ID}"/> 120 150 <input class="submit" type="submit" value="{'Submit'|@translate}" name="results_modify"/> 151 <span id="AddLink"><input class="submit" type="submit" onclick="CreateResultField({$i}{if !isset($results)}, true{/if});return false;" value="{'CR_addfield'|@translate}"/></a> 121 152 </p> 122 153 </form> -
extensions/ContestResults/admin/template/style.css
r6768 r6782 12 12 } 13 13 14 LI.categoryLi.novisible {14 li.categoryLi.novisible { 15 15 opacity:0.5; 16 16 } 17 17 18 li.categoryLi.error_cat { 19 border:1px solid #800; 20 } 21 18 22 table { 19 width: 600px;23 width:80%; 20 24 } 21 25 td { 22 width: 150px;26 width:25%; 23 27 white-space: nowrap; 24 28 } … … 31 35 .title.cluetip:after { 32 36 margin-left:5px; 33 content:url('image/help.png');34 37 vertical-align:top; 35 38 } … … 44 47 background-position:center right; 45 48 } 49 50 .vtip { 51 cursor:help; 52 } 53 p#vtip { 54 display: none; 55 position: absolute; 56 padding: 10px; 57 left: 5px; 58 font-size: 0.8em; 59 background-color:#222; 60 border:1px solid #666; 61 border-radius:4px; 62 -moz-border-radius:4px; 63 z-index: 9999; 64 } -
extensions/ContestResults/changelog.txt
r6768 r6782 1 1 1.1 2 2 - Add menu block/links + configuration 3 - Add results preview 3 4 - Code revision 5 - ExtendedDescription is needed to use multilanguage descriptions 4 6 5 7 1.0.a -
extensions/ContestResults/include/cr_comment_picture.php
r6768 r6782 24 24 $comment = null; 25 25 while($result = pwg_db_fetch_assoc($results)){ 26 // rang amélioré26 // Rang amélioré 27 27 if($result['rank'] <= 3) $result['rank'] = l10n('CR_order_'.$result['rank']); 28 28 else $result['rank'] .= l10n('CR_order_sup'); -
extensions/ContestResults/include/cr_page.php
r6768 r6782 12 12 // Infos du concours 13 13 $query = "SELECT * FROM " . CR_TABLE_1 . " WHERE id=" . $page['contest'] . ";"; 14 $contest = pwg_db_fetch_assoc(pwg_query($query)); 14 $results = pwg_query($query); 15 $contest = pwg_db_fetch_assoc($results); 15 16 16 if( $contest['visible'] OR is_admin()){17 if(pwg_db_num_rows($results) AND ($contest['visible'] OR is_admin())){ 17 18 // Paramètres généraux 18 19 $template->assign(array( … … 56 57 WHERE i.id = " . $result['image_id'] . ";"; 57 58 $image = pwg_db_fetch_assoc(pwg_query($query)); 58 59 // Nom de l'image60 if(empty($image['name']))61 $image['name'] = get_name_from_file($image['file']);62 59 63 60 // retrieving category informations … … 76 73 // Template 77 74 if(in_array($result['rank'], array(1,2,3))){ 78 $ array= array(75 $data = array( 79 76 'RANK' => $result ['rank'], 80 77 'AUTHOR' => $result['author'], 81 78 'IMAGE_SRC' => str_replace('thumbnail/'.$conf['prefix_thumbnail'], null, get_thumbnail_url($image)), 82 79 'IMAGE_URL' => $image['url'], 83 'IMAGE_NAME' => $image['name'],80 'IMAGE_NAME' => (empty($image['name'])) ? get_name_from_file($image['file']) : $image['name'], 84 81 'COMMENT' => CR_cut_string(trigger_event('render_CR_content', $result['comment']), 450), 85 82 ); 86 83 }else{ 87 $ array= array(84 $data = array( 88 85 'RANK' => $result ['rank'], 89 86 'AUTHOR' => $result['author'], 90 87 'TN_SRC' => get_thumbnail_url($image), 91 88 'IMAGE_URL' => $image['url'], 92 'IMAGE_NAME' => $image['name'],89 'IMAGE_NAME' => (empty($image['name'])) ? get_name_from_file($image['file']) : $image['name'], 93 90 ); 94 91 } 95 $template->append('RESULTS', $ array);92 $template->append('RESULTS', $data); 96 93 } 97 94 } -
extensions/ContestResults/include/functions.php
r6768 r6782 2 2 if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!'); 3 3 4 if(!function_exists('get_user_language_desc')){ 5 function get_user_language_desc($desc){ 6 global $user; 7 $user_lang = substr($user['language'], 0, 2); 8 9 if(!substr_count(strtolower($desc), '[lang=' . $user_lang . ']')){ 10 $user_lang = 'default'; 11 } 12 13 if(substr_count(strtolower($desc), '[lang=' . $user_lang . ']')){ 14 // la balise avec la langue de l'utilisateur a été trouvée 15 $patterns[] = '#(^|\[/lang\])(.*?)(\[lang=(' . $user_lang . '|all)\]|$)#is'; 16 $replacements[] = ''; 17 $patterns[] = '#\[lang=(' . $user_lang . '|all)\](.*?)\[/lang\]#is'; 18 $replacements[] = '\\1'; 19 20 }else{ 21 // la balise avec la langue de l'utilisateur n'a pas été trouvée 22 // On prend tout ce qui est hors balise 23 $patterns[] = '#\[lang=all\](.*?)\[/lang\]#is'; 24 $replacements[] = '\\1'; 25 $patterns[] = '#\[lang=.*\].*\[/lang\]#is'; 26 $replacements[] = ''; 27 } 28 return preg_replace($patterns, $replacements, $desc); 29 } 30 } 31 32 function CR_cut_string($string, $lg){ 33 if(strlen($string) > $lg){ 34 $string = substr($string, 0, $lg); 35 $last_space = strrpos($string,' '); 36 return substr($string, 0, $last_space).'...'; 4 // Racourcis un texte et ajoute une ellipse 5 function CR_cut_string($string, $limit){ 6 include_once(CR_PATH . 'include/cutstring.class.php'); 7 if(strlen(str_replace("\r\n", "\n", strip_tags($string))) > $limit){ 8 $output = new HtmlCutString($string, $limit); 9 return ($output->cut()).'...'; 37 10 }else{ 38 11 return $string; 39 12 } 40 13 } 14 15 // Recupère le nom d'un coucours à partir de l'id 16 function get_contest_name($id){ 17 $query = pwg_query("SELECT name FROM " . CR_TABLE_1 . " WHERE id = " . $id . ";"); 18 if(pwg_db_num_rows($query)){ 19 $result = pwg_db_fetch_assoc($query); 20 return $result['name']; 21 }else{ 22 return null; 23 } 24 } 41 25 ?> -
extensions/ContestResults/language/en_UK/plugin.lang.php
r6769 r6782 39 39 $lang['CR_nopublic'] = 'This page is not available for the public !'; 40 40 $lang['CR_notavailable'] = 'This contest is not available'; 41 $lang['CR_id_unknown %d'] = "The picture n°%d doesn't exist"; 41 42 42 43 $lang['CR_order_1'] = '1<sup>st</sup>'; … … 51 52 $lang['CR_menubar_block_number'] = 'Quantity of contests to display in the block'; 52 53 53 $lang['CR_help_lang'] = "<b>You can use HTML and multilanguage descriptions :</b>54 <span style='font-size:0.8em;'><br/><br/>55 Multilanguage descriptions are placed between [lang=xx] and [/lang] tags, where xx is the language code (for example en, es, fr). There is also 2 special languages : [lang=default] and [lang=all].56 <br/><br/>57 Special language <i>default</i> : the default description will be used if the description is not available in the connected user selected language. If [lang=default] does not exists, anything outside the [lang] tags will be considered as the default description.58 <br/><br/>59 Special language <i>all</i> : anything inside [lang=all] will be included in the description, anywhat the connected user defined language is. This is mainly useful to include HTML/JavaScript code inside a description.";60 54 $lang['CR_help_lang'] = ($ED['state'] == 'active') ? "<b>You can use HTML and multilanguage descriptions.</b>" : "<b>You can use HTML.</b>"; 55 // <span style='font-size:0.8em;'><br/><br/> 56 // Multilanguage descriptions are placed between [lang=xx] and [/lang] tags, where xx is the language code (for example en, es, fr). There is also 2 special languages : [lang=default] and [lang=all]. 57 // <br/><br/> 58 // Special language <i>default</i> : the default description will be used if the description is not available in the connected user selected language. If [lang=default] does not exists, anything outside the [lang] tags will be considered as the default description. 59 // <br/><br/> 60 // Special language <i>all</i> : anything inside [lang=all] will be included in the description, anywhat the connected user defined language is. This is mainly useful to include HTML/JavaScript code inside a description."; 61 61 62 $lang['CR_help_title'] = ""; 62 $lang['CR_help_status'] = "When the contest is <i>Finished</i> the results are displayed on the contest page and the marker <span style='color:#a00;'>(Finished)</span> is activated. 63 <b r/><b>Caution :</b> the contest doesn't switch automaticaly to the status 'finished' when the end date is reached !";63 $lang['CR_help_status'] = "When the contest is <i>Finished</i> the results are displayed on the contest page and the marker <span style='color:#a00;'>(Finished)</span> is activated.<br/> 64 <b>Caution :</b> the contest doesn't switch automaticaly to the status 'finished' when the end date is reached !"; 64 65 $lang['CR_help_visible'] = "If the contest is 'unvisible' only <b>administrators</b> can see it."; 65 $lang['CR_help_summary'] = "The summary is only displayed in the general contest page.<br/><br/>"; 66 $lang['CR_help_textareas'] = "These four areas allow you to describe the contest. 67 <br/>For each area you can choose the displaying according to the contest status.<br/><br/>"; 68 $lang['CR_help_results'] = "Descriptions are displayed on each pictures pages and on the contest page for the first three. 69 <br/>Sort elements by drag-and-drop them.<br/><br/>"; 66 $lang['CR_help_summary'] = "The summary is only displayed in the general contest page.<br/> 67 <br/>"; 68 $lang['CR_help_textareas'] = "- These four areas allow you to describe the contest.<br/> 69 - For each area you can choose the displaying according to the contest status.<br/> 70 <br/>"; 71 $lang['CR_help_results'] = "- Descriptions are displayed on each pictures pages and on the contest page for the first three.<br/> 72 - Sort elements by drag-and-drop them.<br/> 73 - Hover this icon <img src='".CR_PATH."admin/template/image/images.png'/> to view the picture that corresponds to the id.<br/> 74 <br/>"; 75 70 76 ?> -
extensions/ContestResults/language/fr_FR/plugin.lang.php
r6768 r6782 39 39 $lang['CR_nopublic'] = "Cette page n'est pas accessible au public !"; 40 40 $lang['CR_notavailable'] = "Ce concours n'est pas disponible"; 41 $lang['CR_id_unknown %d'] = "L'image n°%d n'existe pas"; 41 42 42 43 $lang['CR_order_1'] = '1<sup>er</sup>'; … … 51 52 $lang['CR_menubar_block_number'] = 'Nombre de concours à afficher dans le bloc'; 52 53 53 $lang['CR_help_lang'] = "<b>Vous pouvez utiliser du HTML et les descriptions multilingues :</b>54 <span style='font-size:0.8em;'><br/><br/>55 Les descriptions multilingues se font entre les balises [lang=xx] et [/lang], ou xx est le code de la langue (par exemple fr, en, es, it, etc....) Il existe également 2 balises spéciales: [lang=default] et [lang=all].56 <br/><br/>57 Balise <i>default</i> : la description par défaut sera utilisée si la description dans la langue de l'utilisateur n'est pas définie. Si [lang=default] n'existe pas, tout ce qui est situé en dehors des balises de langues sera considéré comme description par défaut.58 <br/><br/>59 Balise <i>all</i> : tout ce qui est situé entre les balises [lang=all] et [/lang] sera inclus dans la description, quelle que soit la langue de l'utilisateur. Ceci est particulièrement pratique pour inclure du code html ou javascript dans une description.</span>";60 54 $lang['CR_help_lang'] = ($ED['state'] == 'active') ? "<b>Vous pouvez utiliser du HTML et les descriptions multilingues.</b>" : "<b>Vous pouvez utiliser du HTML.</b>"; 55 // <span style='font-size:0.8em;'><br/><br/> 56 // Les descriptions multilingues se font entre les balises [lang=xx] et [/lang], ou xx est le code de la langue (par exemple fr, en, es, it, etc....) Il existe également 2 balises spéciales: [lang=default] et [lang=all]. 57 // <br/><br/> 58 // Balise <i>default</i> : la description par défaut sera utilisée si la description dans la langue de l'utilisateur n'est pas définie. Si [lang=default] n'existe pas, tout ce qui est situé en dehors des balises de langues sera considéré comme description par défaut. 59 // <br/><br/> 60 // Balise <i>all</i> : tout ce qui est situé entre les balises [lang=all] et [/lang] sera inclus dans la description, quelle que soit la langue de l'utilisateur. Ceci est particulièrement pratique pour inclure du code html ou javascript dans une description.</span>"; 61 61 62 $lang['CR_help_title'] = ""; 62 $lang['CR_help_status'] = "Quand le concours est <i>Terminé</i> les résultats sont affichés sur la page du concours et l'indicateur <span style='color:#a00;'>(Terminé)</span> s'active. 63 <b r/><b>Attention :</b> le concours ne passe pas automatiquement en status terminé quand la date de fin est atteinte !";63 $lang['CR_help_status'] = "Quand le concours est <i>Terminé</i> les résultats sont affichés sur la page du concours et l'indicateur <span style='color:#a00;'>(Terminé)</span> s'active.<br/> 64 <b>Attention :</b> le concours ne passe pas automatiquement en status terminé quand la date de fin est atteinte !"; 64 65 $lang['CR_help_visible'] = "Si le concours est 'invisible' seuls les <b>administrateurs</b> peuvent le voir."; 65 $lang['CR_help_summary'] = "Le résumé n'est affiché que sur la page regroupant tous les concours.<br/><br/>"; 66 $lang['CR_help_textareas'] = "Ces quatres zones de texte vous permettent de décrire le concours. 67 <br/>Pour chaque zone vous pouvez choisir son affichage selon le status du concours.<br/><br/>"; 68 $lang['CR_help_results'] = "Les descriptions seront affichées sur les pages de chaque images et sur la page du concours pour les trois premiers. 69 <br/>Triez les éléments par glisser-déposer.<br/><br/>"; 66 $lang['CR_help_summary'] = "Le résumé n'est affiché que sur la page regroupant tous les concours.<br/> 67 <br/>"; 68 $lang['CR_help_textareas'] = "- Ces quatres zones de texte vous permettent de décrire le concours.<br/> 69 - Pour chaque zone vous pouvez choisir son affichage selon le status du concours.<br/> 70 <br/>"; 71 $lang['CR_help_results'] = "- Les descriptions seront affichées sur les pages de chaque images et sur la page du concours pour les trois premiers.<br/> 72 - Triez les éléments par glisser-déposer.<br/> 73 - Survolez l'icône <img src='".CR_PATH."admin/template/image/images.png'/> pour voir l'image correspondante à l'identifiant entré.<br/> 74 <br/>"; 75 70 76 ?> -
extensions/ContestResults/main.inc.php
r6768 r6782 25 25 define('CR_PUBLIC', make_index_url(array('section' => 'contests')) . '/'); 26 26 27 28 // +-----------------------------------------------------------------------+ 29 // Trigger 30 // +-----------------------------------------------------------------------+ 31 add_event_handler('get_admin_plugin_menu_links', 'CR_admin_menu'); // Lien d'administration 32 add_event_handler('loc_end_section_init', 'CR_section_init'); // Paramètre URL 33 add_event_handler('loc_end_index', 'CR_index'); // Contenu du la page 34 add_event_handler('loc_end_picture', 'CR_comment_picture', 10); // Commentaire sur la page image 35 36 $ED = pwg_db_fetch_assoc(pwg_query("SELECT state FROM " . PLUGINS_TABLE . " WHERE id = 'ExtendedDescription';")); 37 if($ED['state'] == 'active') add_event_handler('render_CR_content', 'get_user_language_desc'); // Textes multilangues 38 39 // Langues 40 load_language('plugin.lang', CR_PATH); 41 27 42 // Gestion du menu 28 43 include(CR_PATH . 'include/cr_menubar.php'); … … 39 54 // Paramètre URL 40 55 function CR_section_init(){ 41 global $tokens, $page; 42 load_language('plugin.lang', CR_PATH); 56 global $tokens, $page, $conf; 57 include(CR_PATH . 'include/functions.php'); 58 43 59 if($tokens[0] == 'contests'){ 44 60 $page['section'] = 'contests'; … … 47 63 $page['contest'] = explode('-', $tokens[1]); 48 64 $page['contest'] = $page['contest'][0]; 49 $page['title'] .= trigger_event('render_CR_content', get_contest_name($page['contest']));65 $page['title'] .= $conf['level_separator'] . trigger_event('render_CR_content', get_contest_name($page['contest'])); 50 66 } 51 67 } … … 54 70 // Contenu du la page 55 71 function CR_index(){ 56 global $template, $page, $conf , $menu;72 global $template, $page, $conf; 57 73 if(isset($page['section']) and $page['section'] == 'contests'){ 58 include(CR_PATH . 'include/functions.php');59 74 if(isset($page['contest'])) 60 75 include(CR_PATH . 'include/cr_page.php'); … … 67 82 function CR_comment_picture(){ 68 83 global $page, $template, $conf; 69 include(CR_PATH . 'include/functions.php');70 84 include(CR_PATH . 'include/cr_comment_picture.php'); 71 85 } 72 86 73 function get_contest_name($contest){74 global $conf;75 $query = pwg_query("SELECT name FROM " . CR_TABLE_1 . " WHERE id = " . $contest . ";");76 if(pwg_db_num_rows($query)){77 $result = pwg_db_fetch_assoc($query);78 return $conf['level_separator'] . $result['name'];79 }else{80 return null;81 }82 }83 84 add_event_handler('get_admin_plugin_menu_links', 'CR_admin_menu'); // Lien d'administration85 add_event_handler('loc_end_section_init', 'CR_section_init'); // Paramètre URL86 add_event_handler('loc_end_index', 'CR_index'); // Contenu du la page87 add_event_handler('loc_end_picture', 'CR_comment_picture', 10); // Ajoute le commentaire sur la page image88 add_event_handler('render_CR_content', 'get_user_language_desc'); // Textes multilangues89 90 87 ?> -
extensions/ContestResults/maintain.inc.php
r6770 r6782 51 51 pwg_query($query); 52 52 53 if(!isset($conf['ContestResults'])){ 54 $query = "INSERT INTO " . CONFIG_TABLE . "(param,value,comment) VALUES('ContestResults', '" . default_config . "', 'Parametres du plugin ContestResults');"; 55 pwg_query($query); 56 } 53 $query = "INSERT INTO " . CONFIG_TABLE . "(param,value,comment) VALUES('ContestResults', '" . default_config . "', 'Parametres du plugin ContestResults');"; 54 pwg_query($query); 57 55 } 58 56 59 57 function plugin_activate(){ 58 global $conf; 59 60 // compatibilité avec les versions < 1.1 60 61 if(!isset($conf['ContestResults'])){ 61 62 $query = "INSERT INTO " . CONFIG_TABLE . "(param,value,comment) VALUES('ContestResults', '" . default_config . "', 'Parametres du plugin ContestResults');"; -
extensions/ContestResults/template/cr_main.tpl
r6768 r6782 13 13 <h2>{'Contests'|@translate}</h2> 14 14 </div> <!-- titrePage --> 15 15 {if !isset($contests_pending) AND !isset($contests_finished)} 16 <div class="nopublic" style="margin-bottom:200px;"> 17 {'CR_no_contest'|@translate} 18 </div> 19 {/if} 16 20 {if isset($contests_pending)} 17 21 <ul class="thumbnailCategories"> -
extensions/ContestResults/template/cr_page.tpl
r6768 r6782 1 1 {html_head} 2 <link rel="stylesheet" type="text/css" href="{$CR_PATH}template/style.css">2 <link rel="stylesheet" type="text/css" href="{$CR_PATH}template/style.css"> 3 3 {/html_head} 4 4 … … 20 20 </div> <!-- titrePage --> 21 21 22 {if $VISIBLE == 0}22 {if !$VISIBLE} 23 23 <div class="nopublic"> 24 24 {'CR_nopublic'|@translate} -
extensions/ContestResults/template/style.css
r6768 r6782 11 11 } 12 12 13 div.thumbnailCategory.novisible {14 opacity:0.4;15 }16 17 13 .results { 18 14 overflow:hidden; 19 15 white-space:nowrap; 16 } 17 18 div.thumbnailCategory.novisible { 19 opacity:0.4; 20 20 } 21 21
Note: See TracChangeset
for help on using the changeset viewer.