From 1dc22fa8e11f561bec8fda26033f46f0f639d4be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=98=A5=E9=95=BF?= Date: Sun, 29 Oct 2017 09:02:51 -0500 Subject: [PATCH 001/307] Update upgrade.json --- upgrade.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/upgrade.json b/upgrade.json index 9a20c96f..c38e3621 100644 --- a/upgrade.json +++ b/upgrade.json @@ -1,4 +1,4 @@ { - "version": "1.2.4", + "version": "1.2.5", "package_url": "http://luogc.oss-cn-hangzhou.aliyuncs.com/oss-browser-publish/" } From 8fd8916d3284d5b7fe9622d8feeabae9df6b166b Mon Sep 17 00:00:00 2001 From: aleelock Date: Mon, 30 Oct 2017 19:10:52 +0800 Subject: [PATCH 002/307] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=87=AA=E5=AE=9A?= =?UTF-8?q?=E4=B9=89build?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + Makefile | 2 +- _custom/Readme.md | 101 +++++++++++++++++++++++++++++ _custom/index.js | 40 ++++++++++++ _custom/logo.icns | Bin 0 -> 43738 bytes _custom/logo.ico | Bin 0 -> 16958 bytes _custom/logo.png | Bin 0 -> 11348 bytes app/app.js | 4 +- app/components/services/upgrade.js | 45 ++++++++----- app/index.html | 41 ++++++++++-- app/main/_/top.html | 3 +- app/main/auth/login.html | 23 +++++-- app/main/auth/login.js | 24 ++++++- app/main/modals/about.html | 11 ++-- app/main/modals/about.js | 3 +- gulpfile.js | 9 ++- main.js | 18 +++-- node/i18n/en-US.js | 2 + node/i18n/index.js | 4 +- node/i18n/zh-CN.js | 2 + package.json | 3 +- upgrade.json | 2 +- 22 files changed, 287 insertions(+), 51 deletions(-) create mode 100644 _custom/Readme.md create mode 100644 _custom/index.js create mode 100644 _custom/logo.icns create mode 100644 _custom/logo.ico create mode 100644 _custom/logo.png diff --git a/.gitignore b/.gitignore index f064fddf..52752e7b 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ build .DS_Store releases _up.sh +custom \ No newline at end of file diff --git a/Makefile b/Makefile index 51b39ff9..547b0471 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ ELECTRON_MIRROR=http://npm.taobao.org/mirrors/electron/ ELECTRON_VERSION=1.7.5 BUILD=ELECTRON_MIRROR=$(ELECTRON_MIRROR) electron-packager ./dist --asar --overwrite --out=build --version $(ELECTRON_VERSION) -VERSION=1.2.5 +VERSION=1.3.0 NAME=oss-browser i: diff --git a/_custom/Readme.md b/_custom/Readme.md new file mode 100644 index 00000000..eeba1974 --- /dev/null +++ b/_custom/Readme.md @@ -0,0 +1,101 @@ +# 定制 OSS Browser + +将此目录中重命名为custom(或copy一份),通过修改此目录下的配置,目前可以较容易的自定义logo,app名称,版本号,更新地址等。 + +如果需要修改更多内容,请直接修改oss browser代码。 + +下面介绍如何修改配置,如何重新build,如何发布。 + +* 注意:build oss browser 请使用 Mac,或者 ubuntu,不要用 windows(可能会有一些兼容性的问题要解决)。 + +## 1. 安装环境 + +本工具使用 [Electron](https://electron.atom.io/) 编写,依赖 [Node.js](https://nodejs.org) >= 7.9.0. + +所以先要安装 Node.js + +### (1) Node.js + +Node.js 从官网下载最新版本安装即可。 + +### (2) 安装 cnpm(npm的中国镜像,加快依赖下载速度)。 + +``` +sudo npm install -g cnpm --registry=https://registry.npm.taobao.org +``` + +### (2) 获取 oss-browser 源码 + +先到 https://github.com/aliyun/oss-browser, Fork 一份到你自己的仓库,然后clone: + +``` +git clone {git地址} +cd oss-browser +``` + +## 2. 开始尝试启动 + +``` +make i # 安装 node 模块依赖 +``` + +启动界面: +``` +make run # 开发模式启动 +``` + +这时,你可以看到界面了(开发模式,可以按 command+r 刷新)。 + + +## 3. 修改 custom 配置 + +``` +oss-browser/ + |-- custom # 将 _custom 目录复制一份改名为custom +``` + +然后修改 custom 中的 index.js 配置 和 图标即可。 + +## 4. build + +``` +make all # 将会在 releases 目录,生成几个压缩包。这几个压缩包即安装文件。 +``` + +## 5. 发布 + +我们可以将安装包上传到oss的某个目录下,将这个目录设置为公共读。 + +> 升级检测原理: + +custom/index.js 的 upgrade_url 配置 upgrade.json 的 https 地址, 供客户端升级检测。 + +upgrade.json 样例: + +```json +{ + "version": "1.3.0", + "package_url": "http://luogc.oss-cn-hangzhou.aliyuncs.com/oss-browser-publish/" +} +``` + +* version 表示最新版本。 + +* package_url:安装包下载地址前缀. + +oss-browser-publish 目录结构: +``` +.../oss-browser-publish/ + |-- 1.3.0 + |-- oss-browser-linux-x64.zip # linux 64位 + |-- oss-browser-win32-ia32.zip # windows 32位 + |-- oss-browser-win32-x64.zip # windows 64位 + |-- oss-browser.dmg # mac 64位 + |-- 1.2.5 + |-- ... +``` + + +将build好的安装包,上传到 oss-browser-publish 的版本目录下。 + +文件上传完成后,修改upgrade.json中的version,旧版本的客户端即可查询到有版本更新。 diff --git a/_custom/index.js b/_custom/index.js new file mode 100644 index 00000000..a65102a7 --- /dev/null +++ b/_custom/index.js @@ -0,0 +1,40 @@ +const path = require('path'); +const pkg = require('../package.json'); + +module.exports= { + //窗体title + title: 'OSS Browser', + + //app id,打包名称前缀 + appId: 'oss-browser', + + //app名称,需要提供各个语言版本 + appName: { + 'zh-CN':'OSS浏览器', + 'en-US': 'OSS Browser', + }, + + //自定义版本号,如果不设置,使用package.json中的version + version: '1.0.0',//pkg.version, + + + //logo png 格式, 主要用于mac和linux系统 + logo_png: path.join(__dirname, './logo.png'), + + //logo icns 格式,主要用于mac系统 + logo_ico: path.join(__dirname, './logo.icns'), + + //logo ico 格式,主要用于windows系统 + logo_ico: path.join(__dirname, './logo.ico'), + + + //release notes目录后缀,里面有 ${version}.md, 如 1.0.0.md + release_notes_url: 'https://raw.githubusercontent.com/aliyun/oss-browser/master/release-notes/', + + //升级检测链接 + upgrade_url: "https://raw.githubusercontent.com/aliyun/oss-browser/master/upgrade.json", + + //“关于”弹窗的主要内容 + //about_html: '
开源地址:
', + +}; \ No newline at end of file diff --git a/_custom/logo.icns b/_custom/logo.icns new file mode 100644 index 0000000000000000000000000000000000000000..ee2d3a010acc97761aee5ffd9da55b696f3b73fc GIT binary patch literal 43738 zcmcG12S8KT{{KyG5@yiu{a%-=YOQ-g0=Vh~96)y13E=8@cD?rAn}i|ms?}PpR;xk= zd&&k^*K6NvDM+5ZE0?*udS&puP7-jY|*u};z7fa>WZ>bTT4-6L(9=)txc`Rk2Y2o z7g-8gnp%z?ZF#38=cRQ;)rGdA`o`v#rgzp#n2E2<*;-+-*48)FzqfsyBr-f=TG*S# z1vN(+TgsxROQuLA5tGu&@~e(irbr}H=dYe3l}?Mcn#&qij*&{jc2&&`l}?Mn_wq%d z5tEmf)~uK`W1_A!zpzR%F*0%-YmA7P8otL?U@qS^W733}JrPe#nZK>Lz+7M{eVa8| z^NoLB``3b^0<)#0%v@MrX0?`*BCN`*RRt+&nP?l377vAS26 zDV4FSoc4}0o8~JOvZn3?nTmYxbS;;umuztMY+9TUGjE;el*994j7GEQV1Zh_O#N<0 z+o#>F+L)--C)D$orZ;xAIZm~Ae|X4h|J1U-ti7w3+U@Ojdv!;9 zTbtd^v~hOEvDW^IUZ0+kuGgidCMPB&XjH27IrA+{CuT)1&nW;)rDphGZeY$>SWUx>ux@}&fLXn!LOI*@(haN`BOZansUJN?YEu-Qz)88 z@hJc8Klb@PKW+z=@~`Xr{(C(6@%!)l>ij8cTi=y_avy%!Mos^208JkL_}%nIY9^%my4oYvRTbrBWu;6pRm4zKGt)vHWn1rQK_AiR z*B&f ztHsvX)Y#PA!nNMs()do(hQtN4<}6;dr@p+XxX@;`*_Z~psi~!fX}z_j>HXdF#!Z?Q z8aj2t+8HZ;{lhDx&~K@sCuR++69bIp<3I;LJ&*ZASf<02Rd z1=^hliYyj$HK817K3;lw(KM+<5HBGEfwh1&vxUJWh4OKer%jzW<&}o4$C+uO$rB{23$5t3??IIo+KS7w)zM2b_EZ$V znjX6_TJ`+Ca&v*fe3uRJV6$2)DvC?0N-WmW$`V^)X_+nGWagtTS!;lqRFB1KH5V{u zKE{D85Ny_5%LX%RWh~px6vbMo{Ox9j;w)Ru25Orb&4n`b@Vs8eayL^JVb_k>_P@%XTK-08HlPKfoI`i1xr8RR+B!8rL2ub1m# zdYK*}8H3#2OqUp>jt-~8N&0Y)m+?`9z22@ax5w@3=m3=?e9+GH@Or@-?Dl?s!R>JN zobPdV5TWgD4#oqEjXi_hpLq*eePZ(J%}396IXavyC=65%c7IW?i&`8fi(eMKG~3~} zgF<^SdKtVT_ZRt5acUK-6sc8Fx_@=s!Q@6sS+CIjdF4Wt%A^oz7H2}0gV)~8xEYVg z>-KhNWXfzsfM(IFr`sHMdp8Jv9(T9*>pf9wM!{1lvlP4!I~n^eUESSoch~6)pT3(J zr&K6ZOXNnyJ?iK~y%?psKy;n^h*d3>`$%k}%%B*oTAWLWF1Y#3(fAnj?+TGR=I>vx zk5+LCk!s0HZZg2R1n!QcSPiT2Q!UeXo^DyD

7nlD`w8%jG=x_9D;%l=1N&^f-F{ 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 literal 0 HcmV?d00001 diff --git a/_custom/logo.ico b/_custom/logo.ico new file mode 100644 index 0000000000000000000000000000000000000000..21e87ae17214a620a92bea2c286b219a6fa8579c GIT binary patch literal 16958 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 - var pre = pkg.upgrade_url.substring(0, 'aliyun/oss-browser'.length+ind); - $.get(pre + '/master/release-notes/'+version+'.md', fn); - } + // var ind = upgrade_url.lastIndexOf('aliyun/oss-browser'); + // if(ind>0){ + // var pre = upgrade_url.substring(0, 'aliyun/oss-browser'.length+ind); + // $.get(pre + '/master/release-notes/'+version+'.md', fn); + // } + $.get(release_notes_url + version + '.md', fn); } function load(fn) { - $.getJSON(pkg.upgrade_url, function (data) { + $.getJSON(upgrade_url, function (data) { - var isLastVersion = compareVersion(pkg.version, data.version) >= 0; + var isLastVersion = compareVersion(gVersion, data.version) >= 0; var lastVersion = data.version; var fileName = getUpgradeFileName(); var link = data['package_url'].replace(/(\/*$)/g, '') + '/' + data['version'] + '/' + fileName; + console.log("download url:",link); + fn({ - currentVersion: pkg.version, + currentVersion: gVersion, isLastVersion: isLastVersion, lastVersion: lastVersion, fileName: fileName, link: link - }) + }); }); } @@ -66,14 +73,20 @@ angular.module('web') function getUpgradeFileName() { - if ((navigator.platform == "Win32") || (navigator.platform == "Windows")) { - return NAME + '-win32-x64.zip'; - } else if ((navigator.platform == "Mac68K") || (navigator.platform == "MacPPC") || (navigator.platform == "Macintosh") || (navigator.platform == "MacIntel")) { + if(process.platform=='darwin'){ return NAME + '.dmg'; - //return NAME + '-darwin-x64.zip'; - } else { - return NAME + '-linux-x64.zip'; + }else{ + return NAME + '-'+process.platform+'-'+process.arch+'.zip'; } + + // if ((navigator.platform == "Win32") || (navigator.platform == "Windows")) { + // return NAME + '-'+process.platform+'-'+process.arch+'.zip'; + // } else if ((navigator.platform == "Mac68K") || (navigator.platform == "MacPPC") || (navigator.platform == "Macintosh") || (navigator.platform == "MacIntel")) { + // return NAME + '.dmg'; + // //return NAME + '-darwin-x64.zip'; + // } else { + // return NAME + '-linux-x64.zip'; + // } } diff --git a/app/index.html b/app/index.html index 0024a479..5184b34f 100644 --- a/app/index.html +++ b/app/index.html @@ -1,10 +1,20 @@ + - OSS Browser - + + + @@ -60,15 +70,34 @@ // return false; // }; + var Global = { //ossEndpointProtocol:'https:', app: { - logo: 'icons/icon.png', //logo - //name: 'OSS Browser', //标题显示 - version: pkg.version //自定义版本号 + id: custom.appId || pkg.name, + logo: custom.logo_png || 'icons/icon.png', //logo + //name: custom.appName || 'OSS Browser', //标题显示 + version: custom.version || pkg.version //自定义版本号 }, - i18n: require('./node/i18n') + i18n: require('./node/i18n'), + release_notes_url: custom.release_notes_url || "https://raw.githubusercontent.com/aliyun/oss-browser/master/release-notes/", + upgrade_url: custom.upgrade_url || "https://raw.githubusercontent.com/aliyun/oss-browser/master/upgrade.json",//升级描述路径 + about_html: custom.about_html }; + + (function(){ + + if(custom.appName){ + for(var k in custom.appName){ + if(Global.i18n[k]) + Global.i18n[k].content['app.name']=custom.appName[k]; + } + } + + })(); + //fix + if(localStorage.getItem('lang')=='zn-CN')localStorage.setItem('lang', 'zh-CN'); + $(function(){ $(document).on('dragover', function(ev){ ev.preventDefault(); diff --git a/app/main/_/top.html b/app/main/_/top.html index e3831fb7..bf90a7ca 100644 --- a/app/main/_/top.html +++ b/app/main/_/top.html @@ -3,7 +3,8 @@

diff --git a/app/main/auth/login.html b/app/main/auth/login.html index 23b08e57..525aea62 100644 --- a/app/main/auth/login.html +++ b/app/main/auth/login.html @@ -36,20 +36,31 @@
-
diff --git a/app/main/auth/login.js b/app/main/auth/login.js index f1da7689..18df459c 100644 --- a/app/main/auth/login.js +++ b/app/main/auth/login.js @@ -21,6 +21,8 @@ angular.module('web') item: { eptpl: DEF_EP_TPL, }, + eptplType: 'default', + hideTopNav: 1, reg_osspath: /^oss\:\/\//, regions: regions, @@ -32,9 +34,26 @@ angular.module('web') open: open, onSubmit2: onSubmit2, - authTokenChange:authTokenChange + authTokenChange:authTokenChange, + + eptplChange: eptplChange + }); + + $scope.$watch('item.eptpl', function(v){ + $scope.eptplType = (v==DEF_EP_TPL)?'default':'customize'; }); + + function eptplChange(t){ + $scope.eptplType=t; + console.log(t); + if(t=='default'){ + $scope.item.eptpl = DEF_EP_TPL; + }else{ + $scope.item.eptpl =''; + } + } + function open(a){ openExternal(a); } @@ -75,7 +94,7 @@ angular.module('web') }catch(e){ $scope.authTokenInfo = null; } - },600) + },600); } init(); @@ -84,6 +103,7 @@ angular.module('web') $scope.flags.showHis = localStorage.getItem(SHOW_HIS) || 'NO'; angular.extend($scope.item , AuthInfo.getRemember()); + //临时token $scope.item.authToken = localStorage.getItem(KEY_AUTHTOKEN) || ''; authTokenChange(); diff --git a/app/main/modals/about.html b/app/main/modals/about.html index 14d60990..5270865d 100644 --- a/app/main/modals/about.html +++ b/app/main/modals/about.html @@ -10,11 +10,12 @@