diff options
Diffstat (limited to 'textbook_companion_fixer.module~')
-rwxr-xr-x | textbook_companion_fixer.module~ | 651 |
1 files changed, 651 insertions, 0 deletions
diff --git a/textbook_companion_fixer.module~ b/textbook_companion_fixer.module~ new file mode 100755 index 0000000..13271d0 --- /dev/null +++ b/textbook_companion_fixer.module~ @@ -0,0 +1,651 @@ +<?php +function scilab_fixer_menu() +{ + $items = array(); + $items["fix/caption"] = array( + "title" => "Fix TBC captions", + "page callback" => "scilab_fixer_caption_all", + "access arguments" => array( + "fix scilab" + ), + "type" => MENU_NORMAL_ITEM + ); + $items["fix/aicte"] = array( + "title" => "Add AICTE books", + "page callback" => "scilab_fixer_aicte_all", + "access arguments" => array( + "fix scilab" + ), + "weight" => 30, + "type" => MENU_NORMAL_ITEM + ); + $items["fix/aicte/new"] = array( + "title" => "Add AICTE books", + "page callback" => "scilab_fixer_aicte_all", + "access arguments" => array( + "fix scilab" + ), + "weight" => 1, + "type" => MENU_DEFAULT_LOCAL_TASK + ); + $items["fix/aicte/edit"] = array( + "title" => "Edit AICTE books", + "page callback" => "scilab_fixer_aicte_edit_all", + "access arguments" => array( + "fix scilab" + ), + "weight" => 2, + "type" => MENU_LOCAL_TASK + ); + $items["fix/aicte/in"] = array( + "title" => "Mark Indian edition books", + "page callback" => "scilab_fixer_aicte_in_all", + "access arguments" => array( + "fix scilab" + ), + "type" => MENU_CALLBACK + ); + $items["fix/code"] = array( + "title" => "Edit TBC code", + "page callback" => "scilab_fixer_code_all", + "access arguments" => array( + "fix scilab" + ), + "type" => MENU_CALLBACK + ); + $items["fix/ajax"] = array( + "page callback" => "scilab_fixer_ajax", + "access callback" => TRUE, + "type" => MENU_CALLBACK + ); + $items["fix/aicte/book/ajax"] = array( + "page callback" => "scilab_fixer_aicte_ajax", + "access callback" => TRUE, + "type" => MENU_CALLBACK + ); + return $items; +} +function scilab_fixer_perm() +{ + return array( + "fix scilab" => array( + "title" => t("fix scilab code"), + 'restrict access' => TRUE + ) + ); +} +function scilab_fixer_caption_form($form, &$form_state) +{ + $form = array(); + $form["wrapper"] = array( + "#type" => "fieldset", + "#title" => "Caption change form", + "#prefix" => "<div id='fix-tbc-form'>", + "#suffix" => "</div>" + ); + $form["wrapper"]["category"] = array( + "#type" => "select", + "#title" => t("Please select the category"), + '#options' => array( + 0 => 'Please select a category', + 1 => 'Fluid Mechanics', + 2 => 'Control Theory & Control Systems', + 3 => 'Chemical Engineering', + 4 => 'Thermodynamics', + 5 => 'Mechanical Engineering', + 6 => 'Signal Processing', + 7 => 'Digital Communications', + 8 => 'Electrical Technology', + 9 => 'Mathematics & Pure Science', + 10 => 'Analog Electronics', + 11 => 'Digital Electronics', + 12 => 'Computer Programming', + 13 => 'Others' + ) + ); + $form["wrapper"]["book"] = array( + "#type" => "select", + "#title" => t("Please select the book."), + "#options" => array( + 0 => "Please select a book" + ) + ); + $form["wrapper"]["chapter"] = array( + "#type" => "select", + "#title" => t("Please select the chapter"), + "#options" => array( + 0 => "Please select a chapter" + ) + ); + $form["wrapper"]["example"] = array( + "#type" => "select", + "#title" => t("Please select the example"), + "#options" => array( + 0 => "Please select a example" + ) + ); + $form["wrapper"]["caption"] = array( + "#type" => "textfield", + "#title" => t("Enter new caption") + ); + $form["wrapper"]["submit"] = array( + "#type" => "submit", + "#value" => "Update" + ); + $form["wrapper"]["code_wrapper"] = array( + "#type" => "fieldset", + "#description" => t("No code to display"), + "#prefix" => "<div class='well'><pre id='edit-code' class='fix-caption-code'>", + "#suffix" => "</pre></div>" + ); + return $form; +} +function scilab_fixer_caption_all() +{ + $page_content = ""; + $page_content .= "<div id='fix-tbc-page'>"; + $page_content .= "<center><span id='updating'>Updating...</span></center>"; + $page_content .= "<span id='done'>Done.</span>"; + // $page_content .= drupal_get_form("scilab_fixer_caption_form"); + $scilab_fixer_caption_form = drupal_get_form("scilab_fixer_caption_form"); + $page_content .= drupal_render($scilab_fixer_caption_form); + $page_content .= "</div>"; + $page_content .= "<small>* Selecting text from above code-area with mouse will add it to the caption textbox.</small>"; + return $page_content; +} +function scilab_fixer_ajax($item, $key) +{ + $data = ""; + if ($item == "category" && $key) + { + /* $query = " + SELECT pre.id AS id, pre.book, pre.author FROM textbook_companion_preference pre + LEFT JOIN textbook_companion_proposal pro ON pro.id = pre.proposal_id + WHERE pro.proposal_status = 3 AND pre.approval_status = 1 AND pre.category = %d + ORDER BY pre.book ASC + "; + $result = db_query($query, $key);*/ + $query = db_select('textbook_companion_preference', 'pre'); + $query->fields('pre', array( + 'id', + 'book', + 'author' + )); + $query->leftJoin('textbook_companion_proposal', 'pro', 'pro.id = pre.proposal_id'); + $query->condition('pro.proposal_status', 3); + $query->condition('pre.approval_status', 1); + $query->condition('pre.category', $key); + $query->orderBy('pre.book', 'ASC'); + $result = $query->execute(); + $data .= "<option value='0'>Please select the book.</option>"; + while ($row = $result->fetchObject()) + { + $data .= "<option value='{$row->id}'>{$row->book} ({$row->author})</option>"; + } //$row = $result->fetchObject() + } //$item == "category" && $key + else if ($item == "book" && $key) + { + /*$query = "SELECT * FROM {textbook_companion_chapter} WHERE preference_id = %d ORDER BY number"; + $result = db_query($query, $key);*/ + $query = db_select('textbook_companion_chapter'); + $query->fields('textbook_companion_chapter'); + $query->condition('preference_id', $key); + $query->orderBy('number', 'ASC'); + $result = $query->execute(); + $data .= "<option value='0'>Please select the chapter.</option>"; + while ($row = $result->fetchObject()) + { + $data .= "<option value='{$row->id}'>{$row->number} {$row->name}</option>"; + } //$row = $result->fetchObject() + } //$item == "book" && $key + else if ($item == "chapter" && $key) + { + /*$query = "SELECT * FROM {textbook_companion_example} WHERE chapter_id = %d ORDER BY number"; + $result = db_query($query, $key);*/ + $query = db_select('textbook_companion_example'); + $query->fields('textbook_companion_example'); + $query->condition('chapter_id', $key); + $query->orderBy('number', 'ASC'); + $result = $query->execute(); + $data .= "<option value='0'>Please select the example.</option>"; + while ($row = $result->fetchObject()) + { + $data .= "<option value='{$row->id}'>{$row->number} {$row->caption}</option>"; + } //$row = $result->fetchObject() + } //$item == "chapter" && $key + else if ($item == "example" && $key) + { + /*$query = " + SELECT * FROM textbook_companion_example_files fil + LEFT JOIN textbook_companion_example exa ON exa.id = fil.example_id + WHERE example_id = %d + "; + $result = db_query($query, $key);*/ + $query = db_select('textbook_companion_example_files', 'fil'); + $query->fields('fil'); + $query->leftJoin('textbook_companion_example', 'exa', 'exa.id = fil.example_id'); + $query->condition('example_id', $key); + $result = $query->execute(); + $row = $result->fetchObject(); + /* fetching example file data */ + $uploads_dir = $_SERVER['DOCUMENT_ROOT'] . base_path() . "uploads/"; + $example_path = $uploads_dir . $row->filepath; + $example = file_get_contents($example_path); + $data .= "<div id='caption'>{$row->caption}</div>"; + $data .= "<div id='code'>{$example}</div>"; + } //$item == "example" && $key + else if ($item == "update") + { + $example_id = $_POST["example_id"]; + $caption = $_POST["caption"]; + /*$query = " + UPDATE textbook_companion_example + SET caption = '%s' + WHERE id = %d + "; + $result = db_query($query, $caption, $example_id);*/ + $query = db_update('textbook_companion_example'); + $query->fields(array( + 'caption' => $caption + )); + $query->condition('id', $example_id); + $result = $query->execute(); + $data .= "Updated"; + } //$item == "update" + else if ($item == "code" && $key) + { + $code = $_POST["code"]; + /*$query = " + SELECT * FROM textbook_companion_example_files + WHERE example_id = %d AND filetype = 'S' + "; + $result = db_query($query, $key);*/ + $query = db_select('textbook_companion_example_files'); + $query->fields('textbook_companion_example_files'); + $query->condition('example_id', $key); + $query->condition('filetype', 'S'); + $result = $query->execute(); + $row = $result->fetchObject(); + $uploads_dir = $_SERVER['DOCUMENT_ROOT'] . base_path() . "uploads/"; + $example_path = $uploads_dir . $row->filepath; + file_put_contents($example_path, $code); + $data .= "updated"; + } //$item == "code" && $key + else if ($item == "ind-ed" && $key) + { + $query = " + UPDATE textbook_companion_aicte + SET ind = !ind + WHERE id = :id + "; + $args = array( + ":id" => $key + ); + db_query($query, $args); + $data .= "updated"; + } //$item == "ind-ed" && $key + else + { + $data = "Nothing to display."; + } + echo $data; + exit(); +} +function scilab_fixer_aicte_ajax($item = "", $key = "") +{ + $data = ""; + if ($item == "selected") + { + $query = " + UPDATE textbook_companion_aicte + SET selected = !selected + WHERE id = :id + "; + $args = array( + ":id" => $key + ); + db_query($query, $args); + $data = "updated"; + } //$item == "selected" + echo $data; + exit(); +} +function scilab_fixer_aicte_form($form, $form_state, $aicte_id = '') +{ + /*$query = " + SELECT * FROM textbook_companion_aicte + WHERE id = {$aicte_id} + "; + $result = db_query($query);*/ + $query = db_select('textbook_companion_aicte'); + $query->fields('textbook_companion_aicte'); + $query->condition('id', $aicte_id); + $result = $query->execute(); + $row = $result->fetchObject(); + $form = array(); + $form["book"] = array( + "#type" => "textfield", + "#title" => "Book Name", + "#default_value" => $row->book, + "#required" => TRUE + ); + $form["author"] = array( + "#type" => "textfield", + "#title" => "Author", + "#default_value" => $row->author, + "#required" => TRUE + ); + $form["category"] = array( + "#type" => "select", + "#title" => "Book Category", + '#options' => array( + 0 => 'Please select a category', + 1 => 'Fluid Mechanics', + 2 => 'Control Theory & Control Systems', + 3 => 'Chemical Engineering', + 4 => 'Thermodynamics', + 5 => 'Mechanical Engineering', + 6 => 'Signal Processing', + 7 => 'Digital Communications', + 8 => 'Electrical Technology', + 9 => 'Mathematics & Pure Science', + 10 => 'Analog Electronics', + 11 => 'Digital Electronics', + 12 => 'Computer Programming', + 13 => 'Others' + ), + "#default_value" => $row->category, + "#required" => TRUE + ); + $form["isbn"] = array( + "#type" => "textfield", + "#title" => "ISBN", + "#default_value" => $row->isbn, + "#required" => FALSE + ); + $form["publisher"] = array( + "#type" => "textfield", + "#title" => "Publisher", + "#default_value" => $row->publisher, + "#required" => TRUE + ); + $form["edition"] = array( + "#type" => "textfield", + "#title" => "Edition", + "#default_value" => $row->edition, + "#required" => TRUE + ); + $form["year"] = array( + "#type" => "textfield", + "#title" => "Year of publication", + "#default_value" => $row->year, + "#required" => TRUE + ); + $form["aicte_id"] = array( + "#type" => "hidden", + "#value" => $row->id + ); + $form["submit"] = array( + "#type" => "submit", + "#value" => "Submit" + ); + return $form; +} +function scilab_fixer_aicte_form_validate($form, &$form_state) +{ + if (!$form_state["values"]["category"]) + { + form_set_error("category", "Please select a category."); + } //!$form_state["values"]["category"] + if (!is_numeric($form_state["values"]["edition"])) + { + form_set_error("edition", "Only digits are allowed."); + } //!is_numeric($form_state["values"]["edition"]) + if (!is_numeric($form_state["values"]["year"]) && strlen($form["values"]["year"]) != 4) + { + form_set_error("year", "Please enter a valid year. eg: 2011."); + } //!is_numeric($form_state["values"]["year"]) && strlen($form["values"]["year"]) != 4 +} +function scilab_fixer_aicte_form_submit($form, &$form_state) +{ + $v = $form_state["values"]; + if ($v["aicte_id"]) + { + /*$query = " + UPDATE textbook_companion_aicte + SET book = '%s', author = '%s', category = %d, + isbn = '%s', publisher = '%s', edition = %d, + year = %d + WHERE id = %d + "; + $result = db_query($query, + $v["book"], $v["author"], $v["category"], $v["isbn"], + $v["publisher"], $v["edition"], $v["year"], $v["aicte_id"] + );*/ + $query = db_update('textbook_companion_aicte'); + $query->fields(array( + 'book' => $v["book"], + 'author' => $v["author"], + 'category' => $v["category"], + 'isbn' => $v["isbn"], + 'publisher' => $v["publisher"], + 'edition' => $v["edition"], + 'year' => $v["year"] + )); + $query->condition('id', $v["aicte_id"]); + $num_updated = $query->execute(); + drupal_set_message("Book updated successfully", "status"); + } //$v["aicte_id"] + else + { + $query = " + INSERT INTO textbook_companion_aicte + (book, author, category, isbn, publisher, edition, year) + VALUES + (:book, :author, :category, :isbn, :publisher, :edition, :year) + "; + $args = array( + ':book' => $v["book"], + ':author' => $v["author"], + ':category' => $v["category"], + ':isbn' => $v["isbn"], + ':publisher' => $v["publisher"], + ':edition' => $v["edition"], + ':year' => $v["year"] + ); + $result = db_query($query, $args); + drupal_set_message("Book added successfully", "status"); + } +} +function scilab_fixer_aicte_all() +{ + $page_content = ""; + $scilab_fixer_aicte_form = drupal_get_form("scilab_fixer_aicte_form"); + $page_content .= drupal_render($scilab_fixer_aicte_form); + return $page_content; +} +function scilab_fixer_aicte_edit_all($aicte_id = 0) +{ + $page_content = ""; + if ($aicte_id) + { + $scilab_fixer_aicte_form = drupal_get_form("scilab_fixer_aicte_form", $aicte_id); + $page_content .= drupal_render($scilab_fixer_aicte_form); + } //$aicte_id + else + { + /*$query = " + SELECT * FROM textbook_companion_aicte + ORDER BY time DESC + "; + $result = db_query($query);*/ + $query = db_select('textbook_companion_aicte'); + $query->fields('textbook_companion_aicte'); + $query->orderBy('time', 'DESC'); + $result = $query->execute(); + $headers = array( + "Book", + "Author", + "Edition", + "Action" + ); + $rows = array(); + while ($row = $result->fetchObject()) + { + $item = array( + "{$row->book}", + "{$row->author}", + "{$row->edition}", + l(t("Edit"), "fix/aicte/edit/{$row->id}") + ); + if ($row->selected) + { + $check = "<input class='selected' type='checkbox' data-bid='{$row->id}' checked>"; + } //$row->selected + else + { + $check = "<input class='selected' type='checkbox' data-bid='{$row->id}'>"; + } + array_push($item, $check); + array_push($rows, $item); + } //$row = $result->fetchObject() + //$page_content .= theme("table", $headers, $rows); + $page_content .= theme("table", array( + 'header' => $headers, + 'rows' => $rows + )); + } + return $page_content; +} +function scilab_fixer_aicte_in_all() +{ + $page_content = ""; + /*$query = " + SELECT * FROM textbook_companion_aicte + "; + $result = db_query($query);*/ + $query = db_select('textbook_companion_aicte'); + $query->fields('textbook_companion_aicte'); + $result = $query->execute(); + $headers = array( + "Book", + "Publisher", + "Action" + ); + $rows = array(); + while ($row = $result->fetchObject()) + { + $item = array( + "data" => array( + "{$row->book}<br>by{$row->author}", + $row->publisher + ) + ); + $ind_options = array( + /* # linking in drupal l() */ + "fragment" => " ", + "external" => TRUE, + "attributes" => array( + "class" => "ind-ed", + "data-aicte" => "{$row->id}" + ) + ); + /* ind-ed link */ + if ($row->ind) + { + array_push($item["data"], l("Unmark", "", $ind_options)); + } //$row->ind + else + { + array_push($item["data"], l("Mark", "", $ind_options)); + } + if ($row->ind) + { + $item["class"] .= " orange"; + } //$row->ind + array_push($rows, $item); + } //$row = $result->fetchObject() + $page_content .= theme('table', array( + 'header' => $headers, + 'rows' => $rows + )); + return $page_content; +} +function scilab_fixer_code_form($form_state) +{ + $form = array(); + $form["wrapper"] = array( + "#type" => "fieldset", + "#title" => "Code edit form", + "#prefix" => "<div id='fix-tbc-form'>", + "#suffix" => "</div>" + ); + $form["wrapper"]["category"] = array( + "#type" => "select", + "#title" => t("Please select the category"), + '#options' => array( + 0 => 'Please select a category', + 1 => 'Fluid Mechanics', + 2 => 'Control Theory & Control Systems', + 3 => 'Chemical Engineering', + 4 => 'Thermodynamics', + 5 => 'Mechanical Engineering', + 6 => 'Signal Processing', + 7 => 'Digital Communications', + 8 => 'Electrical Technology', + 9 => 'Mathematics & Pure Science', + 10 => 'Analog Electronics', + 11 => 'Digital Electronics', + 12 => 'Computer Programming', + 13 => 'Others' + ) + ); + $form["wrapper"]["book"] = array( + "#type" => "select", + "#title" => t("Please select the book."), + "#options" => array( + 0 => "Please select a book" + ) + ); + $form["wrapper"]["chapter"] = array( + "#type" => "select", + "#title" => t("Please select the chapter"), + "#options" => array( + 0 => "Please select a chapter" + ) + ); + $form["wrapper"]["example"] = array( + "#type" => "select", + "#title" => t("Please select the example"), + "#options" => array( + 0 => "Please select a example" + ) + ); + $form["wrapper"]["code"] = array( + "#type" => "textarea", + "#title" => t("Code Editor") + ); + $form["wrapper"]["submit"] = array( + "#type" => "submit", + "#value" => "Update" + ); + return $form; +} +function scilab_fixer_code_all() +{ + $page_content = ""; + $page_content .= "<div id='fix-tbc-page'>"; + $page_content .= "<center><span id='updating'>Updating...</span></center>"; + $page_content .= "<span id='done'>Done.</span>"; + $scilab_fixer_code_form = drupal_get_form("scilab_fixer_code_form"); + $page_content .= drupal_render($scilab_fixer_code_form); + $page_content .= "</div>"; + return $page_content; +} +function scilab_fixer_init() +{ + drupal_add_css(drupal_get_path("module", "textbook_ companion_fixer") . "/css/textbook_ companion_fixer.css"); + drupal_add_js(drupal_get_path("module", "textbook_ companion_fixer") . "/js/textbook_ companion_fixer.js"); + //drupal_add_js(drupal_get_path("module", "scilab_fixer") . "/js/jquery-noconfilct.js"); + drupal_add_js(drupal_get_path("module", "textbook_ companion_fixer") . "/js/selection.js"); +} |