Opomba: Da bodo spremembe prišle do veljave, po shranitvi izpraznite predpomnilnik svojega brskalnika.
- Firefox/Safari: Držite Shift in kliknite Ponovno naloži (Reload) ali pritisnite Ctrl-Shift-R ali Ctrl-R (⌘-R na sistemu Mac)
- Internet Explorer: Držite Ctrl-F5 in kliknite Osveži (Refresh) ali pritisnite Ctrl-F5
- Google Chrome: Pritisnite Ctrl-Shift-R (⌘-Shift-R na sistemu Mac)
- Opera: Počistite predpomnilnik v Tools → Preferences
// Simple JavaScript Templating
// John Resig - http://ejohn.org/ - MIT Licensed
(function() {
var cache = {};
this.tmpl = function tmpl(str, data) {
// Figure out if we're getting a template, or if we need to
// load the template - and be sure to cache the result.
var fn = !/\W/.test(str) ?
cache[str] = cache[str] ||
tmpl(document.getElementById(str).innerHTML) :
// Generate a reusable function that will serve as a template
// generator (and which will be cached).
new Function("obj",
"var p=[],print=function(){p.push.apply(p,arguments);};" +
// Introduce the data as local variables using with(){}
"with(obj){p.push('" +
// Convert the template into pure JavaScript
str.replace(/[\r\t\n]/g, " ")
.replace(/'(?=[^%]*%>)/g,"\t")
.split("'").join("\\'")
.split("\t").join("'")
.replace(/<%=(.+?)%>/g, "',$1,'")
.split("<%").join("');")
.split("%>").join("p.push('")
+ "');}return p.join('');");
// Provide some basic currying to the user
return data ? fn(data) : fn;
};
})();
/*
filedrag.js - HTML5 File Drag & Drop demonstration
Featured on SitePoint.com
Developed by Craig Buckler (@craigbuckler) of OptimalWorks.net
*/
(function() {
var loaded_files = {length:0};
var api_url = '/w/api.php';
var api_token_qry = api_url + '?format=json&action=query&prop=info&intoken=edit&titles=Skica';
var api_token = false;
var filebase = 'no-name';
var captionbase = 'no-caption';
this.mwfilebase = function(new_base) {
if (!!new_base) {
$('.remote-name').each(function() {
$(this).attr('value', $(this).attr('value').replace(filebase,new_base));
});
filebase = new_base;
}
return filebase;
}
this.mwcaptionbase = function(new_base) {
if (!!new_base) {
$('.caption').each(function() {
$(this).attr('value', $(this).attr('value').replace(captionbase,new_base));
});
captionbase = new_base;
}
return captionbase;
}
// getElementById
function $id(id) {
return document.getElementById(id);
}
// output information
function Output(msg) {
var m = $id("messages");
m.innerHTML = msg + m.innerHTML;
}
// file drag hover
function FileDragHover(e) {
e.stopPropagation();
e.preventDefault();
e.target.className = (e.type == "dragover" ? "hover" : "");
}
// file selection
function FileSelectHandler(e) {
// cancel event and hover styling
FileDragHover(e);
// fetch FileList object
var files = e.target.files || e.dataTransfer.files;
// process all File objects
for (var i = 0, f; f = files[i]; i++) {
ParseFile(f,files.length);
// UploadFile(f);
}
}
// output file information
function ParseFile(file,maks) {
//ignore duplicates
if (loaded_files.length==0) $id('upload-all').style.display = 'block';
if (loaded_files[file.name]) return;
$msg = $id("messages");
loaded_files.length++;
loaded_files[file.name] = file;
loaded_files[file.name].id = file.name;
loaded_files[file.name].newname = filebase + '-' + loaded_files.length + file.name.replace(/^.*([.].*)$/,'$1').toLowerCase();
loaded_files[file.name].caption = captionbase + loaded_files.length + '/' + maks;
if (file.type.indexOf("image") == 0) {
var reader = new FileReader();
reader.onload = function(e) {
loaded_files[file.name].datasrc = e.target.result;
//call template
$msg.innerHTML += tmpl("upload_template",loaded_files[file.name]);
}
reader.readAsDataURL(file);
} else {
//call template
$msg.innerHTML += tmpl("upload_template",loaded_files[file.name]);
}
}
this.mwupload_all = function UploadFiles() {
for (var i in loaded_files)
if (i!='length') mwupload(i);
}
this.mwupdate = function UpdateFileProperty(idx,name,value) {
loaded_files[idx][name] = value;
}
// upload JPEG files
this.mwupload = function UploadFile(idx) {
var file = loaded_files[idx];
var xhr = new XMLHttpRequest();
if (xhr.upload /* && file.type.indexOf("image")==0 && file.size <= $id("MAX_FILE_SIZE").value*/) {
// progress bar
var progress = $id(idx+"-progress");
xhr.upload.addEventListener("progress", function(e) {
var pc = parseInt(100 * e.loaded / e.total );
progress.style.width = pc + "%";
}, false);
// file received/failed
xhr.onreadystatechange = function(e) {
if (xhr.readyState == 4) {
progress.className = (xhr.status == 200 ? "progress-indicator success" : "progress-indicator failure");
progress.style.width = "100%";
//progress.appendChild(document.createTextNode("upload " + xhr.responseText.replace('<','<')));
}
};
// start upload
var text = '{{gallery-image|'+filebase+'|'+file.caption+'}}';
data = new FormData;
data.append('action', 'upload');
data.append('format', 'json');
data.append('token', api_token);
data.append('filename', file.newname);
data.append('filesize', file.size);
data.append('file', file);
data.append('text', text);
data.append('ignorewarnings',1);
xhr.open("POST", api_url, true);
xhr.send(data);
}
}
// initialize
this.UploadInit = function Init() {
var fileselect = $id("fileselect"),
filedrag = $id("filedrag"),
submitbutton = $id("submitbutton");
filebase = $id('filebase').value;
captionbase = $id('captionbase').value;
// file select
fileselect.addEventListener("change", FileSelectHandler, false);
// is XHR2 available?
var xhr = new XMLHttpRequest();
if (xhr.upload) {
// file drop
filedrag.addEventListener("dragover", FileDragHover, false);
filedrag.addEventListener("dragleave", FileDragHover, false);
filedrag.addEventListener("drop", FileSelectHandler, false);
filedrag.style.display = "block";
// remove submit button
submitbutton.style.display = "none";
}
xhr.onreadystatechange = function(e) {
if (xhr.readyState == 4 && xhr.status == 200) {
var data = JSON.parse(xhr.responseText);
for (idx in data.query.pages) api_token = data.query.pages[idx].edittoken;
console.log('got token',api_token);
}
};
// start upload
xhr.open("POST", api_token_qry, true);
xhr.send();
}
// call initialization file
$(function() {
if (window.File && window.FileList && window.FileReader) {
UploadInit();
}
});
})();