linkaddeditform.class.php 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. <?php
  2. /* For licensing terms, see /license.txt */
  3. /**
  4. * Script
  5. * @package chamilo.gradebook
  6. */
  7. /**
  8. * Init
  9. */
  10. require_once dirname(__FILE__).'/../../../inc/global.inc.php';
  11. require_once dirname(__FILE__).'/../be.inc.php';
  12. require_once dirname(__FILE__).'/../gradebook_functions.inc.php';
  13. require_once api_get_path(LIBRARY_PATH) . 'groupmanager.lib.php';
  14. /**
  15. * Form used to add or edit links
  16. * @author Stijn Konings
  17. * @author Bert Steppé
  18. * @package chamilo.gradebook
  19. */
  20. class LinkAddEditForm extends FormValidator
  21. {
  22. const TYPE_ADD = 1;
  23. const TYPE_EDIT = 2;
  24. /**
  25. * Constructor
  26. * To add link, define category_object and link_type
  27. * To edit link, define link_object
  28. */
  29. function LinkAddEditForm($form_type, $category_object, $link_type, $link_object, $form_name, $action = null) {
  30. parent :: __construct($form_name, 'post', $action);
  31. // set or create link object
  32. if (isset ($link_object)) {
  33. $link = $link_object;
  34. } elseif (isset ($link_type) && isset ($category_object)) {
  35. $link = LinkFactory :: create ($link_type);
  36. $link->set_course_code(api_get_course_id());
  37. } else {
  38. die ('LinkAddEditForm error: define link_type/category_object or link_object');
  39. }
  40. $defaults = array();
  41. $this->addElement('hidden', 'zero', 0);
  42. if (!empty($_GET['editlink'])) {
  43. $this->addElement('header', '', get_lang('EditLink'));
  44. }
  45. // ELEMENT: name
  46. if ($form_type == self :: TYPE_ADD || $link->is_allowed_to_change_name()) {
  47. if ($link->needs_name_and_description()) {
  48. $this->add_textfield('name', get_lang('Name'), true, array('size'=>'40', 'maxlength'=>'40'));
  49. } else {
  50. $select = $this->addElement('select', 'select_link', get_lang('ChooseItem'));
  51. foreach ($link->get_all_links() as $newlink) {
  52. $select->addoption($newlink[1],$newlink[0]);
  53. }
  54. }
  55. } else {
  56. $this->addElement('label',get_lang('Name'), '<span class="freeze">'.$link->get_name().' ['.$link->get_type_name().']</span>');
  57. $this->addElement('hidden','name_link',$link->get_name(),array('id'=>'name_link'));
  58. }
  59. if (count($category_object) == 1) {
  60. $this->addElement('hidden', 'select_gradebook', $category_object[0]->get_id());
  61. } else {
  62. $select_gradebook = $this->addElement('select', 'select_gradebook', get_lang('SelectGradebook'), array(), array('id' => 'hide_category_id'));
  63. $this->addRule('select_gradebook', get_lang('ThisFieldIsRequired'), 'nonzero');
  64. $default_weight = 0;
  65. if (!empty($category_object)) {
  66. foreach ($category_object as $my_cat) {
  67. if ($my_cat->get_course_code() == api_get_course_id()) {
  68. $grade_model_id = $my_cat->get_grade_model_id();
  69. if (empty($grade_model_id)) {
  70. if ($my_cat->get_parent_id() == 0 ) {
  71. $default_weight = $my_cat->get_weight();
  72. $select_gradebook->addoption(get_lang('Default'), $my_cat->get_id());
  73. } else {
  74. $select_gradebook->addoption($my_cat->get_name(), $my_cat->get_id());
  75. }
  76. } else {
  77. $select_gradebook->addoption(get_lang('Select'), 0);
  78. }
  79. if ($link->get_category_id() == $my_cat->get_id()) {
  80. $default_weight = $my_cat->get_weight();
  81. }
  82. }
  83. }
  84. }
  85. }
  86. $this->add_textfield('weight_mask', array(get_lang('Weight'), null, ' [0 .. '.$category_object[0]->get_weight().'] '), true, array (
  87. 'size' => '4',
  88. 'maxlength' => '5',
  89. 'class' => 'span1'
  90. ));
  91. $this->addElement('hidden', 'weight');
  92. /*
  93. // ELEMENT: weight
  94. $this->add_textfield('weight', array(get_lang('Weight'), null, '/ <span id="max_weight">'.$default_weight.'</span>'), true, array (
  95. 'size' => '4',
  96. 'maxlength' => '5',
  97. 'class' => 'span1'
  98. ));*/
  99. $this->addRule('weight_mask',get_lang('OnlyNumbers'),'numeric');
  100. $this->addRule(array ('weight_mask', 'zero'), get_lang('NegativeValue'), 'compare', '>=');
  101. if ($form_type == self :: TYPE_EDIT) {
  102. $parent_cat = Category :: load($link->get_category_id());
  103. if ($parent_cat[0]->get_parent_id() == 0) {
  104. $values['weight'] = $link->get_weight();
  105. } else {
  106. $cat = Category :: load($parent_cat[0]->get_parent_id());
  107. $global_weight = $cat[0]->get_weight();
  108. $values['weight'] = $link->get_weight()/$parent_cat[0]->get_weight()*$global_weight;
  109. }
  110. $defaults['weight_mask'] = $values['weight'] ;
  111. $defaults['select_gradebook'] = $link->get_category_id();
  112. }
  113. // ELEMENT: max
  114. if ($link->needs_max()) {
  115. if ($form_type == self :: TYPE_EDIT && $link->has_results()) {
  116. $this->add_textfield('max', get_lang('QualificationNumeric'), false, array ('size' => '4','maxlength' => '5', 'disabled' => 'disabled'));
  117. } else {
  118. $this->add_textfield('max', get_lang('QualificationNumeric'), true, array ('size' => '4','maxlength' => '5'));
  119. $this->addRule('max', get_lang('OnlyNumbers'), 'numeric');
  120. $this->addRule(array ('max', 'zero'), get_lang('NegativeValue'), 'compare', '>=');
  121. }
  122. if ($form_type == self :: TYPE_EDIT) {
  123. $defaults['max'] = $link->get_max();
  124. }
  125. }
  126. // ELEMENT: date
  127. //$this->add_datepicker('date',get_lang('Date'));
  128. //$defaults['date'] = ($form_type == self :: TYPE_EDIT ? $link->get_date() : time());
  129. // ELEMENT: description
  130. if ($link->needs_name_and_description()) {
  131. $this->addElement('textarea', 'description', get_lang('Description'), array ('rows' => '3','cols' => '34'));
  132. if ($form_type == self :: TYPE_EDIT) {
  133. $defaults['description'] = $link->get_description();
  134. }
  135. }
  136. // ELEMENT: visible
  137. $visible = ($form_type == self :: TYPE_EDIT && $link->is_visible()) ? '1' : '0';
  138. $this->addElement('checkbox', 'visible', null, get_lang('Visible'), $visible);
  139. if ($form_type == self :: TYPE_EDIT) {
  140. $defaults['visible'] = $link->is_visible();
  141. }
  142. // ELEMENT: add results
  143. if ($form_type == self :: TYPE_ADD && $link->needs_results()) {
  144. $this->addElement('checkbox', 'addresult', get_lang('AddResult'));
  145. }
  146. // submit button
  147. if ($form_type == self :: TYPE_ADD) {
  148. $this->addElement('style_submit_button', 'submit', get_lang('CreateLink'),'class="save"');
  149. } else {
  150. $this->addElement('style_submit_button', 'submit', get_lang('LinkMod'),'class="save"');
  151. }
  152. // set default values
  153. $this->setDefaults($defaults);
  154. }
  155. }