From b1143e0250a1c75864ca6f0bead9a190ed8962a1 Mon Sep 17 00:00:00 2001 From: Jayaram Pai Date: Tue, 1 Apr 2014 15:16:59 +0530 Subject: next review feature added. --- css/tbc_external_review.css | 22 ++++ tbc_external_review.module | 290 ++++++++++++++++++++++++++++++++++---------- 2 files changed, 246 insertions(+), 66 deletions(-) diff --git a/css/tbc_external_review.css b/css/tbc_external_review.css index 6bc2925..7c180ee 100755 --- a/css/tbc_external_review.css +++ b/css/tbc_external_review.css @@ -64,3 +64,25 @@ #review-completion-form #missed-list { display: none; } +.review-links { + margin: 0 10px; + padding: 2px 5px; + color: #333333; + border: 1px solid #333333; + -webkit-transition: background-color .5s ease-out 0s; + -moz-transition: background-color .5s ease-out 0s; + -o-transition: background-color .5s ease-out 0s; + transition: background-color .5s ease-out 0s; + -webkit-transition: color .5s ease-out .1s; + -moz-transition: color .5s ease-out .1s; + -o-transition: color .5s ease-out .1s; + transition: color .5s ease-out .1s; +} +.review-links:hover { + color: #ffffff; + background: #333333; +} +.review-links.active{ + background: #333333; + color: #ffffff; +} diff --git a/tbc_external_review.module b/tbc_external_review.module index 2525bfb..1f043be 100755 --- a/tbc_external_review.module +++ b/tbc_external_review.module @@ -478,18 +478,56 @@ return $page_content; } - function tbc_external_review_comments_view_all($preference_id = 0) { + function tbc_external_review_comments_view_all($preference_id = 0, $review = 0) { global $user; $page_content = ""; + $page_content .= "
"; + + /* creating review links */ + $query = " + SELECT DISTINCT(review) FROM external_review_comments + WHERE preference_id = %d + ORDER BY review DESC + "; + $result = db_query($query, $preference_id); + $tmp = $review; // for active class in case of 0 + while($row = db_fetch_object($result)) { + $option["attributes"]["class"] = "review-links"; + if($review == $row->review) { + $option["attributes"]["class"] .= " active"; + } else if($tmp == 0) { + $option["attributes"]["class"] .= " active"; + $tmp = -1; + } + $page_content .= l( + suffix($row->review) . "review", + "tbc_external_review/comments/view/{$preference_id}/{$row->review}", + $option + ); + } + $page_content .= "


"; if($preference_id) { - $query = " - SELECT erc.*, cha.number AS chapter, exa.number AS example FROM external_review_comments erc - LEFT JOIN textbook_companion_chapter cha ON cha.id = erc.chapter_id - LEFT JOIN textbook_companion_example exa ON exa.id = erc.example_id - WHERE erc.preference_id = %d - ORDER BY erc.time DESC - "; - $result = db_query($query, $preference_id); + if($review) { + $query = " + SELECT erc.*, cha.number AS chapter, exa.number AS example FROM external_review_comments erc + LEFT JOIN textbook_companion_chapter cha ON cha.id = erc.chapter_id + LEFT JOIN textbook_companion_example exa ON exa.id = erc.example_id + WHERE erc.preference_id = %d AND erc.review = %d + ORDER BY erc.time DESC + "; + $result = db_query($query,$preference_id, $review); + } else { + $query = " + SELECT erc.*, cha.number AS chapter, exa.number AS example FROM external_review_comments erc + LEFT JOIN textbook_companion_chapter cha ON cha.id = erc.chapter_id + LEFT JOIN textbook_companion_example exa ON exa.id = erc.example_id + WHERE erc.preference_id = %d AND review = ( + SELECT MAX(review) FROM external_review_comments WHERE preference_id = %d + ) + ORDER BY erc.time DESC + "; + $result = db_query($query, $preference_id, $preference_id); + } $headers = array( "Chapter", "Example", "Time", "Action" @@ -674,15 +712,21 @@ function tbc_external_review_comment_form_submit($form, &$form_state) { global $user; $v = $form_state["values"]; - $query = "INSERT INTO {external_review_comments} - (uid, preference_id, chapter_id, example_id, ncf, eit, axl, sua, sfu, sum, aci, auu, teo, amt, comment) + $query = " + INSERT INTO {external_review_comments} + (uid, preference_id, chapter_id, example_id, ncf, eit, axl, sua, sfu, sum, aci, auu, teo, amt, comment, review) VALUES - (%d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, '%s') + ( + %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, '%s', + ( + SELECT review FROM external_review_details WHERE preference_id = %d + ) + ) "; $result = db_query( $query, $user->uid, $v["book"], $v["chapter"], $v["example"], $v["ncf"], $v["eit"], $v["axl"], $v["sua"], $v["sfu"], $v["sum"], - $v["aci"], $v["auu"], $v["teo"], $v["amt"], $v["comment"] + $v["aci"], $v["auu"], $v["teo"], $v["amt"], $v["comment"], $v["book"] ); drupal_set_message(t("Comment submited successfully"), "status"); } @@ -784,50 +828,126 @@ return $books; } - function tbc_external_review_manage_status_all() { - $page_content = ""; - $query = " - SELECT * from textbook_companion_preference tcp INNER JOIN external_review_details erd - ON (tcp.id = erd.preference_id AND erd.status=1) INNER JOIN users ON (erd.uid = users.uid) - ORDER BY users.name - "; - $result = db_query($query); - $headers = array( - "Book", "Review No.", - "Status", "Reviewer", - ); - $rows = array(); - while($row = db_fetch_object($result)) { - $item = array( - "{$row->book}
by {$row->author}", - suffix($row->review), - ($row->completed?"Completed":"Ongoing"), - "{$row->name}", + function tbc_external_review_manage_status_all($action="", $preference_id=0, $confirm="") { + $page_content = ""; + if($action == "next" && $preference_id && $confirm == "yes") { + $query = " + UPDATE external_review_details + SET review = review + 1, completed = 0, sent = 0 + WHERE preference_id = %d + "; + $result = db_query($query, $preference_id); + if (!$result) { + drupal_set_message("Database updation failed", "error"); + } else { + /* preparing to send mail to reviewer */ + $query = " + SELECT * FROM textbook_companion_preference pre + LEFT JOIN textbook_companion_proposal pro ON pre.proposal_id = pro.id + LEFT JOIN external_review_details erd ON pre.id = erd.preference_id + LEFT JOIN users usr ON erd.uid = usr.uid + WHERE pre.id = %d + "; + $result = db_query($query, $preference_id); + $row = db_fetch_object($result); + $review_no = suffix($row->review); + $download_link = l(t("Download [.zip]"), "full_download_external/book/{$row->id}"); + /* sending mail */ + $to = "{$row->mail}"; + $subject = "Please Start {$review_no} Review - Textbook Companion Project"; + $body = " + Dear {$row->name}

+ The student has submitted the corrected codes.
+ Please start the {$review_no} review for the following book.

+ Book: {$row->book}
+ Author: {$row->author}
+ Review: {$review_no}

+ The updated code for the book can be downloaded here: {$download_link}

+ You can start giving comments on error codes for this review.
+ Please make sure to mark the review as completed again after you finish this review.

+ Thank you for your patience.

+ Best Wishes,
+ Scilab.in + "; + $message = array( + "to" => $to, + "subject" => $subject, + "body" => $body, + "headers" => array( + "From" => "textbook@scilab.in", + "Bcc" => "mukulrkulkarni@gmail.com, lavitha89@gmail.com, rush2jrp@gmail.com", + "Content-Type" => "text/html; charset=UTF-8; format=flowed" + ) + ); + drupal_mail_send($message); + drupal_set_message("Next review started.", "status"); + drupal_goto("tbc_external_review/manage_status"); + } + } else if($action == "next" && $preference_id) { + $query = " + SELECT pre.book, pre.author, usr.name, erd.review, ext.name AS reviewer FROM textbook_companion_preference pre + LEFT JOIN textbook_companion_proposal pro ON pre.proposal_id = pro.id + LEFT JOIN users usr ON pro.uid = usr.uid + LEFT JOIN external_review_details erd ON pre.id = erd.preference_id + LEFT JOIN users ext ON erd.uid = ext.uid + WHERE pre.id = %d + "; + $result = db_query($query, $preference_id); + $row = db_fetch_object($result); + $page_content .= "Are you sure you want start the " . suffix($row->review+1) . " review?

"; + $page_content .= "Book: {$row->book}
"; + $page_content .= "Author: {$row->author}
"; + $page_content .= "Contributor: {$row->name}
"; + $page_content .= "External Reviewer: {$row->reviewer}

"; + $page_content .= l("Yes", "tbc_external_review/manage_status/next/{$preference_id}/yes"); + $page_content .= " | "; + $page_content .= l("Cancel", "tbc_external_review/manage_status"); + } else { + $query = " + SELECT * from textbook_companion_preference tcp INNER JOIN external_review_details erd + ON (tcp.id = erd.preference_id AND erd.status=1) INNER JOIN users ON (erd.uid = users.uid) + ORDER BY users.name + "; + $result = db_query($query); + $headers = array( + "Book", "Review No.", + "Status", "Reviewer", + "Action", ); - array_push($rows, $item); - } - $page_content .= "

Selected Books

"; - $page_content .= theme("table", $headers, $rows); - - $query = " - SELECT * from textbook_companion_preference tcp INNER JOIN external_review_details erd - ON (tcp.id = erd.preference_id AND erd.status=0) INNER JOIN users ON (erd.uid = users.uid) - "; - $result = db_query($query); - $headers = array( - "Book", - "Author", - ); - $rows = array(); - while($row = db_fetch_object($result)) { - $item = array( - "{$row->book}", - "{$row->author}", + $rows = array(); + while($row = db_fetch_object($result)) { + $item = array( + "{$row->book}
by {$row->author}", + suffix($row->review), + ($row->completed?"Completed":"Ongoing"), + "{$row->name}", + ($row->completed?l("Next", "tbc_external_review/manage_status/next/" . $row->preference_id):"---") + ); + array_push($rows, $item); + } + $page_content .= "

Selected Books

"; + $page_content .= theme("table", $headers, $rows); + + $query = " + SELECT * from textbook_companion_preference tcp INNER JOIN external_review_details erd + ON (tcp.id = erd.preference_id AND erd.status=0) INNER JOIN users ON (erd.uid = users.uid) + "; + $result = db_query($query); + $headers = array( + "Book", + "Author", ); - array_push($rows, $item); + $rows = array(); + while($row = db_fetch_object($result)) { + $item = array( + "{$row->book}", + "{$row->author}", + ); + array_push($rows, $item); + } + $page_content .= "

Books Not Selected

"; + $page_content .= theme("table", $headers, $rows); } - $page_content .= "

Books Not Selected

"; - $page_content .= theme("table", $headers, $rows); return $page_content; } @@ -844,7 +964,7 @@ $headers = array( "Book", "Review No.", "Status", "Time", - "Reviewer" + "Reviewer", ); $rows = array($query); while($row = db_fetch_object($result)) { @@ -861,22 +981,59 @@ return $page_content; } - function tbc_external_review_manage_comments_all($preference_id=0) { + function tbc_external_review_manage_comments_all($preference_id=0, $review=0) { global $base_url; $page_content = ""; if($preference_id) { + $page_content .= "Toggle Hide-Show"; + $page_content .= "
"; + $page_content .= "
"; + /* creating review links */ + $query = " + SELECT DISTINCT(review) FROM external_review_comments + WHERE preference_id = %d + ORDER BY review DESC + "; + $result = db_query($query, $preference_id); + $tmp = $review; // for active class in case of 0 + while($row = db_fetch_object($result)) { + $option["attributes"]["class"] = "review-links"; + if($review == $row->review) { + $option["attributes"]["class"] .= " active"; + } else if($tmp == 0) { + $option["attributes"]["class"] .= " active"; + $tmp = -1; + } + $page_content .= l( + suffix($row->review) . "review", + "tbc_external_review/manage_comments/{$preference_id}/{$row->review}", + $option + ); + } + $page_content .= "


"; global $user; - $page_content .= "Toggle Hide-Show"; - $page_content .= "
"; /* displaying comments of a particular book */ - $query = " - SELECT erc.*, cha.number AS chapter, exa.number AS example FROM external_review_comments erc - LEFT JOIN textbook_companion_chapter cha ON cha.id = erc.chapter_id - LEFT JOIN textbook_companion_example exa ON exa.id = erc.example_id - WHERE erc.preference_id = %d - ORDER BY erc.chapter_id, erc.example_id - "; - $result = db_query($query, $preference_id); + if($review) { + $query = " + SELECT erc.*, cha.number AS chapter, exa.number AS example FROM external_review_comments erc + LEFT JOIN textbook_companion_chapter cha ON cha.id = erc.chapter_id + LEFT JOIN textbook_companion_example exa ON exa.id = erc.example_id + WHERE erc.preference_id = %d AND review = %d + ORDER BY erc.chapter_id, erc.example_id + "; + $result = db_query($query, $preference_id, $review); + } else { + $query = " + SELECT erc.*, cha.number AS chapter, exa.number AS example FROM external_review_comments erc + LEFT JOIN textbook_companion_chapter cha ON cha.id = erc.chapter_id + LEFT JOIN textbook_companion_example exa ON exa.id = erc.example_id + WHERE erc.preference_id = %d AND review = ( + SELECT MAX(review) FROM external_review_comments WHERE preference_id = %d + ) + ORDER BY erc.chapter_id, erc.example_id + "; + $result = db_query($query, $preference_id, $preference_id); + } $headers = array( "Chapter", "Example", "Time", "Score", "Action" @@ -1201,6 +1358,7 @@ ); return $form; } + function tbc_external_review_status_all($action="", $preference_id=0, $confirm="") { global $user; $page_content = ""; -- cgit