Ejemplo n.º 1
0
    function getInput()
    {
        JHTML::_('behavior.modal');
        /** @var $gantry Gantry */
        global $gantry;
        $layout = $link = $dropdown = "";
        $options = $choices = array();
        $nomargin = false;
        $rokgallery = self::checkForRokGallery();
        //$rokgallery = false; // debug
        $value = str_replace("'", '"', $this->value);
        $data = json_decode($value);
        if (!$data && strlen($value)) {
            $nomargin = true;
            $data = json_decode('{"path":"' . $value . '"}');
        }
        $preview = "";
        $preview_width = 'width="100"';
        $preview_height = 'height="70"';
        if (!$data && (!isset($data->preview) || !isset($data->path))) {
            $preview = $gantry->gantryUrl . '/admin/widgets/imagepicker/images/no-image.png';
        } else {
            if (isset($data->preview)) {
                $preview = $data->preview;
            } else {
                $preview = JURI::root(true) . '/' . $data->path;
                $preview_height = "";
            }
        }
        if (!defined('ELEMENT_RTIMAGEPICKER')) {
            $gantry->addStyle($gantry->gantryUrl . '/admin/widgets/imagepicker/css/imagepicker.css');
            gantry_addInlineScript("\n\t\t\tif (typeof jInsertEditorText == 'undefined'){\n\t\t\t\tfunction jInsertEditorText(text, editor) {\n\t\t\t\t\tvar source = text.match(/(src)=(\"[^\"]*\")/i), img;\n\t\t\t\t\ttext = source[2].replace(/\\\"/g, '');\n\t\t\t\t\timg = '" . JURI::root(true) . "/' + text;\n\n\t\t\t\t\tdocument.getElementById(editor + '-img').src = img;\n\t\t\t\t\tdocument.getElementById(editor + '-img').removeProperty('height');\n\t\t\t\t\tdocument.getElementById(editor).value = JSON.encode({path: text});\n\t\t\t\t};\n\t\t\t};\n\t\t\t");
            gantry_addInlineScript("\n\t\t\t\tvar AdminURI = '" . JURI::base(true) . "/';\n\t\t\t\tvar GalleryPickerInsertText = function(input, string, size, minithumb){\n\t\t\t\t\tvar data = {\n\t\t\t\t\t\tpath: string,\n\t\t\t\t\t\twidth: size.width,\n\t\t\t\t\t\theight: size.height,\n\t\t\t\t\t\tpreview: minithumb\n\t\t\t\t\t};\n\n\t\t\t\t\tdocument.getElementById(input + '-img').src = minithumb;\n\t\t\t\t\tdocument.getElementById(input + '-infos').innerHTML = data.width + ' x ' + data.height;\n\t\t\t\t\tdocument.getElementById(input).value = JSON.encode(data);\n\n\t\t\t\t};\n\n\t\t\t\tvar empty_background_img = '" . $gantry->gantryUrl . "/admin/widgets/imagepicker/images/no-image.png';\n\n\t\t\t");
            define('ELEMENT_RTIMAGEPICKER', true);
        }
        gantry_addInlineScript("\n\t\t\twindow.addEvent('domready', function(){\n\t\t\t\tdocument.id('" . $this->id . "').addEvent('keyup', function(value){\n\t\t\t\t\tdocument.id('" . $this->id . "-infos').innerHTML = '';\n\t\t\t\t\tif (!value || !value.length) document.id('" . $this->id . "-img').set('src', empty_background_img);\n\t\t\t\t\telse {\n\t\t\t\t\t\tvar data = JSON.decode(value);\n\t\t\t\t\t\tdocument.id('" . $this->id . "-img').set('src', (data.preview ? data.preview : '" . JURI::root(true) . "/' + data.path));\n\t\t\t\t\t\tif (!data.preview){\n\t\t\t\t\t\t\tdocument.id('" . $this->id . "-img').removeProperty('height');\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tdocument.id('" . $this->id . "-img').set('height', '50');\n\t\t\t\t\t\t\tif (data.width && data.height) document.id('" . $this->id . "-infos').innerHTML = data.width + ' x ' + data.height;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.setProperty('value', value);\n\t\t\t\t});\n\n\t\t\t\tdocument.id('" . $this->id . "-clear').addEvent('click', function(e){\n\t\t\t\t\te.stop();\n\t\t\t\t\tdocument.id('" . $this->id . "').set('value', '').fireEvent('set', '');\n\t\t\t\t\tdocument.id('" . $this->id . "-img').src = empty_background_img;\n\t\t\t\t\tdocument.id('" . $this->id . "-infos').innerHTML = '';\n\t\t\t\t});\n\n\t\t\t\tvar dropdown = document.id('" . $this->id . "mediatype');\n\t\t\t\tif (dropdown){\n\t\t\t\t\tdropdown.addEvent('change', function(){\n\t\t\t\t\t\tdocument.id('" . $this->id . "-link').set('href', this.value);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t");
        if ($rokgallery) {
            $link = 'index.php?option=com_rokgallery&view=gallerypicker&tmpl=component&show_menuitems=0&inputfield=' . $this->id;
        } else {
            $link = "index.php?option=com_media&view=images&layout=default&tmpl=component&e_name=" . $this->id;
        }
        if ($rokgallery) {
            $choices = array(array('RokGallery', 'index.php?option=com_rokgallery&view=gallerypicker&tmpl=component&show_menuitems=0&inputfield=' . $this->id), array('MediaManager', 'index.php?option=com_media&view=images&layout=default&tmpl=component&e_name=' . $this->id));
            foreach ($choices as $option) {
                $options[] = GantryHtmlSelect::option($option[1], $option[0], 'value', 'text');
            }
            include_once $gantry->gantryPath . '/' . 'admin' . '/' . 'forms' . '/' . 'fields' . '/' . 'selectbox.php';
            $selectbox = new GantryFormFieldSelectBox();
            $selectbox->id = $this->id . 'mediatype';
            $selectbox->value = $link;
            $selectbox->addOptions($options);
            $dropdown = '<div id="' . $this->id . '-mediadropdown" class="mediadropdown">' . $selectbox->getInput() . "</div>";
        }
        $value = str_replace('"', "'", $value);
        $layout .= '
			<div class="wrapper">' . "\n" . '
				<div id="' . $this->id . '-wrapper" class="backgroundpicker">' . "\n" . '
					<img id="' . $this->id . '-img" class="backgroundpicker-img" ' . $preview_width . ' ' . $preview_height . ' alt="" src="' . $preview . '" />

					<div id="' . $this->id . '-infos" class="backgroundpicker-infos" ' . ($rokgallery && !$nomargin ? 'style="display:inline-block;"' : 'style="display:none;"') . ' >' . (isset($data->width) && isset($data->height) ? $data->width . ' x ' . $data->height : '') . '</div>


					<a id="' . $this->id . '-link" href="' . $link . '" rel="{handler: \'iframe\', size: {x: 675, y: 450}}" class="rok-button modal">' . "\n" . '
						Select
					</a>' . "\n" . '
					<a id="' . $this->id . '-clear" href="#" class="rok-button bg-button-clear">' . "\n" . '
						Reset
					</a>' . "\n" . '

					' . $dropdown . '

					<input class="background-picker" type="hidden" id="' . $this->id . '" name="' . $this->name . '" value="' . $value . '" />' . "\n" . '
					<div class="clr"></div>
				</div>' . "\n" . '
			</div>' . "\n" . '
		';
        return $layout;
    }