/**
	 * Test the getInput method.
	 */
	public function testGetInput()
	{
		$form = new JFormInspector('form1');

		$this->assertThat(
			$form->load('<form><field name="media" type="media" /></form>'),
			$this->isTrue(),
			'Line:'.__LINE__.' XML string should load successfully.'
		);

		$field = new JFormFieldMedia($form);

		$this->assertThat(
			$field->setup($form->getXml()->field, 'value'),
			$this->isTrue(),
			'Line:'.__LINE__.' The setup method should return true.'
		);

		$this->markTestIncomplete('Problems encountered in next assertion');

		$this->assertThat(
			strlen($field->input),
			$this->greaterThan(0),
			'Line:'.__LINE__.' The getInput method should return something without error.'
		);

		// TODO: Should check all the attributes have come in properly.
	}
Example #2
0
 /**
  * Method to get the field input markup for a media selector.
  * Use attributes to identify specific created_by and asset_id fields
  *
  * @return  string  The field input markup.
  *
  * @since   11.1
  */
 protected function getInput()
 {
     $html = parent::getInput();
     $readonly .= $this->element['readonly'] ? ' readonly="' . (int) $this->element['readonly'] . '"' : '';
     $html = str_replace('readonly="readonly"', $readonly, $html);
     return $html;
 }
Example #3
0
 /**
  * Method to get the field input markup.
  *
  * @return	string	The field input markup.
  * @since	1.6
  */
 protected function getInput()
 {
     $assetField = $this->element['asset_field'] ? (string) $this->element['asset_field'] : 'asset_id';
     $authorField = $this->element['created_by_field'] ? (string) $this->element['created_by_field'] : 'created_by';
     $asset = $this->form->getValue($assetField) ? $this->form->getValue($assetField) : (string) $this->element['asset_id'];
     $link = (string) $this->element['link'];
     if (!self::$initialised) {
         // Load the modal behavior script.
         JHtml::_('behavior.modal');
         // Build the script.
         $script = array();
         $script[] = '	function jInsertFieldValue(value,id) {';
         $script[] = '		var old_id = document.getElementById(id).value;';
         $script[] = '		if (old_id != id) {';
         $script[] = '			document.getElementById(id).value = value;';
         $script[] = '		}';
         $script[] = '	}';
         // Add the script to the document head.
         JFactory::getDocument()->addScriptDeclaration(implode("\n", $script));
         self::$initialised = true;
     }
     // Initialize variables.
     $html = array();
     $attr = '';
     // Initialize some field attributes.
     $attr .= $this->element['class'] ? ' class="' . (string) $this->element['class'] . '"' : '';
     $attr .= $this->element['size'] ? ' size="' . (int) $this->element['size'] . '"' : '';
     // Initialize JavaScript field attributes.
     $attr .= $this->element['onchange'] ? ' onchange="' . (string) $this->element['onchange'] . '"' : '';
     // The text field.
     $html[] = '<div class="fltlft">';
     $html[] = '	<input type="text" name="' . $this->name . '" id="' . $this->id . '"' . ' value="' . htmlspecialchars($this->value, ENT_COMPAT, 'UTF-8') . '"' . ' readonly="readonly"' . $attr . ' />';
     $html[] = '</div>';
     $directory = (string) $this->element['directory'];
     if ($this->value && file_exists(JPATH_ROOT . '/' . $this->value)) {
         $folder = explode('/', $this->value);
         array_shift($folder);
         array_pop($folder);
         $folder = implode('/', $folder);
     } elseif (file_exists(JPATH_ROOT . '/images/' . $directory)) {
         $folder = $directory;
     } else {
         $folder = '';
     }
     // The button.
     $html[] = '<div class="button2-left">';
     $html[] = '	<div class="blank">';
     $html[] = '		<a class="modal" title="' . JText::_('JSELECT') . '"' . ' href="' . ($this->element['readonly'] ? '' : ($link ? $link : 'index.php?option=com_media&amp;view=images&amp;tmpl=component&amp;asset=' . $asset . '&amp;author=' . $this->form->getValue($authorField)) . '&amp;fieldid=' . $this->id . '&amp;folder=' . $folder) . '"' . ' rel="{handler: \'iframe\', size: {x: 800, y: 500}}">';
     $html[] = '			' . JText::_('JSELECT') . '</a>';
     $html[] = '	</div>';
     $html[] = '</div>';
     $html[] = '<div class="button2-left">';
     $html[] = '	<div class="blank">';
     $html[] = '		<a title="' . JText::_('JCLEAR') . '"' . ' href="#"' . ' onclick="javascript:document.getElementById(\'' . $this->id . '\').value=\'\';">';
     $html[] = '			' . JText::_('JCLEAR') . '</a>';
     $html[] = '	</div>';
     $html[] = '</div>';
     return implode("\n", $html);
 }
Example #4
0
 protected function getInput()
 {
     $attr = '';
     $field_name = $this->fieldname;
     // Tooltip for INPUT showing whole image path
     $options = array('onShow' => 'jMediaRefreshImgpathTip');
     JHtml::_('behavior.tooltip', '.hasTipImgpath', $options);
     if (!empty($this->class)) {
         $this->class .= ' hasTipImgpath';
     } else {
         $this->class = 'hasTipImgpath';
     }
     $attr .= ' title="' . htmlspecialchars('<span id="TipImgpath"></span>', ENT_COMPAT, 'UTF-8') . '"';
     // Initialize some field attributes.
     $attr .= !empty($this->class) ? ' class="input-small ' . $this->class . '"' : ' class="input-small"';
     $attr .= !empty($this->size) ? ' size="' . $this->size . '"' : '';
     // Initialize JavaScript field attributes.
     $attr .= !empty($this->onchange) ? ' onchange="' . $this->onchange . '"' : '';
     $html = array();
     // Initialize some field attributes.
     $class = !empty($this->class) ? ' class="' . $this->class . '"' : '';
     $disabled = $this->disabled ? ' disabled' : '';
     // Initialize JavaScript field attributes.
     $onchange = $this->onchange ? ' onchange="' . $this->onchange . '"' : '';
     $this->__set('name', $field_name . '_client');
     $element = $this->element;
     if (isset($element['index']) && $element['index'] != null) {
         $this->__set('id', $field_name . '_client' . $element['index']);
     } else {
         $this->__set('id', $field_name . '_client');
     }
     $html[] = '	<input type="file" name="' . $this->name . '" id="' . $this->id . '"' . $attr . ' />';
     $this->__set('name', $field_name . '_server');
     if (isset($element['index']) && $element['index'] != null) {
         $this->__set('id', $field_name . '_server' . $element['index']);
     } else {
         $this->__set('id', $field_name . '_server');
     }
     $value = $this->value;
     $this->value = '';
     $html[] = '<div style="padding-top: 5px;">' . parent::getInput();
     if ($value && !empty($value) && is_string($value)) {
         $html[] = '<a href="' . JUri::root() . str_replace('.' . JFile::getExt($value), ($this->element['img_prefix'] ? '_' . $this->element['img_prefix'] : '') . '.' . JFile::getExt($value), $value) . '?time=' . time() . '"' . ' class="tz-image-preview modal" rel="{handler: \'image\'}" style="display: table; padding-top: 5px;">';
         $html[] = '<img src="' . JUri::root() . str_replace('.' . JFile::getExt($value), ($this->element['img_prefix'] ? '_' . $this->element['img_prefix'] : '') . '.' . JFile::getExt($value), $value) . '?time=' . time() . '" style="' . ($this->element['img_max-width'] ? 'max-width: 200px; ' : '') . 'cursor: pointer;" title="">';
         $html[] = '</a>';
     }
     $html[] = '</div>';
     $this->__set('name', $field_name);
     $this->__set('id', $field_name);
     $html[] = '<input type="hidden" name="' . $this->name . '" id="' . $this->id . '" value="' . htmlspecialchars($value, ENT_COMPAT, 'UTF-8') . '"' . $class . $disabled . $onchange . ' />';
     return implode("\n", $html);
 }
Example #5
0
File: Media.php Project: akeeba/fof
 /**
  * Method to get certain otherwise inaccessible properties from the form field object.
  *
  * @param   string  $name  The property name for which to the the value.
  *
  * @return  mixed  The property value or null.
  *
  * @since   2.0
  */
 public function __get($name)
 {
     switch ($name) {
         case 'static':
             if (empty($this->static)) {
                 $this->static = $this->getStatic();
             }
             return $this->static;
             break;
         case 'repeatable':
             if (empty($this->repeatable)) {
                 $this->repeatable = $this->getRepeatable();
             }
             return $this->repeatable;
             break;
         default:
             return parent::__get($name);
     }
 }
Example #6
0
 /**
  * Method to get the field input markup for a media selector.
  * Use attributes to identify specific created_by and asset_id fields
  *
  * @return  string  The field input markup.
  *
  * @since   1.6
  */
 protected function getInput()
 {
     $assetField = $this->element['asset_field'] ? (string) $this->element['asset_field'] : 'asset_id';
     $authorField = $this->element['created_by_field'] ? (string) $this->element['created_by_field'] : 'created_by';
     $asset = $this->form->getValue($assetField) ? $this->form->getValue($assetField) : (string) $this->element['asset_id'];
     if ($asset == '') {
         $asset = JFactory::getApplication()->input->get('option');
     }
     $link = (string) $this->element['link'];
     if (!self::$initialised) {
         // Load the modal behavior script.
         JHtml::_('behavior.modal');
         // Build the script.
         $script = array();
         $script[] = '	function jInsertFieldValue(value, id) {';
         $script[] = '		var old_value = document.id(id).value;';
         $script[] = '		if (old_value != value) {';
         $script[] = '			var elem = document.id(id);';
         $script[] = '			elem.value = value;';
         $script[] = '			elem.fireEvent("change");';
         $script[] = '			if (typeof(elem.onchange) === "function") {';
         $script[] = '				elem.onchange();';
         $script[] = '			}';
         $script[] = '			jMediaRefreshPreview(id);';
         $script[] = '		}';
         $script[] = '	}';
         $script[] = '	function jMediaRefreshPreview(id) {';
         $script[] = '		var value = document.id(id).value;';
         $script[] = '		var img = document.id(id + "_preview");';
         $script[] = '		if (img) {';
         $script[] = '			if (value) {';
         $script[] = '				img.src = "' . JURI::root() . '" + value;';
         $script[] = '				document.id(id + "_preview_empty").setStyle("display", "none");';
         $script[] = '				document.id(id + "_preview_img").setStyle("display", "");';
         $script[] = '			} else { ';
         $script[] = '				img.src = ""';
         $script[] = '				document.id(id + "_preview_empty").setStyle("display", "");';
         $script[] = '				document.id(id + "_preview_img").setStyle("display", "none");';
         $script[] = '			} ';
         $script[] = '		} ';
         $script[] = '	}';
         $script[] = '	function jMediaRefreshPreviewTip(tip)';
         $script[] = '	{';
         $script[] = '		var img = tip.getElement("img.media-preview");';
         $script[] = '		tip.getElement("div.tip").setStyle("max-width", "none");';
         $script[] = '		var id = img.getProperty("id");';
         $script[] = '		id = id.substring(0, id.length - "_preview".length);';
         $script[] = '		jMediaRefreshPreview(id);';
         $script[] = '		tip.setStyle("display", "block");';
         $script[] = '	}';
         // Add the script to the document head.
         JFactory::getDocument()->addScriptDeclaration(implode("\n", $script));
         self::$initialised = true;
     }
     $html = array();
     $attr = '';
     // Initialize some field attributes.
     $attr .= $this->element['class'] ? ' class="' . (string) $this->element['class'] . '"' : '';
     $attr .= $this->element['size'] ? ' size="' . (int) $this->element['size'] . '"' : '';
     // Initialize JavaScript field attributes.
     $attr .= $this->element['onchange'] ? ' onchange="' . (string) $this->element['onchange'] . '"' : '';
     // The text field.
     $html[] = '<div class="input-prepend input-append">';
     // The Preview.
     $preview = (string) $this->element['preview'];
     $showPreview = true;
     $showAsTooltip = false;
     switch ($preview) {
         case 'no':
             // Deprecated parameter value
         // Deprecated parameter value
         case 'false':
         case 'none':
             $showPreview = false;
             break;
         case 'yes':
             // Deprecated parameter value
         // Deprecated parameter value
         case 'true':
         case 'show':
             break;
         case 'tooltip':
         default:
             $showAsTooltip = true;
             $options = array('onShow' => 'jMediaRefreshPreviewTip');
             JHtml::_('behavior.tooltip', '.hasTipPreview', $options);
             break;
     }
     if ($showPreview) {
         if ($this->value && file_exists(JPATH_ROOT . '/' . $this->value)) {
             $src = JURI::root() . $this->value;
         } else {
             $src = '';
         }
         $width = isset($this->element['preview_width']) ? (int) $this->element['preview_width'] : 300;
         $height = isset($this->element['preview_height']) ? (int) $this->element['preview_height'] : 200;
         $style = '';
         $style .= $width > 0 ? 'max-width:' . $width . 'px;' : '';
         $style .= $height > 0 ? 'max-height:' . $height . 'px;' : '';
         $imgattr = array('id' => $this->id . '_preview', 'class' => 'media-preview', 'style' => $style);
         $img = JHtml::image($src, JText::_('JLIB_FORM_MEDIA_PREVIEW_ALT'), $imgattr);
         $previewImg = '<div id="' . $this->id . '_preview_img"' . ($src ? '' : ' style="display:none"') . '>' . $img . '</div>';
         $previewImgEmpty = '<div id="' . $this->id . '_preview_empty"' . ($src ? ' style="display:none"' : '') . '>' . JText::_('JLIB_FORM_MEDIA_PREVIEW_EMPTY') . '</div>';
         $html[] = '<div class="media-preview add-on">';
         if ($showAsTooltip) {
             $tooltip = $previewImgEmpty . $previewImg;
             $options = array('title' => JText::_('JLIB_FORM_MEDIA_PREVIEW_SELECTED_IMAGE'), 'text' => '<i class="icon-eye"></i>', 'class' => 'hasTipPreview');
             $html[] = JHtml::tooltip($tooltip, $options);
         } else {
             $html[] = ' ' . $previewImgEmpty;
             $html[] = ' ' . $previewImg;
         }
         $html[] = '</div>';
     }
     $html[] = '	<input type="text" class="input-small" name="' . $this->name . '" id="' . $this->id . '"' . ' value="' . htmlspecialchars($this->value, ENT_COMPAT, 'UTF-8') . '"' . ' readonly="readonly"' . $attr . ' />';
     $directory = (string) $this->element['directory'];
     if ($this->value && file_exists(JPATH_ROOT . '/' . $this->value)) {
         $folder = explode('/', $this->value);
         array_diff_assoc($folder, explode('/', JComponentHelper::getParams('com_media')->get('image_path', 'images')));
         array_pop($folder);
         $folder = implode('/', $folder);
     } elseif (file_exists(JPATH_ROOT . '/' . JComponentHelper::getParams('com_media')->get('image_path', 'images') . '/' . $directory)) {
         $folder = $directory;
     } else {
         $folder = '';
     }
     // The button.
     if ($this->element['disabled'] != true) {
         JHtml::_('bootstrap.tooltip');
         $html[] = '<a class="modal btn" title="' . JText::_('JLIB_FORM_BUTTON_SELECT') . '"' . ' href="' . ($this->element['readonly'] ? '' : ($link ? $link : 'index.php?option=com_media&amp;view=images&amp;tmpl=component&amp;asset=' . $asset . '&amp;author=' . $this->form->getValue($authorField)) . '&amp;fieldid=' . $this->id . '&amp;folder=' . $folder) . '"' . ' rel="{handler: \'iframe\', size: {x: 800, y: 500}}">';
         $html[] = JText::_('JLIB_FORM_BUTTON_SELECT') . '</a><a class="btn hasTooltip" title="' . JText::_('JLIB_FORM_BUTTON_CLEAR') . '"' . ' href="#" onclick="';
         $html[] = 'jInsertFieldValue(\'\', \'' . $this->id . '\');';
         $html[] = 'return false;';
         $html[] = '">';
         $html[] = '<i class="icon-remove"></i></a>';
     }
     $html[] = '</div>';
     return implode("\n", $html);
 }
Example #7
0
 /**
  * Method to get the field input markup for a media selector.
  * Use attributes to identify specific created_by and asset_id fields
  *
  * @return  string  The field input markup.
  *
  * @since   1.6
  */
 protected function getInput()
 {
     $asset = $this->asset;
     if ($asset == '') {
         $asset = JFactory::getApplication()->input->get('option');
     }
     if (!self::$initialised) {
         // Load the modal behavior script.
         JHtml::_('behavior.modal');
         // Include jQuery
         JHtml::_('jquery.framework');
         // Build the script.
         $script = array();
         $script[] = '	function jInsertFieldValue(value, id) {';
         $script[] = '		var $ = jQuery.noConflict();';
         $script[] = '		var old_value = $("#" + id).val();';
         $script[] = '		if (old_value != value) {';
         $script[] = '			var $elem = $("#" + id);';
         $script[] = '			$elem.val(value);';
         $script[] = '			$elem.trigger("change");';
         $script[] = '			if (typeof($elem.get(0).onchange) === "function") {';
         $script[] = '				$elem.get(0).onchange();';
         $script[] = '			}';
         $script[] = '			jMediaRefreshPreview(id);';
         $script[] = '		}';
         $script[] = '	}';
         $script[] = '	function jMediaRefreshPreview(id) {';
         $script[] = '		var $ = jQuery.noConflict();';
         $script[] = '		var value = $("#" + id).val();';
         $script[] = '		var $img = $("#" + id + "_preview");';
         $script[] = '		if ($img.length) {';
         $script[] = '			if (value) {';
         $script[] = '				$img.attr("src", "' . JUri::root() . '" + value);';
         $script[] = '				$("#" + id + "_preview_empty").hide();';
         $script[] = '				$("#" + id + "_preview_img").show()';
         $script[] = '			} else { ';
         $script[] = '				$img.attr("src", "");';
         $script[] = '				$("#" + id + "_preview_empty").show();';
         $script[] = '				$("#" + id + "_preview_img").hide();';
         $script[] = '			} ';
         $script[] = '		} ';
         $script[] = '	}';
         $script[] = '	function jMediaRefreshPreviewTip(tip)';
         $script[] = '	{';
         $script[] = '		var $ = jQuery.noConflict();';
         $script[] = '		var $tip = $(tip);';
         $script[] = '		var $img = $tip.find("img.media-preview");';
         $script[] = '		$tip.find("div.tip").css("max-width", "none");';
         $script[] = '		var id = $img.attr("id");';
         $script[] = '		id = id.substring(0, id.length - "_preview".length);';
         $script[] = '		jMediaRefreshPreview(id);';
         $script[] = '		$tip.show();';
         $script[] = '	}';
         // JQuery for tooltip for INPUT showing whole image path
         $script[] = '	function jMediaRefreshImgpathTip(tip)';
         $script[] = '	{';
         $script[] = '		var $ = jQuery.noConflict();';
         $script[] = '		var $tip = $(tip);';
         $script[] = '		$tip.css("max-width", "none");';
         $script[] = '		var $imgpath = $("#" + "' . $this->id . '").val();';
         $script[] = '		$("#TipImgpath").html($imgpath);';
         $script[] = '		if ($imgpath.length) {';
         $script[] = '		 $tip.show();';
         $script[] = '		} else {';
         $script[] = '		 $tip.hide();';
         $script[] = '		}';
         $script[] = '	}';
         // Add the script to the document head.
         JFactory::getDocument()->addScriptDeclaration(implode("\n", $script));
         self::$initialised = true;
     }
     $html = array();
     $attr = '';
     // Tooltip for INPUT showing whole image path
     $options = array('onShow' => 'jMediaRefreshImgpathTip');
     JHtml::_('behavior.tooltip', '.hasTipImgpath', $options);
     if (!empty($this->class)) {
         $this->class .= ' hasTipImgpath';
     } else {
         $this->class = 'hasTipImgpath';
     }
     $attr .= ' title="' . htmlspecialchars('<span id="TipImgpath"></span>', ENT_COMPAT, 'UTF-8') . '"';
     // Initialize some field attributes.
     $attr .= !empty($this->class) ? ' class="input-small ' . $this->class . '"' : ' class="input-small"';
     $attr .= !empty($this->size) ? ' size="' . $this->size . '"' : '';
     // Initialize JavaScript field attributes.
     $attr .= !empty($this->onchange) ? ' onchange="' . $this->onchange . '"' : '';
     // The text field.
     $html[] = '<div class="input-prepend input-append">';
     // The Preview.
     $showPreview = true;
     $showAsTooltip = false;
     switch ($this->preview) {
         case 'no':
             // Deprecated parameter value
         // Deprecated parameter value
         case 'false':
         case 'none':
             $showPreview = false;
             break;
         case 'yes':
             // Deprecated parameter value
         // Deprecated parameter value
         case 'true':
         case 'show':
             break;
         case 'tooltip':
         default:
             $showAsTooltip = true;
             $options = array('onShow' => 'jMediaRefreshPreviewTip');
             JHtml::_('behavior.tooltip', '.hasTipPreview', $options);
             break;
     }
     if ($showPreview) {
         if ($this->value && file_exists(JPATH_ROOT . '/' . $this->value)) {
             $src = JUri::root() . $this->value;
         } else {
             $src = '';
         }
         $width = $this->previewWidth;
         $height = $this->previewHeight;
         $style = '';
         $style .= $width > 0 ? 'max-width:' . $width . 'px;' : '';
         $style .= $height > 0 ? 'max-height:' . $height . 'px;' : '';
         $imgattr = array('id' => $this->id . '_preview', 'class' => 'media-preview', 'style' => $style);
         $img = JHtml::image($src, JText::_('JLIB_FORM_MEDIA_PREVIEW_ALT'), $imgattr);
         $previewImg = '<div id="' . $this->id . '_preview_img"' . ($src ? '' : ' style="display:none"') . '>' . $img . '</div>';
         $previewImgEmpty = '<div id="' . $this->id . '_preview_empty"' . ($src ? ' style="display:none"' : '') . '>' . JText::_('JLIB_FORM_MEDIA_PREVIEW_EMPTY') . '</div>';
         if ($showAsTooltip) {
             $html[] = '<div class="media-preview add-on">';
             $tooltip = $previewImgEmpty . $previewImg;
             $options = array('title' => JText::_('JLIB_FORM_MEDIA_PREVIEW_SELECTED_IMAGE'), 'text' => '<span class="icon-eye"></span>', 'class' => 'hasTipPreview');
             $html[] = JHtml::tooltip($tooltip, $options);
             $html[] = '</div>';
         } else {
             $html[] = '<div class="media-preview add-on" style="height:auto">';
             $html[] = ' ' . $previewImgEmpty;
             $html[] = ' ' . $previewImg;
             $html[] = '</div>';
         }
     }
     $html[] = '	<input type="text" name="' . $this->name . '" id="' . $this->id . '" value="' . htmlspecialchars($this->value, ENT_COMPAT, 'UTF-8') . '" readonly="readonly"' . $attr . ' />';
     if ($this->value && file_exists(JPATH_ROOT . '/' . $this->value)) {
         $folder = explode('/', $this->value);
         $folder = array_diff_assoc($folder, explode('/', JComponentHelper::getParams('com_media')->get('image_path', 'images')));
         array_pop($folder);
         $folder = implode('/', $folder);
     } elseif (file_exists(JPATH_ROOT . '/' . JComponentHelper::getParams('com_media')->get('image_path', 'images') . '/' . $this->directory)) {
         $folder = $this->directory;
     } else {
         $folder = '';
     }
     // The button.
     if ($this->disabled != true) {
         JHtml::_('bootstrap.tooltip');
         $html[] = '<a class="modal btn" title="' . JText::_('JLIB_FORM_BUTTON_SELECT') . '" href="' . ($this->readonly ? '' : ($this->link ? $this->link : 'index.php?option=com_media&amp;view=images&amp;tmpl=component&amp;asset=' . $asset . '&amp;author=' . $this->form->getValue($this->authorField)) . '&amp;fieldid=' . $this->id . '&amp;folder=' . $folder) . '"' . ' rel="{handler: \'iframe\', size: {x: 800, y: 500}}">';
         $html[] = JText::_('JLIB_FORM_BUTTON_SELECT') . '</a><a class="btn hasTooltip" title="' . JText::_('JLIB_FORM_BUTTON_CLEAR') . '" href="#" onclick="';
         $html[] = 'jInsertFieldValue(\'\', \'' . $this->id . '\');';
         $html[] = 'return false;';
         $html[] = '">';
         $html[] = '<span class="icon-remove"></span></a>';
     }
     $html[] = '</div>';
     return implode("\n", $html);
 }
Example #8
0
 /**
  * Method to get the field input markup for a media selector.
  * Use attributes to identify specific created_by and asset_id fields
  *
  * @return  string  The field input markup.
  *
  * @since   11.1
  */
 protected function getInput()
 {
     $assetField = $this->element['asset_field'] ? (string) $this->element['asset_field'] : 'asset_id';
     $authorField = $this->element['created_by_field'] ? (string) $this->element['created_by_field'] : 'created_by';
     $asset = $this->form->getValue($assetField) ? $this->form->getValue($assetField) : (string) $this->element['asset_id'];
     if ($asset == '') {
         $asset = JRequest::getCmd('option');
     }
     $link = (string) $this->element['link'];
     if (!self::$initialised) {
         // Load the modal behavior script.
         JHtml::_('behavior.modal');
         // Build the script.
         $script = array();
         $script[] = '	function jInsertFieldValue(value, id) {';
         $script[] = '		var old_value = $("#" + id).val();';
         $script[] = '		if (old_value != value) {';
         $script[] = '			var elem = $("#" + id);';
         $script[] = '			elem.val(value);';
         $script[] = '			elem.trigger("change");';
         $script[] = '			if (typeof(elem.onchange) === "function") {';
         $script[] = '				elem.onchange();';
         $script[] = '			}';
         $script[] = '			jMediaRefreshPreview(id);';
         $script[] = '		}';
         $script[] = '	}';
         $script[] = '	function jMediaRefreshPreview(id) {';
         $script[] = '		id = "#" + id;';
         $script[] = '		var value = $(id).val();';
         $script[] = '		var img = $(id + "_preview");';
         $script[] = '		if (img) {';
         $script[] = '			if (value) {';
         $script[] = '				img.src = "' . JURI::root() . '" + value;';
         $script[] = '				$(id + "_preview_empty").css("display", "none");';
         $script[] = '				$(id + "_preview_img").css("display", "");';
         $script[] = '			} else { ';
         $script[] = '				img.src = ""';
         $script[] = '				$(id + "_preview_empty").css("display", "");';
         $script[] = '				$(id + "_preview_img").css("display", "none");';
         $script[] = '			} ';
         $script[] = '		} ';
         $script[] = '	}';
         $script[] = '	function jMediaRefreshPreviewTip(tip)';
         $script[] = '	{';
         $script[] = '		$(tip).css("display", "block");';
         $script[] = '		var img = tip.find("img.media-preview");';
         $script[] = '		var id = $(img).attr("id");';
         $script[] = '		id = id.substring(0, id.length - "_preview".length);';
         $script[] = '		jMediaRefreshPreview(id);';
         $script[] = '	}';
         // Add the script to the document head.
         JFactory::getDocument()->addScriptDeclaration(implode("\n", $script));
         self::$initialised = true;
     }
     // Initialize variables.
     $html = array();
     $attr = '';
     // Initialize some field attributes.
     $attr .= $this->element['class'] ? ' class="' . (string) $this->element['class'] . '"' : '';
     $attr .= $this->element['size'] ? ' size="' . (int) $this->element['size'] . '"' : '';
     // Initialize JavaScript field attributes.
     $attr .= $this->element['onchange'] ? ' onchange="' . (string) $this->element['onchange'] . '"' : '';
     // The text field.
     $html[] = '<div class="input-modal">';
     $html[] = '	<span class="input-cell">';
     $html[] = '	<input type="text" name="' . $this->name . '" id="' . $this->id . '"' . ' value="' . htmlspecialchars($this->value, ENT_COMPAT, 'UTF-8') . '"' . ' readonly="readonly"' . $attr . ' />';
     $html[] = '	</span>';
     $directory = (string) $this->element['directory'];
     if ($this->value && file_exists(JPATH_ROOT . '/' . $this->value)) {
         $folder = explode('/', $this->value);
         array_shift($folder);
         array_pop($folder);
         $folder = implode('/', $folder);
     } elseif (file_exists(JPATH_ROOT . '/' . JComponentHelper::getParams('com_media')->get('image_path', 'images') . '/' . $directory)) {
         $folder = $directory;
     } else {
         $folder = '';
     }
     // The button.
     $html[] = '	<span class="input-cell">';
     $html[] = '		<a class="button modal" title="' . JText::_('JLIB_FORM_BUTTON_SELECT') . '"' . ' href="' . ($this->element['readonly'] ? '' : ($link ? $link : 'index.php?option=com_media&amp;view=images&amp;tmpl=component&amp;asset=' . $asset . '&amp;author=' . $this->form->getValue($authorField)) . '&amp;fieldid=' . $this->id . '&amp;folder=' . $folder) . '"' . ' rel="{handler: \'iframe\', size: {x: 800, y: 500}}">';
     $html[] = JText::_('JLIB_FORM_BUTTON_SELECT') . '</a>';
     $html[] = '	</span>';
     $html[] = '	<span class="input-cell">';
     $html[] = '		<a class="button" title="' . JText::_('JLIB_FORM_BUTTON_CLEAR') . '"' . ' href="#" onclick="';
     $html[] = 'jInsertFieldValue(\'\', \'' . $this->id . '\');';
     $html[] = 'return false;';
     $html[] = '">';
     $html[] = JText::_('JLIB_FORM_BUTTON_CLEAR') . '</a>';
     $html[] = '	</span>';
     $html[] = '</div>';
     // The Preview.
     $preview = (string) $this->element['preview'];
     $showPreview = true;
     $showAsTooltip = false;
     switch ($preview) {
         case 'false':
         case 'none':
             $showPreview = false;
             break;
         case 'true':
         case 'show':
             break;
         case 'tooltip':
         default:
             $showAsTooltip = true;
             $options = array('onShow' => 'jMediaRefreshPreviewTip');
             JHtml::_('behavior.tooltip', '.hasTipPreview', $options);
             break;
     }
     if ($showPreview) {
         if ($this->value && file_exists(JPATH_ROOT . '/' . $this->value)) {
             $src = JURI::root() . $this->value;
         } else {
             $src = '';
         }
         $attr = array('id' => $this->id . '_preview', 'class' => 'media-preview', 'style' => 'max-width:160px; max-height:100px;');
         $img = JHtml::image($src, JText::_('JLIB_FORM_MEDIA_PREVIEW_ALT'), $attr);
         $previewImg = '<div id="' . $this->id . '_preview_img"' . ($src ? '' : ' style="display:none"') . '>' . $img . '</div>';
         $previewImgEmpty = '<div id="' . $this->id . '_preview_empty"' . ($src ? ' style="display:none"' : '') . '>' . JText::_('JLIB_FORM_MEDIA_PREVIEW_EMPTY') . '</div>';
         //$html[] = '<div class="media-preview fltlft">';
         if ($showAsTooltip) {
             $tooltip = $previewImgEmpty . $previewImg;
             $options = array('title' => JText::_('JLIB_FORM_MEDIA_PREVIEW_SELECTED_IMAGE'), 'text' => JText::_('JLIB_FORM_MEDIA_PREVIEW_TIP_TITLE'), 'class' => 'hasTipPreview');
             $html[] = JHtml::tooltip($tooltip, $options);
         } else {
             $html[] = ' ' . $previewImgEmpty;
             $html[] = ' ' . $previewImg;
         }
         //$html[] = '</div>';
     }
     return implode("\n", $html);
 }
Example #9
0
?>
				</div>
			</div>

			<div class="control-group">
				<label for="image_field" class="control-label">
					<?php 
echo JText::_('COM_AKEEBASUBS_LEVEL_FIELD_IMAGE');
?>
				</label>
				<div class="controls">
					<?php 
$fake_data = '<field name="image" type="media" directory="images" />';
$fakeElement = new SimpleXMLElement($fake_data);
$fakeForm = new JForm('fakeForm');
$media = new JFormFieldMedia($fakeForm);
$media->setup($fakeElement, $this->item->image);
echo $media->input;
?>
				</div>
			</div>

			<div class="control-group">
				<label for="enabled" class="control-label">
					<?php 
echo JText::_('JPUBLISHED');
?>
				</label>
				<div class="controls">
					<?php 
echo JHTML::_('select.booleanlist', 'enabled', null, $this->item->enabled);
Example #10
0
    /**
     * Creating rows with input fields
     *
     * @param string $text
     * @param string $name
     * @param string $value
     */
    public static function image($name, $value, $class = 'class="inputbox"', $readonly = '', $size = '30', $maxlength = '255', $more = '')
    {
        require_once JPATH_ROOT . '/libraries/cms/form/field/media.php';
        $media_field = new JFormFieldMedia();
        $media_string = <<<XML

<field name="{$name}"  type="media" default="1" label="">
</field>

XML;
        $element_media = simplexml_load_string($media_string);
        $media_field->setup($element_media, $value, '');
        return $media_field->renderField();
    }
Example #11
0
 /**
  * Method to get the field input markup for a media selector.
  * Use attributes to identify specific created_by and asset_id fields
  *
  * @return  string  The field input markup.
  *
  * @since   1.6
  */
 protected function getInput()
 {
     $asset = $this->asset;
     if ($asset == '') {
         $asset = JFactory::getApplication()->input->get('option');
     }
     if (!self::$initialised) {
         // Load the modal behavior script.
         JHtml::_('behavior.modal');
         // Include jQuery
         JHtml::_('jquery.framework');
         JHtml::_('script', 'media/mediafield-mootools.min.js', true, true, false, false, true);
         self::$initialised = true;
     }
     $html = array();
     $attr = '';
     // Tooltip for INPUT showing whole image path
     $options = array('onShow' => 'jMediaRefreshImgpathTip');
     JHtml::_('behavior.tooltip', '.hasTipImgpath', $options);
     if (!empty($this->class)) {
         $this->class .= ' hasTipImgpath';
     } else {
         $this->class = 'hasTipImgpath';
     }
     $attr .= ' title="' . htmlspecialchars('<span id="TipImgpath"></span>', ENT_COMPAT, 'UTF-8') . '"';
     // Initialize some field attributes.
     $attr .= !empty($this->class) ? ' class="input-large ' . $this->class . '"' : ' class="input-large"';
     $attr .= !empty($this->size) ? ' size="' . $this->size . '"' : '';
     // Initialize JavaScript field attributes.
     $attr .= !empty($this->onchange) ? ' onchange="' . $this->onchange . '"' : '';
     // The text field.
     $html[] = '<div class="input-prepend input-append">';
     // The Preview.
     $showPreview = true;
     $showAsTooltip = false;
     switch ($this->preview) {
         case 'no':
             // Deprecated parameter value
         // Deprecated parameter value
         case 'false':
         case 'none':
             $showPreview = false;
             break;
         case 'yes':
             // Deprecated parameter value
         // Deprecated parameter value
         case 'true':
         case 'show':
             break;
         case 'tooltip':
         default:
             $showAsTooltip = true;
             $options = array('onShow' => 'jMediaRefreshPreviewTip');
             JHtml::_('behavior.tooltip', '.hasTipPreview', $options);
             break;
     }
     if ($showPreview) {
         if ($this->value && file_exists(JPATH_ROOT . '/' . $this->value)) {
             $src = JUri::root() . $this->value;
         } else {
             $src = '';
         }
         $width = $this->previewWidth;
         $height = $this->previewHeight;
         $style = '';
         $style .= $width > 0 ? 'max-width:' . $width . 'px;' : '';
         $style .= $height > 0 ? 'max-height:' . $height . 'px;' : '';
         $imgattr = array('id' => $this->id . '_preview', 'class' => 'media-preview', 'style' => $style);
         $img = JHtml::image($src, JText::_('JLIB_FORM_MEDIA_PREVIEW_ALT'), $imgattr);
         $previewImg = '<div id="' . $this->id . '_preview_img"' . ($src ? '' : ' style="display:none"') . '>' . $img . '</div>';
         $previewImgEmpty = '<div id="' . $this->id . '_preview_empty"' . ($src ? ' style="display:none"' : '') . '>' . JText::_('JLIB_FORM_MEDIA_PREVIEW_EMPTY') . '</div>';
         if ($showAsTooltip) {
             $html[] = '<div class="media-preview add-on">';
             $tooltip = $previewImgEmpty . $previewImg;
             $options = array('title' => JText::_('JLIB_FORM_MEDIA_PREVIEW_SELECTED_IMAGE'), 'text' => '<span class="icon-eye"></span>', 'class' => 'hasTipPreview');
             $html[] = JHtml::tooltip($tooltip, $options);
             $html[] = '</div>';
         } else {
             $html[] = '<div class="media-preview add-on" style="height:auto">';
             $html[] = ' ' . $previewImgEmpty;
             $html[] = ' ' . $previewImg;
             $html[] = '</div>';
         }
     }
     $html[] = '	<input type="text" name="' . $this->name . '" id="' . $this->id . '" value="' . htmlspecialchars($this->value, ENT_COMPAT, 'UTF-8') . '"' . $attr . ' data-basepath="' . JUri::root() . '"/>';
     if ($this->value && file_exists(JPATH_ROOT . '/' . $this->value)) {
         $folder = explode('/', $this->value);
         $folder = array_diff_assoc($folder, explode('/', JComponentHelper::getParams('com_media')->get('image_path', 'images')));
         array_pop($folder);
         $folder = implode('/', $folder);
     } elseif (file_exists(JPATH_ROOT . '/' . JComponentHelper::getParams('com_media')->get('image_path', 'images') . '/' . $this->directory)) {
         $folder = $this->directory;
     } else {
         $folder = '';
     }
     // The button.
     if ($this->disabled != true) {
         JHtml::_('bootstrap.tooltip');
         $html[] = '<a class="modal btn" title="' . JText::_('JLIB_FORM_BUTTON_SELECT') . '" href="' . ($this->readonly ? '' : ($this->link ? $this->link : 'index.php?option=com_media&amp;view=images&amp;tmpl=component&amp;asset=' . $asset . '&amp;author=' . $this->form->getValue($this->authorField)) . '&amp;fieldid=' . $this->id . '&amp;folder=' . $folder) . '"' . ' rel="{handler: \'iframe\', size: {x: ' . $this->width . ', y: ' . $this->height . '}}">';
         $html[] = JText::_('JLIB_FORM_BUTTON_SELECT') . '</a><a class="btn hasTooltip" title="' . JText::_('JLIB_FORM_BUTTON_CLEAR') . '" href="#" onclick="';
         $html[] = 'jInsertFieldValue(\'\', \'' . $this->id . '\');';
         $html[] = 'return false;';
         $html[] = '">';
         $html[] = '<span class="icon-remove"></span></a>';
     }
     $html[] = '</div>';
     return implode("\n", $html);
 }