Changeset 9572


Ignore:
Timestamp:
03/08/11 13:19:06 (9 years ago)
Author:
mistic100
Message:

[extensions] ContestResults 1.3

  • Add error and success messages on admin page
  • Add Spain (es_ES) thanks to jpr928
  • Contest status is automatic and shows remaining days
  • More flexibility for description fields
  • Compatibility with Piwigo 2.2.0
Location:
extensions/ContestResults
Files:
4 added
24 edited

Legend:

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

    r9200 r9572  
    1010if (!pwg_db_num_rows($image)) { 
    1111        $themeconf = $template->get_template_vars('themeconf'); 
    12         $data['TN_SRC'] = $themeconf['admin_icon_dir'] . '/errors.png'; 
     12        //$data['TN_SRC'] = $themeconf['admin_icon_dir'] . '/errors.png'; 
     13        $data['TN_SRC'] = 'admin/themes/default/icon/errors.png'; 
    1314        $data['IMAGE_NAME'] = 'N/A'; 
    1415         
  • extensions/ContestResults/admin/manage.php

    r9419 r9572  
    1818//                              Affichage des concours 
    1919// +-----------------------------------------------------------------------+ 
    20 foreach (array('pending','finished') AS $status) { 
    21         $result = pwg_query("SELECT id, name, visible, date_begin, date_end, logo 
    22                 FROM " . CR_TABLE_1 . " 
    23                 WHERE status = '" . $status . "' 
    24                 ORDER BY date_begin DESC;"); 
     20$contests = pwg_query("SELECT  
     21                id,  
     22                name,  
     23                visible,  
     24                date_begin,  
     25                date_end,  
     26                logo 
     27        FROM " . CR_TABLE_1 . " 
     28        ORDER BY date_begin DESC;"); 
    2529 
    26         while ($contest = pwg_db_fetch_assoc($result)) { 
    27                 $template->append('contests_'.$status, array( 
    28                         'NAME' => trigger_event('render_CR_content', $contest['name']), 
    29                         'VISIBLE' => $contest['visible'], 
    30                         'DATE_BEGIN' => format_date($contest['date_begin']), 
    31                         'DATE_END' => format_date($contest['date_end']), 
    32                         'LOGO' => $contest['logo'], 
    33                         'U_RESULTS' => CR_ADMIN . '&tab=results&contest_id=' . $contest['id'], 
    34                         'U_EDIT' => CR_ADMIN . '&tab=edit&contest_id=' . $contest['id'], 
    35                         'U_DELETE' => CR_ADMIN . '&delete_contest=' . $contest['id'], 
    36                         'URL' => CR_PUBLIC . $contest['id'] . '-' . str2url(trigger_event('render_CR_content', $contest['name'])), 
    37                 )); 
     30while ($contest = pwg_db_fetch_assoc($contests)) { 
     31        if (is_date_passed($contest['date_end'])) { 
     32                $contest['status'] = 'finished'; 
     33        } else {  
     34                $contest['status'] = 'pending'; 
    3835        } 
     36        $template->append('contests_'.$contest['status'], array( 
     37                'NAME' => trigger_event('render_CR_content', $contest['name']), 
     38                'VISIBLE' => $contest['visible'], 
     39                'DATE_BEGIN' => format_date($contest['date_begin']), 
     40                'DATE_END' => format_date($contest['date_end']), 
     41                'LOGO' => $contest['logo'], 
     42                'U_RESULTS' => CR_ADMIN . '&tab=results&contest_id=' . $contest['id'], 
     43                'U_EDIT' => CR_ADMIN . '&tab=edit&contest_id=' . $contest['id'], 
     44                'U_DELETE' => CR_ADMIN . '&delete_contest=' . $contest['id'], 
     45                'URL' => CR_PUBLIC . $contest['id'] . '-' . str2url(trigger_event('render_CR_content', $contest['name'])), 
     46                'DAYS' => DateDiff($contest['date_end'],date('Y-m-d')), 
     47        )); 
    3948} 
    4049 
  • extensions/ContestResults/admin/new.php

    r9419 r9572  
    11<?php 
    22if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!'); 
    3  
    4 // Les quatre zones de texte principales 
    5 $textareas = array('presentation','rules','prices','final'); 
    63 
    74// +-----------------------------------------------------------------------+ 
     
    107if (isset($_POST['new_submit'])) { 
    118        if ($_POST['name'] != null) { 
     9                // Mise en forme des descriptions 
     10                if (isset($_POST['description'])) { 
     11                        $new_description = array(); 
     12                        foreach ($_POST['description'] as $data) { 
     13                                $new_description[] = array( 
     14                                        'name' => $data['name'], 
     15                                        'content' => $data['content'] 
     16                                ); 
     17                        } 
     18                        // encoder le tableau sérialisé est le seul moyen que j'ai trouvé pour pas perdre les caractères spéciaux et planter unserialize 
     19                        $_POST['description'] = base64_encode(serialize($new_description)); 
     20                } 
     21                         
    1222                // Modification d'un concours 
    13                 if (isset($_GET['contest_id'])) { 
     23                if (isset($_GET['contest_id'])) {        
    1424                        pwg_query("UPDATE " . CR_TABLE_1 . " SET 
    1525                                `name` = '" . $_POST['name'] ."', 
    16                                 `status` = '" . $_POST['status'] ."', 
    1726                                `visible` = '" . $_POST['visible'] ."', 
    1827                                `date_begin` = '" . $_POST['date_begin'] ."', 
     
    2130                                `banner` = '" . $_POST['banner'] ."', 
    2231                                `summary` = '" . $_POST['summary'] ."', 
    23                                 `presentation` = '" . $_POST['presentation'] ."', 
    24                                 `rules` = '" . $_POST['rules'] ."', 
    25                                 `prices` = '" . $_POST['prices'] ."', 
    26                                 `final` = '" . $_POST['final'] ."' 
     32                                `description` = '" . $_POST['description'] ."' 
    2733                        WHERE `id` = " . $_GET['contest_id'] .";"); 
    2834                         
     
    4147                                        date_begin, 
    4248                                        date_end, 
    43                                         status, 
    4449                                        visible, 
    4550                                        logo, 
    4651                                        banner, 
    4752                                        summary, 
    48                                         presentation, 
    49                                         rules, 
    50                                         prices, 
    51                                         final 
     53                                        description 
    5254                                ) 
    5355                                VALUES( 
     
    5557                                        '" . $_POST['date_begin'] ."', 
    5658                                        '" . $_POST['date_end'] ."', 
    57                                         '" . $_POST['status'] ."', 
    5859                                        '" . $_POST['visible'] ."', 
    5960                                        '" . $_POST['logo'] ."', 
    6061                                        '" . $_POST['banner'] ."', 
    6162                                        '" . $_POST['summary'] ."', 
    62                                         '" . $_POST['presentation'] ."', 
    63                                         '" . $_POST['rules'] ."', 
    64                                         '" . $_POST['prices'] ."', 
    65                                         '" . $_POST['final'] ."' 
     63                                        '" . $_POST['description'] ."' 
    6664                                );"); 
    6765                        redirect(CR_ADMIN .'&amp;tab=manage&amp;msg=added'); 
     
    7775//                              Définition des variables template 
    7876// +-----------------------------------------------------------------------+     
    79 // Formulaire incomplet 
     77// Formulaire incomplet ############################################################################################################################################################## 
    8078if ($page['errors']) { 
    8179        $template->assign(array( 
    8280                'NAME' => $_POST['name'], 
    83                 'STATUS' => $_POST['status'], 
    8481                'VISIBLE' => $_POST['visible'], 
    8582                'DATE_BEGIN' => $_POST['date_begin'], 
     
    9087        )); 
    9188         
    92         foreach ($textareas AS $key) { 
    93                 $template->assign(strtoupper($key), $_POST[$key]); 
     89        if (isset($_POST['description'])) { 
     90                $i=0; 
     91                foreach ($_POST['description'] as $data) { 
     92                        $template->append('description', array( 
     93                                        'NAME' => $data['name'], 
     94                                        'CONTENT' => $data['content'], 
     95                                        'RANK' => $i, 
     96                        )); 
     97                        $i++; 
     98                } 
    9499        } 
    95100 
     
    102107                'ID' => $contest['id'], 
    103108                'NAME' => $contest['name'], 
    104                 'STATUS' => $contest['status'], 
    105109                'VISIBLE' => $contest['visible'], 
    106110                'DATE_BEGIN' => $contest['date_begin'], 
     
    111115        )); 
    112116         
    113         foreach ($textareas AS $key) { 
    114                 $template->assign(strtoupper($key), $contest[$key]); 
     117        if ($contest['description'] != null) { 
     118                $contest['description'] = unserialize(base64_decode($contest['description'])); 
     119                $i=0; 
     120                foreach ($contest['description'] AS $desc) { 
     121                        $template->append('description', array( 
     122                                'NAME' => stripslashes($desc['name']), 
     123                                'CONTENT' => stripslashes($desc['content']), 
     124                                'RANK' => $i, 
     125                        )); 
     126                        $i++; 
     127                } 
    115128        } 
    116129 
     
    119132        $template->assign(array( 
    120133                'NAME' => null, 
    121                 'STATUS' => 'pending', 
    122134                'VISIBLE' => 1, 
    123135                'DATE_BEGIN' => date('Y-m-d'), 
     
    127139                'SUMMARY' => null, 
    128140        )); 
    129          
    130         foreach ($textareas AS $key) { 
    131                 $template->assign(strtoupper($key), null); 
    132         } 
    133141} 
    134142 
  • extensions/ContestResults/admin/template/config.tpl

    r9419 r9572  
    1 {known_script id="jquery" src=$ROOT_URL|@cat:"themes/default/js/jquery.packed.js"} 
     1{combine_script id='jquery' path='themes/default/js/jquery.min.js'} 
     2{combine_css id='cr_admin_style' path=$CR_PATH|@cat:'admin/template/style.css'} 
    23 
    34{html_head} 
    4         <link rel="stylesheet" type="text/css" href="{$CR_PATH}admin/template/style.css"> 
    55        <style type="text/css"> 
    66                tr td:first-child {ldelim}  
     
    99                } 
    1010        </style> 
     11         
    1112        <script type="text/javascript"> 
    12                 function ToggleConfig(sel, section, fast){ldelim} 
    13                         var obj = $('#config_'+section); 
     13                function ToggleConfig(sel, section){ldelim} 
     14                        var obj = jQuery('#config_'+section); 
    1415                        if(sel.checked){ldelim} 
    15                                 if(fast) obj.show(); 
    16                                 else obj.slideDown("slow"); 
     16                                obj.show(); 
    1717                        }else{ldelim} 
    18                                 if(fast) obj.hide(); 
    19                                 else obj.slideUp("slow"); 
     18                                obj.hide(); 
    2019                        } 
    2120                } 
     
    6665 
    6766<script type="text/javascript"> 
    68         ToggleConfig(document.forms[0].elements['menubar_mode_link'], 'link', 1); 
    69         ToggleConfig(document.forms[0].elements['menubar_mode_block'], 'block', 1); 
     67        ToggleConfig(document.forms[0].elements['menubar_mode_link'], 'link'); 
     68        ToggleConfig(document.forms[0].elements['menubar_mode_block'], 'block'); 
    7069</script> 
  • extensions/ContestResults/admin/template/manage.tpl

    r6782 r9572  
    1 {html_head} 
    2         <link rel="stylesheet" type="text/css" href="{$CR_PATH}admin/template/style.css"> 
    3 {/html_head} 
     1{combine_css id='cr_admin_style' path=$CR_PATH|@cat:'admin/template/style.css'} 
    42 
    53<h2 style="float:right;top:-24px;position:relative;font-style:italic;margin-bottom:-20px;font-size:12px;font-weight:normal;">{$CR_VERSION}</h2> 
     
    4139                                                        {if !empty($contest.LOGO)}<img src="{$contest.LOGO}" width="13px" class="button"/>{/if} 
    4240                                                        <strong><a href="{$contest.URL}" title="{'CR_go'|@translate}">{$contest.NAME}</a></strong> - {$contest.DATE_BEGIN} | {$contest.DATE_END} 
     41                                                        <span class="CR_finished">{$contest.DAYS} {'CR_days'|@translate}</span> 
    4342                                                </p> 
    4443                                        </li> 
  • extensions/ContestResults/admin/template/new.tpl

    r9419 r9572  
    1 {known_script id="jquery" src=$ROOT_URL|@cat:"themes/default/js/jquery.packed.js"} 
    2 {known_script id="jquery.cluetip" src=$ROOT_URL|@cat:"themes/default/js/plugins/jquery.cluetip.packed.js"} 
    3  
     1{combine_script id='jquery' path='themes/default/js/jquery.min.js'} 
     2{combine_script id='jquery.ui' path='themes/default/js/ui/minified/jquery.ui.core.min.js'} 
     3{combine_script id='jquery.ui.sortable' path='themes/default/js/ui/minified/jquery.ui.sortable.min.js'} 
     4{combine_script id='jquery.cluetip' path='themes/default/js/plugins/jquery.cluetip.packed.js'} 
     5{combine_css id='cr_admin_style' path=$CR_PATH|@cat:'admin/template/style.css'} 
    46{include file='include/autosize.inc.tpl'} 
    57{include file='include/datepicker.inc.tpl'} 
    68 
    79{html_head} 
    8         <link rel="stylesheet" type="text/css" href="{$CR_PATH}admin/template/style.css"> 
     10        <script type="text/javascript"> 
     11                // AJOUTE UN CHAMP DE RESULTAT 
     12                function CreateDescField(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 = ''; 
     15                         
     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', 'desc_'+(j)); 
     19                        new_result.setAttribute('class', 'categoryLi virtual_cat'); 
     20                        document.getElementById('categoryUl').appendChild(new_result); 
     21                         
     22                        // Contenu de la ligne 
     23                        new_result.innerHTML = '<ul class="categoryActions"> '+ 
     24                                        '<li> '+ 
     25                                                '<a href="#" title="{'CR_delete_desc'|@translate}" onclick="DeleteDescField('+ 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;" title="{'Drag to re-order'|@translate}"> '+ 
     32                                        '<input type="text" size="65" name="description['+ j +'][name]" value=""/> '+ 
     33                                        '<textarea class="result_comment" name="description['+ j +'][content]"></textarea> '+ 
     34                                '</p> '+ 
     35                                '<p class="catPos">{'CR_rank'|@translate} : <input type="text" name="description['+ j +'][rank]" value=""/></p>'; 
     36                         
     37                        // Remplace le lien de création 
     38                        document.getElementById('AddLink').innerHTML = '<input class="submit" type="reset" onclick="CreateDescField('+ (j+1) +');return false;" value="{'CR_addfield'|@translate}"/>'; 
     39                         
     40                        // Réinitiliase les fonctions jQuery 
     41                        jQuery('.catPos').hide(); 
     42                        jQuery('.drag_button').show(); 
     43                        jQuery('.categoryLi').css('cursor', 'move'); 
     44                        jQuery('textarea').autogrow(); 
     45                        jQuery('textarea').css('overflow-y', 'hidden'); 
     46                        vtip(); 
     47                } 
     48                 
     49                // SUPPRIME UN CHAMP DE RESULTAT 
     50                function DeleteDescField(k){ldelim} 
     51                        var result = document.getElementById('desc_'+k); 
     52                        var parent = result.parentNode; 
     53                        parent.removeChild(result); 
     54                } 
     55 
     56                jQuery().ready(function(){ldelim} 
     57                        //  Drag-and-Drop 
     58                        jQuery('.catPos').hide(); 
     59                        jQuery('.drag_button').show(); 
     60                        jQuery('.categoryLi').css('cursor', 'move'); 
     61                        jQuery('.categoryUl').sortable({ldelim} 
     62                                axis: 'y', 
     63                                opacity: 0.8 
     64                        }); 
     65                        jQuery('#categoryOrdering').submit(function(){ldelim} 
     66                                ar = jQuery('.categoryUl').sortable('toArray'); 
     67                                for(i=0; i<ar.length; i++) {ldelim} 
     68                                        cat = ar[i].split('desc_'); 
     69                                        document.getElementsByName('description[' + cat[1] + '][rank]')[0].value = i+1; 
     70                                } 
     71                        }); 
     72                        // Cluetip 
     73                        jQuery('.cluetip').cluetip({ldelim} 
     74                                width: 550, 
     75                                splitTitle: '|' 
     76                        }); 
     77                }); 
     78 
     79                $(function() {ldelim} 
     80                        $('#DateBegin').datepicker({ldelim}dateFormat:'yy-mm-dd', firstDay:1}); 
     81                        $('#DateEnd').datepicker({ldelim}dateFormat:'yy-mm-dd', firstDay:1}); 
     82                }); 
     83        </script> 
     84 
    985        <style type="text/css"> 
    1086                .cluetip:after {ldelim} 
     
    1288                } 
    1389        </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                 }); 
    19  
    20                 jQuery().ready(function(){ldelim} 
    21                         jQuery('.cluetip').cluetip({ldelim} 
    22                                 width: 550, 
    23                                 splitTitle: '|' 
    24                         }); 
    25                 }); 
    26         </script> 
    2790{/html_head} 
    2891 
     
    39102</div> 
    40103 
    41 <form method="post" action="" class="properties"> 
     104<form method="post" action="" class="properties" id="categoryOrdering"> 
    42105        <fieldset> 
    43106                <legend>{'Configuration'|@translate}</legend> 
     
    52115                         
    53116                        <tr> 
    54                                 <td><span class="title cluetip" title="{'CR_status'|@translate}|{'CR_help_status'|@translate}">{'CR_status'|@translate}</span></td> 
    55                                 <td> 
    56                                         <label><input type="radio" name="status" value="pending" {if $STATUS == 'pending'}checked="checked"{/if}> {'CR_pending'|@translate}</label> 
    57                                         <label><input type="radio" name="status" value="finished" {if $STATUS == 'finished'}checked="checked"{/if}> {'CR_finished'|@translate}</label> 
    58                                 </td> 
    59117                                <td><span class="title cluetip" title="{'CR_visible'|@translate}|{'CR_help_visible'|@translate}">{'CR_visible'|@translate}</span></td> 
    60118                                <td> 
     
    62120                                        <label><input type="radio" name="visible" value="0" {if $VISIBLE == 0}checked="checked"{/if}> {'No'|@translate}</label> 
    63121                                </td> 
     122                                <td colspan="2"></td> 
    64123                        </tr> 
    65124                        <tr> 
     
    85144                        <tr> 
    86145                                <td><span class="title cluetip" title="{'CR_summary'|@translate}|{'CR_help_summary'|@translate}">{'CR_summary'|@translate}</span></td> 
    87                                 <td colspan="3"><textarea name="summary" id ="textarea" rows="4" style="width:100%;">{$SUMMARY}</textarea></td> 
     146                                <td colspan="3"><textarea name="summary" rows="4" style="width:100%;">{$SUMMARY}</textarea></td> 
    88147                        </tr> 
    89148                </table> 
     
    93152                <legend><span class="title cluetip" title="{'CR_textareas'|@translate}|{'CR_help_textareas'|@translate}">{'CR_textareas'|@translate}</span></legend> 
    94153                 
    95                 <table>                  
    96                         <tr> 
    97                                 <td><span class="title">{'CR_presentation'|@translate}</span></td> 
    98                                 <td style="width:75%;"><textarea name="presentation" id ="textarea" rows="4" style="width:100%;">{$PRESENTATION}</textarea></td> 
    99                         </tr> 
    100                          
    101                         <tr><td colspan="2"><br/></td></tr> 
    102                          
    103                         <tr> 
    104                                 <td><span class="title">{'CR_rules'|@translate}</span></td> 
    105                                 <td><textarea name="rules" id ="textarea" rows="4" style="width:100%;">{$RULES}</textarea></td> 
    106                         </tr> 
    107                          
    108                         <tr><td colspan="2"><br/></td></tr> 
    109                          
    110                         <tr> 
    111                                 <td><span class="title">{'CR_prices'|@translate}</span></td> 
    112                                 <td><textarea name="prices" id ="textarea" rows="4" style="width:100%;">{$PRICES}</textarea></td> 
    113                         </tr> 
    114                          
    115                         <tr><td colspan="2"><br/></td></tr> 
    116                          
    117                         <tr> 
    118                                 <td><span class="title">{'CR_final'|@translate}</span></td> 
    119                                 <td><textarea name="final" id ="textarea" rows="4" style="width:100%;">{$FINAL}</textarea></td> 
    120                         </tr> 
    121                 </table> 
     154                <ul class="categoryUl" id="categoryUl"> 
     155                {counter start=0 assign=i} 
     156                {if isset($description)} 
     157                        {foreach from=$description item=desc} 
     158                                <li class="categoryLi" id="desc_{$i}"> 
     159                                        <ul class="categoryActions"> 
     160                                                <li> 
     161                                                        <a href="#" title="{'CR_delete_desc'|@translate}" onclick="DeleteDescField({$i});return false;"> 
     162                                                                <img src="{$themeconf.admin_icon_dir}/category_delete.png" class="button" alt="{'CR_delete_result'|@translate}"/> 
     163                                                        </a> 
     164                                                </li> 
     165                                        </ul> 
     166                                         
     167                                        <p> 
     168                                                <img src="{$themeconf.admin_icon_dir}/cat_move.png" class="button drag_button" style="display:none;" title="{'Drag to re-order'|@translate}"> 
     169                                                <input type="text" size="65" name="description[{$i}][name]" value="{$desc.NAME}"/> 
     170                                                <textarea class="result_comment" name="description[{$i}][content]">{$desc.CONTENT}</textarea> 
     171                                        </p> 
     172                                        <p class="catPos">{'CR_rank'|@translate} : <input type="text" name="description[{$i}][rank]" value="{$desc.RANK}"/></p> 
     173                                </li> 
     174                                {counter} 
     175                        {/foreach} 
     176                {else} 
     177                        {'CR_no_result'|@translate} 
     178                {/if} 
     179                </ul> 
     180                 
     181                <span id="AddLink"><input class="submit" type="reset" onclick="CreateDescField({$i}{if !isset($description)}, true{/if});return false;" value="{'CR_addfield'|@translate}"/></span> 
    122182        </fieldset> 
    123183 
  • extensions/ContestResults/admin/template/results.tpl

    r9200 r9572  
     1{combine_script id='jquery' path='themes/default/js/jquery.min.js'} 
     2{combine_script id='jquery.ui' path='themes/default/js/ui/minified/jquery.ui.core.min.js'} 
     3{combine_script id='jquery.ui.sortable' path='themes/default/js/ui/minified/jquery.ui.sortable.min.js'} 
     4{combine_script id='jquery.cluetip' path='themes/default/js/plugins/jquery.cluetip.packed.js'} 
     5{combine_script id='jquery.vtip' path=$CR_PATH|@cat:'admin/template/vtip.js'} 
     6{combine_css id='cr_admin_style' path=$CR_PATH|@cat:'admin/template/style.css'} 
    17{include file='include/autosize.inc.tpl'} 
    28 
    3 {known_script id="jquery" src=$ROOT_URL|@cat:"themes/default/js/jquery.packed.js"} 
    4 {known_script id="jquery.ui" src=$ROOT_URL|@cat:"themes/default/js/ui/packed/ui.core.packed.js" } 
    5 {known_script id="jquery.ui.sortable" src=$ROOT_URL|@cat:"themes/default/js/ui/packed/ui.sortable.packed.js" } 
    6 {known_script id="jquery.cluetip" src=$ROOT_URL|@cat:"themes/default/js/plugins/jquery.cluetip.packed.js"} 
    7  
    89{html_head} 
    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> 
    11  
    1210        <script type="text/javascript"> 
    1311                // AJOUTE UN CHAMP DE RESULTAT 
     
    3432                                        '{'CR_image_no'|@translate} <input type="text" size="6" name="results['+ j +'][image_id]" value="" onkeyup="UpdatePreview('+ j +', this);"/> '+ 
    3533                                        '<span id="preview-'+ j +'"> '+ 
    36                                                 '<span class="vtip" title="<img src=\'{$themeconf.admin_icon_dir}/errors.png\'/><br>N/A"> '+ 
     34                                                '<span class="vtip" title="<img src=\'admin/themes/default/icon/errors.png\'/><br>N/A"> '+ 
    3735                                                        '<img src="{$CR_PATH}admin/template/image/images.png"/> '+ 
    3836                                                '</span> '+ 
     
    4442                         
    4543                        // 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}"/>'; 
     44                        document.getElementById('AddLink').innerHTML = '<input class="submit" type="reset" onclick="CreateResultField('+ (j+1) +');return false;" value="{'CR_addfield'|@translate}"/>'; 
    4745                         
    4846                        // Réinitiliase les fonctions jQuery 
     
    9795                } 
    9896        </script> 
     97         
    9998        <style type="text/css"> 
    10099                .cluetip:after {ldelim} 
     
    112111<form method="post" id="categoryOrdering" action=""> 
    113112        <ul class="categoryUl" id="categoryUl"> 
    114                 {counter start=0 assign=i} 
    115                 {if isset($results)} 
    116                         {foreach from=$results item=result name=result_loop} 
    117                                 <li class="categoryLi {if $result.IMAGE_NAME == 'N/A'}error_cat{/if}" id="result_{$i}"> 
    118                                         <ul class="categoryActions"> 
    119                                                 <li> 
    120                                                         <a href="#" title="{'CR_delete_result'|@translate}" onclick="DeleteResultField({$i});return false;"> 
    121                                                                 <img src="{$themeconf.admin_icon_dir}/category_delete.png" class="button" alt="{'CR_delete_result'|@translate}"/> 
    122                                                         </a> 
    123                                                 </li> 
    124                                         </ul> 
     113        {counter start=0 assign=i} 
     114        {if isset($results)} 
     115                {foreach from=$results item=result} 
     116                        <li class="categoryLi {if $result.IMAGE_NAME == 'N/A'}error_cat{/if}" id="result_{$i}"> 
     117                                <ul class="categoryActions"> 
     118                                        <li> 
     119                                                <a href="#" title="{'CR_delete_result'|@translate}" onclick="DeleteResultField({$i});return false;"> 
     120                                                        <img src="{$themeconf.admin_icon_dir}/category_delete.png" class="button" alt="{'CR_delete_result'|@translate}"/> 
     121                                                </a> 
     122                                        </li> 
     123                                </ul> 
     124                                 
     125                                <p> 
     126                                        <img src="{$themeconf.admin_icon_dir}/cat_move.png" class="button drag_button" style="display:none;" title="{'Drag to re-order'|@translate}"> 
     127                                        {'CR_image_no'|@translate} <input type="text" size="6" name="results[{$i}][image_id]" value="{$result.IMAGE_ID}" onkeyup="UpdatePreview({$i}, this);"/> 
    125128                                         
    126                                         <p> 
    127                                                 <img src="{$themeconf.admin_icon_dir}/cat_move.png" class="button drag_button" style="display:none;" title="{'Drag to re-order'|@translate}"> 
    128                                                 {'CR_image_no'|@translate} <input type="text" size="6" name="results[{$i}][image_id]" value="{$result.IMAGE_ID}" onkeyup="UpdatePreview({$i}, this);"/> 
    129                                                  
    130                                                 <span id="preview-{$i}"> 
    131                                                         <span class="vtip" title="<img src='{$result.TN_SRC}'/><br>{$result.IMAGE_NAME}"> 
    132                                                                 <img src="{$CR_PATH}admin/template/image/images.png"/> 
    133                                                         </span> 
     129                                        <span id="preview-{$i}"> 
     130                                                <span class="vtip" title="<img src='{$result.TN_SRC}'/><br>{$result.IMAGE_NAME}"> 
     131                                                        <img src="{$CR_PATH}admin/template/image/images.png"/> 
    134132                                                </span> 
    135                                                  
    136                                                 {'CR_author'|@translate} : <input type="text" name="results[{$i}][author]" value="{$result.AUTHOR}"/> 
    137                                                 <textarea class="result_comment" name="results[{$i}][comment]">{$result.COMMENT}</textarea> 
    138                                         </p> 
    139                                         <p class="catPos">{'CR_rank'|@translate} : <input type="text" name="results[{$i}][rank]" value="{$result.RANK}"/></p> 
    140                                 </li> 
    141                                 {counter} 
    142                         {/foreach} 
    143                 {else} 
    144                         {'CR_no_result'|@translate} 
    145                 {/if} 
     133                                        </span> 
     134                                         
     135                                        {'CR_author'|@translate} : <input type="text" name="results[{$i}][author]" value="{$result.AUTHOR}"/> 
     136                                        <textarea class="result_comment" name="results[{$i}][comment]">{$result.COMMENT}</textarea> 
     137                                </p> 
     138                                <p class="catPos">{'CR_rank'|@translate} : <input type="text" name="results[{$i}][rank]" value="{$result.RANK}"/></p> 
     139                        </li> 
     140                        {counter} 
     141                {/foreach} 
     142        {else} 
     143                {'CR_no_result'|@translate} 
     144        {/if} 
    146145        </ul> 
    147146         
    148147        <p> 
     148                <span id="AddLink"><input class="submit" type="reset" onclick="CreateResultField({$i}{if !isset($results)}, true{/if});return false;" value="{'CR_addfield'|@translate}"/></span> 
    149149                <input class="submit" type="submit" value="{'Submit'|@translate}" name="results_modify"/> 
    150                 <span id="AddLink"><input class="submit" type="submit" onclick="CreateResultField({$i}{if !isset($results)}, true{/if});return false;" value="{'CR_addfield'|@translate}"/></a> 
    151150        </p> 
    152151</form> 
  • extensions/ContestResults/admin/template/style.css

    r6782 r9572  
    99        width:95%; 
    1010        min-height:40px; 
    11         margin-left:5%; 
     11        margin:0 30px; 
    1212} 
    1313 
     
    6363        z-index: 9999; 
    6464} 
     65 
     66.CR_finished { 
     67        font-weight:normal; 
     68        font-size:0.8em; 
     69        letter-spacing:0.2em; 
     70        padding-left:10px; 
     71        color:#a00; 
     72} 
  • extensions/ContestResults/changelog.txt

    r9419 r9572  
    1 1.2.b 
     11.3 
    22- Add error and success messages on admin page 
    3 - ... 
     3- Add Spain (es_ES) thanks to jpr928 
     4- Contest status is automatic and shows remaining days 
     5- More flexibility for description fields 
     6- Compatibility with Piwigo 2.2.0 
    47 
    581.2.a 
  • extensions/ContestResults/include/cr_comment_picture.php

    r9200 r9572  
    11<?php 
    22if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!'); 
     3 
     4// +-----------------------------------------------------------------------+ 
     5//              Affichage du commentaire sur la page d'une image participante 
     6// +-----------------------------------------------------------------------+ 
    37 
    48// Requète simple pour savoir si l'image a participé à des concours  
     
    610 
    711if(pwg_db_num_rows($participation)){ 
     12        // requète complète 
    813        $results = pwg_query("SELECT  
    914                        i.rank, 
     
    4651        </style>'; 
    4752 
     53        // +-----------------------------------------------------------------------+ 
     54        //                              Template 
     55        // +-----------------------------------------------------------------------+ 
    4856        $template->assign('COMMENT_IMG', $template->get_template_vars('COMMENT_IMG') . $comment); 
    49         $template->assign('PLUGIN_PICTURE_BEFORE', $template->get_template_vars('PLUGIN_PICTURE_BEFORE') . $css); 
     57        $template->append('footer_elements', $css); 
    5058} 
    5159?> 
  • extensions/ContestResults/include/cr_main.php

    r9200 r9572  
    1111                date_begin,  
    1212                date_end,  
    13                 status,  
    1413                logo,  
    1514                summary  
     
    1918while ($contest = pwg_db_fetch_assoc($contests)) { 
    2019        if ($contest['visible'] OR is_admin()) { 
     20                $contest['finished'] = is_date_passed($contest['date_end']); 
     21                 
    2122                // infos sur le concours 
    2223                $item =  array( 
     
    2425                        'NAME' => trigger_event('render_CR_content', $contest['name']), 
    2526                        'VISIBLE' => $contest['visible'], 
    26                         'STATUS' => $contest['status'], 
     27                        'FINISHED' => $contest['finished'], 
    2728                        'DATE_END' => format_date($contest['date_end']), 
    2829                        'DATE_BEGIN' => format_date($contest['date_begin']), 
     
    3031                        'SUMMARY' => CR_cut_string(trigger_event('render_CR_content', $contest['summary']), 350), 
    3132                        'URL' => CR_PUBLIC . $contest['id'] . '-' . str2url(trigger_event('render_CR_content', $contest['name'])), 
     33                        'DAYS' => DateDiff($contest['date_end'], date('Y-m-d')), 
    3234                ); 
    3335                 
    3436                // podium si terminé 
    35                 if ($contest['status'] == 'finished') { 
     37                if ($contest['finished'] == true) { 
    3638                        $results = pwg_query("SELECT 
    3739                                        i.id, 
     
    6769//                              Template 
    6870// +-----------------------------------------------------------------------+ 
     71if (is_admin()) { 
     72        $template->assign('U_EDIT', CR_ADMIN); 
     73} 
    6974$template->assign('CR_PATH', CR_PATH); 
    7075$template->assign('SEPARATOR', $conf['level_separator']); 
  • extensions/ContestResults/include/cr_menubar.php

    r9200 r9572  
    3737                                name,  
    3838                                visible,  
    39                                 status,  
    4039                                date_begin,  
    4140                                date_end  
     
    4342                        ORDER BY date_begin DESC;"); 
    4443 
    45                 $m = 0; // copteur pour limiter le nombre de concours affichés 
     44                $m = 0; // compteur pour limiter le nombre de concours affichés 
    4645                while($contest = pwg_db_fetch_assoc($contests)){ 
    4746                        if (($contest['visible'] OR is_admin()) AND $m < $config['menubar_block']['number']) { 
     
    5049                                        'LABEL' => trigger_event('render_CR_content', $contest['name']), 
    5150                                        'DATE' => format_date($contest['date_begin']) . ' - ' . format_date($contest['date_end']), 
    52                                         'STATUS' => $contest['status'], 
    53                                         'VISIBLE' => $contest['visible'] 
     51                                        'VISIBLE' => $contest['visible'], 
     52                                        'FINISHED' => is_date_passed($contest['date_end']), 
     53                                        'DAYS' => DateDiff($contest['date_end'],date('Y-m-d')), 
    5454                                )); 
    5555                        } 
  • extensions/ContestResults/include/cr_page.php

    r9200 r9572  
    1515if (pwg_db_num_rows($contest)) {  
    1616        $contest = pwg_db_fetch_assoc($contest); 
     17        $contest['finished'] = is_date_passed($contest['date_end']); 
    1718         
    1819        // Concours non-publique 
     
    2526                'ID' => $contest['id'], 
    2627                'NAME' => trigger_event('render_CR_content', $contest['name']), 
    27                 'STATUS' => $contest['status'], 
    2828                'VISIBLE' => $contest['visible'], 
     29                'FINISHED' => $contest['finished'], 
    2930                'DATE_BEGIN' => format_date($contest['date_begin']), 
    3031                'DATE_END' => format_date($contest['date_end']), 
     
    3233                'BANNER' => $contest['banner'], 
    3334                'URL' => CR_PUBLIC . $contest['id'] . '-' . str2url(trigger_event('render_CR_content', $contest['name'])), 
     35                'DAYS' => DateDiff($contest['date_end'], date('Y-m-d')), 
    3436        )); 
    3537         
    3638        // Les quatre zones texte 
    37         foreach (array('presentation','rules','prices','final') AS $key) { 
    38                 $template->assign(strtoupper($key), trigger_event('render_CR_content', $contest[$key])); 
     39        if (!empty($contest['description'])) { 
     40                $contest['description'] = unserialize(base64_decode($contest['description'])); 
     41                foreach ($contest['description'] as $desc) { 
     42                        $template->append('description', array( 
     43                                'NAME' => trigger_event('render_CR_content', stripslashes($desc['name'])), 
     44                                'CONTENT' => trigger_event('render_CR_content', stripslashes($desc['content'])), 
     45                        )); 
     46                } 
    3947        } 
    4048         
    4149        // Affichage des résultats 
    42         if ($contest['status'] == 'finished') { 
     50        if ($contest['finished'] == true) { 
    4351                // Infos des résultats 
    4452                $results = pwg_query("SELECT * FROM " . CR_TABLE_2 . " WHERE contest_id=" . $contest['id'] . " ORDER BY rank ASC;"); 
  • extensions/ContestResults/include/cutstring.class.php

    r6782 r9572  
    66 
    77class HtmlCutString{ 
    8   function __construct($string, $limit){ 
    9     // create dom element using the html string 
    10     $this->tempDiv = new DomDocument; 
    11     $this->tempDiv->loadXML('<div>'.$string.'</div>'); 
    12     // keep the characters count till now 
    13     $this->charCount = 0; 
    14     $this->encoding = 'UTF-8'; 
    15     // character limit need to check 
    16     $this->limit = $limit; 
    17   } 
    18   function cut(){ 
    19     // create empty document to store new html 
    20     $this->newDiv = new DomDocument; 
    21     // cut the string by parsing through each element 
    22     $this->searchEnd($this->tempDiv->documentElement,$this->newDiv); 
    23     $newhtml = $this->newDiv->saveHTML(); 
    24     return $newhtml; 
    25   } 
    26  
    27   function deleteChildren($node) { 
    28     while (isset($node->firstChild)) { 
    29       $this->deleteChildren($node->firstChild); 
    30       $node->removeChild($node->firstChild); 
    31     } 
    32   }  
    33   function searchEnd($parseDiv, $newParent){ 
    34     foreach($parseDiv->childNodes as $ele){ 
    35         // not text node 
    36         if($ele->nodeType != 3){ 
    37           $newEle = $this->newDiv->importNode($ele,true); 
    38           if(count($ele->childNodes) === 0){ 
    39             $newParent->appendChild($newEle); 
    40             continue; 
    41           } 
    42           $this->deleteChildren($newEle); 
    43           $newParent->appendChild($newEle); 
    44             $res = $this->searchEnd($ele,$newEle); 
    45             if($res) 
    46                         return $res; 
    47             else 
    48                         continue; 
     8        function __construct($string, $limit){ 
     9                // create dom element using the html string 
     10                $this->tempDiv = new DomDocument; 
     11                $this->tempDiv->loadXML('<div>'.$string.'</div>'); 
     12                // keep the characters count till now 
     13                $this->charCount = 0; 
     14                $this->encoding = 'UTF-8'; 
     15                // character limit need to check 
     16                $this->limit = $limit; 
    4917        } 
    50  
    51         // the limit of the char count reached 
    52         if(mb_strlen($ele->nodeValue,$this->encoding) + $this->charCount >= $this->limit){ 
    53           $newEle = $this->newDiv->importNode($ele); 
    54             $newEle->nodeValue = substr($newEle->nodeValue,0, $this->limit - $this->charCount); 
    55             $newParent->appendChild($newEle); 
    56             return true; 
     18        function cut(){ 
     19                // create empty document to store new html 
     20                $this->newDiv = new DomDocument; 
     21                // cut the string by parsing through each element 
     22                $this->searchEnd($this->tempDiv->documentElement,$this->newDiv); 
     23                $newhtml = $this->newDiv->saveHTML(); 
     24                return $newhtml; 
    5725        } 
    58         $newEle = $this->newDiv->importNode($ele); 
    59         $newParent->appendChild($newEle); 
    60         $this->charCount += mb_strlen($newEle->nodeValue,$this->encoding); 
    61     } 
    62     return false; 
    63   } 
     26        function deleteChildren($node) { 
     27                while (isset($node->firstChild)) { 
     28                        $this->deleteChildren($node->firstChild); 
     29                        $node->removeChild($node->firstChild); 
     30                } 
     31        }  
     32        function searchEnd($parseDiv, $newParent){ 
     33                foreach($parseDiv->childNodes as $ele){ 
     34                        // not text node 
     35                        if($ele->nodeType != 3){ 
     36                                $newEle = $this->newDiv->importNode($ele,true); 
     37                                if(count($ele->childNodes) === 0){ 
     38                                        $newParent->appendChild($newEle); 
     39                                        continue; 
     40                                } 
     41                                $this->deleteChildren($newEle); 
     42                                $newParent->appendChild($newEle); 
     43                                $res = $this->searchEnd($ele,$newEle); 
     44                                if($res) 
     45                                        return $res; 
     46                                else 
     47                                        continue; 
     48                        } 
     49                        // the limit of the char count reached 
     50                        if(mb_strlen($ele->nodeValue,$this->encoding) + $this->charCount >= $this->limit){ 
     51                                $newEle = $this->newDiv->importNode($ele); 
     52                                $newEle->nodeValue = substr($newEle->nodeValue,0, $this->limit - $this->charCount); 
     53                                $newParent->appendChild($newEle); 
     54                                return true; 
     55                        } 
     56                        $newEle = $this->newDiv->importNode($ele); 
     57                        $newParent->appendChild($newEle); 
     58                        $this->charCount += mb_strlen($newEle->nodeValue,$this->encoding); 
     59                } 
     60                return false; 
     61        } 
    6462} 
    6563?> 
  • extensions/ContestResults/include/functions.php

    r9200 r9572  
    2323        } 
    2424} 
     25 
     26// Nombre de jours entre deux dates 
     27function DateDiff($date2, $date1) { 
     28        return ceil((strtotime($date2)-strtotime($date1))/(3600*24)); 
     29} 
     30 
     31// Date passée 
     32function is_date_passed($date) { 
     33        if (time() > strtotime($date)) { 
     34                return true; 
     35        } else { 
     36                return false; 
     37        } 
     38} 
    2539?> 
  • extensions/ContestResults/language/en_UK/plugin.lang.php

    r9419 r9572  
    2020$lang['CR_pending'] = 'Pending'; 
    2121$lang['CR_finished'] = 'Finished'; 
    22 $lang['CR_presentation'] = 'Presentation'; 
    23 $lang['CR_rules'] = 'Rules'; 
    24 $lang['CR_prices'] = 'Prices'; 
    25 $lang['CR_final'] = 'Ending'; 
    2622$lang['CR_summary'] = 'Summary'; 
    2723$lang['CR_textareas'] = 'Contest description'; 
     
    4541$lang['CR_results_saved'] = "Results saved"; 
    4642$lang['CR_name_empty'] = "The name of the contest can't be empty"; 
     43$lang['CR_days'] = "days remaining"; 
    4744 
    4845$lang['CR_order_1'] = '1<sup>st</sup>'; 
     
    6461$lang['CR_help_summary'] = "The summary is only displayed in the general contest page.<br/> 
    6562        <br/>" . $lang['CR_help_lang']; 
    66 $lang['CR_help_textareas'] = "These four areas allow you to describe the contest.<br/> 
     63$lang['CR_help_textareas'] = "Add here some text boxes to describe your contest.<br/> 
    6764        <br/>" . $lang['CR_help_lang']; 
    6865$lang['CR_help_results'] = "- Descriptions are displayed on each pictures pages and on the contest page for the first three.<br/> 
  • extensions/ContestResults/language/fr_FR/plugin.lang.php

    r9419 r9572  
    2020$lang['CR_pending'] = 'En cours'; 
    2121$lang['CR_finished'] = 'Terminé'; 
    22 $lang['CR_presentation'] = 'Présentation'; 
    23 $lang['CR_rules'] = 'Contraintes'; 
    24 $lang['CR_prices'] = 'Prix'; 
    25 $lang['CR_final'] = 'Conclusion'; 
    2622$lang['CR_summary'] = 'Résumé'; 
    2723$lang['CR_textareas'] = 'Description du concours'; 
     
    4541$lang['CR_results_saved'] = "Résultats sauvegardés"; 
    4642$lang['CR_name_empty'] = "Le nom du concours ne peut être vide"; 
     43$lang['CR_days'] = "jours restants"; 
    4744 
    4845$lang['CR_order_1'] = '1<sup>ère</sup>'; 
     
    6461$lang['CR_help_summary'] = "Le résumé n'est affiché que sur la page regroupant tous les concours.<br/> 
    6562        <br/>" . $lang['CR_help_lang']; 
    66 $lang['CR_help_textareas'] = "Ces quatres zones de texte vous permettent de décrire le concours.<br/> 
     63$lang['CR_help_textareas'] = "Ajoutez ici des zones de texte pour décrire votre concours.<br/> 
    6764        <br/>" . $lang['CR_help_lang']; 
    6865$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/> 
  • extensions/ContestResults/language/lv_LV/plugin.lang.php

    r9419 r9572  
    2020$lang['CR_pending'] = 'Vēl nepabeigts'; 
    2121$lang['CR_finished'] = 'Pabeigts'; 
    22 $lang['CR_presentation'] = 'Prezentācija'; 
    23 $lang['CR_rules'] = 'Noteikumi'; 
    24 $lang['CR_prices'] = 'Cenas'; 
    25 $lang['CR_final'] = 'Beigšana'; 
    2622$lang['CR_summary'] = 'Kopā'; 
    2723$lang['CR_textareas'] = 'Konkursa apraksts'; 
     
    4541$lang['CR_results_saved'] = "Rezultāti saglabāti"; 
    4642$lang['CR_name_empty'] = "Konkursa nosaukums nevar būt tukšs"; 
     43$lang['CR_days'] = "atlikušo dienu"; 
    4744 
    4845$lang['CR_order_1'] = '1.'; 
     
    6461$lang['CR_help_summary'] = "Kopsavilkums tiek attēlots tikai konkursa galvenajā lapā.<br/> 
    6562        <br/>" . $lang['CR_help_lang']; 
    66 $lang['CR_help_textareas'] = "Šie četri apgabali dod jums iespēju aprakstīt konkursu.<br/> 
     63$lang['CR_help_textareas'] = "Lūdzu, pievienojiet tekstlodziņus, lai aprakstītu jūsu konkurentiem.<br/> 
    6764        <br/>" . $lang['CR_help_lang']; 
    6865$lang['CR_help_results'] = "- Apraksti tiek rādīti uz katras attēla lapas un uz konkursa lapas - pirmajiem trim.<br/> 
  • extensions/ContestResults/main.inc.php

    r9333 r9572  
    22/* 
    33Plugin Name: ContestResults 
    4 Version: 1.2.a 
     4Version: 1.3 
    55Description: Add contests management pages 
    66Plugin URI: http://piwigo.org/ext/extension_view.php?eid=439 
     
    1616//                              Variables globales CR 
    1717// +-----------------------------------------------------------------------+ 
     18define('CR_NAME' , 'Contest Results'); 
     19define('CR_VERSION', '1.3'); 
    1820define('CR_DIR' , basename(dirname(__FILE__))); 
    1921define('CR_PATH' , PHPWG_PLUGINS_PATH . CR_DIR . '/'); 
    2022define('CR_TABLE_1' , $prefixeTable . 'contests'); 
    2123define('CR_TABLE_2' , $prefixeTable . 'contests_results'); 
    22 define('CR_NAME' , 'ContestResults'); 
    23 define('CR_VERSION', '1.2.a'); 
    2424define('CR_ADMIN', PHPWG_ROOT_PATH . 'admin.php?page=plugin&amp;section=' . CR_DIR . '/admin/admin.php'); 
    2525define('CR_PUBLIC', make_index_url(array('section' => 'contests')) . '/'); 
     
    4242//                                      Fonctions 
    4343// +-----------------------------------------------------------------------+ 
     44include(CR_PATH . 'include/functions.php'); 
    4445// Gestion du menu 
    4546include(CR_PATH . 'include/cr_menubar.php'); 
     
    5960         
    6061        load_language('plugin.lang', CR_PATH); 
    61         include(CR_PATH . 'include/functions.php'); 
    6262         
    6363    if ($tokens[0] == 'contests') { // on est dans la section concours 
     
    6565                $page['title'] = l10n('Contests'); 
    6666                 
    67                 if (isset($tokens[1]) AND $tokens[1]) { // on est sur la page d'un concours 
    68                         $page['contest'] = explode('-', $tokens[1]); 
    69                         $page['contest'] = $page['contest'][0]; 
    70                         $page['title'] .= $conf['level_separator'] . trigger_event('render_CR_content', get_contest_name($page['contest'])); 
     67                if (isset($tokens[1]) AND !empty($tokens[1])) { // on est sur la page d'un concours 
     68                        $tokens[1] = explode('-', $tokens[1]); 
     69                        if (preg_match('#^([0-9]*)$#', $tokens[1][0])) { // is_int ne marche pas parce que le chiffre est stocké en (string) 
     70                                $page['contest'] = $tokens[1][0]; 
     71                                $page['title'] .= $conf['level_separator'] . trigger_event('render_CR_content', get_contest_name($page['contest'])); 
     72                        } 
    7173                } 
    7274        } 
  • extensions/ContestResults/maintain.inc.php

    r9333 r9572  
    33 
    44// Configuration par défaut 
    5 define('default_config' , serialize(array( 
     5define('default_config', serialize(array( 
    66        'menubar_mode' => array( 
    77                'link' => 0, 
     
    2626                `date_begin` DATE NOT NULL , 
    2727                `date_end` DATE NOT NULL , 
    28                 `status` VARCHAR( 255 ) NOT NULL , 
    2928                `visible` TINYINT(1) NOT NULL , 
    3029                `logo` VARCHAR( 255 ) NULL , 
    3130                `banner` VARCHAR( 255 ) NULL , 
    32                 `summary` TEXT NULL , 
    33                 `presentation` TEXT NULL , 
    34                 `rules` TEXT NULL , 
    35                 `prices` TEXT NULL , 
    36                 `final` TEXT NULL , 
     31                `description` TEXT NULL , 
    3732                PRIMARY KEY ( `id` ) 
    3833        );"); 
     
    6257        $field = pwg_query("SHOW COLUMNS FROM `" . $prefixeTable . "contests` LIKE 'presentation_display'"); 
    6358        if (pwg_db_num_rows($field)) { 
    64                 pwg_query("ALTER TABLE `" . $prefixeTable . "contests` DROP `presentation_display`"); 
    65                 pwg_query("ALTER TABLE `" . $prefixeTable . "contests` DROP `rules_display`"); 
    66                 pwg_query("ALTER TABLE `" . $prefixeTable . "contests` DROP `prices_display`"); 
    67                 pwg_query("ALTER TABLE `" . $prefixeTable . "contests` DROP `final_display`"); 
     59                pwg_query("ALTER TABLE `" . $prefixeTable . "contests`  
     60                        DROP `presentation_display`, 
     61                        DROP `rules_display`, 
     62                        DROP `prices_display`, 
     63                        DROP `final_display`;" 
     64                ); 
    6865        } 
     66         
     67        // compatibilité avec les versions < 1.3 (suppression option status, regroupement des champs de description) 
     68        $field = pwg_query("SHOW COLUMNS FROM `" . $prefixeTable . "contests` LIKE 'status'"); 
     69        if (pwg_db_num_rows($field)) { 
     70                pwg_query("ALTER TABLE `" . $prefixeTable . "contests` DROP `status`"); 
     71                pwg_query("ALTER TABLE `" . $prefixeTable . "contests` ADD `description` TEXT NULL"); 
     72                 
     73                $contests = pwg_query("SELECT * FROM `" . $prefixeTable . "contests`"); 
     74                while ($contest = pwg_db_fetch_assoc($contests)) { 
     75                        $new_description = array(); 
     76                        if (!empty($contest['presentation'])) { 
     77                                $new_description[] = array( 
     78                                        'name' => 'Presentation[lang=fr]Présentation[/lang][lang=es]Presentación[/lang][lang=lv]Prezentacija[/lang]', 
     79                                        'content' => $contest['presentation'], 
     80                                ); 
     81                        } 
     82                        if (!empty($contest['rules'])) { 
     83                                $new_description[] = array( 
     84                                        'name' => 'Rules[lang=fr]Règles[/lang][lang=es]Restricciones[/lang][lang=lv]Noteikumi[/lang]', 
     85                                        'content' => $contest['rules'], 
     86                                ); 
     87                        } 
     88                        if (!empty($contest['prices'])) { 
     89                                $new_description[] = array( 
     90                                        'name' => 'Prices[lang=fr]Prix[/lang][lang=es]Precios[/lang][lang=lv]Cenas[/lang]', 
     91                                        'content' => $contest['prices'], 
     92                                ); 
     93                        } 
     94                        if (!empty($contest['final'])) { 
     95                                $new_description[] = array( 
     96                                        'name' => 'Conclusion[lang=fr]Conclusion[/lang][lang=es]Conclusión[/lang][lang=lv]Beigsana[/lang]', 
     97                                        'content' => $contest['final'], 
     98                                ); 
     99                        } 
     100                 
     101                        $new_description = base64_encode(serialize($new_description)); 
     102                        pwg_query("UPDATE `" . $prefixeTable . "contests` 
     103                                SET description = '". $new_description ."' 
     104                                WHERE id = ". $contest['id'] .";" 
     105                        ); 
     106                } 
     107                 
     108                pwg_query("ALTER TABLE `" . $prefixeTable . "contests`  
     109                        DROP `presentation`, 
     110                        DROP `rules`, 
     111                        DROP `prices`, 
     112                        DROP `final`;" 
     113                ); 
     114        } 
     115         
    69116} 
    70117 
  • extensions/ContestResults/template/cr_main.tpl

    r9419 r9572  
    1 {html_head} 
    2 <link rel="stylesheet" type="text/css" href="{$CR_PATH}template/style.css"> 
    3 {/html_head} 
     1{combine_css id='cr_style' path=$CR_PATH|@cat:'template/style.css'} 
    42 
    53{$MENUBAR} 
     
    108        <div class="titrePage"> 
    119                <ul class="categoryActions"> 
     10                        {if isset($U_EDIT)} 
     11                        <li><a href="{$U_EDIT}" title="{'edit'|@translate}" class="pwg-state-default pwg-button"> 
     12                                <span class="pwg-icon pwg-icon-category-edit"> </span><span class="pwg-button-text">{'edit'|@translate}</span> 
     13                        </a></li> 
     14                        {/if} 
    1215                        {if !empty($PLUGIN_INDEX_ACTIONS)}{$PLUGIN_INDEX_ACTIONS}{/if} 
     16                </ul> 
    1317                </ul> 
    1418                <h2>{'Contests'|@translate}</h2> 
     
    2630                        <div class="thumbnailCategory {if $contest.VISIBLE == 0}novisible{/if}"> 
    2731                                <div class="illustration"> 
    28                                 {if $contest.STATUS == 'pending'} 
     32                                {if !$contest.FINISHED == 'pending'} 
     33                                        <a href="{$contest.URL}"> 
    2934                                        {if !empty($contest.LOGO)} 
    30                                                 <a href="{$contest.URL}"> 
    31                                                         <img src="{$contest.LOGO}" alt="{$contest.NAME}" style="max-height:120px;max-width:120px;"> 
    32                                                 </a> 
     35                                                <img src="{$contest.LOGO}" alt="{$contest.NAME}" style="max-height:120px;max-width:120px;"> 
    3336                                        {/if} 
     37                                        </a> 
    3438                                {else} 
    3539                                        <a href="{$contest.URL}"> 
     
    4145                                        <h3> 
    4246                                                <a href="{$contest.URL}">{$contest.NAME}</a> 
    43                                                 {if $contest.STATUS == 'finished'}<span class="CR_finished">({'CR_finished'|@translate})</span>{/if} 
     47                                                {if $contest.FINISHED} 
     48                                                        <span class="CR_finished">({'CR_finished'|@translate})</span> 
     49                                                {else} 
     50                                                        <span class="CR_finished">({$contest.DAYS} {'CR_days'|@translate})</span> 
     51                                                {/if} 
    4452                                        </h3> 
    4553                                        <div class="text"> 
    4654                                                <p class="Nb_images">{$contest.DATE_BEGIN} - {$contest.DATE_END}</p> 
    4755                                                <p> 
    48                                                 {if $contest.STATUS == 'pending'} 
     56                                                {if !$contest.FINISHED} 
    4957                                                        {if !empty($contest.SUMMARY)} 
    5058                                                                {$contest.SUMMARY} 
  • extensions/ContestResults/template/cr_menubar.tpl

    r9200 r9572  
    11{html_head} 
    22        <style type="text/css"> 
    3                 .CR_finished {ldelim} 
     3                .CR_finished_menu {ldelim} 
    44                        font-size:0.8em; 
    55                        color:#a00; 
     6                        letter-spacing:0px; 
    67                } 
    78        </style> 
     
    1516                                <a href="{$data.URL}" title="{$data.DATE}"> 
    1617                                        {$data.LABEL} 
    17                                         {if $data.STATUS == 'finished'}<span class="CR_finished">&times;</span>{/if} 
     18                                        {if $data.FINISHED} 
     19                                                <span class="CR_finished_menu">&times;</span> 
     20                                        {else} 
     21                                                <span class="CR_finished_menu">{$data.DAYS}</span> 
     22                                        {/if} 
    1823                                </a> 
    1924                        </li> 
  • extensions/ContestResults/template/cr_page.tpl

    r9200 r9572  
    1 {html_head} 
    2         <link rel="stylesheet" type="text/css" href="{$CR_PATH}template/style.css"> 
    3 {/html_head} 
     1{combine_css id='cr_style' path=$CR_PATH|@cat:'template/style.css'} 
    42 
    53{$MENUBAR} 
     
    108                <ul class="categoryActions">   
    119                        {if isset($U_EDIT) } 
    12                                 <li><a href="{$U_EDIT}" title="{'CR_edit_tab'|@translate}"><img src="{$ROOT_URL}{$themeconf.icon_dir}/category_edit.png" class="button" alt="{'CR_edit_tab'|@translate}"></a></li> 
     10                        <li><a href="{$U_EDIT}" title="{'CR_edit_tab'|@translate}" class="pwg-state-default pwg-button"> 
     11                                <span class="pwg-icon pwg-icon-category-edit"> </span><span class="pwg-button-text">{'CR_edit_tab'|@translate}</span> 
     12                        </a></li> 
    1313                        {/if} 
    1414                        {if !empty($PLUGIN_INDEX_ACTIONS)}{$PLUGIN_INDEX_ACTIONS}{/if} 
     
    1616                <h2> 
    1717                        <a href="index.php?/contests" name="top">{'Contests'|@translate}</a>{$SEPARATOR}<a href="{$URL}">{$NAME}</a> 
    18                         {if $STATUS=='finished'}<span class="CR_finished">({'CR_finished'|@translate})</span>{/if} 
     18                        {if $FINISHED} 
     19                                <span class="CR_finished">({'CR_finished'|@translate})</span> 
     20                        {else} 
     21                                <span class="CR_finished">({$DAYS} {'CR_days'|@translate})</span> 
     22                        {/if} 
    1923                </h2> 
    2024        </div> <!-- titrePage --> 
     
    3842        </div> 
    3943         
    40         {if !empty($PRESENTATION)} 
     44        {foreach from=$description item=desc name=desc_loop} 
    4145                <div class="CR_text"> 
    42                         <h3>{'CR_presentation'|@translate} :</h3> 
    43                         {$PRESENTATION} 
     46                        <h3>{$desc.NAME} :</h3> 
     47                        {$desc.CONTENT} 
    4448                </div> 
    45         {/if} 
    46          
    47         {if !empty($RULES)}      
    48                 <div class="CR_text"> 
    49                         <h3>{'CR_rules'|@translate} :</h3> 
    50                         {$RULES} 
    51                 </div> 
    52         {/if} 
    53          
    54         {if !empty($PRICES)} 
    55                 <div class="CR_text"> 
    56                         <h3>{'CR_prices'|@translate} :</h3> 
    57                         {$PRICES} 
    58                 </div> 
    59         {/if} 
    60          
    61         {if !empty($FINAL)} 
    62                 <div class="CR_text"> 
    63                         <h3>{'CR_final'|@translate} :</h3> 
    64                         {$FINAL} 
    65                 </div> 
    66         {/if} 
     49        {/foreach} 
    6750</div> <!-- content_contest --> 
    6851 
     
    7255                        <ul class="categoryActions">   
    7356                                {if isset($U_RESULTS) } 
    74                                         <li><a href="{$U_RESULTS}" title="{'CR_results'|@translate}"><img src="{$ROOT_URL}{$themeconf.icon_dir}/category_edit.png" class="button" alt="{'CR_results'|@translate}"></a></li> 
     57                                <li><a href="{$U_RESULTS}" title="{'CR_results'|@translate}" class="pwg-state-default pwg-button"> 
     58                                        <span class="pwg-icon pwg-icon-category-edit"> </span><span class="pwg-button-text">{'CR_edit_tab'|@translate}</span> 
     59                                </a></li> 
    7560                                {/if} 
    7661                        </ul> 
  • extensions/ContestResults/template/style.css

    r9200 r9572  
    22        font-weight:normal; 
    33        font-size:0.8em; 
    4         letter-spacing:0.3em; 
     4        letter-spacing:0.2em; 
    55        padding-left:10px; 
    66        color:#a00; 
Note: See TracChangeset for help on using the changeset viewer.