Changeset 1111


Ignore:
Timestamp:
03/19/10 18:29:25 (2 years ago)
Author:
wefgef
Message:

Added task ratings functionality and changed the task edit related pages UI.

  • Replaced all the edit links in a task page with a single edit link.
  • All the task related edit pages are grouped together using tabs.
  • Created a task ratings page
  • Included a script to create/update necessary database tables.

REVIEW URL http://reviewboard.infoarena.ro/r/140/

Includes changes from http://reviewboard.infoarena.ro/r/137/

Location:
trunk
Files:
5 added
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/common/security.php

    r1107 r1111  
    145145        case 'textblock-change-security': 
    146146        case 'task-edit-owner': 
     147        case 'task-edit-ratings': 
    147148        case 'round-tag': 
    148149        case 'textblock-tag': 
  • trunk/www/controllers/task.php

    r1106 r1111  
    44require_once(IA_ROOT_DIR . "common/task.php"); 
    55require_once(IA_ROOT_DIR . "common/tags.php"); 
     6require_once(IA_ROOT_DIR . "common/task_rating.php"); 
    67 
    78// Displays form to either create a new task or edit an existing one. 
     
    162163            mem_cache_delete("task-authors-by-id:".$new_task["id"]); 
    163164 
    164             flash("Task-ul a fost modificat cu succes."); 
    165             redirect(url_task_edit($task_id)); 
     165            flash("Parametrii au fost salvati cu succes!"); 
     166            redirect(url_task_edit($task_id, 'task-edit-params')); 
    166167        } else { 
    167168            flash_error("Sunt erori in datele introduse."); 
     
    171172    // Create view. 
    172173    $view = array(); 
    173     $view['title'] = $task_id; 
     174    $view['title'] = 'Editeaza parametrii pentru problema '.$task['title']; 
    174175    $view['page_name'] = url_task_edit($task_id); 
    175176    $view['task_id'] = $task_id; 
     
    224225            log_assert(task_create($task, $task_params, remote_ip_info())); 
    225226            flash("Un nou task a fost creeat, acum poti sa-l editezi"); 
    226             redirect(url_task_edit($task['id'])); 
     227            redirect(url_task_edit($task['id'], 'task-edit-params')); 
    227228        } 
    228229    } 
     
    268269} 
    269270 
     271// Edit ratings for a task 
     272function controller_task_ratings($task_id) { 
     273    // Validate task id 
     274    if (!is_task_id($task_id)) { 
     275        flash_error("Problema inexistenta"); 
     276        redirect(url_home()); 
     277    } 
     278 
     279    // Get task 
     280    $task = task_get($task_id); 
     281    if (!$task) { 
     282        falsh_error("Problema inexistenta"); 
     283        redirect(url_home()); 
     284    } 
     285 
     286    // Security check 
     287    identity_require('task-edit-ratings', $task); 
     288    $user_id = identity_get_user_id(); 
     289 
     290    // Form stuff 
     291    $ratings = array(); 
     292    $errors = array(); 
     293 
     294    if (request_is_post()) { 
     295        $rating_fields = array('idea', 'theory', 'coding'); 
     296 
     297        foreach ($rating_fields as $rating_field) { 
     298            $rating_value = request($rating_field); 
     299 
     300            if (!task_is_rating_value($rating_value)) { 
     301                flash_error("Datele introduse nu sunt valide!"); 
     302                redirect(url_task_edit($task_id, 'task-edit-ratings')); 
     303            } 
     304 
     305            $ratings[$rating_field] = $rating_value; 
     306        } 
     307 
     308        task_rating_add($task_id, $user_id, $ratings); 
     309 
     310        flash("Ratingurile au fost salvate cu succes!"); 
     311        redirect(url_task_edit($task_id, 'task-edit-ratings')); 
     312    } 
     313 
     314    $ratings = task_rating_get($task_id, $user_id); 
     315 
     316    $view['title'] = "Editeaza ratingurile pentru problema " . $task['title']; 
     317    $view['task_id'] = $task_id; 
     318    $view['form_values'] = $ratings; 
     319    $view['form_errors'] = $errors; 
     320 
     321    execute_view_die('views/task_rating_edit.php', $view); 
     322} 
     323 
    270324// Tag a task 
    271325function controller_task_tag($task_id) { 
     
    289343        if (!is_array($algorithm_tags_id)) { 
    290344            flash_error("Datele trimise sunt invalide. Raporteaza aceasta problema unui admin."); 
    291             redirect(url_task_edit_tags($task_id)); 
     345            redirect(url_task_edit($task_id, 'task-edit-tags')); 
    292346        } 
    293347 
     
    295349            if (!is_tag_id($tag_id)) { 
    296350                flash_error("Datele trimise sunt invalide. Raporteaza aceasta problema unui admin."); 
    297                 redirect(url_task_edit_tags($task_id)); 
     351                redirect(url_task_edit($task_id, 'task-edit-tags')); 
    298352            } 
    299353        } 
     
    308362        if ($count != count($algorithm_tags_id)) { 
    309363            flash_error("Datele trimise sunt invalide. Raporteaza aceasta problema unui admin."); 
    310             redirect(url_task_edit_tags($task_id)); 
     364            redirect(url_task_edit($task_id, 'task-edit-tags')); 
    311365        } 
    312366 
    313367        task_update_tags($task_id, $method_tags_id, $algorithm_tags_id); 
    314         flash("Tagurile au fost salvate cu succes"); 
     368        flash("Tagurile au fost salvate cu succes!"); 
     369        redirect(url_task_edit($task_id, 'task-edit-tags')); 
    315370    } 
    316371 
  • trunk/www/index.php

    r1109 r1111  
    8989} 
    9090 
    91 // Task detail editor 
    92 else if ($urlstart == 'admin' && getattr($pagepath, 1) == 'problema') { 
    93     require_once(IA_ROOT_DIR.'www/controllers/task.php'); 
    94     $obj_id = implode("/", array_slice($pagepath, 2)); 
    95     $action = request('action'); 
    96     if ($action == 'tag-edit') { 
    97         controller_task_tag($obj_id); 
    98     } else { 
    99         controller_task_details($obj_id); 
    100     } 
     91// Task edit parameters 
     92else if ($urlstart == 'problema' && $action == 'task-edit-params') { 
     93    require_once(IA_ROOT_DIR.'www/controllers/task.php'); 
     94    $task_id = implode("/", array_slice($pagepath, 1)); 
     95    controller_task_details($task_id); 
     96} 
     97 
     98// Task edit tags 
     99else if ($urlstart == 'problema' && $action == 'task-edit-tags') { 
     100    require_once(IA_ROOT_DIR.'www/controllers/task.php'); 
     101    $task_id = implode("/", array_slice($pagepath, 1)); 
     102    controller_task_tag($task_id); 
     103} 
     104 
     105// Task edit ratings 
     106else if ($urlstart == 'problema' && $action == 'task-edit-ratings') { 
     107    require_once(IA_ROOT_DIR.'www/controllers/task.php'); 
     108    $task_id = implode("/", array_slice($pagepath, 1)); 
     109    controller_task_ratings($task_id); 
    101110} 
    102111 
  • trunk/www/url.php

    r1095 r1111  
    255255} 
    256256 
    257 function url_task_edit($task_id) { 
     257function url_task_edit($task_id, $action = 'edit') { 
    258258    log_assert(is_task_id($task_id)); 
    259     return url_complex("admin/problema/$task_id"); 
    260 } 
    261  
    262 function url_task_edit_tags($task_id) { 
    263     log_assert(is_task_id($task_id)); 
    264     return url_complex("admin/problema/{$task_id}", array( 'action' => 'tag-edit')); 
     259    return url_complex("problema/$task_id", array('action' => $action)); 
    265260} 
    266261 
  • trunk/www/views/task_edit.php

    r1084 r1111  
    33require_once(IA_ROOT_DIR."common/tags.php"); 
    44require_once(IA_ROOT_DIR."www/format/form.php"); 
     5require_once(IA_ROOT_DIR."www/views/task_edit_header.php"); 
    56 
    67$view['head'] = getattr($view, 'head'). 
     
    910include('views/header.php'); 
    1011include('views/tags_header.php'); 
     12 
     13echo task_edit_tabs($view['task_id'], request("action")); 
    1114 
    1215// Validate task. 
     
    9598?> 
    9699 
    97 <h1>Editare <a href="<?= html_escape(url_task($view['task_id'])) ?>"><?= html_escape($view['title']) ?></a></h1> 
     100<h1>Editare parametri <a href="<?= html_escape(url_task($view['task_id'])) ?>"> 
     101<?= html_escape($view['task_id']) ?></a></h1> 
    98102 
    99103<?php if (identity_can("task-delete", $task)) { ?> 
     
    104108<?php } ?> 
    105109 
    106 <form action="<?= html_escape(url_task_edit($task_id)) ?>" 
     110<form action="<?= html_escape(url_task_edit($task_id, 'task-edit-params')) ?>" 
    107111      method="post" 
    108112      class="task" 
  • trunk/www/views/task_tag_edit.php

    r1089 r1111  
    11<?php 
     2    require_once(IA_ROOT_DIR."www/views/task_edit_header.php"); 
     3 
    24    include('header.php'); 
     5    $task_id = $view['task']['id']; 
    36    $task_link = url_task($view['task']['id']); 
    47    $task_title = $view['task']['title']; 
    5     $action_link = url_task_edit_tags($view['task']['id']); 
     8    $action_link = url_task_edit($view['task']['id'], 'task-edit-tags'); 
    69    $task_tags = $view['task_tags']; 
     10 
     11    echo task_edit_tabs($task_id, request("action")); 
    712?> 
    8 <h1>Taguri pentru problema <a href="<?= $task_link ?>"><?= $task_title ?></a></h1> 
     13 
     14<h1>Editare taguri <a href="<?= $task_link ?>"><?= $task_id ?></a></h1> 
    915<form name="task_tags" action="<?= $action_link ?>" method="post"> 
    1016<?php 
     
    2834    } 
    2935?> 
    30 <input type="submit" class="button important" value="Submit" /> 
     36<input type="submit" class="button important" value="Salveaza" /> 
    3137</form> 
    3238 
  • trunk/www/views/textblock_edit.php

    r1077 r1111  
    66include('views/header.php'); 
    77include('views/tags_header.php'); 
     8 
     9// insert task edit tabs 
     10if (($task_id = textblock_security_is_task($page['security'])) && 
     11    (identity_can('task-edit', task_get($task_id)))) { 
     12    require_once(IA_ROOT_DIR."www/views/task_edit_header.php"); 
     13    echo task_edit_tabs($task_id, request("action")); 
    814?> 
     15<h1>Editare enunț <a href="<?= html_escape(url_task($task_id)) ?>"> 
     16<?= html_escape($task_id) ?></a></h1> 
     17<?php } ?> 
    918 
    1019<form accept-charset="utf-8" action="<?= html_escape(url_textblock_edit($page_name)) ?>" method="post" id="form_wikiedit" <?= tag_form_event() ?>> 
  • trunk/www/views/textblock_header.php

    r1099 r1111  
    66require_once(IA_ROOT_DIR . "common/textblock.php"); 
    77log_assert_valid(textblock_validate($textblock)); 
    8   
    98?> 
    109<div id="wikiOps"> 
    1110    <ul> 
    12 <?php if (($task_id = textblock_security_is_task($textblock['security'])) && identity_can('task-edit', $task = task_get($task_id))) { ?> 
    13 <li><?= format_link_access(url_task_edit($task['id']), 'Editează parametrii', 'p') ?></li> 
    14 <?php } ?> 
    15 <?php if ($task_id && identity_can('task-tag', $task)) { ?> 
    16 <li><?= format_link_access(url_task_edit_tags($task['id']), 'Editează tag-uri', 't') ?></li> 
     11<?php if (($task_id = textblock_security_is_task($textblock['security'])) && 
     12          identity_can('task-edit', $task = task_get($task_id))) { ?> 
     13<li><?= format_link_access(url_task_edit($task['id']), 'Editează', 'e') ?></li> 
     14<?php } elseif(identity_can('textblock-edit', $textblock)) { ?> 
     15<li><?= format_link_access(url_textblock_edit($textblock['name']), 'Editează', 'e') ?></li> 
    1716<?php } ?> 
    1817<?php if (($round_id = textblock_security_is_round($textblock['security'])) && identity_can('round-edit', $round = round_get($round_id))) { ?> 
    19 <li><?= format_link_access(url_round_edit($round['id']), 'Editează parametrii', 'p') ?></li> 
    20 <?php } ?> 
    21 <?php if (identity_can('textblock-edit', $textblock)) { ?> 
    22 <li><?= format_link_access(url_textblock_edit($textblock['name']), ($task_id) ? 'Editează enunţ' : 'Editează', 'e') ?></li> 
     18<li><?= format_link_access(url_round_edit($round['id']), 'Editează parametri', 'p') ?></li> 
    2319<?php } ?> 
    2420<?php if (identity_can('textblock-history', $textblock)) { ?> 
Note: See TracChangeset for help on using the changeset viewer.