Changeset 9572


Ignore:
Timestamp:
Mar 8, 2011, 1:19:06 PM (13 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.