diff options
| author | Jules Laplace <julescarbon@gmail.com> | 2021-02-23 20:31:19 +0100 |
|---|---|---|
| committer | Jules Laplace <julescarbon@gmail.com> | 2021-02-23 20:31:19 +0100 |
| commit | 464991b62e4fa6141449ca0c5980fcf0af3097a6 (patch) | |
| tree | 18e597dc951cbf4605995e3aa1b1f8761449549f /themes/okadmin/public/js | |
| parent | 19516de0a43ac5f2b0afc9891bbef09d229ce4e6 (diff) | |
upload files and write to diskv0.3.0
Diffstat (limited to 'themes/okadmin/public/js')
| -rw-r--r-- | themes/okadmin/public/js/app.js | 6 | ||||
| -rw-r--r-- | themes/okadmin/public/js/parser.js | 608 | ||||
| -rw-r--r-- | themes/okadmin/public/js/upload.js | 12 |
3 files changed, 353 insertions, 273 deletions
diff --git a/themes/okadmin/public/js/app.js b/themes/okadmin/public/js/app.js index dd6513a..da93e8b 100644 --- a/themes/okadmin/public/js/app.js +++ b/themes/okadmin/public/js/app.js @@ -173,10 +173,10 @@ var OKAdmin = function () { var $el = $(this); var uploader = new OKUpload(); uploader.bind(this); - uploader.add = function (media) { - console.log(media); + uploader.addMedia = function (media) { + console.log("file uploaded >>", media); $el.find(".uri").val(media.url); - $el.find(".caption").val(""); + $el.find(".caption").val(media.url); $el.find("a").attr("href", media.url).show(); $el.addClass("loaded"); }; diff --git a/themes/okadmin/public/js/parser.js b/themes/okadmin/public/js/parser.js index 81bba2d..ad1fc58 100644 --- a/themes/okadmin/public/js/parser.js +++ b/themes/okadmin/public/js/parser.js @@ -1,313 +1,387 @@ var Parser = { - integrations: [{ - type: 'image', - regex: /\.(jpeg|jpg|gif|png|svg)(\?.*)?$/i, - fetch: function(url, done) { - var img = new Image () - img.onload = function(){ - if (!img) return - var width = img.naturalWidth, height = img.naturalHeight - img = null - done({ - url: url, - type: "image", - token: "", - thumbnail: "", - title: "", - width: width, - height: height, - }) - } - img.src = url - if (img.complete) { - img.onload() - } - }, - tag: function (media) { - return '<img src="' + media.url + '">'; - } - }, { - type: 'video', - regex: /\.(mp4|webm)(\?.*)?$/i, - fetch: function(url, done) { - var video = document.createElement("video") - var url_parts = url.replace(/\?.*$/, "").split("/") - var filename = url_parts[ url_parts.length-1 ] - video.addEventListener("loadedmetadata", function(){ - var width = video.videoWidth, height = video.videoHeight - video = null - done({ - url: url, - type: "video", - token: url, - thumbnail: "http://okfocus.s3.amazonaws.com/misc/okcms/video.png", - title: filename, - width: width, - height: height, - }) - }) - video.src = url - video.load() - }, - tag: function (media) { - return '<video src="' + media.url + '">'; - } - }, { - type: 'audio', - regex: /\.(wav|mp3)(\?.*)?$/i, - fetch: function(url, done) { - var audio = document.createElement("audio") - var url_parts = url.replace(/\?.*$/, "").split("/") - var filename = url_parts[ url_parts.length-1 ] - audio.addEventListener("loadedmetadata", function(){ - var duration = audio.duration - audio = null - done({ - url: url, - type: "audio", - token: url, - thumbnail: "http://okfocus.s3.amazonaws.com/misc/okcms/audio.png", - title: filename, - duration: duration, - }) - }) - audio.src = url - audio.load() - }, - tag: function (media) { - return '<audio src="' + media.url + '">'; - } - }, { - type: 'youtube', - regex: /(?:youtube\.com\/(?:[^\/]+\/.+\/|(?:v|e(?:mbed)?)\/|.*[?&]v=)|youtu\.be\/)([^"&?\/ ]{11})/i, - fetch: function(url, done) { - var id = (url.match(/v=([-_a-zA-Z0-9]{11})/i) || url.match(/youtu.be\/([-_a-zA-Z0-9]{11})/i) || url.match(/embed\/([-_a-zA-Z0-9]{11})/i))[1].split('&')[0]; - var thumb = "http://i.ytimg.com/vi/" + id + "/hqdefault.jpg" - $.ajax({ - type: 'GET', - url: 'https://www.googleapis.com/youtube/v3/videos', - dataType: "jsonp", - data: { - id: id, - key: "AIzaSyDYPKGD0-_VRBWpUYRmX8Qg6BtWmcPU_cM", - part: "id,contentDetails,snippet,status", - }, - success: function(result){ - var res = result.items[0] - done({ - url: url, - type: "youtube", - token: id, - thumbnail: thumb, - title: res.snippet.title, - autoplay: false, - loop: false, - width: 640, - height: 360, - }) - } - }) - }, - tag: function (media) { - // return '<img class="video" type="youtube" vid="'+media.token+'" src="'+media.thumbnail+'"><span class="playvid">▶</span>'; - return '<div class="video" style="width: ' + media.width + 'px; height: ' + media.height + 'px; overflow: hidden; position: relative;"><iframe frameborder="0" scrolling="no" seamless="seamless" webkitallowfullscreen="webkitAllowFullScreen" mozallowfullscreen="mozallowfullscreen" allowfullscreen="allowfullscreen" id="okplayer" width="' + media.width + '" height="' + media.height + '" src="http://youtube.com/embed/' + media.token + '?showinfo=0" style="position: absolute; top: 0px; left: 0px; width: ' + media.width + 'px; height: ' + media.height + 'px;"></iframe></div>' - } - }, { - type: 'vimeo', - regex: /vimeo.com\/\d+$/i, - fetch: function(url, done) { - var id = url.match(/\d+$/i)[0]; - $.ajax({ - type: 'GET', - url: 'http://vimeo.com/api/v2/video/' + id + '.json', - success: function(result){ - if (result.length == 0) { return done(id, "", 640, 360) } - var res = result[0] - if (res.embed_privacy != "anywhere") { - AlertModal.alert("Sorry, the author of this video has marked it private, preventing it from being embedded.", function(){}) - return - } - done({ - url: url, - type: "vimeo", - token: id, - thumbnail: res.thumbnail_large, - title: res.title, - width: res.width, - height: res.height, - autoplay: false, - loop: false, - }) - } - }) - }, - tag: function (media) { - // return '<img class="video" type="vimeo" vid="'+media.token+'" src="'+media.thumbnail+'"><span class="playvid">▶</span>'; - return '<div class="video" style="width: ' + media.width + 'px; height: ' + media.height + 'px; overflow: hidden; position: relative;"><iframe frameborder="0" scrolling="no" seamless="seamless" webkitallowfullscreen="webkitAllowFullScreen" mozallowfullscreen="mozallowfullscreen" allowfullscreen="allowfullscreen" id="okplayer" src="http://player.vimeo.com/video/' + media.token + '?api=1&title=0&byline=0&portrait=0&playbar=0&player_id=okplayer&loop=0&autoplay=0" width="' + media.width + '" height="' + media.height + '" style="position: absolute; top: 0px; left: 0px; width: ' + media.width + 'px; height: ' + media.height + 'px;"></iframe></div>' - } - }, { - type: 'soundcloud', - regex: /soundcloud.com\/[-a-zA-Z0-9]+\/[-a-zA-Z0-9]+\/?$/i, - fetch: function (url, done) { - $.ajax({ - type: 'GET', - url: 'http://api.soundcloud.com/resolve.json?url=' - + url - + '&client_id=' - + '0673fbe6fc794a7750f680747e863b10', - success: function(result) { - console.log(result) - done({ - url: url, - type: "soundcloud", - token: result.id, - thumbnail: result.artwork_url || result.user.avatar_url, - title: result.user.username + " - " + result.title, - duration: result.duration, - width: 166, - height: 166, - }) - } - }); - }, - tag: function (media) { - return '<iframe width="166" height="166" scrolling="no" frameborder="no"' + - 'src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/' + media.token + - '&color=ff6600&auto_play=false&show_artwork=true"></iframe>' - } - }, - { - type: 'link', - regex: /^http.+/i, - fetch: function(url, done) { - done({ - url: url, - type: "link", - token: "", - thumbnail: "", - title: "", - width: 100, - height: 100, - }) - }, - tag: function (media) { - return '<a href="' + media.url + '" target="_blank">' + media.url + '</a>' - } - }, - ], + integrations: [ + { + type: "image", + regex: /\.(jpeg|jpg|gif|png|svg)(\?.*)?$/i, + fetch: function (url, done) { + var img = new Image(); + img.onload = function () { + if (!img) return; + var width = img.naturalWidth, + height = img.naturalHeight; + img = null; + done({ + url: url, + type: "image", + token: "", + thumbnail: "", + title: "", + width: width, + height: height, + }); + }; + img.src = url; + if (img.complete) { + img.onload(); + } + }, + tag: function (media) { + return '<img src="' + media.url + '">'; + }, + }, + { + type: "video", + regex: /\.(mp4|webm)(\?.*)?$/i, + fetch: function (url, done) { + var video = document.createElement("video"); + var url_parts = url.replace(/\?.*$/, "").split("/"); + var filename = url_parts[url_parts.length - 1]; + video.addEventListener("loadedmetadata", function () { + var width = video.videoWidth, + height = video.videoHeight; + video = null; + done({ + url: url, + type: "video", + token: url, + thumbnail: "http://okfocus.s3.amazonaws.com/misc/okcms/video.png", + title: filename, + width: width, + height: height, + }); + }); + video.src = url; + video.load(); + }, + tag: function (media) { + return '<video src="' + media.url + '">'; + }, + }, + { + type: "audio", + regex: /\.(wav|mp3)(\?.*)?$/i, + fetch: function (url, done) { + var audio = document.createElement("audio"); + var url_parts = url.replace(/\?.*$/, "").split("/"); + var filename = url_parts[url_parts.length - 1]; + audio.addEventListener("loadedmetadata", function () { + var duration = audio.duration; + audio = null; + done({ + url: url, + type: "audio", + token: url, + thumbnail: "http://okfocus.s3.amazonaws.com/misc/okcms/audio.png", + title: filename, + duration: duration, + }); + }); + audio.src = url; + audio.load(); + }, + tag: function (media) { + return '<audio src="' + media.url + '">'; + }, + }, + { + type: "youtube", + regex: /(?:youtube\.com\/(?:[^\/]+\/.+\/|(?:v|e(?:mbed)?)\/|.*[?&]v=)|youtu\.be\/)([^"&?\/ ]{11})/i, + fetch: function (url, done) { + var id = (url.match(/v=([-_a-zA-Z0-9]{11})/i) || + url.match(/youtu.be\/([-_a-zA-Z0-9]{11})/i) || + url.match(/embed\/([-_a-zA-Z0-9]{11})/i))[1].split("&")[0]; + var thumb = "http://i.ytimg.com/vi/" + id + "/hqdefault.jpg"; + $.ajax({ + type: "GET", + url: "https://www.googleapis.com/youtube/v3/videos", + dataType: "jsonp", + data: { + id: id, + key: "AIzaSyDYPKGD0-_VRBWpUYRmX8Qg6BtWmcPU_cM", + part: "id,contentDetails,snippet,status", + }, + success: function (result) { + var res = result.items[0]; + done({ + url: url, + type: "youtube", + token: id, + thumbnail: thumb, + title: res.snippet.title, + autoplay: false, + loop: false, + width: 640, + height: 360, + }); + }, + }); + }, + tag: function (media) { + // return '<img class="video" type="youtube" vid="'+media.token+'" src="'+media.thumbnail+'"><span class="playvid">▶</span>'; + return ( + '<div class="video" style="width: ' + + media.width + + "px; height: " + + media.height + + 'px; overflow: hidden; position: relative;"><iframe frameborder="0" scrolling="no" seamless="seamless" webkitallowfullscreen="webkitAllowFullScreen" mozallowfullscreen="mozallowfullscreen" allowfullscreen="allowfullscreen" id="okplayer" width="' + + media.width + + '" height="' + + media.height + + '" src="http://youtube.com/embed/' + + media.token + + '?showinfo=0" style="position: absolute; top: 0px; left: 0px; width: ' + + media.width + + "px; height: " + + media.height + + 'px;"></iframe></div>' + ); + }, + }, + { + type: "vimeo", + regex: /vimeo.com\/\d+$/i, + fetch: function (url, done) { + var id = url.match(/\d+$/i)[0]; + $.ajax({ + type: "GET", + url: "http://vimeo.com/api/v2/video/" + id + ".json", + success: function (result) { + if (result.length == 0) { + return done(id, "", 640, 360); + } + var res = result[0]; + if (res.embed_privacy != "anywhere") { + AlertModal.alert( + "Sorry, the author of this video has marked it private, preventing it from being embedded.", + function () {} + ); + return; + } + done({ + url: url, + type: "vimeo", + token: id, + thumbnail: res.thumbnail_large, + title: res.title, + width: res.width, + height: res.height, + autoplay: false, + loop: false, + }); + }, + }); + }, + tag: function (media) { + // return '<img class="video" type="vimeo" vid="'+media.token+'" src="'+media.thumbnail+'"><span class="playvid">▶</span>'; + return ( + '<div class="video" style="width: ' + + media.width + + "px; height: " + + media.height + + 'px; overflow: hidden; position: relative;"><iframe frameborder="0" scrolling="no" seamless="seamless" webkitallowfullscreen="webkitAllowFullScreen" mozallowfullscreen="mozallowfullscreen" allowfullscreen="allowfullscreen" id="okplayer" src="http://player.vimeo.com/video/' + + media.token + + '?api=1&title=0&byline=0&portrait=0&playbar=0&player_id=okplayer&loop=0&autoplay=0" width="' + + media.width + + '" height="' + + media.height + + '" style="position: absolute; top: 0px; left: 0px; width: ' + + media.width + + "px; height: " + + media.height + + 'px;"></iframe></div>' + ); + }, + }, + { + type: "soundcloud", + regex: /soundcloud.com\/[-a-zA-Z0-9]+\/[-a-zA-Z0-9]+\/?$/i, + fetch: function (url, done) { + $.ajax({ + type: "GET", + url: + "http://api.soundcloud.com/resolve.json?url=" + + url + + "&client_id=" + + "0673fbe6fc794a7750f680747e863b10", + success: function (result) { + console.log(result); + done({ + url: url, + type: "soundcloud", + token: result.id, + thumbnail: result.artwork_url || result.user.avatar_url, + title: result.user.username + " - " + result.title, + duration: result.duration, + width: 166, + height: 166, + }); + }, + }); + }, + tag: function (media) { + return ( + '<iframe width="166" height="166" scrolling="no" frameborder="no"' + + 'src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/' + + media.token + + '&color=ff6600&auto_play=false&show_artwork=true"></iframe>' + ); + }, + }, + { + type: "pdf", + regex: /\.pdf$/i, + fetch: function (url, done) { + done({ + url: url, + type: "link", + token: "", + thumbnail: "", + title: "", + width: 100, + height: 100, + }); + }, + tag: function (media) { + return ( + '<a href="' + media.url + '" target="_blank">' + media.url + "</a>" + ); + }, + }, + { + type: "link", + regex: /^http.+/i, + fetch: function (url, done) { + done({ + url: url, + type: "link", + token: "", + thumbnail: "", + title: "", + width: 100, + height: 100, + }); + }, + tag: function (media) { + return ( + '<a href="' + media.url + '" target="_blank">' + media.url + "</a>" + ); + }, + }, + ], - tumblr: function(url, cb){ - var domain = url.replace(/^https?:\/\//,"").split("/")[0] + tumblr: function (url, cb) { + var domain = url.replace(/^https?:\/\//, "").split("/")[0]; if (domain.indexOf(".") == -1) { - domain += ".tumblr.com" + domain += ".tumblr.com"; } $.ajax({ - type: 'GET', + type: "GET", url: "http://" + domain + "/api/read", dataType: "jsonp", data: { format: "json", }, - success: function(data){ - var media_list = [] - var blog = data.tumblelog - - data.posts.forEach(parse) - cb(media_list) + success: function (data) { + var media_list = []; + var blog = data.tumblelog; - function parse(post){ - var media, caption, url + data.posts.forEach(parse); + cb(media_list); + + function parse(post) { + var media, caption, url; switch (post.type) { - case 'photo': - caption = stripHTML(post['photo-caption']) + case "photo": + caption = stripHTML(post["photo-caption"]); if (post.photos.length) { - post.photos.forEach(function(photo){ + post.photos.forEach(function (photo) { var media = { - url: photo['photo-url-1280'], + url: photo["photo-url-1280"], type: "image", token: "", - thumbnail: photo['photo-url-500'], + thumbnail: photo["photo-url-500"], description: caption, width: parseInt(photo.width), height: parseInt(photo.height), - } - media_list.push(media) - }) - } - else { + }; + media_list.push(media); + }); + } else { media = { - url: post['photo-url-1280'], + url: post["photo-url-1280"], type: "image", token: "", - thumbnail: post['photo-url-500'], + thumbnail: post["photo-url-500"], description: caption, width: parseInt(post.width), height: parseInt(post.height), - } - media_list.push(media) + }; + media_list.push(media); + } + break; + case "video": + url = post["video-source"]; + if (url.indexOf("http") !== 0) { + break; } - break - case 'video': - url = post['video-source'] - if (url.indexOf("http") !== 0) { break } if (Parser.lookup.youtube.regex.test(url)) { - var id = (url.match(/v=([-_a-zA-Z0-9]{11})/i) || url.match(/youtu.be\/([-_a-zA-Z0-9]{11})/i) || url.match(/embed\/([-_a-zA-Z0-9]{11})/i))[1].split('&')[0]; - var thumb = "http://i.ytimg.com/vi/" + id + "/hqdefault.jpg" + var id = (url.match(/v=([-_a-zA-Z0-9]{11})/i) || + url.match(/youtu.be\/([-_a-zA-Z0-9]{11})/i) || + url.match(/embed\/([-_a-zA-Z0-9]{11})/i))[1].split("&")[0]; + var thumb = "http://i.ytimg.com/vi/" + id + "/hqdefault.jpg"; media = { - url: post['video-source'], + url: post["video-source"], type: "youtube", token: id, thumbnail: thumb, - title: stripHTML(post['video-caption']), + title: stripHTML(post["video-caption"]), width: 640, height: 360, autoplay: false, loop: false, - } - media_list.push(media) + }; + media_list.push(media); } - break + break; } } -// console.log(post) + // console.log(post) + }, + }); + }, + + parse: function (url, cb) { + var matched = Parser.integrations.some(function (integration) { + if (integration.regex.test(url)) { + integration.fetch(url, function (res) { + cb(res); + }); + return true; } - }) + return false; + }); + if (!matched) { + cb(null); + } }, - parse: function (url, cb) { - var matched = Parser.integrations.some(function(integration){ - if (integration.regex.test(url)) { - integration.fetch(url, function(res){ - cb(res) - }) - return true - } - return false - }) - if (! matched) { - cb(null) - } - }, - - tag: function (media){ - if (media.type in Parser.lookup) { - return Parser.lookup[media.type].tag(media) - } - return "" - }, + tag: function (media) { + if (media.type in Parser.lookup) { + return Parser.lookup[media.type].tag(media); + } + return ""; + }, + + loadImage: function (url, cb, error) { + if (Parser.lookup.image.regex.test(url)) { + Parser.lookup.image.fetch(url, function (media) { + cb(media); + }); + } else error && error(); + }, - loadImage: function(url, cb, error){ - if (Parser.lookup.image.regex.test(url)) { - Parser.lookup.image.fetch(url, function(media){ - cb(media) - }) - } - else error && error() - }, - thumbnail: function (media) { return '<img src="' + (media.thumbnail || media.url) + '" class="thumb">'; }, - }; -Parser.lookup = _.indexBy(Parser.integrations, 'type'); +Parser.lookup = _.indexBy(Parser.integrations, "type"); diff --git a/themes/okadmin/public/js/upload.js b/themes/okadmin/public/js/upload.js index d300dac..40c6fa7 100644 --- a/themes/okadmin/public/js/upload.js +++ b/themes/okadmin/public/js/upload.js @@ -34,7 +34,7 @@ OKUpload.prototype.parse = function (url) { if (!url) return; var uploader = this; Parser.parse(url, function (media) { - console.log(url, media); + // console.log(url, media); if (!media) { alert("Not a valid link"); } else if (media.type == "image") { @@ -88,6 +88,12 @@ OKUpload.prototype.upload = function (f) { } field = "audio"; action = this.audioAction; + } else if (f.type.match("application.*") || f.type.match("text.*")) { + if (this.config.fileMaxbytes && f.size > this.config.fileMaxbytes) { + return this.largeFileError(f, this.config.fileMaxbytes); + } + field = "file"; + action = this.fileAction; } else { if (this.config.imageMaxbytes && f.size > this.config.imageMaxbytes) { return this.largeFileError(f, this.config.imageMaxbytes); @@ -136,7 +142,7 @@ OKUpload.prototype.upload = function (f) { console.log("ERROR PARSING JSON"); } } - console.log(arguments, request); + // console.log(arguments, request); } function transferError(data) { console.log("Transfer error"); @@ -148,7 +154,7 @@ OKUpload.prototype.upload = function (f) { console.log("Transfer aborted"); this.loadCount += 1; this.hideUploadBars(); - console.log(arguments); + // console.log(arguments); } request.send(fd); |
