index.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  1. <?php
  2. /* For licensing terms, see /license.txt */
  3. /**
  4. * @package chamilo.glossary
  5. * @author Christian Fasanando, initial version
  6. * @author Bas Wijnen import/export to CSV
  7. */
  8. // The language file that needs to be included.
  9. $language_file = array('glossary', 'admin');
  10. // Including the global initialization file.
  11. require_once '../inc/global.inc.php';
  12. require_once api_get_path(LIBRARY_PATH).'glossary.lib.php';
  13. require_once api_get_path(LIBRARY_PATH).'export.lib.inc.php';
  14. require_once api_get_path(LIBRARY_PATH).'import.lib.php';
  15. // The section (tabs).
  16. $this_section = SECTION_COURSES;
  17. // Notification for unauthorized people.
  18. api_protect_course_script(true);
  19. // Additional javascripts.
  20. $htmlHeadXtra[] = GlossaryManager::javascript_glossary();
  21. $htmlHeadXtra[] = '<script type="text/javascript">
  22. function setFocus(){
  23. $("#glossary_title").focus();
  24. }
  25. $(document).ready(function () {
  26. setFocus();
  27. });
  28. </script>';
  29. // setting the tool constants
  30. $tool = TOOL_GLOSSARY;
  31. // Tracking
  32. event_access_tool(TOOL_GLOSSARY);
  33. function sorter($item1, $item2) {
  34. if ($item1[2] == $item2[2])
  35. return 0;
  36. return $item1[2] < $item2[2] ? -1 : 1;
  37. }
  38. // Displaying the header
  39. $action = isset($_GET['action']) ? $_GET['action'] : null;
  40. $tool = 'GlossaryManagement';
  41. $interbreadcrumb[] = array ("url"=>"index.php", "name"=> get_lang('Glossary'));
  42. if (!empty($action)) {
  43. }
  44. switch ($action) {
  45. case 'addglossary':
  46. $tool_name = get_lang('Add');
  47. break;
  48. case 'edit_glossary':
  49. $tool_name = get_lang('Edit');
  50. break;
  51. case 'import':
  52. $tool_name = get_lang('ImportGlossary');
  53. break;
  54. case 'changeview':
  55. $tool_name = get_lang('List');
  56. break;
  57. }
  58. if (isset($_GET['action']) && $_GET['action'] == 'export') {
  59. $data = GlossaryManager::get_glossary_data(0, GlossaryManager::get_number_glossary_terms (api_get_session_id()), 0, 'ASC');
  60. usort($data, "sorter");
  61. $list = array();
  62. $list[] = array('term','definition');
  63. foreach($data as $line) {
  64. $list[] = array ($line[0], $line[1]);
  65. }
  66. $filename = 'glossary_course_'.api_get_course_id();
  67. Export::export_table_csv($list,$filename);
  68. }
  69. Display::display_header($tool_name);
  70. // Tool introduction
  71. Display::display_introduction_section(TOOL_GLOSSARY);
  72. if (isset($_GET['action']) && $_GET['action'] == 'changeview' AND in_array($_GET['view'],array('list','table'))) {
  73. $_SESSION['glossary_view'] = $_GET['view'];
  74. } else {
  75. if (!isset($_SESSION['glossary_view'])) {
  76. $_SESSION['glossary_view'] = 'table';//Default option
  77. }
  78. }
  79. if (api_is_allowed_to_edit(null, true)) {
  80. switch ($action) {
  81. case 'addglossary':
  82. $form = new FormValidator('glossary','post', api_get_self().'?action='.Security::remove_XSS($_GET['action']));
  83. // settting the form elements
  84. $form->addElement('header', '', get_lang('TermAddNew'));
  85. $form->addElement('text', 'glossary_title', get_lang('TermName'), array('size'=>'80', 'id'=>'glossary_title'));
  86. //$form->applyFilter('glossary_title', 'html_filter');
  87. $form->addElement('html_editor', 'glossary_comment', get_lang('TermDefinition'), null, array('ToolbarSet' => 'Glossary', 'Width' => '90%', 'Height' => '300'));
  88. $form->addElement('style_submit_button', 'SubmitGlossary', get_lang('TermAddButton'), 'class="save"');
  89. // setting the rules
  90. $form->addRule('glossary_title',get_lang('ThisFieldIsRequired'), 'required');
  91. // The validation or display
  92. if ($form->validate()) {
  93. $check = Security::check_token('post');
  94. if ($check) {
  95. $values = $form->exportValues();
  96. GlossaryManager::save_glossary($values);
  97. }
  98. Security::clear_token();
  99. GlossaryManager::display_glossary();
  100. } else {
  101. $token = Security::get_token();
  102. $form->addElement('hidden','sec_token');
  103. $form->setConstants(array('sec_token' => $token));
  104. $form->display();
  105. }
  106. break;
  107. case 'edit_glossary':
  108. if (is_numeric($_GET['glossary_id'])) {
  109. // initiate the object
  110. $form = new FormValidator('glossary','post', api_get_self().'?action='.Security::remove_XSS($_GET['action']).'&glossary_id='.Security::remove_XSS($_GET['glossary_id']));
  111. // settting the form elements
  112. $form->addElement('header', '', get_lang('TermEdit'));
  113. $form->addElement('hidden', 'glossary_id');
  114. $form->addElement('text', 'glossary_title', get_lang('TermName'),array('size'=>'80'));
  115. //$form->applyFilter('glossary_title', 'html_filter');
  116. $form->addElement('html_editor', 'glossary_comment', get_lang('TermDefinition'), null, array('ToolbarSet' => 'Glossary', 'Width' => '90%', 'Height' => '300'));
  117. $element = $form->addElement('text', 'insert_date', get_lang('CreationDate'),array('size'=>'100'));
  118. $element ->freeze();
  119. $element = $form->addElement('text', 'update_date', get_lang('UpdateDate'),array('size'=>'100'));
  120. $element ->freeze();
  121. $form->addElement('style_submit_button', 'SubmitGlossary', get_lang('TermUpdateButton'), 'class="save"');
  122. // setting the defaults
  123. $glossary_data = GlossaryManager::get_glossary_information($_GET['glossary_id']);
  124. // Date treatment for timezones
  125. if (!empty($glossary_data['insert_date']) && $glossary_data['insert_date'] != '0000-00-00 00:00:00:') {
  126. $glossary_data['insert_date'] = api_get_local_time($glossary_data['insert_date']);
  127. } else {
  128. $glossary_data['insert_date'] = '';
  129. }
  130. if (!empty($glossary_data['update_date']) && $glossary_data['update_date'] != '0000-00-00 00:00:00:') {
  131. $glossary_data['update_date'] = api_get_local_time($glossary_data['update_date']);
  132. } else {
  133. $glossary_data['update_date'] = '';
  134. }
  135. $form->setDefaults($glossary_data);
  136. // setting the rules
  137. $form->addRule('glossary_title', '<div class="required">'.get_lang('ThisFieldIsRequired'), 'required');
  138. // The validation or display
  139. if ($form->validate()) {
  140. $check = Security::check_token('post');
  141. if ($check) {
  142. $values = $form->exportValues();
  143. GlossaryManager::update_glossary($values);
  144. }
  145. Security::clear_token();
  146. GlossaryManager::display_glossary();
  147. } else {
  148. $token = Security::get_token();
  149. $form->addElement('hidden', 'sec_token');
  150. $form->setConstants(array('sec_token' => $token));
  151. $form->display();
  152. }
  153. }
  154. break;
  155. case 'delete_glossary':
  156. GlossaryManager::delete_glossary($_GET['glossary_id']);
  157. GlossaryManager::display_glossary();
  158. break;
  159. case 'moveup':
  160. //GlossaryManager::move_glossary('up',$_GET['glossary_id']); //actions not available
  161. GlossaryManager::display_glossary();
  162. break;
  163. case 'movedown':
  164. //GlossaryManager::move_glossary('down',$_GET['glossary_id']); //actions not available
  165. GlossaryManager::display_glossary();
  166. break;
  167. case 'import':
  168. $form = new FormValidator('glossary','post', api_get_self().'?action=import');
  169. $form->addElement('header', '', get_lang('ImportGlossary'));
  170. $form->addElement('file', 'file', get_lang('ImportCSVFileLocation'));
  171. $form->addElement('checkbox', 'replace', null, get_lang('DeleteAllGlossaryTerms'));
  172. $form->addElement('style_submit_button', 'SubmitImport', get_lang('Import'), 'class="save"');
  173. $form->display();
  174. echo get_lang('CSVMustLookLike').' ('.get_lang('MandatoryFields').')';
  175. echo '<pre>
  176. <strong>term</strong>;<strong>definition</strong>;
  177. "Hello";"Hola";
  178. "Good";"Bueno";</pre>';
  179. if ($form->validate()) {
  180. //this is a bad idea //jm
  181. if (isset($_POST['replace']) && $_POST['replace']) {
  182. foreach (GlossaryManager::get_glossary_terms() as $term) {
  183. if (!GlossaryManager::delete_glossary($term['id'], false)) {
  184. Display::display_error_message (get_lang ("CannotDeleteGlossary") . ':' . $term['id']);
  185. }
  186. }
  187. }
  188. $data = Import::csv_to_array($_FILES['file']['tmp_name']);
  189. if (!empty($data)) {
  190. $good = 0;
  191. $bad = 0;
  192. foreach($data as $item) {
  193. if (GlossaryManager::save_glossary(array('glossary_title' => $item['term'], 'glossary_comment' => $item['definition']), false))
  194. $good++;
  195. else
  196. $bad++;
  197. }
  198. }
  199. Display::display_confirmation_message (get_lang ("TermsImported") . ':' . $good);
  200. if ($bad)
  201. Display::display_error_message (get_lang ("TermsNotImported") . ':' . $bad);
  202. GlossaryManager::display_glossary();
  203. }
  204. break;
  205. default:
  206. GlossaryManager::display_glossary();
  207. break;
  208. }
  209. } else {
  210. GlossaryManager::display_glossary();
  211. }
  212. // Footer
  213. Display::display_footer();