Browse Source

Merge branch '3-wikimedia-generator'

master
parent
commit
cf53c984db
  1. 22
      src/ImageLoader.js
  2. 9
      src/ImageLoader.php
  3. 19
      src/image.js
  4. 23
      src/wikipedia.js

22
src/ImageLoader.js

@ -112,14 +112,12 @@ ImageLoader.prototype.loadWikimediaCommons = function (src, callback) {
}
ajax('ImageLoaderWikimediaCategoryList', param, function (result) {
if (result.images) {
result.images.forEach(function (d) {
if (this.found.indexOf(d) === -1) {
this.found.push(d)
this.data[d] = {
id: d,
type: 'wikimedia'
}
if (result.imageData) {
result.imageData.forEach(function (d) {
if (this.found.indexOf(d.id) === -1) {
this.found.push(d.id)
d.type = 'wikimedia'
this.data[id] = d
}
}.bind(this))
}
@ -160,11 +158,9 @@ ImageLoader.prototype.loadWikipedia = function (src, callback) {
result.forEach(function (d) {
if (this.found.indexOf(d) === -1) {
this.found.push(d)
this.data[d] = {
id: d,
type: 'wikimedia'
}
this.found.push(d.id)
d.type = 'wikimedia'
this.data[d.id] = d
}
}.bind(this))

9
src/ImageLoader.php

@ -1,6 +1,7 @@
<?php
function ajax_ImageLoaderWikimediaCategoryList ($param) {
$ret = array();
$retData = array();
$wm_url = "https://commons.wikimedia.org/w/index.php?title=" . urlencode(strtr($param['page'], array(" " => "_")));
@ -22,6 +23,11 @@ function ajax_ImageLoaderWikimediaCategoryList ($param) {
for ($j = 0; $j < $imgs->length; $j++) {
$ret[] = $imgs->item($j)->getAttribute('alt');
$retData[] = array(
'id' => $imgs->item($j)->getAttribute('alt'),
'width' => $imgs->item($j)->getAttribute('data-file-width'),
'height' => $imgs->item($j)->getAttribute('data-file-height'),
);
}
}
}
@ -37,7 +43,8 @@ function ajax_ImageLoaderWikimediaCategoryList ($param) {
}
return array(
'images' => $ret,
'images' => $ret, // deprecated as of 2017-09-27
'imageData' => $retData,
'continue' => $continue,
);
}

19
src/image.js

@ -1,18 +1,23 @@
var ImageLoader = require('./ImageLoader')
var showTimer
function showImage (url, dom) {
function showImage (image, dom) {
var div = document.createElement('div')
div.innerHTML = '<a target="_blank" href="' + url + '"><img src="' + url + '"></a>'
div.innerHTML = '<a target="_blank" href="' + image.url + '"><img src="' + image.url + '"></a>'
dom.appendChild(div)
}
function showWikimediaImage (value, dom) {
var url = 'https://commons.wikimedia.org/w/thumb.php?f=' + encodeURIComponent(value) + '&w=400'
function showWikimediaImage (image, dom) {
var size = 400
if ('width' in image && image.width < size) {
size = image.width
}
var url = 'https://commons.wikimedia.org/w/thumb.php?f=' + encodeURIComponent(image.id) + '&w=' + size
var div = document.createElement('div')
div.innerHTML = '<a target="_blank" href="https://commons.wikimedia.org/wiki/File:' + encodeURIComponent(value) + '"><img src="' + url + '"/></a>'
div.innerHTML = '<a target="_blank" href="https://commons.wikimedia.org/wiki/File:' + encodeURIComponent(image.id) + '"><img src="' + url + '"/></a>'
dom.appendChild(div)
}
@ -23,10 +28,10 @@ function show (img, options, div) {
switch (img.type) {
case 'wikimedia':
showWikimediaImage(img.id, div)
showWikimediaImage(img, div)
break
case 'url':
showImage(img.id, div)
showImage(img, div)
break
default:
}

23
src/wikipedia.js

@ -84,9 +84,6 @@ function get (value, callback) {
return callback(new Error('error'), null)
}
result.div = document.createElement('div')
result.div.innerHTML = result.content
cache[cacheId] = result
callback(null, result)
@ -102,7 +99,10 @@ function get (value, callback) {
function getAbstract (value, callback) {
get(value,
function (err, result) {
var text = prepare(result.div)
var div = document.createElement('div')
div.innerHTML = result.content
var text = prepare(div)
text += ' <a target="_blank" href="' + result.languages[result.language] + '">' + lang('more') + '</a>'
callback(null, text)
@ -290,8 +290,11 @@ function getImages (tagValue, callback) {
return callback(err, null)
}
var imgs = result.div.getElementsByTagName('img')
var result = []
var div = document.createElement('div')
div.innerHTML = result.content
var imgs = div.getElementsByTagName('img')
var ret = []
for (i = 0; i < imgs.length; i++) {
var img = imgs[i]
@ -307,11 +310,15 @@ function getImages (tagValue, callback) {
var m = img.src.match(/^https?:\/\/upload.wikimedia.org\/wikipedia\/commons\/thumb\/\w+\/\w+\/([^\/]+)/)
if (m) {
var file = decodeURIComponent(m[1]).replace(/_/g, ' ')
result.push(file)
ret.push({
id: file,
width: img.getAttribute('data-file-width'),
height: img.getAttribute('data-file-height')
})
}
}
callback(null, result)
callback(null, ret)
})
}

Loading…
Cancel
Save