Azeri
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
var
/
www
/
vhosts
/
chipionatv.com
/
httpdocs
/
media
/
media
/
js
/
Filename :
popup-imagemanager.js
back
Copy
/** * @copyright Copyright (C) 2005 - 2016 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ /** * JImageManager behavior for media component * * @package Joomla.Extensions * @subpackage Media * @since 1.5 */ (function ($, doc) { 'use strict'; window.ImageManager = { /** * Initialization * * @return void */ initialize: function () { var o = this.getUriObject(window.self.location.href), q = this.getQueryObject(o.query); this.editor = decodeURIComponent(q.e_name); // Setup image manager fields object this.fields = { 'url': doc.getElementById("f_url"), 'alt': doc.getElementById("f_alt"), 'align': doc.getElementById("f_align"), 'title': doc.getElementById("f_title"), 'caption': doc.getElementById("f_caption"), 'c_class': doc.getElementById("f_caption_class") }; // Setup image listing objects this.folderlist = doc.getElementById('folderlist'); this.frame = window.frames.imageframe; this.frameurl = this.frame.location.href; // Setup image listing frame $('#imageframe').on('load', function () { ImageManager.onloadimageview(); }); // Setup folder up button $('#upbutton').off('click').on('click', function () { ImageManager.upFolder(); }); }, /** * Called when the iframe is reloaded. * Updates the form action with the correct folder. * This should really be a hidden input rather than part of the action, no? * * @return void */ onloadimageview: function () { var folder = this.getImageFolder(), $form = $('#uploadForm'), portString = '', a, q; // Update the frame url this.frameurl = this.frame.location.href; this.setFolder(folder); a = this.getUriObject($form.attr('action')); q = this.getQueryObject(a.query); q.folder = folder; a.query = $.param(q); if (typeof (a.port) !== 'undefined' && a.port != 80) { portString = ':' + a.port; } $form.attr('action', a.scheme + '://' + a.domain + portString + a.path + '?' + a.query); }, /** * Get the current directory based on the query string of the iframe * * @return string */ getImageFolder: function () { return this.getQueryObject(this.frame.location.search.substring(1)).folder; }, /** * Called from outside when the 'OK' button (maybe 'insert' or 'submit', whatever) is clicked. * * @return boolean Always true */ onok: function () { var tag = '', attr = [], figclass = '', captionclass = '', // Get the image tag field information url = this.fields.url.value, alt = this.fields.alt.value, align = this.fields.align.value, title = this.fields.title.value, caption = this.fields.caption.value, c_class = this.fields.c_class.value; if (url) { // Set alt attribute attr.push('alt="' + alt + '"'); // Set align attribute if (align && !caption) { attr.push('class="pull-' + align + '"'); } // Set title attribute if (title) { attr.push('title="' + title + '"'); } tag = '<img src="' + url + '" ' + attr.join(' ') + '/>'; // Process caption if (caption) { if (align) { figclass = ' class="pull-' + align + '"'; } if (c_class) { captionclass = ' class="' + c_class + '"'; } tag = '<figure' + figclass + '>' + tag + '<figcaption' + captionclass + '>' + caption + '</figcaption></figure>'; } } window.parent.jInsertEditorText(tag, this.editor); return true; }, /** * Called from outside when the directory selector is used. * * @param string folder The folder to switch to * @param mixed asset Probably an integer or undefined, optional * @param mixed author Probably an integer or undefined, optional * * @return void */ setFolder: function (folder, asset, author) { for (var i = 0, l = this.folderlist.length; i < l; i++) { if (folder == this.folderlist.options[i].value) { this.folderlist.selectedIndex = i; $(this.folderlist) .trigger('liszt:updated') // Mootools .trigger('chosen:updated'); // jQuery break; } } if (!!asset || !!author) { this.setFrameUrl(folder, asset, author); } }, /** * Move up one directory * * @return void */ upFolder: function () { var path = this.folderlist.value.split('/'), search; path.pop(); search = path.join('/'); this.setFolder(search); this.setFrameUrl(search); }, /** * Called from outside when a file is selected * * @param string file Relative path to the file. * * @return void */ populateFields: function (file) { $("#f_url").val(image_base_path + file); }, /** * Not used. * Should display messages. There are none. * * @param string text The message text * * @return void */ showMessage: function (text) { var $message = $('#message'); $message.find('>:first-child').remove(); $message.append(text); $('#messages').css('display', 'block'); }, /** * Not used. * Refreshes the iframe * * @return void */ refreshFrame: function () { this.frame.location.href = this.frameurl; }, /** * Sets the iframe url, loading a new page. Usually for changing directory. * * @param string folder Relative path to directory * @param mixed asset Probably an integer or undefined, optional * @param mixed author Probably an integer or undefined, optional */ setFrameUrl: function (folder, asset, author) { var qs = { option: 'com_media', view: 'imagesList', tmpl: 'component', asset: asset, author: author }; // Don't run folder through params because / will end up double encoded. this.frameurl = 'index.php?' + $.param(qs) + '&folder=' + folder; this.frame.location.href = this.frameurl; }, /** * Convert a query string to an object * * @param string q A query string (no leading ?) * * @return object */ getQueryObject: function (q) { var rs = {}; $.each((q || '').split(/[&;]/), function (key, val) { var keys = val.split('='); rs[keys[0]] = keys.length == 2 ? keys[1] : null; }); return rs; }, /** * Break a url into its component parts * * @param string u URL * * @return object */ getUriObject: function (u) { var bitsAssociate = {}, bits = u.match(/^(?:([^:\/?#.]+):)?(?:\/\/)?(([^:\/?#]*)(?::(\d*))?)((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[\?#]|$)))*\/?)?([^?#\/]*))?(?:\?([^#]*))?(?:#(.*))?/); $.each(['uri', 'scheme', 'authority', 'domain', 'port', 'path', 'directory', 'file', 'query', 'fragment'], function (key, index) { bitsAssociate[index] = (!!bits && !!bits[key]) ? bits[key] : ''; }); return bitsAssociate; } }; $(function () { window.ImageManager.initialize(); }); }(jQuery, document));