__('URL', __FILE__), // Module Title 'summary' => __('URL in valid format', __FILE__), // Module Summary 'version' => 103, ); } /** * Construct * */ public function __construct() { parent::__construct(); $this->setAttribute('type', 'text'); $this->setAttribute('maxlength', 1024); $this->setAttribute('size', 0); $this->setAttribute('name', 'href'); $this->label = 'URL'; $this->set('noRelative', 0); // whether relative URLs are disabled $this->set('addRoot', 0); // whether to prepend root path $this->set('allowIDN', 0); // whether to allow IDNs $this->set('allowQuotes', 0); // whether to allow quote characters in URLs } /** * Render Inputfield * * @return string * */ public function ___render() { $rootUrl = $this->wire()->config->urls->root; if($this->addRoot && !$this->noRelative && !$this->notes && strlen($rootUrl) > 1) { $this->notes = sprintf( $this->_("Start local URLs with ā€œ/ā€ and leave off the ā€œ%sā€ part."), // Instruction for local URLs displayed when site is running from a subdirectory $rootUrl ); } return parent::___render(); } /** * Set value attribute * * @param string $value * @return string * */ protected function setAttributeValue($value) { $value = trim((string) $value); $dirty = $value; $label = $this->label ? $this->label : $this->name; if(!strlen($dirty)) return ''; $value = $this->wire()->sanitizer->url($dirty, array( 'allowRelative' => $this->noRelative ? false : true, 'allowIDN' => $this->allowIDN ? true : false, 'stripQuotes' => $this->allowQuotes ? false : true, )); if(empty($value) || ($dirty !== $value && "http://$dirty" !== $value && "https://$dirty" !== $value)) { $error = true; if(strpos($dirty, '%') !== false) { $test = rawurldecode($dirty); if($value === $test || $value === "http://$test" || $value === "https://$test") $error = false; } if($error) { $value = $this->val(); $this->error("$label - " . $this->_("Error found - please check that it is a valid URL")); // Error message when invalid URL found } } else if($value !== $dirty) { $scheme = ''; foreach(array('http', 'https') as $s) { if($value !== "$s://$dirty") continue; $scheme = "$s://"; break; } if($scheme) { $this->message("$label - " . sprintf($this->_("Note that %s was added"), $scheme)); // Message displayed when scheme was automatically added to the URL } } return $value; } /** * Configure Inputfield * * @return InputfieldWrapper * */ public function ___getConfigInputfields() { $inputfields = parent::___getConfigInputfields(); $f = $inputfields->get('stripTags'); if($f) $inputfields->remove($f); return $inputfields; } }