link_form.class.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. <?php
  2. namespace Link;
  3. use Chamilo;
  4. /**
  5. * Edit/Create link form.
  6. *
  7. * @license /licence.txt
  8. * @author Laurent Opprecht <laurent@opprecht.info>
  9. */
  10. class LinkForm extends \FormValidator
  11. {
  12. protected $link;
  13. function __construct($form_name = 'link', $method = 'post', $action = '', $target = '', $attributes = null, $track_submit = true)
  14. {
  15. parent::__construct($form_name, $method, $action, $target, $attributes, $track_submit);
  16. }
  17. /**
  18. *
  19. * @return \Link\LinkCategory
  20. */
  21. public function get_link()
  22. {
  23. return $this->link;
  24. }
  25. public function set_link($value)
  26. {
  27. $this->link = $value;
  28. }
  29. /**
  30. *
  31. * @param \Link\LinkCategory $link
  32. */
  33. function init($link = null)
  34. {
  35. $this->set_link($link);
  36. $defaults = array();
  37. $defaults['url'] = $link->url ? $link->url : 'http://';
  38. $defaults['title'] = $link->title;
  39. $defaults['description'] = $link->description;
  40. $defaults['category_id'] = $link->category_id;
  41. $defaults['display_order'] = $link->display_order;
  42. $defaults['on_homepage'] = $link->on_homepage;
  43. $defaults['target'] = $link->target;
  44. $this->add_hidden('c_id', $link->c_id);
  45. $this->add_hidden('id', $link->id);
  46. $this->add_hidden('session_id', $link->session_id);
  47. $form_name = $category->id ? get_lang('LinkMod') : get_lang('LinkAdd');
  48. $this->add_header($form_name);
  49. $this->add_textfield('url', get_lang('Url'), $required = true, array('class' => 'span6'));
  50. $this->addRule('url', get_lang('MalformedUrl'), 'regex', '|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i');
  51. $this->add_textfield('title', get_lang('Title'), $required = false, array('class' => 'span6'));
  52. $this->add_textarea('description', get_lang('Description'), array('class' => 'span3'));
  53. $this->add_checkbox('on_homepage', '', get_lang('OnHomepage'));
  54. $id = $link->id;
  55. if ($id) {
  56. $url = Chamilo::url('/main/metadata/index.php', array('eid' => "Link.$id"));
  57. $metadata = '<a class="control-text" href="' . $url . '">' . get_lang('AddMetadata') . '</a>';
  58. $this->add_label(get_lang('Metadata'), $metadata);
  59. }
  60. $options = array();
  61. $options[0] = '--';
  62. $categories = LinkCategoryRepository::instance()->find_by_course($link->c_id, $link->session_id);
  63. foreach ($categories as $category) {
  64. $options[$category->id] = $category->category_title;
  65. }
  66. $this->add_select('category_id', get_lang('Category'), $options);
  67. $targets = array(
  68. '_self' => get_lang('LinkOpenSelf'),
  69. '_blank' => get_lang('LinkOpenBlank'),
  70. '_parent' => get_lang('LinkOpenParent'),
  71. '_top' => get_lang('LinkOpenTop')
  72. );
  73. $this->add_select('target', get_lang('LinkTarget'), $targets);
  74. //$help = '<span class="help-block">' . get_lang('AddTargetOfLinkOnHomepage') . '</span>';
  75. //$this->add_label('', $help);
  76. $this->add_button('save', get_lang('Save'), array('class' => 'btn save'));
  77. $this->setDefaults($defaults);
  78. }
  79. function update_model()
  80. {
  81. $values = $this->exportValues();
  82. $link = $this->get_link();
  83. $link->url = $values['url'];
  84. $link->title = $values['title'];
  85. $link->description = $values['description'];
  86. $link->category_id = $values['category_id'];
  87. $link->on_homepage = isset($values['on_homepage']) ? $values['on_homepage'] : false;
  88. $link->target = $values['target'];
  89. }
  90. }