# HG changeset patch # User ymh # Date 1459437158 -7200 # Node ID eb4f4eceada0d1de62a98ab00fae421c2c5a0633 # Parent ebdd1d76915890c9ee89eb625fb5abc77e17acc8 create new renkan version diff -r ebdd1d769158 -r eb4f4eceada0 client/bower.json --- a/client/bower.json Fri Mar 18 14:15:23 2016 +0100 +++ b/client/bower.json Thu Mar 31 17:12:38 2016 +0200 @@ -1,6 +1,6 @@ { "name": "renkan", - "version": "0.12.14", + "version": "0.12.16", "authors": [ "IRI " ], diff -r ebdd1d769158 -r eb4f4eceada0 client/gruntfile.js --- a/client/gruntfile.js Fri Mar 18 14:15:23 2016 +0100 +++ b/client/gruntfile.js Thu Mar 31 17:12:38 2016 +0200 @@ -162,6 +162,18 @@ expand: true, cwd: 'dist', src: ['**', '!data/*', '!lib/**'], + dest: '../server/python/django2/renkanmanager/static/renkanmanager/lib/renkan/', + filter: 'isFile' + }, { + expand: true, + cwd: 'dist/lib', + src: ['**'], + dest: '../server/python/django2/renkanmanager/static/renkanmanager/lib/', + filter: 'isFile' + }, { + expand: true, + cwd: 'dist', + src: ['**', '!data/*', '!lib/**'], dest: '../server/php/basic/public_html/static/lib/renkan/', filter: 'isFile' }, { @@ -306,6 +318,21 @@ }, }] }, + 'version-django2': { + src: ['../server/python/django2/renkanmanager/__init__.py'], + overwrite: true, + replacements: [{ + from: /^(\s*)VERSION\s*=\s*\([ \t]*\d+[ \t]*,[ \t]*\d+[ \t]*,[ \t]*\d+[ \t]*,[ \t]*\"final\"[ \t]*\,[ \t]*0[ \t]*\)[ \t]*$/m, + to: function(matchedWord, index, fullText, regexMatches) { + var array_version = grunt.config.get('setversion.version').split('.'); + var array_version_length = array_version.length; + for(let i=0;i<3-array_version_length;i++) { + array_version.push('0'); + } + return regexMatches[0]+"VERSION = (" + array_version.join(', ') + ", \"final\", 0)"; + }, + }] + }, }, }); @@ -349,7 +376,7 @@ grunt.registerTask('dev', ['base', 'connect:server', 'watch']); grunt.registerTask('set-version', function(version) { grunt.config.set('setversion.version', version); - grunt.task.run(['replace:version-bower-package', 'replace:version-gradle', 'replace:version-maven', 'replace:version-django']); + grunt.task.run(['replace:version-bower-package', 'replace:version-gradle', 'replace:version-maven', 'replace:version-django', 'replace:version-django2']); }); diff -r ebdd1d769158 -r eb4f4eceada0 client/package.json --- a/client/package.json Fri Mar 18 14:15:23 2016 +0100 +++ b/client/package.json Thu Mar 31 17:12:38 2016 +0200 @@ -1,6 +1,6 @@ { "name": "renkan", - "version": "0.12.14", + "version": "0.12.16", "description": "Renkan client application", "repository": { "type": "hg", diff -r ebdd1d769158 -r eb4f4eceada0 server/java/build.gradle --- a/server/java/build.gradle Fri Mar 18 14:15:23 2016 +0100 +++ b/server/java/build.gradle Thu Mar 31 17:12:38 2016 +0200 @@ -2,7 +2,7 @@ apply plugin: 'maven' group = 'org.iri_research.renkan' - version = '0.12.14' + version = '0.12.16' gradle.projectsEvaluated { diff -r ebdd1d769158 -r eb4f4eceada0 server/java/pom.xml --- a/server/java/pom.xml Fri Mar 18 14:15:23 2016 +0100 +++ b/server/java/pom.xml Thu Mar 31 17:12:38 2016 +0200 @@ -5,7 +5,7 @@ org.iri_research.renkan renkan pom - 0.12.14 + 0.12.16 Renkan project diff -r ebdd1d769158 -r eb4f4eceada0 server/java/renkan-core/pom.xml --- a/server/java/renkan-core/pom.xml Fri Mar 18 14:15:23 2016 +0100 +++ b/server/java/renkan-core/pom.xml Thu Mar 31 17:12:38 2016 +0200 @@ -6,7 +6,7 @@ org.iri_research.renkan renkan - 0.12.14 + 0.12.16 renkan-core renkan-core diff -r ebdd1d769158 -r eb4f4eceada0 server/java/renkan-management/pom.xml --- a/server/java/renkan-management/pom.xml Fri Mar 18 14:15:23 2016 +0100 +++ b/server/java/renkan-management/pom.xml Thu Mar 31 17:12:38 2016 +0200 @@ -5,7 +5,7 @@ org.iri_research.renkan renkan - 0.12.14 + 0.12.16 renkan-management diff -r ebdd1d769158 -r eb4f4eceada0 server/java/renkan-web/pom.xml --- a/server/java/renkan-web/pom.xml Fri Mar 18 14:15:23 2016 +0100 +++ b/server/java/renkan-web/pom.xml Thu Mar 31 17:12:38 2016 +0200 @@ -5,7 +5,7 @@ org.iri_research.renkan renkan - 0.12.14 + 0.12.16 renkan-web war diff -r ebdd1d769158 -r eb4f4eceada0 server/php/basic/public_html/static/lib/FileSaver/FileSaver.js --- a/server/php/basic/public_html/static/lib/FileSaver/FileSaver.js Fri Mar 18 14:15:23 2016 +0100 +++ b/server/php/basic/public_html/static/lib/FileSaver/FileSaver.js Thu Mar 31 17:12:38 2016 +0200 @@ -1,9 +1,9 @@ /* FileSaver.js * A saveAs() FileSaver implementation. - * 1.1.20150716 + * 1.1.20160328 * * By Eli Grey, http://eligrey.com - * License: X11/MIT + * License: MIT * See https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md */ @@ -30,6 +30,7 @@ var event = new MouseEvent("click"); node.dispatchEvent(event); } + , is_safari = /Version\/[\d\.]+.*Safari/.test(navigator.userAgent) , webkit_req_fs = view.webkitRequestFileSystem , req_fs = view.requestFileSystem || webkit_req_fs || view.mozRequestFileSystem , throw_outside = function(ex) { @@ -39,10 +40,8 @@ } , force_saveable_type = "application/octet-stream" , fs_min_size = 0 - // See https://code.google.com/p/chromium/issues/detail?id=375297#c7 and - // https://github.com/eligrey/FileSaver.js/commit/485930a#commitcomment-8768047 - // for the reasoning behind the timeout and revocation flow - , arbitrary_revoke_timeout = 500 // in ms + // the Blob API is fundamentally broken as there is no "downloadfinished" event to subscribe to + , arbitrary_revoke_timeout = 1000 * 40 // in ms , revoke = function(file) { var revoker = function() { if (typeof file === "string") { // file is an object URL @@ -51,11 +50,23 @@ file.remove(); } }; - if (view.chrome) { - revoker(); - } else { - setTimeout(revoker, arbitrary_revoke_timeout); + /* // Take note W3C: + var + uri = typeof file === "string" ? file : file.toURL() + , revoker = function(evt) { + // idealy DownloadFinishedEvent.data would be the URL requested + if (evt.data === uri) { + if (typeof file === "string") { // file is an object URL + get_URL().revokeObjectURL(file); + } else { // file is a File + file.remove(); + } + } } + ; + view.addEventListener("downloadfinished", revoker); + */ + setTimeout(revoker, arbitrary_revoke_timeout); } , dispatch = function(filesaver, event_types, event) { event_types = [].concat(event_types); @@ -94,6 +105,19 @@ } // on any filesys errors revert to saving with object URLs , fs_error = function() { + if (target_view && is_safari && typeof FileReader !== "undefined") { + // Safari doesn't allow downloading of blob urls + var reader = new FileReader(); + reader.onloadend = function() { + var base64Data = reader.result; + target_view.location.href = "data:attachment/file" + base64Data.slice(base64Data.search(/[,;]/)); + filesaver.readyState = filesaver.DONE; + dispatch_all(); + }; + reader.readAsDataURL(blob); + filesaver.readyState = filesaver.INIT; + return; + } // don't create more object URLs than needed if (blob_changed || !object_url) { object_url = get_URL().createObjectURL(blob); @@ -102,7 +126,7 @@ target_view.location.href = object_url; } else { var new_tab = view.open(object_url, "_blank"); - if (new_tab == undefined && typeof safari !== "undefined") { + if (new_tab === undefined && is_safari) { //Apple do not allow window.open, see http://bit.ly/1kZffRI view.location.href = object_url } @@ -127,9 +151,9 @@ } if (can_use_save_link) { object_url = get_URL().createObjectURL(blob); - save_link.href = object_url; - save_link.download = name; setTimeout(function() { + save_link.href = object_url; + save_link.download = name; click(save_link); dispatch_all(); revoke(object_url); @@ -249,7 +273,7 @@ if (typeof module !== "undefined" && module.exports) { module.exports.saveAs = saveAs; -} else if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) { +} else if ((typeof define !== "undefined" && define !== null) && (define.amd !== null)) { define([], function() { return saveAs; }); diff -r ebdd1d769158 -r eb4f4eceada0 server/php/basic/public_html/static/lib/FileSaver/FileSaver.min.js --- a/server/php/basic/public_html/static/lib/FileSaver/FileSaver.min.js Fri Mar 18 14:15:23 2016 +0100 +++ b/server/php/basic/public_html/static/lib/FileSaver/FileSaver.min.js Thu Mar 31 17:12:38 2016 +0200 @@ -1,2 +1,2 @@ /*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */ -var saveAs=saveAs||function(e){"use strict";if("undefined"==typeof navigator||!/MSIE [1-9]\./.test(navigator.userAgent)){var t=e.document,n=function(){return e.URL||e.webkitURL||e},o=t.createElementNS("http://www.w3.org/1999/xhtml","a"),r="download"in o,i=function(e){var t=new MouseEvent("click");e.dispatchEvent(t)},a=e.webkitRequestFileSystem,c=e.requestFileSystem||a||e.mozRequestFileSystem,u=function(t){(e.setImmediate||e.setTimeout)(function(){throw t},0)},f="application/octet-stream",s=0,d=500,l=function(t){var o=function(){"string"==typeof t?n().revokeObjectURL(t):t.remove()};e.chrome?o():setTimeout(o,d)},v=function(e,t,n){t=[].concat(t);for(var o=t.length;o--;){var r=e["on"+t[o]];if("function"==typeof r)try{r.call(e,n||e)}catch(i){u(i)}}},p=function(e){return/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob(["",e],{type:e.type}):e},w=function(t,u,d){d||(t=p(t));var w,y,m,S=this,h=t.type,O=!1,R=function(){v(S,"writestart progress write writeend".split(" "))},b=function(){if((O||!w)&&(w=n().createObjectURL(t)),y)y.location.href=w;else{var o=e.open(w,"_blank");void 0==o&&"undefined"!=typeof safari&&(e.location.href=w)}S.readyState=S.DONE,R(),l(w)},g=function(e){return function(){return S.readyState!==S.DONE?e.apply(this,arguments):void 0}},E={create:!0,exclusive:!1};return S.readyState=S.INIT,u||(u="download"),r?(w=n().createObjectURL(t),o.href=w,o.download=u,void setTimeout(function(){i(o),R(),l(w),S.readyState=S.DONE})):(e.chrome&&h&&h!==f&&(m=t.slice||t.webkitSlice,t=m.call(t,0,t.size,f),O=!0),a&&"download"!==u&&(u+=".download"),(h===f||a)&&(y=e),c?(s+=t.size,void c(e.TEMPORARY,s,g(function(e){e.root.getDirectory("saved",E,g(function(e){var n=function(){e.getFile(u,E,g(function(e){e.createWriter(g(function(n){n.onwriteend=function(t){y.location.href=e.toURL(),S.readyState=S.DONE,v(S,"writeend",t),l(e)},n.onerror=function(){var e=n.error;e.code!==e.ABORT_ERR&&b()},"writestart progress write abort".split(" ").forEach(function(e){n["on"+e]=S["on"+e]}),n.write(t),S.abort=function(){n.abort(),S.readyState=S.DONE},S.readyState=S.WRITING}),b)}),b)};e.getFile(u,{create:!1},g(function(e){e.remove(),n()}),g(function(e){e.code===e.NOT_FOUND_ERR?n():b()}))}),b)}),b)):void b())},y=w.prototype,m=function(e,t,n){return new w(e,t,n)};return"undefined"!=typeof navigator&&navigator.msSaveOrOpenBlob?function(e,t,n){return n||(e=p(e)),navigator.msSaveOrOpenBlob(e,t||"download")}:(y.abort=function(){var e=this;e.readyState=e.DONE,v(e,"abort")},y.readyState=y.INIT=0,y.WRITING=1,y.DONE=2,y.error=y.onwritestart=y.onprogress=y.onwrite=y.onabort=y.onerror=y.onwriteend=null,m)}}("undefined"!=typeof self&&self||"undefined"!=typeof window&&window||this.content);"undefined"!=typeof module&&module.exports?module.exports.saveAs=saveAs:"undefined"!=typeof define&&null!==define&&null!=define.amd&&define([],function(){return saveAs}); \ No newline at end of file +var saveAs=saveAs||function(e){"use strict";if("undefined"==typeof navigator||!/MSIE [1-9]\./.test(navigator.userAgent)){var t=e.document,n=function(){return e.URL||e.webkitURL||e},o=t.createElementNS("http://www.w3.org/1999/xhtml","a"),r="download"in o,i=function(e){var t=new MouseEvent("click");e.dispatchEvent(t)},a=/Version\/[\d\.]+.*Safari/.test(navigator.userAgent),c=e.webkitRequestFileSystem,f=e.requestFileSystem||c||e.mozRequestFileSystem,u=function(t){(e.setImmediate||e.setTimeout)(function(){throw t},0)},d="application/octet-stream",s=0,l=4e4,v=function(e){var t=function(){"string"==typeof e?n().revokeObjectURL(e):e.remove()};setTimeout(t,l)},p=function(e,t,n){t=[].concat(t);for(var o=t.length;o--;){var r=e["on"+t[o]];if("function"==typeof r)try{r.call(e,n||e)}catch(i){u(i)}}},w=function(e){return/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob(["\ufeff",e],{type:e.type}):e},y=function(t,u,l){l||(t=w(t));var y,m,S,h=this,R=t.type,O=!1,g=function(){p(h,"writestart progress write writeend".split(" "))},b=function(){if(m&&a&&"undefined"!=typeof FileReader){var o=new FileReader;return o.onloadend=function(){var e=o.result;m.location.href="data:attachment/file"+e.slice(e.search(/[,;]/)),h.readyState=h.DONE,g()},o.readAsDataURL(t),void(h.readyState=h.INIT)}if((O||!y)&&(y=n().createObjectURL(t)),m)m.location.href=y;else{var r=e.open(y,"_blank");void 0===r&&a&&(e.location.href=y)}h.readyState=h.DONE,g(),v(y)},E=function(e){return function(){return h.readyState!==h.DONE?e.apply(this,arguments):void 0}},N={create:!0,exclusive:!1};return h.readyState=h.INIT,u||(u="download"),r?(y=n().createObjectURL(t),void setTimeout(function(){o.href=y,o.download=u,i(o),g(),v(y),h.readyState=h.DONE})):(e.chrome&&R&&R!==d&&(S=t.slice||t.webkitSlice,t=S.call(t,0,t.size,d),O=!0),c&&"download"!==u&&(u+=".download"),(R===d||c)&&(m=e),f?(s+=t.size,void f(e.TEMPORARY,s,E(function(e){e.root.getDirectory("saved",N,E(function(e){var n=function(){e.getFile(u,N,E(function(e){e.createWriter(E(function(n){n.onwriteend=function(t){m.location.href=e.toURL(),h.readyState=h.DONE,p(h,"writeend",t),v(e)},n.onerror=function(){var e=n.error;e.code!==e.ABORT_ERR&&b()},"writestart progress write abort".split(" ").forEach(function(e){n["on"+e]=h["on"+e]}),n.write(t),h.abort=function(){n.abort(),h.readyState=h.DONE},h.readyState=h.WRITING}),b)}),b)};e.getFile(u,{create:!1},E(function(e){e.remove(),n()}),E(function(e){e.code===e.NOT_FOUND_ERR?n():b()}))}),b)}),b)):void b())},m=y.prototype,S=function(e,t,n){return new y(e,t,n)};return"undefined"!=typeof navigator&&navigator.msSaveOrOpenBlob?function(e,t,n){return n||(e=w(e)),navigator.msSaveOrOpenBlob(e,t||"download")}:(m.abort=function(){var e=this;e.readyState=e.DONE,p(e,"abort")},m.readyState=m.INIT=0,m.WRITING=1,m.DONE=2,m.error=m.onwritestart=m.onprogress=m.onwrite=m.onabort=m.onerror=m.onwriteend=null,S)}}("undefined"!=typeof self&&self||"undefined"!=typeof window&&window||this.content);"undefined"!=typeof module&&module.exports?module.exports.saveAs=saveAs:"undefined"!=typeof define&&null!==define&&null!==define.amd&&define([],function(){return saveAs}); \ No newline at end of file diff -r ebdd1d769158 -r eb4f4eceada0 server/php/basic/public_html/static/lib/FileSaver/README.md --- a/server/php/basic/public_html/static/lib/FileSaver/README.md Fri Mar 18 14:15:23 2016 +0100 +++ b/server/php/basic/public_html/static/lib/FileSaver/README.md Thu Mar 31 17:12:38 2016 +0200 @@ -21,6 +21,7 @@ | Firefox < 20 | data: URI | No | n/a | [Blob.js](https://github.com/eligrey/Blob.js) | | Chrome | Blob | Yes | [500 MiB][3] | None | | Chrome for Android | Blob | Yes | [500 MiB][3] | None | +| Edge | Blob | Yes | ? | None | | IE 10+ | Blob | Yes | 600 MiB | None | | Opera 15+ | Blob | Yes | 500 MiB | None | | Opera < 15 | data: URI | No | n/a | [Blob.js](https://github.com/eligrey/Blob.js) | @@ -100,7 +101,7 @@ The `FileSaver.js` distribution file is compiled with Uglify.js like so: ```bash -uglifyjs FileSaver.js --comments /@source/ > FileSaver.min.js +uglifyjs FileSaver.js --mangle --comments /@source/ > FileSaver.min.js ``` Please make sure you build a production version before submitting a pull request. diff -r ebdd1d769158 -r eb4f4eceada0 server/php/basic/public_html/static/lib/FileSaver/demo/index.xhtml --- a/server/php/basic/public_html/static/lib/FileSaver/demo/index.xhtml Fri Mar 18 14:15:23 2016 +0100 +++ b/server/php/basic/public_html/static/lib/FileSaver/demo/index.xhtml Thu Mar 31 17:12:38 2016 +0200 @@ -8,7 +8,7 @@

FileSaver.js demo

- The following examples demonstrate how it is possible to generate and save any type of data right in the browser using the W3C saveAs() FileSaver interface, without contacting any servers. + The following examples demonstrate how it is possible to generate and save any type of data right in the browser using the W3C saveAs() FileSaver interface, without contacting any servers.

Saving an image

@@ -49,9 +49,9 @@
-