Changeset 6782


Ignore:
Timestamp:
Aug 20, 2010, 12:33:47 PM (14 years ago)
Author:
mistic100
Message:

Fixs some errors. Add results previews. Code revision.

Location:
extensions/ContestResults
Files:
4 added
2 deleted
19 edited

Legend:

Unmodified
Added
Removed
  • extensions/ContestResults/admin/config.php

    r6768 r6782  
    88        $user_config = array(
    99                'menubar_mode' => array(
    10                         'link' => ($_POST['menubar_mode_link']) ? 1 : 0,
    11                         'block' => ($_POST['menubar_mode_block']) ? 1 : 0
     10                        'link' => (isset($_POST['menubar_mode_link'])) ? 1 : 0,
     11                        'block' => (isset($_POST['menubar_mode_block'])) ? 1 : 0
    1212                ),
    1313                'menubar_link' => array(
    14                         'menu' => ($_POST['menubar_link_menu']) ? 1 : 0,
    15                         'specials' => ($_POST['menubar_link_specials']) ? 1 : 0
     14                        'menu' => (isset($_POST['menubar_link_menu'])) ? 1 : 0,
     15                        'specials' => (isset($_POST['menubar_link_specials'])) ? 1 : 0
    1616                ),
    1717                'menubar_block' => array(
  • extensions/ContestResults/admin/new.php

    r6768 r6782  
    1111        // Pour les quatre zones de texte crée un tableau définissant le mode d'affichage
    1212        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;
    1515                $_POST[$key.'_display'] = serialize($_POST[$key.'_display']);
    1616        }
  • extensions/ContestResults/admin/results.php

    r6768 r6782  
    2525
    2626// +-----------------------------------------------------------------------+
    27 //                      Suppression d'un résultat
    28 // +-----------------------------------------------------------------------+
    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 // +-----------------------------------------------------------------------+
    3527//                      Affichage des résultats
    3628// +-----------------------------------------------------------------------+
     
    4638
    4739while($result = pwg_db_fetch_assoc($results)){
    48         $template->append('results', array(
     40        $data = array(
    4941                'RANK' => $result['rank'],
    50                 'ID' => $result['image_id'],
     42                'IMAGE_ID' => $result['image_id'],
    5143                'AUTHOR' => $result['author'],
    5244                'COMMENT' => $result['comment'],
    5345                '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);
    5566}
    5667
  • 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 
    81{known_script id="jquery" src=$ROOT_URL|@cat:"themes/default/js/jquery.packed.js"}
    92
    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;
    179                }
    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}
    2022
    2123<h2 style="float:right;top:-24px;position:relative;font-style:italic;margin-bottom:-20px;font-size:12px;font-weight:normal;">{$CR_VERSION}</h2>
     
    3335                                <td>
    3436                                        <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>
    3638                                </td>
    3739                        </tr>
     
    4446                                <td>
    4547                                        <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>
    4749                                </td>
    4850                        </tr>
  • extensions/ContestResults/admin/template/manage.tpl

    r6768 r6782  
    11{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">
    33{/html_head}
    44
     
    2020                        <ul class="categoryUl">
    2121                                {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}">
    2323                                                <ul class="categoryActions">
    2424                                                        <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 
    51{known_script id="jquery" src=$ROOT_URL|@cat:"themes/default/js/jquery.packed.js"}
    62{known_script id="jquery.cluetip" src=$ROOT_URL|@cat:"themes/default/js/plugins/jquery.cluetip.packed.js"}
     
    95{include file='include/datepicker.inc.tpl'}
    106
    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                });
    1619
    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                        });
    2125                });
    22         });
    23 </script>
     26        </script>
     27{/html_head}
    2428
    2529<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  
    77
    88{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>
    1011
    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                }
    1556               
    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                });
    2086               
    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>
    76104{/html_head}
    77105
     
    81109        <h2>
    82110                {'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>
    86112        </h2>
    87113</div>
     
    92118                {if isset($results)}
    93119                        {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}">
    95121                                        <ul class="categoryActions">
    96122                                                <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}"/>
    99125                                                        </a>
    100126                                                </li>
    101127                                        </ul>
    102128                                        <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>
    105136                                                {'CR_author'|@translate} : <input type="text" name="results[{$i}][author]" value="{$result.AUTHOR}"/>
    106137                                                <textarea class="result_comment" name="results[{$i}][comment]">{$result.COMMENT}</textarea>
     
    116147       
    117148        <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>
    119149                <input type="hidden" name="contest_id" value="{$CONTEST_ID}"/>
    120150                <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>
    121152        </p>
    122153</form>
  • extensions/ContestResults/admin/template/style.css

    r6768 r6782  
    1212}
    1313
    14 LI.categoryLi.novisible {
     14li.categoryLi.novisible {
    1515        opacity:0.5;
    1616}
    1717
     18li.categoryLi.error_cat {
     19        border:1px solid #800;
     20}
     21
    1822table {
    19         width:600px;
     23        width:80%;
    2024}
    2125td {
    22         width:150px;
     26        width:25%;
    2327        white-space: nowrap;
    2428}
     
    3135.title.cluetip:after {
    3236        margin-left:5px;
    33         content:url('image/help.png');
    3437        vertical-align:top;
    3538}
     
    4447        background-position:center right;
    4548}
     49
     50.vtip {
     51        cursor:help;
     52}
     53p#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  
    111.1
    22- Add menu block/links + configuration
     3- Add results preview
    34- Code revision
     5- ExtendedDescription is needed to use multilanguage descriptions
    46
    571.0.a
  • extensions/ContestResults/include/cr_comment_picture.php

    r6768 r6782  
    2424        $comment = null;
    2525        while($result = pwg_db_fetch_assoc($results)){
    26                 // rang amélioré
     26                // Rang amélioré
    2727                if($result['rank'] <= 3) $result['rank'] = l10n('CR_order_'.$result['rank']);
    2828                else $result['rank'] .= l10n('CR_order_sup');
  • extensions/ContestResults/include/cr_page.php

    r6768 r6782  
    1212// Infos du concours
    1313$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);
    1516
    16 if($contest['visible'] OR is_admin()){
     17if(pwg_db_num_rows($results) AND ($contest['visible'] OR is_admin())){
    1718        // Paramètres généraux
    1819        $template->assign(array(
     
    5657                                WHERE i.id = " . $result['image_id'] . ";";
    5758                        $image = pwg_db_fetch_assoc(pwg_query($query));
    58                        
    59                         // Nom de l'image
    60                         if(empty($image['name']))
    61                                 $image['name'] = get_name_from_file($image['file']);
    6259
    6360                        // retrieving category informations
     
    7673                        // Template
    7774                        if(in_array($result['rank'], array(1,2,3))){
    78                                 $array = array(
     75                                $data = array(
    7976                                        'RANK' => $result ['rank'],
    8077                                        'AUTHOR' => $result['author'],
    8178                                        'IMAGE_SRC' => str_replace('thumbnail/'.$conf['prefix_thumbnail'], null, get_thumbnail_url($image)),
    8279                                        'IMAGE_URL' => $image['url'],
    83                                         'IMAGE_NAME' => $image['name'],
     80                                        'IMAGE_NAME' => (empty($image['name'])) ? get_name_from_file($image['file']) : $image['name'],
    8481                                        'COMMENT' => CR_cut_string(trigger_event('render_CR_content', $result['comment']), 450),
    8582                                        );
    8683                        }else{
    87                                 $array = array(
     84                                $data = array(
    8885                                        'RANK' => $result ['rank'],
    8986                                        'AUTHOR' => $result['author'],
    9087                                        'TN_SRC' => get_thumbnail_url($image),
    9188                                        'IMAGE_URL' => $image['url'],
    92                                         'IMAGE_NAME' => $image['name'],
     89                                        'IMAGE_NAME' => (empty($image['name'])) ? get_name_from_file($image['file']) : $image['name'],
    9390                                );
    9491                        }
    95                         $template->append('RESULTS', $array);
     92                        $template->append('RESULTS', $data);
    9693                }
    9794        }
  • extensions/ContestResults/include/functions.php

    r6768 r6782  
    22if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
    33
    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
     5function 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()).'...';
    3710        }else{
    3811                return $string;
    3912        }
    4013}
     14
     15// Recupère le nom d'un coucours à partir de l'id
     16function 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}
    4125?>
  • extensions/ContestResults/language/en_UK/plugin.lang.php

    r6769 r6782  
    3939$lang['CR_nopublic'] = 'This page is not available for the public !';
    4040$lang['CR_notavailable'] = 'This contest is not available';
     41$lang['CR_id_unknown %d'] = "The picture n°%d doesn't exist";
    4142
    4243$lang['CR_order_1'] = '1<sup>st</sup>';
     
    5152$lang['CR_menubar_block_number'] = 'Quantity of contests to display in the block';
    5253
    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
    6162$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         <br/><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 !";
    6465$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
    7076?>
  • extensions/ContestResults/language/fr_FR/plugin.lang.php

    r6768 r6782  
    3939$lang['CR_nopublic'] = "Cette page n'est pas accessible au public !";
    4040$lang['CR_notavailable'] = "Ce concours n'est pas disponible";
     41$lang['CR_id_unknown %d'] = "L'image n°%d n'existe pas";
    4142
    4243$lang['CR_order_1'] = '1<sup>er</sup>';
     
    5152$lang['CR_menubar_block_number'] = 'Nombre de concours à afficher dans le bloc';
    5253
    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
    6162$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         <br/><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 !";
    6465$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
    7076?>
  • extensions/ContestResults/main.inc.php

    r6768 r6782  
    2525define('CR_PUBLIC', make_index_url(array('section' => 'contests')) . '/');
    2626
     27
     28// +-----------------------------------------------------------------------+
     29//                              Trigger
     30// +-----------------------------------------------------------------------+
     31add_event_handler('get_admin_plugin_menu_links', 'CR_admin_menu');      // Lien d'administration
     32add_event_handler('loc_end_section_init', 'CR_section_init');           // Paramètre URL
     33add_event_handler('loc_end_index', 'CR_index');                                         // Contenu du la page
     34add_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';"));
     37if($ED['state'] == 'active') add_event_handler('render_CR_content', 'get_user_language_desc');  // Textes multilangues
     38
     39// Langues
     40load_language('plugin.lang', CR_PATH);
     41
    2742// Gestion du menu
    2843include(CR_PATH . 'include/cr_menubar.php');
     
    3954// Paramètre URL
    4055function 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       
    4359    if($tokens[0] == 'contests'){
    4460                $page['section'] = 'contests';
     
    4763                        $page['contest'] = explode('-', $tokens[1]);
    4864                        $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']));
    5066                }
    5167        }
     
    5470// Contenu du la page
    5571function CR_index(){
    56     global $template, $page, $conf, $menu;
     72    global $template, $page, $conf;
    5773    if(isset($page['section']) and $page['section'] == 'contests'){
    58                 include(CR_PATH . 'include/functions.php');
    5974                if(isset($page['contest']))
    6075                        include(CR_PATH . 'include/cr_page.php');
     
    6782function CR_comment_picture(){
    6883        global $page, $template, $conf;
    69         include(CR_PATH . 'include/functions.php');
    7084        include(CR_PATH . 'include/cr_comment_picture.php'); 
    7185}
    7286
    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'administration
    85 add_event_handler('loc_end_section_init', 'CR_section_init'); // Paramètre URL
    86 add_event_handler('loc_end_index', 'CR_index'); // Contenu du la page
    87 add_event_handler('loc_end_picture', 'CR_comment_picture', 10); // Ajoute le commentaire sur la page image
    88 add_event_handler('render_CR_content', 'get_user_language_desc'); // Textes multilangues
    89 
    9087?>
  • extensions/ContestResults/maintain.inc.php

    r6770 r6782  
    5151        pwg_query($query);
    5252       
    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);
    5755}
    5856
    5957function plugin_activate(){
     58        global $conf;
     59
     60        // compatibilité avec les versions < 1.1
    6061        if(!isset($conf['ContestResults'])){
    6162                $query = "INSERT INTO " . CONFIG_TABLE . "(param,value,comment) VALUES('ContestResults', '" . default_config . "', 'Parametres du plugin ContestResults');";
  • extensions/ContestResults/template/cr_main.tpl

    r6768 r6782  
    1313                <h2>{'Contests'|@translate}</h2>
    1414        </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}
    1620        {if isset($contests_pending)}
    1721                <ul class="thumbnailCategories">
  • extensions/ContestResults/template/cr_page.tpl

    r6768 r6782  
    11{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">
    33{/html_head}
    44
     
    2020        </div> <!-- titrePage -->
    2121
    22         {if  $VISIBLE == 0}
     22        {if !$VISIBLE}
    2323                <div class="nopublic">
    2424                        {'CR_nopublic'|@translate}
  • extensions/ContestResults/template/style.css

    r6768 r6782  
    1111}
    1212
    13 div.thumbnailCategory.novisible {
    14         opacity:0.4;
    15 }
    16 
    1713.results {
    1814        overflow:hidden;
    1915        white-space:nowrap;
     16}
     17
     18div.thumbnailCategory.novisible {
     19        opacity:0.4;
    2020}
    2121
Note: See TracChangeset for help on using the changeset viewer.