MediaWiki:Common.js
(Rozdíly mezi verzemi)
(Založena nová stránka: - →Zde uvedený JavaScript bude použit pro všechny uživatele při načtení každé stránky.: importScriptURI('http://en.wikipedia.org/w/index.php?title=User:Pro...) |
|||
Řádka 1: | Řádka 1: | ||
− | /* Zde uvedený JavaScript bude použit pro všechny uživatele při načtení každé stránky. */ | + | é/* Zde uvedený JavaScript bude použit pro všechny uživatele při načtení každé stránky. */ |
importScriptURI('http://en.wikipedia.org/w/index.php?title=User:ProveIt_GT/ProveIt.js&action=raw&ctype=text/javascript'); | importScriptURI('http://en.wikipedia.org/w/index.php?title=User:ProveIt_GT/ProveIt.js&action=raw&ctype=text/javascript'); | ||
// [[User:ProveIt GT/ProveIt.js]] | // [[User:ProveIt GT/ProveIt.js]] | ||
+ | |||
+ | |||
+ | /* | ||
+ | * StockPhoto - shows download and attribution buttons | ||
+ | * Original code 2010-09/10 by [[User:Magnus Manske]] | ||
+ | * | ||
+ | * @rev 33 (2012-01-02) | ||
+ | * @author [[User:Magnus Manske]], 2010 - 2011 | ||
+ | * @author [[User:Krinkle]], 2011 - 2012 | ||
+ | * @source commons.wikimedia.org/wiki/MediaWiki:Gadget-Stockphoto.js | ||
+ | */ | ||
+ | /*jslint browser: true, white: true */ | ||
+ | /*global jQuery:false, mediaWiki:false, importScript:false*/ | ||
+ | ( function ( $, mw, undefined ) { | ||
+ | "use strict"; | ||
+ | |||
+ | // Disabled for Internet Explorer, Opera 9.27 and below | ||
+ | if ( | ||
+ | window.stockPhoto === undefined | ||
+ | && ( mw.config.get( 'skin' ) === 'vector' || mw.config.get( 'skin' ) === 'monobook' ) | ||
+ | && mw.config.get( 'wgNamespaceNumber' ) === 6 | ||
+ | && $.inArray( mw.config.get( 'wgAction' ), ['view', 'purge'] ) !== -1 | ||
+ | && !$.browser.msie | ||
+ | && (!$.browser.opera || ($.browser.opera && parseFloat($.browser.version) > 9.27)) | ||
+ | ) { | ||
+ | |||
+ | var stockPhoto = { | ||
+ | |||
+ | // Misc | ||
+ | ui_icon_download: '//upload.wikimedia.org/wikipedia/commons/thumb/9/92/Gnome-document-save.svg/50px-Gnome-document-save.svg.png', | ||
+ | ui_icon_web: '//upload.wikimedia.org/wikipedia/commons/thumb/c/c0/Gnome-emblem-web.svg/50px-Gnome-emblem-web.svg.png', | ||
+ | ui_icon_wiki: '//upload.wikimedia.org/wikipedia/commons/thumb/2/2c/Tango_style_Wikipedia_Icon.svg/50px-Tango_style_Wikipedia_Icon.svg.png', | ||
+ | ui_icon_email: '//upload.wikimedia.org/wikipedia/commons/thumb/e/ee/Gnome-mail-send.svg/50px-Gnome-mail-send.svg.png', | ||
+ | ui_icon_help: '//upload.wikimedia.org/wikipedia/commons/thumb/e/e7/Dialog-information_on.svg/50px-Dialog-information_on.svg.png', | ||
+ | ui_icon_remove: '//upload.wikimedia.org/wikipedia/commons/thumb/9/9d/Emblem-unreadable.svg/20px-Emblem-unreadable.svg.png', | ||
+ | information_template_hints: ['fileinfotpl_desc', 'fileinfotpl_src'], | ||
+ | icons_only: ['midi', 'ogg', 'flac'], | ||
+ | horizontal_ui: ['midi', 'ogg', 'flac', 'pdf', 'djvu'], | ||
+ | //license_patterns: "^Artistic-2$", "^BSD images$", "^OS OpenData$", "^Mozilla Public License$"], | ||
+ | ogg_icon: mw.config.get( 'stylepath' ) + '/common/images/icons/fileicon-ogg.png', | ||
+ | stockphoto_code1: undefined, | ||
+ | stockphoto_author: undefined, | ||
+ | stockphoto_license: undefined, | ||
+ | nicetitle: undefined, | ||
+ | file_icon: undefined, | ||
+ | file_url: undefined, | ||
+ | backlink_url: undefined, | ||
+ | attribution: '', | ||
+ | fade_target: '', | ||
+ | gfdl_note: false, | ||
+ | sbm_counter: 1, | ||
+ | fromCommons: false, | ||
+ | attrRequired: true, | ||
+ | |||
+ | init: function () { | ||
+ | var $enable, has_information, img_width, img_height, xoff, yoff, horizontal, html; | ||
+ | |||
+ | if ( window.stockphoto_prevent !== undefined ) { | ||
+ | return; | ||
+ | } | ||
+ | $("#filetoc").find("a[href=#file], a[href=#filehistory], a[href=#filelinks], a[href=#metadata], a[href=#globalusage]").parent().addClass("mw-filetoc-links"); | ||
+ | if ($.cookie('StockPhotoDisabled')) { | ||
+ | $enable = $('<li class="mw-filetoc-links"><a id="SpEnable">' + stockPhoto.i18n.reuse + '</a></li>'); | ||
+ | $enable.click(function (){ | ||
+ | $.cookie('StockPhotoDisabled', null, { | ||
+ | path: '/' | ||
+ | }); | ||
+ | stockPhoto.init(); | ||
+ | }); | ||
+ | $("#filetoc").append($enable); | ||
+ | return; | ||
+ | } | ||
+ | if ( $('#file').length === 0 ) { | ||
+ | return; | ||
+ | } | ||
+ | stockPhoto.small_horizontal_layout = false; | ||
+ | if ( !mw.user.anonymous() ) { | ||
+ | stockPhoto.small_horizontal_layout = true; | ||
+ | } | ||
+ | has_information = false; | ||
+ | $.each( stockPhoto.information_template_hints, function (k, v) { | ||
+ | if ($('#' + v).length !== 0) { | ||
+ | has_information = true; | ||
+ | } | ||
+ | }); | ||
+ | |||
+ | // No {{Information}} | ||
+ | if (!has_information) { | ||
+ | return; | ||
+ | } | ||
+ | |||
+ | // Has one or more problemtags | ||
+ | // Changed to also include renames and normal deletes | ||
+ | if ($('.nuke').length) { | ||
+ | return; | ||
+ | } | ||
+ | |||
+ | $('#stockphoto_base').remove(); | ||
+ | img_width = $('#file img').width(); | ||
+ | img_height = $('#file img').height(); | ||
+ | xoff = img_width + 40; | ||
+ | yoff = $('#file').position().top + 5; | ||
+ | |||
+ | if (!horizontal && img_height < 300) { | ||
+ | stockPhoto.small_horizontal_layout = true; | ||
+ | } | ||
+ | horizontal = stockPhoto.small_horizontal_layout; | ||
+ | $.each(stockPhoto.horizontal_ui, function (k, v) { | ||
+ | v = new RegExp('\.' + v + '$', 'i'); | ||
+ | if ( mw.config.get( 'wgTitle' ).match(v)) { | ||
+ | horizontal = true; | ||
+ | } | ||
+ | }); | ||
+ | if ($(window).width() < 1030) { | ||
+ | horizontal = true; | ||
+ | } | ||
+ | |||
+ | // Initialize values | ||
+ | stockPhoto.share_this(-1); | ||
+ | html = '<div id="stockphoto_base" '; | ||
+ | if (horizontal) { | ||
+ | html += ' class="horizontal">'; | ||
+ | } | ||
+ | else if (!$("body.rtl").length) { | ||
+ | html += "class='vertical' style='left:" + xoff + "px;top:" + yoff + "px'>"; | ||
+ | } else { | ||
+ | html += "class='vertical' style='left: 0px;top:" + yoff + "px'>"; | ||
+ | } | ||
+ | |||
+ | html += stockPhoto.add_button_row( stockPhoto.ui_icon_download, "call_download", stockPhoto.i18n.download, stockPhoto.i18n.all_sizes, horizontal); | ||
+ | html += stockPhoto.add_button_row( stockPhoto.ui_icon_web, "call_web", stockPhoto.i18n.use_this_file_web_short, stockPhoto.i18n.on_a_website, horizontal); | ||
+ | html += stockPhoto.add_button_row( stockPhoto.ui_icon_wiki, "call_wiki", stockPhoto.i18n.use_this_file_wiki_short, stockPhoto.i18n.on_a_wiki, horizontal); | ||
+ | html += stockPhoto.add_button_row( stockPhoto.ui_icon_email, "send_email", stockPhoto.i18n.email_link_short, stockPhoto.i18n.to_this_file, horizontal); | ||
+ | html += stockPhoto.add_button_row( stockPhoto.ui_icon_help, "call_help", stockPhoto.i18n.information, stockPhoto.i18n.about_reusing, horizontal); | ||
+ | html += '<a title="' + stockPhoto.i18n.remove_icons + '" id="stockphoto_remove"><img src="' + stockPhoto.ui_icon_remove + '" /></a>'; | ||
+ | html += "</div>"; | ||
+ | if ( stockPhoto.small_horizontal_layout && $("#file").length ) { | ||
+ | $(".mw-filetoc-links").hide(); | ||
+ | $("#filetoc").append(html); | ||
+ | } else { | ||
+ | $("#filetoc").after(html); | ||
+ | } | ||
+ | $('#stockphoto_remove').click(function () { | ||
+ | $.cookie('StockPhotoDisabled', true, { | ||
+ | expires: 60, | ||
+ | path: '/' | ||
+ | }); | ||
+ | $('#stockphoto_base').remove(); | ||
+ | $(".mw-filetoc-links").show(); | ||
+ | }); | ||
+ | |||
+ | $('#stockphoto_base img').parent().fadeTo(0, 0.7); | ||
+ | $('#stockphoto_base>span').hover(function () { | ||
+ | $(this).find('span:first a').fadeTo('fast', 1); | ||
+ | }, function () { | ||
+ | $(this).find('span:first a').fadeTo('fast', 0.7); | ||
+ | }); | ||
+ | |||
+ | }, | ||
+ | |||
+ | /** | ||
+ | * @todo Parameter "horizontal" is unused | ||
+ | */ | ||
+ | add_button_row: function (icon_url, fkt, txt, html, horizontal) { | ||
+ | var imgid, a, ret; | ||
+ | |||
+ | if ( stockPhoto.small_horizontal_layout) { | ||
+ | icon_url = icon_url.replace('/50px-', '/20px-'); | ||
+ | } | ||
+ | imgid = 'stockphoto_icon_' + fkt; | ||
+ | a = '<a href="#" title="' + txt + ' ' + html + '" onclick="stockPhoto.' + fkt + '(); return false;">'; | ||
+ | |||
+ | ret = "<span id='stockphoto_" + fkt + "'>"; | ||
+ | ret += "<span class='stockphoto_buttonrow_icon'>" + a + "<img id='" + imgid + "' src='" + icon_url + "' /></a></span>"; | ||
+ | ret += "<span class='stockphoto_buttonrow_text'>" + a; | ||
+ | if ( stockPhoto.small_horizontal_layout) { | ||
+ | ret += txt + "</a>"; | ||
+ | } else { | ||
+ | ret += "<b>" + txt + "</b></a><br/>" + html; | ||
+ | } | ||
+ | ret += "</span></span>"; | ||
+ | return ret; | ||
+ | }, | ||
+ | |||
+ | stockphoto_get_thumbnail_url: function (width) { | ||
+ | var thumb_url, alt_title, last; | ||
+ | |||
+ | if ( stockPhoto.file_icon !== undefined ) { | ||
+ | return stockPhoto.file_icon; | ||
+ | } | ||
+ | alt_title = mw.config.get( 'wgCanonicalNamespace' ) + ':' + mw.config.get( 'wgTitle' ); | ||
+ | $('#file img').each(function () { | ||
+ | if ($(this).attr('alt') !== alt_title) { | ||
+ | return; | ||
+ | } | ||
+ | thumb_url = $(this).attr('src').split('/'); | ||
+ | }); | ||
+ | // Special case of mwEmbed rewrite | ||
+ | if( !thumb_url && $('#mwe_ogg_player_1').length ){ | ||
+ | return $('#mwe_ogg_player_1').find('img').attr('src'); | ||
+ | } | ||
+ | if( !thumb_url || thumb_url.length < 1 ) { | ||
+ | return; | ||
+ | } | ||
+ | |||
+ | last = thumb_url.pop().replace(/^\d+px-/, width + 'px-'); | ||
+ | thumb_url.push(last); | ||
+ | thumb_url = thumb_url.join('/'); | ||
+ | thumb_url = location.protocol + thumb_url; | ||
+ | return thumb_url; | ||
+ | }, | ||
+ | |||
+ | is_audio_video_asset: function(url){ | ||
+ | var ext = url.substr(-3); | ||
+ | if( ext === 'ogv' || ext === 'ogg' || ext === 'oga' ){ | ||
+ | return true; | ||
+ | } | ||
+ | return false; | ||
+ | }, | ||
+ | |||
+ | /** | ||
+ | * @param e {jQuery.Event} [optional] | ||
+ | */ | ||
+ | make_html_textarea: function (e) { | ||
+ | var width, type, height, thumb_url, t; | ||
+ | |||
+ | if(e) { | ||
+ | e.preventDefault(); | ||
+ | } | ||
+ | |||
+ | width = $('#stockphoto_html_select').val(); | ||
+ | type = $('input[name="stockphoto_code_type"]:checked').val(); | ||
+ | |||
+ | // Iframe share for mwEmbed player | ||
+ | if( stockPhoto.is_audio_video_asset( stockPhoto.backlink_url ) && type === 'html' ){ | ||
+ | // Get the ratio ( from html or from mwEmbed player ) | ||
+ | height = $('#mwe_ogg_player_1').width() | ||
+ | ? width * $('#mwe_ogg_player_1').height() / $('#mwe_ogg_player_1').width() | ||
+ | : width * $('#file img,#file video').height() / $('#file img,#file video').width(); | ||
+ | |||
+ | // For audio that has zero height: | ||
+ | if ( height === 0 ) { | ||
+ | height = 20; | ||
+ | } | ||
+ | $('#stockphoto_html').text( '<iframe src="' + stockPhoto.backlink_url + | ||
+ | '?withJS=MediaWiki:MwEmbed.js&embedplayer=yes" width="' + width + '" height="'+ height + '" frameborder="0" ></iframe>' ); | ||
+ | return; | ||
+ | } | ||
+ | |||
+ | thumb_url = stockPhoto.stockphoto_get_thumbnail_url(width); | ||
+ | |||
+ | if (type === 'html') { | ||
+ | t = '<a title="' + stockPhoto.escapeAttribute( stockPhoto.complete_attribution_text) + '" href="' + stockPhoto.backlink_url + '"><img width="' + width + '" alt="' + stockPhoto.escapeAttribute( stockPhoto.nicetitle) + '" src="' + thumb_url + '"/></a>'; | ||
+ | } else if (type === 'bbcode') { | ||
+ | t = "[url=" + stockPhoto.backlink_url + "][img]" + thumb_url + "[/img][/url]\n[url=" + stockPhoto.backlink_url + "]" + stockPhoto.nicetitle + "[/url]" + stockPhoto.stockphoto_license + ", " + stockPhoto.i18n.by + ' ' + stockPhoto.stockphoto_author + ", " + stockPhoto.i18n.from_wikimedia_commons; | ||
+ | } | ||
+ | $('#stockphoto_html').text(t); | ||
+ | }, | ||
+ | |||
+ | get_author_attribution: function (use_html) { | ||
+ | var author, source; | ||
+ | |||
+ | author = $.trim($("#fileinfotpl_aut + td").text()); | ||
+ | source = $.trim($("#fileinfotpl_src + td").text()); | ||
+ | |||
+ | // Remove boiler template; not elegant, but... | ||
+ | if (author.match(/This file is lacking author information/)) { | ||
+ | author = ''; | ||
+ | } | ||
+ | if (author.match(/^[Uu]nknown$/)) { | ||
+ | author = ''; | ||
+ | } | ||
+ | author = author.replace(/\s*\(talk\)$/i, ''); | ||
+ | |||
+ | if (author.indexOf('Original uploader was') !== -1) { | ||
+ | author = author.replace(/\s*Original uploader was\s*/g, ''); | ||
+ | stockPhoto.fromCommons = true; | ||
+ | } | ||
+ | // Remove boiler template; not elegant, but... | ||
+ | if (source.match(/This file is lacking source information/)) { | ||
+ | source = ''; | ||
+ | } | ||
+ | if (author !== '' && $('#own-work').length) { // Remove "own work" notice | ||
+ | source = ''; | ||
+ | stockPhoto.fromCommons = true; | ||
+ | } | ||
+ | if (author !== '' && source.length > 50) { | ||
+ | source = ''; // Remove long source info | ||
+ | } | ||
+ | if (author.substr(0, 3) === '[▼]') { | ||
+ | author = author.substr(3); | ||
+ | author = $.trim(author.split('Description').shift()); | ||
+ | } | ||
+ | |||
+ | stockPhoto.attribution = ''; | ||
+ | if (author !== '') { | ||
+ | stockPhoto.attribution = author; | ||
+ | } | ||
+ | if (source !== '') { | ||
+ | if ( stockPhoto.attribution !== '') { | ||
+ | stockPhoto.attribution += ' (' + source + ')'; | ||
+ | } else { | ||
+ | stockPhoto.attribution = source; | ||
+ | } | ||
+ | } | ||
+ | stockPhoto.stockphoto_author = stockPhoto.attribution; | ||
+ | if (author !== '') { | ||
+ | stockPhoto.attribution = stockPhoto.i18n.by_u + ' ' + stockPhoto.attribution; | ||
+ | } else { | ||
+ | stockPhoto.attribution = stockPhoto.i18n.see_page_for_author; | ||
+ | } | ||
+ | |||
+ | if ($('#creator').length) { | ||
+ | stockPhoto.attribution = $('#creator').text(); | ||
+ | } | ||
+ | |||
+ | if ($('.licensetpl_aut').length) { | ||
+ | if (use_html) { | ||
+ | stockPhoto.attribution = $('.licensetpl_aut').eq(0).html(); | ||
+ | } | ||
+ | else { | ||
+ | stockPhoto.attribution = $('.licensetpl_aut').eq(0).text(); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | if ($('.licensetpl_attr').length) { | ||
+ | if (use_html) { | ||
+ | stockPhoto.attribution = $('.licensetpl_attr').eq(0).html(); | ||
+ | } else { | ||
+ | stockPhoto.attribution = $('.licensetpl_attr').eq(0).text(); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | if ($("#fileinfotpl_credit + td").length) { | ||
+ | if (use_html) { | ||
+ | stockPhoto.attribution = $("#fileinfotpl_credit + td").html(); | ||
+ | } else { | ||
+ | stockPhoto.attribution = $("#fileinfotpl_credit + td").text(); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | }, | ||
+ | |||
+ | get_license: function (generate_html) { | ||
+ | var licenses, $readable, l2, l1; | ||
+ | |||
+ | licenses = []; | ||
+ | $readable = $('.licensetpl'); | ||
+ | |||
+ | if (!$readable.length) { | ||
+ | stockPhoto.stockphoto_license = "[" + stockPhoto.i18n.see_page_for_license + "]"; | ||
+ | return; | ||
+ | } | ||
+ | $readable.each(function () { | ||
+ | var cL = { | ||
+ | link: $(this).find('.licensetpl_link').html(), | ||
+ | short: $(this).find('.licensetpl_short').html(), | ||
+ | long: $(this).find('.licensetpl_long').html(), | ||
+ | attr: $(this).find('.licensetpl_attr').html(), | ||
+ | aut: $(this).find('.licensetpl_aut').html(), | ||
+ | link_req: $(this).find('.licensetpl_link_req').html(), | ||
+ | attr_req: $(this).find('.licensetpl_attr_req').html() | ||
+ | }; | ||
+ | |||
+ | if (cL.short !== null) { | ||
+ | licenses.push(cL); | ||
+ | } | ||
+ | }); | ||
+ | |||
+ | if (licenses.length > 0) { | ||
+ | $.each(licenses, function (k, v) { | ||
+ | if (v.attr_req === 'false') { | ||
+ | stockPhoto.attrRequired = false; | ||
+ | } | ||
+ | if (v.short.indexOf('GFDL') !== -1) { | ||
+ | stockPhoto.gfdl_note = true; | ||
+ | } | ||
+ | if (generate_html && v.link) { | ||
+ | licenses[k] = '<a href="' + v.link + '">' + v.short + '</a>'; | ||
+ | } else { | ||
+ | if (v.link_req === 'true') { | ||
+ | licenses[k] = v.short + ' (' + v.link + ')'; | ||
+ | } else { | ||
+ | licenses[k] = v.short; | ||
+ | } | ||
+ | } | ||
+ | }); | ||
+ | |||
+ | if (licenses.length > 1) { | ||
+ | l2 = licenses.pop(); | ||
+ | l1 = licenses.pop(); | ||
+ | licenses.push(l1 + ' ' + stockPhoto.i18n.or + ' ' + l2); | ||
+ | } | ||
+ | stockPhoto.stockphoto_license = ' [' + licenses.join(', ') + ']'; | ||
+ | } else { | ||
+ | stockPhoto.stockphoto_license = ' [' + stockPhoto.i18n.see_page_for_license + ']'; | ||
+ | } | ||
+ | }, | ||
+ | |||
+ | get_attribution_text: function () { | ||
+ | var from, html, text; | ||
+ | |||
+ | from = stockPhoto.fromCommons ? stockPhoto.i18n.from_wikimedia_commons : stockPhoto.i18n.via_wikimedia_commons; | ||
+ | html = !!$('#stockphoto_attribution_html:checked').length; | ||
+ | |||
+ | stockPhoto.get_license(html); | ||
+ | stockPhoto.get_author_attribution(html); | ||
+ | |||
+ | if ($('#fileinfotpl_credit + td').length) { | ||
+ | text = stockPhoto.attribution; | ||
+ | } else { | ||
+ | text = stockPhoto.attribution + stockPhoto.stockphoto_license; | ||
+ | } | ||
+ | |||
+ | if (html) { | ||
+ | text += ", <a href='" + stockPhoto.escapeAttribute( stockPhoto.backlink_url ) + "'>" + from + "</a>"; | ||
+ | } else { | ||
+ | text += ', ' + from; | ||
+ | } | ||
+ | |||
+ | return text; | ||
+ | }, | ||
+ | |||
+ | refresh_attribution: function () { | ||
+ | $("#stockphoto_attribution").val( stockPhoto.get_attribution_text() ); | ||
+ | }, | ||
+ | |||
+ | createDialogRow: function (label, prefill, id) { | ||
+ | var idtext = (id) ? 'id="' + id + '"' : ''; | ||
+ | return '<div class="stockphoto_dialog_row"><b>' + label + ':</b><br><input type="text" readonly ' + idtext + ' onClick="select()" value="' + prefill + '"/></div>'; | ||
+ | }, | ||
+ | |||
+ | share_this: function (ui_mode) { | ||
+ | var widths, html, dtitle, dl_links, best_fit; | ||
+ | |||
+ | stockPhoto.complete_attribution_text = stockPhoto.get_attribution_text(); | ||
+ | |||
+ | stockPhoto.file_url = $('#file > a').attr('href'); | ||
+ | if ( !stockPhoto.file_url ) { | ||
+ | stockPhoto.file_url = $('#file > div > div > a').attr('href'); | ||
+ | } | ||
+ | if ( !stockPhoto.file_url ) { | ||
+ | stockPhoto.file_url = $('div.fullMedia a').attr('href'); | ||
+ | } | ||
+ | if ( stockPhoto.file_url ) { | ||
+ | stockPhoto.file_url = location.protocol + stockPhoto.file_url; | ||
+ | } | ||
+ | |||
+ | stockPhoto.nicetitle = mw.config.get( 'wgTitle' ).split('.'); | ||
+ | stockPhoto.nicetitle.pop(); | ||
+ | stockPhoto.nicetitle = stockPhoto.nicetitle.join('.'); | ||
+ | |||
+ | $.each( stockPhoto.icons_only, function (i, v) { | ||
+ | var re = new RegExp('\.' + v + '$', 'i'); | ||
+ | if (!mw.config.get( 'wgPageName' ).match(re)) { | ||
+ | return; | ||
+ | } | ||
+ | stockPhoto.file_icon = stockPhoto.ogg_icon; | ||
+ | }); | ||
+ | |||
+ | stockPhoto.backlink_url = location.protocol + '//commons.wikimedia.org/wiki/' + encodeURIComponent(mw.config.get( 'wgPageName' )); | ||
+ | |||
+ | // Grab width in pixel from DOM, and trim it down | ||
+ | // This does not yet work for SVGs or videos | ||
+ | widths = []; | ||
+ | try { | ||
+ | var pixelStr, widthSearchMatch, imageWidth, power, i; | ||
+ | |||
+ | pixelStr = $('.fileInfo').contents().get(0).data; | ||
+ | widthSearchMatch = /([0-9 ,.\u00a0]+)\s*×/.exec(pixelStr); | ||
+ | imageWidth = parseInt(widthSearchMatch[1].replace(/[ ,.\u00a0]/g, ''), 10); | ||
+ | if (isNaN(imageWidth)) { | ||
+ | throw new Error( 'Cannot parse' ); | ||
+ | } | ||
+ | |||
+ | // Calculate to which power of two we should go | ||
+ | power = Math.floor(Math.log(imageWidth) / Math.log(2)); | ||
+ | |||
+ | // Push 6 width to array | ||
+ | for ( i = 0; i < 5; i += 1 ) { | ||
+ | widths.push(Math.pow(2, power-i)); | ||
+ | } | ||
+ | widths = widths.reverse(); | ||
+ | |||
+ | } catch (e) { | ||
+ | widths = [75, 100, 120, 240, 500, 640, 800, 1024]; | ||
+ | } | ||
+ | if (ui_mode === -1) { | ||
+ | return; | ||
+ | } | ||
+ | |||
+ | html = ''; | ||
+ | html += stockPhoto.createDialogRow( stockPhoto.i18n.page_url, stockPhoto.escapeAttribute( stockPhoto.backlink_url ) ); | ||
+ | html += stockPhoto.createDialogRow( stockPhoto.i18n.file_url, stockPhoto.escapeAttribute( stockPhoto.file_url ) ); | ||
+ | html += stockPhoto.createDialogRow( stockPhoto.i18n.attribution, stockPhoto.escapeAttribute( stockPhoto.complete_attribution_text ), 'stockphoto_attribution'); | ||
+ | html += "<input id='stockphoto_attribution_html' onclick='stockPhoto.refresh_attribution()' type='checkbox' /><label for='stockphoto_attribution_html'>" + stockPhoto.i18n.html + "</label>"; | ||
+ | if ( stockPhoto.gfdl_note ) { | ||
+ | html += '<br/><span class="stockphoto_note">' + stockPhoto.i18n.gfdl_warning + '</span>'; | ||
+ | } | ||
+ | if ( !stockPhoto.attrRequired ) { | ||
+ | html += '<br/><span class="stockphoto_note">' + stockPhoto.i18n.no_attr + '</span>'; | ||
+ | } | ||
+ | |||
+ | switch (ui_mode) { | ||
+ | case 1: | ||
+ | |||
+ | dtitle = stockPhoto.i18n.download_this_file; | ||
+ | if ( stockPhoto.file_url !== undefined ) { | ||
+ | html += '<div><b>' + stockPhoto.i18n.download_image_file + ':</b><br>'; | ||
+ | dl_links = []; | ||
+ | $.each(widths, function (i, v) { | ||
+ | if ( stockPhoto.file_icon !== undefined ) { | ||
+ | return; | ||
+ | } | ||
+ | dl_links.push("<a href='" + stockPhoto.stockphoto_get_thumbnail_url(v) + "'>" + v + 'px</a>'); | ||
+ | }); | ||
+ | if (stockPhoto.file_url) { | ||
+ | dl_links.push("<a href='" + stockPhoto.file_url + "'>" + stockPhoto.i18n.full_resolution + '</a>'); | ||
+ | } | ||
+ | if (dl_links.length) { | ||
+ | html += dl_links.join(' | '); | ||
+ | } else { | ||
+ | html += '<i>' + stockPhoto.i18n.not_available + '</i>'; | ||
+ | } | ||
+ | html += '</div>'; | ||
+ | } | ||
+ | |||
+ | |||
+ | break; | ||
+ | |||
+ | case 2: | ||
+ | dtitle = stockPhoto.i18n.use_this_file_web; | ||
+ | html += "<div class='stockphoto_dialog_row'><div style='float:right'>"; | ||
+ | html += "<input type='radio' name='stockphoto_code_type' value='html' id='stockphoto_code_type_html' onchange='stockPhoto.make_html_textarea();' checked /><label for='stockphoto_code_type_html'>" + stockPhoto.i18n.html + "</label> "; | ||
+ | html += "<input type='radio' name='stockphoto_code_type' value='bbcode' id='stockphoto_code_type_bbcode' onchange='stockPhoto.make_html_textarea();' /><label for='stockphoto_code_type_bbcode'>" + stockPhoto.i18n.bbcode + "</label> "; | ||
+ | |||
+ | html += '<select id="stockphoto_html_select" onchange="stockPhoto.make_html_textarea();">'; | ||
+ | best_fit = 75; | ||
+ | if ( stockPhoto.file_icon !== undefined ) { | ||
+ | best_fit = 120; | ||
+ | html += "<option value='120'>120" + stockPhoto.i18n.px_wide_icon + "</option>"; | ||
+ | } else { | ||
+ | $.each(widths, function (i, v) { | ||
+ | if (v <= $('#file img').width()) { | ||
+ | best_fit = v; | ||
+ | } | ||
+ | html += "<option value='" + v + "'>" + v + stockPhoto.i18n.px_wide + "</option>"; | ||
+ | }); | ||
+ | } | ||
+ | html += '</select></div>'; | ||
+ | html += '<b>' + stockPhoto.i18n.html + '/' + stockPhoto.i18n.bbcode + ':</b><textarea onClick="select()" id="stockphoto_html" readonly="readonly" style="font-size:9pt">'; | ||
+ | html += '</textarea></div>'; | ||
+ | |||
+ | break; | ||
+ | |||
+ | case 3: | ||
+ | dtitle = stockPhoto.i18n.use_this_file_wiki; | ||
+ | |||
+ | html = stockPhoto.createDialogRow(stockPhoto.i18n.thumbnail, stockPhoto.escapeAttribute('[[File:' + mw.config.get( 'wgTitle' ) + '|thumb|' + stockPhoto.nicetitle + ']]')); | ||
+ | html += stockPhoto.createDialogRow(stockPhoto.i18n.image, stockPhoto.escapeAttribute('[[File:' + mw.config.get( 'wgTitle' ) + '|' + stockPhoto.nicetitle + ']]')); | ||
+ | |||
+ | break; | ||
+ | } | ||
+ | |||
+ | $("<div style='display:none' id='stockphoto_dialog'></div>").html(html).dialog({ | ||
+ | modal: true, | ||
+ | width: 610, | ||
+ | height: "auto", | ||
+ | title: dtitle, | ||
+ | close: function () { | ||
+ | $(this).remove(); | ||
+ | } | ||
+ | }); | ||
+ | $('#stockphoto_html_select').val(best_fit); | ||
+ | |||
+ | stockPhoto.make_html_textarea(); | ||
+ | $('#stockphoto_attribution_html').prev().css('width', '90%'); | ||
+ | }, | ||
+ | |||
+ | call_download: function () { | ||
+ | stockPhoto.share_this(1); | ||
+ | }, | ||
+ | |||
+ | call_web: function () { | ||
+ | stockPhoto.share_this(2); | ||
+ | }, | ||
+ | |||
+ | call_wiki: function () { | ||
+ | stockPhoto.share_this(3); | ||
+ | }, | ||
+ | |||
+ | call_help: function () { | ||
+ | window.location.href = mw.util.wikiGetlink( stockPhoto.i18n.reusing_content_url ); | ||
+ | }, | ||
+ | |||
+ | send_email: function () { | ||
+ | var url = 'mailto:?subject=' + encodeURIComponent(stockPhoto.nicetitle) + "&body=" + encodeURIComponent(stockPhoto.backlink_url + "\n\n" + stockPhoto.complete_attribution_text + ' ' + stockPhoto.i18n.from_wikimedia_commons); | ||
+ | window.location.href = url; | ||
+ | }, | ||
+ | |||
+ | escapeAttribute: function (s) { | ||
+ | if ( s === undefined ) { | ||
+ | return ''; | ||
+ | } | ||
+ | return s.replace(/\n/g, ' ').replace(/\r/g, ' ').replace(/"/g, '"').replace(/'/g, '''); | ||
+ | }, | ||
+ | |||
+ | i18n: { | ||
+ | reuse: 'Reuse this file', | ||
+ | download: 'Download', | ||
+ | download_this_file: 'Download this file', | ||
+ | use_this_file_web: 'Use this file on the web', | ||
+ | use_this_file_web_short: 'Use this file', | ||
+ | use_this_file_wiki: 'Use this file on a wiki', | ||
+ | use_this_file_wiki_short: 'Use this file', | ||
+ | email_link_short: 'Email a link', | ||
+ | information: 'Information', | ||
+ | remove_icons: 'Remove these icons', | ||
+ | all_sizes: 'all sizes', | ||
+ | on_a_website: 'on the web', | ||
+ | on_a_wiki: 'on a wiki', | ||
+ | to_this_file: 'to this file', | ||
+ | about_reusing: 'about reusing', | ||
+ | look_what_i_found: 'Look what I found on Wikimedia Commons : ', | ||
+ | from_wikimedia_commons: 'from Wikimedia Commons', | ||
+ | via_wikimedia_commons: 'via Wikimedia Commons', | ||
+ | by: 'by', | ||
+ | by_u: 'By', | ||
+ | see_page_for_author: 'See page for author', | ||
+ | see_page_for_license: 'see page for license', | ||
+ | page_url: 'Page URL', | ||
+ | file_url: 'File URL', | ||
+ | attribution: 'Attribution', | ||
+ | no_attr: 'Attribution not legally required', | ||
+ | or: 'or', | ||
+ | gfdl_warning: 'Using this file might require attaching a full copy of the <a href="//en.wikipedia.org/wiki/GNU_Free_Documentation_License">GFDL</a>', | ||
+ | download_image_file: 'Download image file', | ||
+ | full_resolution: 'Full resolution', | ||
+ | not_available: 'not available', | ||
+ | share_this_file: 'Share this file', | ||
+ | html: 'HTML', | ||
+ | bbcode: 'BBCode', | ||
+ | px_wide_icon: 'px wide (icon)', | ||
+ | px_wide: 'px wide', | ||
+ | wikipedia_instant_commons: 'Wikimedia/InstantCommons', | ||
+ | thumbnail: 'Thumbnail', | ||
+ | image: 'Image', | ||
+ | reusing_content_url: 'Commons:Reusing_content_outside_Wikimedia' | ||
+ | } | ||
+ | }; | ||
+ | |||
+ | /* Expose globally */ | ||
+ | window.stockPhoto = stockPhoto; | ||
+ | |||
+ | if (mw.config.get( 'wgUserLanguage' ) !== 'en') { | ||
+ | $.ajax({ | ||
+ | url: mw.util.wikiScript(), | ||
+ | dataType: 'script', | ||
+ | data: { | ||
+ | title: 'MediaWiki:Gadget-Stockphoto.js/' + mw.config.get( 'wgUserLanguage' ), | ||
+ | action: 'raw', | ||
+ | ctype: 'text/javascript', | ||
+ | // Allow caching for 28 days | ||
+ | maxage: 2419200, | ||
+ | smaxage: 2419200 | ||
+ | }, | ||
+ | cache: true, | ||
+ | success: stockPhoto.init | ||
+ | }); | ||
+ | } else { | ||
+ | $(document).ready( stockPhoto.init ); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | // i18n on subpages [[MediaWiki:stockPhoto.js/langcode]]: | ||
+ | // stockPhoto.i18n = { ... } | ||
+ | |||
+ | }( jQuery, mediaWiki) ); |
Verze z 29. 2. 2012, 20:31
é/* Zde uvedený JavaScript bude použit pro všechny uživatele při načtení každé stránky. */ importScriptURI('http://en.wikipedia.org/w/index.php?title=User:ProveIt_GT/ProveIt.js&action=raw&ctype=text/javascript'); // [[User:ProveIt GT/ProveIt.js]] /* * StockPhoto - shows download and attribution buttons * Original code 2010-09/10 by [[User:Magnus Manske]] * * @rev 33 (2012-01-02) * @author [[User:Magnus Manske]], 2010 - 2011 * @author [[User:Krinkle]], 2011 - 2012 * @source commons.wikimedia.org/wiki/MediaWiki:Gadget-Stockphoto.js */ /*jslint browser: true, white: true */ /*global jQuery:false, mediaWiki:false, importScript:false*/ ( function ( $, mw, undefined ) { "use strict"; // Disabled for Internet Explorer, Opera 9.27 and below if ( window.stockPhoto === undefined && ( mw.config.get( 'skin' ) === 'vector' || mw.config.get( 'skin' ) === 'monobook' ) && mw.config.get( 'wgNamespaceNumber' ) === 6 && $.inArray( mw.config.get( 'wgAction' ), ['view', 'purge'] ) !== -1 && !$.browser.msie && (!$.browser.opera || ($.browser.opera && parseFloat($.browser.version) > 9.27)) ) { var stockPhoto = { // Misc ui_icon_download: '//upload.wikimedia.org/wikipedia/commons/thumb/9/92/Gnome-document-save.svg/50px-Gnome-document-save.svg.png', ui_icon_web: '//upload.wikimedia.org/wikipedia/commons/thumb/c/c0/Gnome-emblem-web.svg/50px-Gnome-emblem-web.svg.png', ui_icon_wiki: '//upload.wikimedia.org/wikipedia/commons/thumb/2/2c/Tango_style_Wikipedia_Icon.svg/50px-Tango_style_Wikipedia_Icon.svg.png', ui_icon_email: '//upload.wikimedia.org/wikipedia/commons/thumb/e/ee/Gnome-mail-send.svg/50px-Gnome-mail-send.svg.png', ui_icon_help: '//upload.wikimedia.org/wikipedia/commons/thumb/e/e7/Dialog-information_on.svg/50px-Dialog-information_on.svg.png', ui_icon_remove: '//upload.wikimedia.org/wikipedia/commons/thumb/9/9d/Emblem-unreadable.svg/20px-Emblem-unreadable.svg.png', information_template_hints: ['fileinfotpl_desc', 'fileinfotpl_src'], icons_only: ['midi', 'ogg', 'flac'], horizontal_ui: ['midi', 'ogg', 'flac', 'pdf', 'djvu'], //license_patterns: "^Artistic-2$", "^BSD images$", "^OS OpenData$", "^Mozilla Public License$"], ogg_icon: mw.config.get( 'stylepath' ) + '/common/images/icons/fileicon-ogg.png', stockphoto_code1: undefined, stockphoto_author: undefined, stockphoto_license: undefined, nicetitle: undefined, file_icon: undefined, file_url: undefined, backlink_url: undefined, attribution: '', fade_target: '', gfdl_note: false, sbm_counter: 1, fromCommons: false, attrRequired: true, init: function () { var $enable, has_information, img_width, img_height, xoff, yoff, horizontal, html; if ( window.stockphoto_prevent !== undefined ) { return; } $("#filetoc").find("a[href=#file], a[href=#filehistory], a[href=#filelinks], a[href=#metadata], a[href=#globalusage]").parent().addClass("mw-filetoc-links"); if ($.cookie('StockPhotoDisabled')) { $enable = $('<li class="mw-filetoc-links"><a id="SpEnable">' + stockPhoto.i18n.reuse + '</a></li>'); $enable.click(function (){ $.cookie('StockPhotoDisabled', null, { path: '/' }); stockPhoto.init(); }); $("#filetoc").append($enable); return; } if ( $('#file').length === 0 ) { return; } stockPhoto.small_horizontal_layout = false; if ( !mw.user.anonymous() ) { stockPhoto.small_horizontal_layout = true; } has_information = false; $.each( stockPhoto.information_template_hints, function (k, v) { if ($('#' + v).length !== 0) { has_information = true; } }); // No {{Information}} if (!has_information) { return; } // Has one or more problemtags // Changed to also include renames and normal deletes if ($('.nuke').length) { return; } $('#stockphoto_base').remove(); img_width = $('#file img').width(); img_height = $('#file img').height(); xoff = img_width + 40; yoff = $('#file').position().top + 5; if (!horizontal && img_height < 300) { stockPhoto.small_horizontal_layout = true; } horizontal = stockPhoto.small_horizontal_layout; $.each(stockPhoto.horizontal_ui, function (k, v) { v = new RegExp('\.' + v + '$', 'i'); if ( mw.config.get( 'wgTitle' ).match(v)) { horizontal = true; } }); if ($(window).width() < 1030) { horizontal = true; } // Initialize values stockPhoto.share_this(-1); html = '<div id="stockphoto_base" '; if (horizontal) { html += ' class="horizontal">'; } else if (!$("body.rtl").length) { html += "class='vertical' style='left:" + xoff + "px;top:" + yoff + "px'>"; } else { html += "class='vertical' style='left: 0px;top:" + yoff + "px'>"; } html += stockPhoto.add_button_row( stockPhoto.ui_icon_download, "call_download", stockPhoto.i18n.download, stockPhoto.i18n.all_sizes, horizontal); html += stockPhoto.add_button_row( stockPhoto.ui_icon_web, "call_web", stockPhoto.i18n.use_this_file_web_short, stockPhoto.i18n.on_a_website, horizontal); html += stockPhoto.add_button_row( stockPhoto.ui_icon_wiki, "call_wiki", stockPhoto.i18n.use_this_file_wiki_short, stockPhoto.i18n.on_a_wiki, horizontal); html += stockPhoto.add_button_row( stockPhoto.ui_icon_email, "send_email", stockPhoto.i18n.email_link_short, stockPhoto.i18n.to_this_file, horizontal); html += stockPhoto.add_button_row( stockPhoto.ui_icon_help, "call_help", stockPhoto.i18n.information, stockPhoto.i18n.about_reusing, horizontal); html += '<a title="' + stockPhoto.i18n.remove_icons + '" id="stockphoto_remove"><img src="' + stockPhoto.ui_icon_remove + '" /></a>'; html += "</div>"; if ( stockPhoto.small_horizontal_layout && $("#file").length ) { $(".mw-filetoc-links").hide(); $("#filetoc").append(html); } else { $("#filetoc").after(html); } $('#stockphoto_remove').click(function () { $.cookie('StockPhotoDisabled', true, { expires: 60, path: '/' }); $('#stockphoto_base').remove(); $(".mw-filetoc-links").show(); }); $('#stockphoto_base img').parent().fadeTo(0, 0.7); $('#stockphoto_base>span').hover(function () { $(this).find('span:first a').fadeTo('fast', 1); }, function () { $(this).find('span:first a').fadeTo('fast', 0.7); }); }, /** * @todo Parameter "horizontal" is unused */ add_button_row: function (icon_url, fkt, txt, html, horizontal) { var imgid, a, ret; if ( stockPhoto.small_horizontal_layout) { icon_url = icon_url.replace('/50px-', '/20px-'); } imgid = 'stockphoto_icon_' + fkt; a = '<a href="#" title="' + txt + ' ' + html + '" onclick="stockPhoto.' + fkt + '(); return false;">'; ret = "<span id='stockphoto_" + fkt + "'>"; ret += "<span class='stockphoto_buttonrow_icon'>" + a + "<img id='" + imgid + "' src='" + icon_url + "' /></a></span>"; ret += "<span class='stockphoto_buttonrow_text'>" + a; if ( stockPhoto.small_horizontal_layout) { ret += txt + "</a>"; } else { ret += "<b>" + txt + "</b></a><br/>" + html; } ret += "</span></span>"; return ret; }, stockphoto_get_thumbnail_url: function (width) { var thumb_url, alt_title, last; if ( stockPhoto.file_icon !== undefined ) { return stockPhoto.file_icon; } alt_title = mw.config.get( 'wgCanonicalNamespace' ) + ':' + mw.config.get( 'wgTitle' ); $('#file img').each(function () { if ($(this).attr('alt') !== alt_title) { return; } thumb_url = $(this).attr('src').split('/'); }); // Special case of mwEmbed rewrite if( !thumb_url && $('#mwe_ogg_player_1').length ){ return $('#mwe_ogg_player_1').find('img').attr('src'); } if( !thumb_url || thumb_url.length < 1 ) { return; } last = thumb_url.pop().replace(/^\d+px-/, width + 'px-'); thumb_url.push(last); thumb_url = thumb_url.join('/'); thumb_url = location.protocol + thumb_url; return thumb_url; }, is_audio_video_asset: function(url){ var ext = url.substr(-3); if( ext === 'ogv' || ext === 'ogg' || ext === 'oga' ){ return true; } return false; }, /** * @param e {jQuery.Event} [optional] */ make_html_textarea: function (e) { var width, type, height, thumb_url, t; if(e) { e.preventDefault(); } width = $('#stockphoto_html_select').val(); type = $('input[name="stockphoto_code_type"]:checked').val(); // Iframe share for mwEmbed player if( stockPhoto.is_audio_video_asset( stockPhoto.backlink_url ) && type === 'html' ){ // Get the ratio ( from html or from mwEmbed player ) height = $('#mwe_ogg_player_1').width() ? width * $('#mwe_ogg_player_1').height() / $('#mwe_ogg_player_1').width() : width * $('#file img,#file video').height() / $('#file img,#file video').width(); // For audio that has zero height: if ( height === 0 ) { height = 20; } $('#stockphoto_html').text( '<iframe src="' + stockPhoto.backlink_url + '?withJS=MediaWiki:MwEmbed.js&embedplayer=yes" width="' + width + '" height="'+ height + '" frameborder="0" ></iframe>' ); return; } thumb_url = stockPhoto.stockphoto_get_thumbnail_url(width); if (type === 'html') { t = '<a title="' + stockPhoto.escapeAttribute( stockPhoto.complete_attribution_text) + '" href="' + stockPhoto.backlink_url + '"><img width="' + width + '" alt="' + stockPhoto.escapeAttribute( stockPhoto.nicetitle) + '" src="' + thumb_url + '"/></a>'; } else if (type === 'bbcode') { t = "[url=" + stockPhoto.backlink_url + "][img]" + thumb_url + "[/img][/url]\n[url=" + stockPhoto.backlink_url + "]" + stockPhoto.nicetitle + "[/url]" + stockPhoto.stockphoto_license + ", " + stockPhoto.i18n.by + ' ' + stockPhoto.stockphoto_author + ", " + stockPhoto.i18n.from_wikimedia_commons; } $('#stockphoto_html').text(t); }, get_author_attribution: function (use_html) { var author, source; author = $.trim($("#fileinfotpl_aut + td").text()); source = $.trim($("#fileinfotpl_src + td").text()); // Remove boiler template; not elegant, but... if (author.match(/This file is lacking author information/)) { author = ''; } if (author.match(/^[Uu]nknown$/)) { author = ''; } author = author.replace(/\s*\(talk\)$/i, ''); if (author.indexOf('Original uploader was') !== -1) { author = author.replace(/\s*Original uploader was\s*/g, ''); stockPhoto.fromCommons = true; } // Remove boiler template; not elegant, but... if (source.match(/This file is lacking source information/)) { source = ''; } if (author !== '' && $('#own-work').length) { // Remove "own work" notice source = ''; stockPhoto.fromCommons = true; } if (author !== '' && source.length > 50) { source = ''; // Remove long source info } if (author.substr(0, 3) === '[▼]') { author = author.substr(3); author = $.trim(author.split('Description').shift()); } stockPhoto.attribution = ''; if (author !== '') { stockPhoto.attribution = author; } if (source !== '') { if ( stockPhoto.attribution !== '') { stockPhoto.attribution += ' (' + source + ')'; } else { stockPhoto.attribution = source; } } stockPhoto.stockphoto_author = stockPhoto.attribution; if (author !== '') { stockPhoto.attribution = stockPhoto.i18n.by_u + ' ' + stockPhoto.attribution; } else { stockPhoto.attribution = stockPhoto.i18n.see_page_for_author; } if ($('#creator').length) { stockPhoto.attribution = $('#creator').text(); } if ($('.licensetpl_aut').length) { if (use_html) { stockPhoto.attribution = $('.licensetpl_aut').eq(0).html(); } else { stockPhoto.attribution = $('.licensetpl_aut').eq(0).text(); } } if ($('.licensetpl_attr').length) { if (use_html) { stockPhoto.attribution = $('.licensetpl_attr').eq(0).html(); } else { stockPhoto.attribution = $('.licensetpl_attr').eq(0).text(); } } if ($("#fileinfotpl_credit + td").length) { if (use_html) { stockPhoto.attribution = $("#fileinfotpl_credit + td").html(); } else { stockPhoto.attribution = $("#fileinfotpl_credit + td").text(); } } }, get_license: function (generate_html) { var licenses, $readable, l2, l1; licenses = []; $readable = $('.licensetpl'); if (!$readable.length) { stockPhoto.stockphoto_license = "[" + stockPhoto.i18n.see_page_for_license + "]"; return; } $readable.each(function () { var cL = { link: $(this).find('.licensetpl_link').html(), short: $(this).find('.licensetpl_short').html(), long: $(this).find('.licensetpl_long').html(), attr: $(this).find('.licensetpl_attr').html(), aut: $(this).find('.licensetpl_aut').html(), link_req: $(this).find('.licensetpl_link_req').html(), attr_req: $(this).find('.licensetpl_attr_req').html() }; if (cL.short !== null) { licenses.push(cL); } }); if (licenses.length > 0) { $.each(licenses, function (k, v) { if (v.attr_req === 'false') { stockPhoto.attrRequired = false; } if (v.short.indexOf('GFDL') !== -1) { stockPhoto.gfdl_note = true; } if (generate_html && v.link) { licenses[k] = '<a href="' + v.link + '">' + v.short + '</a>'; } else { if (v.link_req === 'true') { licenses[k] = v.short + ' (' + v.link + ')'; } else { licenses[k] = v.short; } } }); if (licenses.length > 1) { l2 = licenses.pop(); l1 = licenses.pop(); licenses.push(l1 + ' ' + stockPhoto.i18n.or + ' ' + l2); } stockPhoto.stockphoto_license = ' [' + licenses.join(', ') + ']'; } else { stockPhoto.stockphoto_license = ' [' + stockPhoto.i18n.see_page_for_license + ']'; } }, get_attribution_text: function () { var from, html, text; from = stockPhoto.fromCommons ? stockPhoto.i18n.from_wikimedia_commons : stockPhoto.i18n.via_wikimedia_commons; html = !!$('#stockphoto_attribution_html:checked').length; stockPhoto.get_license(html); stockPhoto.get_author_attribution(html); if ($('#fileinfotpl_credit + td').length) { text = stockPhoto.attribution; } else { text = stockPhoto.attribution + stockPhoto.stockphoto_license; } if (html) { text += ", <a href='" + stockPhoto.escapeAttribute( stockPhoto.backlink_url ) + "'>" + from + "</a>"; } else { text += ', ' + from; } return text; }, refresh_attribution: function () { $("#stockphoto_attribution").val( stockPhoto.get_attribution_text() ); }, createDialogRow: function (label, prefill, id) { var idtext = (id) ? 'id="' + id + '"' : ''; return '<div class="stockphoto_dialog_row"><b>' + label + ':</b><br><input type="text" readonly ' + idtext + ' onClick="select()" value="' + prefill + '"/></div>'; }, share_this: function (ui_mode) { var widths, html, dtitle, dl_links, best_fit; stockPhoto.complete_attribution_text = stockPhoto.get_attribution_text(); stockPhoto.file_url = $('#file > a').attr('href'); if ( !stockPhoto.file_url ) { stockPhoto.file_url = $('#file > div > div > a').attr('href'); } if ( !stockPhoto.file_url ) { stockPhoto.file_url = $('div.fullMedia a').attr('href'); } if ( stockPhoto.file_url ) { stockPhoto.file_url = location.protocol + stockPhoto.file_url; } stockPhoto.nicetitle = mw.config.get( 'wgTitle' ).split('.'); stockPhoto.nicetitle.pop(); stockPhoto.nicetitle = stockPhoto.nicetitle.join('.'); $.each( stockPhoto.icons_only, function (i, v) { var re = new RegExp('\.' + v + '$', 'i'); if (!mw.config.get( 'wgPageName' ).match(re)) { return; } stockPhoto.file_icon = stockPhoto.ogg_icon; }); stockPhoto.backlink_url = location.protocol + '//commons.wikimedia.org/wiki/' + encodeURIComponent(mw.config.get( 'wgPageName' )); // Grab width in pixel from DOM, and trim it down // This does not yet work for SVGs or videos widths = []; try { var pixelStr, widthSearchMatch, imageWidth, power, i; pixelStr = $('.fileInfo').contents().get(0).data; widthSearchMatch = /([0-9 ,.\u00a0]+)\s*×/.exec(pixelStr); imageWidth = parseInt(widthSearchMatch[1].replace(/[ ,.\u00a0]/g, ''), 10); if (isNaN(imageWidth)) { throw new Error( 'Cannot parse' ); } // Calculate to which power of two we should go power = Math.floor(Math.log(imageWidth) / Math.log(2)); // Push 6 width to array for ( i = 0; i < 5; i += 1 ) { widths.push(Math.pow(2, power-i)); } widths = widths.reverse(); } catch (e) { widths = [75, 100, 120, 240, 500, 640, 800, 1024]; } if (ui_mode === -1) { return; } html = ''; html += stockPhoto.createDialogRow( stockPhoto.i18n.page_url, stockPhoto.escapeAttribute( stockPhoto.backlink_url ) ); html += stockPhoto.createDialogRow( stockPhoto.i18n.file_url, stockPhoto.escapeAttribute( stockPhoto.file_url ) ); html += stockPhoto.createDialogRow( stockPhoto.i18n.attribution, stockPhoto.escapeAttribute( stockPhoto.complete_attribution_text ), 'stockphoto_attribution'); html += "<input id='stockphoto_attribution_html' onclick='stockPhoto.refresh_attribution()' type='checkbox' /><label for='stockphoto_attribution_html'>" + stockPhoto.i18n.html + "</label>"; if ( stockPhoto.gfdl_note ) { html += '<br/><span class="stockphoto_note">' + stockPhoto.i18n.gfdl_warning + '</span>'; } if ( !stockPhoto.attrRequired ) { html += '<br/><span class="stockphoto_note">' + stockPhoto.i18n.no_attr + '</span>'; } switch (ui_mode) { case 1: dtitle = stockPhoto.i18n.download_this_file; if ( stockPhoto.file_url !== undefined ) { html += '<div><b>' + stockPhoto.i18n.download_image_file + ':</b><br>'; dl_links = []; $.each(widths, function (i, v) { if ( stockPhoto.file_icon !== undefined ) { return; } dl_links.push("<a href='" + stockPhoto.stockphoto_get_thumbnail_url(v) + "'>" + v + 'px</a>'); }); if (stockPhoto.file_url) { dl_links.push("<a href='" + stockPhoto.file_url + "'>" + stockPhoto.i18n.full_resolution + '</a>'); } if (dl_links.length) { html += dl_links.join(' | '); } else { html += '<i>' + stockPhoto.i18n.not_available + '</i>'; } html += '</div>'; } break; case 2: dtitle = stockPhoto.i18n.use_this_file_web; html += "<div class='stockphoto_dialog_row'><div style='float:right'>"; html += "<input type='radio' name='stockphoto_code_type' value='html' id='stockphoto_code_type_html' onchange='stockPhoto.make_html_textarea();' checked /><label for='stockphoto_code_type_html'>" + stockPhoto.i18n.html + "</label> "; html += "<input type='radio' name='stockphoto_code_type' value='bbcode' id='stockphoto_code_type_bbcode' onchange='stockPhoto.make_html_textarea();' /><label for='stockphoto_code_type_bbcode'>" + stockPhoto.i18n.bbcode + "</label> "; html += '<select id="stockphoto_html_select" onchange="stockPhoto.make_html_textarea();">'; best_fit = 75; if ( stockPhoto.file_icon !== undefined ) { best_fit = 120; html += "<option value='120'>120" + stockPhoto.i18n.px_wide_icon + "</option>"; } else { $.each(widths, function (i, v) { if (v <= $('#file img').width()) { best_fit = v; } html += "<option value='" + v + "'>" + v + stockPhoto.i18n.px_wide + "</option>"; }); } html += '</select></div>'; html += '<b>' + stockPhoto.i18n.html + '/' + stockPhoto.i18n.bbcode + ':</b><textarea onClick="select()" id="stockphoto_html" readonly="readonly" style="font-size:9pt">'; html += '</textarea></div>'; break; case 3: dtitle = stockPhoto.i18n.use_this_file_wiki; html = stockPhoto.createDialogRow(stockPhoto.i18n.thumbnail, stockPhoto.escapeAttribute('[[File:' + mw.config.get( 'wgTitle' ) + '|thumb|' + stockPhoto.nicetitle + ']]')); html += stockPhoto.createDialogRow(stockPhoto.i18n.image, stockPhoto.escapeAttribute('[[File:' + mw.config.get( 'wgTitle' ) + '|' + stockPhoto.nicetitle + ']]')); break; } $("<div style='display:none' id='stockphoto_dialog'></div>").html(html).dialog({ modal: true, width: 610, height: "auto", title: dtitle, close: function () { $(this).remove(); } }); $('#stockphoto_html_select').val(best_fit); stockPhoto.make_html_textarea(); $('#stockphoto_attribution_html').prev().css('width', '90%'); }, call_download: function () { stockPhoto.share_this(1); }, call_web: function () { stockPhoto.share_this(2); }, call_wiki: function () { stockPhoto.share_this(3); }, call_help: function () { window.location.href = mw.util.wikiGetlink( stockPhoto.i18n.reusing_content_url ); }, send_email: function () { var url = 'mailto:?subject=' + encodeURIComponent(stockPhoto.nicetitle) + "&body=" + encodeURIComponent(stockPhoto.backlink_url + "\n\n" + stockPhoto.complete_attribution_text + ' ' + stockPhoto.i18n.from_wikimedia_commons); window.location.href = url; }, escapeAttribute: function (s) { if ( s === undefined ) { return ''; } return s.replace(/\n/g, ' ').replace(/\r/g, ' ').replace(/"/g, '"').replace(/'/g, '''); }, i18n: { reuse: 'Reuse this file', download: 'Download', download_this_file: 'Download this file', use_this_file_web: 'Use this file on the web', use_this_file_web_short: 'Use this file', use_this_file_wiki: 'Use this file on a wiki', use_this_file_wiki_short: 'Use this file', email_link_short: 'Email a link', information: 'Information', remove_icons: 'Remove these icons', all_sizes: 'all sizes', on_a_website: 'on the web', on_a_wiki: 'on a wiki', to_this_file: 'to this file', about_reusing: 'about reusing', look_what_i_found: 'Look what I found on Wikimedia Commons : ', from_wikimedia_commons: 'from Wikimedia Commons', via_wikimedia_commons: 'via Wikimedia Commons', by: 'by', by_u: 'By', see_page_for_author: 'See page for author', see_page_for_license: 'see page for license', page_url: 'Page URL', file_url: 'File URL', attribution: 'Attribution', no_attr: 'Attribution not legally required', or: 'or', gfdl_warning: 'Using this file might require attaching a full copy of the <a href="//en.wikipedia.org/wiki/GNU_Free_Documentation_License">GFDL</a>', download_image_file: 'Download image file', full_resolution: 'Full resolution', not_available: 'not available', share_this_file: 'Share this file', html: 'HTML', bbcode: 'BBCode', px_wide_icon: 'px wide (icon)', px_wide: 'px wide', wikipedia_instant_commons: 'Wikimedia/InstantCommons', thumbnail: 'Thumbnail', image: 'Image', reusing_content_url: 'Commons:Reusing_content_outside_Wikimedia' } }; /* Expose globally */ window.stockPhoto = stockPhoto; if (mw.config.get( 'wgUserLanguage' ) !== 'en') { $.ajax({ url: mw.util.wikiScript(), dataType: 'script', data: { title: 'MediaWiki:Gadget-Stockphoto.js/' + mw.config.get( 'wgUserLanguage' ), action: 'raw', ctype: 'text/javascript', // Allow caching for 28 days maxage: 2419200, smaxage: 2419200 }, cache: true, success: stockPhoto.init }); } else { $(document).ready( stockPhoto.init ); } } // i18n on subpages [[MediaWiki:stockPhoto.js/langcode]]: // stockPhoto.i18n = { ... } }( jQuery, mediaWiki) );