diff --git a/element/border/lang/en/customcertelement_border.php b/element/border/lang/en/customcertelement_border.php new file mode 100644 index 0000000..96338c0 --- /dev/null +++ b/element/border/lang/en/customcertelement_border.php @@ -0,0 +1,28 @@ +. + +/** + * Strings for component 'customcertelement_border', language 'en'. + * + * @package customcertelement_border + * @copyright 2013 Mark Nelson + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +$string['pluginname'] = 'Border'; +$string['invalidwidth'] = 'The width has to be a valid number greater than 0.'; +$string['width'] = 'Width'; +$string['width_help'] = 'Width of the border.'; diff --git a/element/border/lib.php b/element/border/lib.php new file mode 100644 index 0000000..b603c7a --- /dev/null +++ b/element/border/lib.php @@ -0,0 +1,102 @@ +. + +defined('MOODLE_INTERNAL') || die('Direct access to this script is forbidden.'); + +require_once($CFG->dirroot . '/mod/customcert/element/element.class.php'); + +/** + * The customcert element border's core interaction API. + * + * @package customcertelement_border + * @copyright 2013 Mark Nelson + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class customcert_element_border extends customcert_element_base { + + /** + * This function renders the form elements when adding a customcert element. + * + * @param mod_customcert_edit_element_form $mform the edit_form instance + */ + public function render_form_elements($mform) { + // We want to define the width of the border. + $mform->addElement('text', 'width', get_string('width', 'customcertelement_border'), array('size' => 10)); + $mform->setType('width', PARAM_INT); + $mform->addHelpButton('width', 'width', 'customcertelement_border'); + + // The only other thing to define is the colour we want the border to be. + parent::render_form_element_colour($mform); + } + + /** + * Handles rendering the element on the pdf. + * + * @param pdf $pdf the pdf object + * @param bool $preview true if it is a preview, false otherwise + */ + public function render($pdf, $preview) { + $colour = TCPDF_COLORS::convertHTMLColorToDec($this->element->colour, $colour); + $pdf->SetLineStyle(array('width' => $this->element->data, 'color' => $colour)); + $pdf->Line(0, 0, $pdf->getPageWidth(), 0); + $pdf->Line($pdf->getPageWidth(), 0, $pdf->getPageWidth(), $pdf->getPageHeight()); + $pdf->Line(0, $pdf->getPageHeight(), $pdf->getPageWidth(), $pdf->getPageHeight()); + $pdf->Line(0, 0, 0, $pdf->getPageHeight()); + } + + /** + * Performs validation on the element values. + * + * @param array $data the submitted data + * @param array $files the submitted files + * @return array the validation errors + */ + public function validate_form_elements($data, $files) { + // Array to return the errors. + $errors = array(); + + // Check if width is not set, or not numeric or less than 0. + if ((!isset($data['width'])) || (!is_numeric($data['width'])) || ($data['width'] <= 0)) { + $errors['width'] = get_string('invalidwidth', 'customcertelement_border'); + } + + // Validate the colour. + $errors += $this->validate_form_element_colour($data); + + return $errors; + } + + /** + * Sets the data on the form when editing an element. + * + * @param mod_customcert_edit_element_form $mform the edit_form instance + */ + public function definition_after_data($mform) { + $this->element->width = $this->element->data; + parent::definition_after_data($mform); + } + + /** + * This will handle how form data will be saved into the data column in the + * customcert_elements table. + * + * @param stdClass $data the form data + * @return string the json encoded array + */ + public function save_unique_data($data) { + return $data->width; + } +} diff --git a/element/border/version.php b/element/border/version.php new file mode 100644 index 0000000..72d2d00 --- /dev/null +++ b/element/border/version.php @@ -0,0 +1,29 @@ +. + +/** + * This file contains the version information for the border plugin. + * + * @package customcertelement_border + * @copyright 2013 Mark Nelson + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +defined('MOODLE_INTERNAL') || die('Direct access to this script is forbidden.'); + +$plugin->version = 2013072301; +$plugin->requires = 2013040500; // Requires this Moodle version. +$plugin->component = 'customcertelement_border';