From 40cc47dd9315824733a01768fb5c8a0900f6849e Mon Sep 17 00:00:00 2001 From: "837816638@qq.com" <> Date: Fri, 3 Jul 2020 16:21:19 +0800 Subject: [PATCH 1/9] =?UTF-8?q?=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 204 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 204 insertions(+) diff --git a/package-lock.json b/package-lock.json index 00538ae88..a7a8aec74 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2393,6 +2393,11 @@ "resolved": "http://registry.npm.taobao.org/chardet/download/chardet-0.4.2.tgz", "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=" }, + "charenc": { + "version": "0.0.2", + "resolved": "https://registry.npm.taobao.org/charenc/download/charenc-0.0.2.tgz", + "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=" + }, "check-types": { "version": "7.4.0", "resolved": "http://registry.npm.taobao.org/check-types/download/check-types-7.4.0.tgz", @@ -3296,6 +3301,11 @@ "which": "^1.2.9" } }, + "crypt": { + "version": "0.0.2", + "resolved": "https://registry.npm.taobao.org/crypt/download/crypt-0.0.2.tgz", + "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=" + }, "crypto-browserify": { "version": "3.12.0", "resolved": "http://registry.npm.taobao.org/crypto-browserify/download/crypto-browserify-3.12.0.tgz", @@ -8020,6 +8030,16 @@ "resolved": "http://registry.npm.taobao.org/math-random/download/math-random-1.0.4.tgz", "integrity": "sha1-XdaUPJOFSCZwFtTjTwV1gwgMUUw=" }, + "md5": { + "version": "2.2.1", + "resolved": "https://registry.npm.taobao.org/md5/download/md5-2.2.1.tgz", + "integrity": "sha1-U6s41f48iJG6RlMp6iP6wFQBJvk=", + "requires": { + "charenc": "~0.0.1", + "crypt": "~0.0.1", + "is-buffer": "~1.1.1" + } + }, "md5.js": { "version": "1.3.5", "resolved": "http://registry.npm.taobao.org/md5.js/download/md5.js-1.3.5.tgz", @@ -8242,6 +8262,15 @@ "minimist": "0.0.8" } }, + "mockjs": { + "version": "1.1.0", + "resolved": "https://registry.npm.taobao.org/mockjs/download/mockjs-1.1.0.tgz", + "integrity": "sha1-5qDDeOkZBtuv8gkRzAJzs8fXWwY=", + "dev": true, + "requires": { + "commander": "*" + } + }, "moment": { "version": "2.24.0", "resolved": "http://registry.npm.taobao.org/moment/download/moment-2.24.0.tgz", @@ -14440,6 +14469,15 @@ "resolved": "http://registry.npm.taobao.org/react-content-loader/download/react-content-loader-3.4.2.tgz", "integrity": "sha1-GH++wqo4ljXkYT+qBGcT8ZYXP0A=" }, + "react-cookies": { + "version": "0.1.1", + "resolved": "https://registry.npm.taobao.org/react-cookies/download/react-cookies-0.1.1.tgz", + "integrity": "sha1-KjWAfgT1oT9YzNGp+2ZXRQaHPIg=", + "requires": { + "cookie": "^0.3.1", + "object-assign": "^4.1.1" + } + }, "react-dev-utils": { "version": "5.0.3", "resolved": "http://registry.npm.taobao.org/react-dev-utils/download/react-dev-utils-5.0.3.tgz", @@ -16120,6 +16158,172 @@ "resolved": "http://registry.npm.taobao.org/shellwords/download/shellwords-0.1.1.tgz", "integrity": "sha1-1rkYHBpI05cyTISHHvvPxz/AZUs=" }, + "showdown": { + "version": "1.9.1", + "resolved": "https://registry.npm.taobao.org/showdown/download/showdown-1.9.1.tgz", + "integrity": "sha1-E04UjnXNRiPgnCGwURl315ta0O8=", + "requires": { + "yargs": "^14.2" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-4.1.0.tgz", + "integrity": "sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc=" + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npm.taobao.org/camelcase/download/camelcase-5.3.1.tgz", + "integrity": "sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA=" + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npm.taobao.org/cliui/download/cliui-5.0.0.tgz?cache=0&sync_timestamp=1573942320052&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcliui%2Fdownload%2Fcliui-5.0.0.tgz", + "integrity": "sha1-3u/P2y6AB4SqNPRvoI4GhRx7u8U=", + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npm.taobao.org/emoji-regex/download/emoji-regex-7.0.3.tgz", + "integrity": "sha1-kzoEBShgyF6DwSJHnEdIqOTHIVY=" + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-3.0.0.tgz", + "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=", + "requires": { + "locate-path": "^3.0.0" + } + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npm.taobao.org/get-caller-file/download/get-caller-file-2.0.5.tgz", + "integrity": "sha1-T5RBKoLbMvNuOwuXQfipf+sDH34=" + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-3.0.0.tgz", + "integrity": "sha1-2+w7OrdZdYBxtY/ln8QYca8hQA4=", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npm.taobao.org/p-limit/download/p-limit-2.3.0.tgz", + "integrity": "sha1-PdM8ZHohT9//2DWTPrCG2g3CHbE=", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-3.0.0.tgz", + "integrity": "sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ=", + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npm.taobao.org/p-try/download/p-try-2.2.0.tgz", + "integrity": "sha1-yyhoVA4xPWHeWPr741zpAE1VQOY=" + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/require-main-filename/download/require-main-filename-2.0.0.tgz", + "integrity": "sha1-0LMp7MfMD2Fkn2IhW+aa9UqomJs=" + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npm.taobao.org/string-width/download/string-width-3.1.0.tgz", + "integrity": "sha1-InZ74htirxCBV0MG9prFG2IgOWE=", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz", + "integrity": "sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=", + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npm.taobao.org/which-module/download/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-5.1.0.tgz?cache=0&sync_timestamp=1587574768060&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwrap-ansi%2Fdownload%2Fwrap-ansi-5.1.0.tgz", + "integrity": "sha1-H9H2cjXVttD+54EFYAG/tpTAOwk=", + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npm.taobao.org/y18n/download/y18n-4.0.0.tgz", + "integrity": "sha1-le+U+F7MgdAHwmThkKEg8KPIVms=" + }, + "yargs": { + "version": "14.2.3", + "resolved": "https://registry.npm.taobao.org/yargs/download/yargs-14.2.3.tgz?cache=0&sync_timestamp=1593706901963&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fyargs%2Fdownload%2Fyargs-14.2.3.tgz", + "integrity": "sha1-Ghw+3O0a+yov6jNgS8bR2NaIpBQ=", + "requires": { + "cliui": "^5.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^15.0.1" + } + }, + "yargs-parser": { + "version": "15.0.1", + "resolved": "https://registry.npm.taobao.org/yargs-parser/download/yargs-parser-15.0.1.tgz", + "integrity": "sha1-VHhq9AuCDcsvuAJbEbTWWddjI7M=", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "showdown-katex": { + "version": "0.6.0", + "resolved": "https://registry.npm.taobao.org/showdown-katex/download/showdown-katex-0.6.0.tgz", + "integrity": "sha1-Jaq2qjH2DA/4aIwe2KcI6hgjqHQ=", + "requires": { + "katex": "^0.10.0" + }, + "dependencies": { + "katex": { + "version": "0.10.2", + "resolved": "https://registry.npm.taobao.org/katex/download/katex-0.10.2.tgz", + "integrity": "sha1-OZc+27Ze2ltvnn9BZIeB5VfdSTI=", + "requires": { + "commander": "^2.19.0" + } + } + } + }, "signal-exit": { "version": "3.0.2", "resolved": "http://registry.npm.taobao.org/signal-exit/download/signal-exit-3.0.2.tgz", From 94a2946d52f394ae6e1f9d4ba8d36b1855a45c11 Mon Sep 17 00:00:00 2001 From: caishi Date: Fri, 18 Dec 2020 17:20:22 +0800 Subject: [PATCH 2/9] =?UTF-8?q?readme=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 000000000..f22e4f20e --- /dev/null +++ b/README.md @@ -0,0 +1,5 @@ +分支信息 +master:开发环境(正式环境) +develop:测试环境 +dev_local:本地版本 +dev_chain:含有区块链相关内容的分支 \ No newline at end of file From 8df79a85d21ebc9af5beab21a010912e57089e8d Mon Sep 17 00:00:00 2001 From: caishi Date: Fri, 18 Dec 2020 17:20:45 +0800 Subject: [PATCH 3/9] Delete 'README.md' --- README.md | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 README.md diff --git a/README.md b/README.md deleted file mode 100644 index f22e4f20e..000000000 --- a/README.md +++ /dev/null @@ -1,5 +0,0 @@ -分支信息 -master:开发环境(正式环境) -develop:测试环境 -dev_local:本地版本 -dev_chain:含有区块链相关内容的分支 \ No newline at end of file From 0929200f436f43518c0545d4b077930423447721 Mon Sep 17 00:00:00 2001 From: caishi Date: Fri, 18 Dec 2020 18:20:05 +0800 Subject: [PATCH 4/9] =?UTF-8?q?readme=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 000000000..7fddb261d --- /dev/null +++ b/README.md @@ -0,0 +1,17 @@ +1、 安装node v6.9.x;此安装包含了node和npm。 + +2、 安装cnpm(命令行): npm install -g cnpm --registry=https://registry.npm.taobao.org + +3、 安装依赖的js库(public/react目录下<即项目package.json所在目录>,开启命令行): cnpm install + +4、 如果你的ruby服务使用的是3000端口,则需要在package.json中修改"port"参数的值 + +5、 启动服务(命令行-目录同3): npm start + +6、 build初始化 npm run build + +分支信息 +master:开发环境(正式环境) +develop:测试环境 +dev_local:本地版本 +dev_chain:含有区块链相关内容的分支 \ No newline at end of file From 21b1c8cba3485ed2682f317d5ee48a32008a2534 Mon Sep 17 00:00:00 2001 From: caishi Date: Fri, 18 Dec 2020 18:24:01 +0800 Subject: [PATCH 5/9] =?UTF-8?q?readme=E6=96=87=E4=BB=B6=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 7fddb261d..4361845cf 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,16 @@ +前端react环境安装: 1、 安装node v6.9.x;此安装包含了node和npm。 - 2、 安装cnpm(命令行): npm install -g cnpm --registry=https://registry.npm.taobao.org - 3、 安装依赖的js库(public/react目录下<即项目package.json所在目录>,开启命令行): cnpm install - 4、 如果你的ruby服务使用的是3000端口,则需要在package.json中修改"port"参数的值 - 5、 启动服务(命令行-目录同3): npm start - 6、 build初始化 npm run build -分支信息 + +分支信息: +相关代码提交到对应分支,能上线的代码先提交到develop分支上测试版,测试通过后提交到master分支上线正式版 master:开发环境(正式环境) develop:测试环境 dev_local:本地版本 -dev_chain:含有区块链相关内容的分支 \ No newline at end of file +dev_chain:含有区块链相关内容的分支 +PS:新增加的需求功能先新建新分支开发,在测试版测试没问题后再合并到develop分支 \ No newline at end of file From 59a08343005d1f07684a37fff1daec2657b9bef7 Mon Sep 17 00:00:00 2001 From: caishi Date: Mon, 21 Dec 2020 09:51:59 +0800 Subject: [PATCH 6/9] =?UTF-8?q?readme=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 4361845cf..2348cfb50 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -前端react环境安装: +

前端react环境安装:

1、 安装node v6.9.x;此安装包含了node和npm。 2、 安装cnpm(命令行): npm install -g cnpm --registry=https://registry.npm.taobao.org 3、 安装依赖的js库(public/react目录下<即项目package.json所在目录>,开启命令行): cnpm install @@ -7,10 +7,10 @@ 6、 build初始化 npm run build -分支信息: -相关代码提交到对应分支,能上线的代码先提交到develop分支上测试版,测试通过后提交到master分支上线正式版 +

分支信息:

+相关代码提交到对应分支,能上线的代码先提交到develop分支上测试版,测试通过后合并提交到master分支上线正式版 master:开发环境(正式环境) develop:测试环境 dev_local:本地版本 dev_chain:含有区块链相关内容的分支 -PS:新增加的需求功能先新建新分支开发,在测试版测试没问题后再合并到develop分支 \ No newline at end of file +PS:新增加的需求功能先新建新分支开发,在测试版测试没问题后再分别合并到develop和master分支 \ No newline at end of file From e294b14015871b6b754a90203747b2b843e6c7cf Mon Sep 17 00:00:00 2001 From: caishi Date: Mon, 21 Dec 2020 09:53:36 +0800 Subject: [PATCH 7/9] =?UTF-8?q?readme=E6=96=87=E4=BB=B6=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 2348cfb50..cc5d75f80 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,16 @@

前端react环境安装:

-1、 安装node v6.9.x;此安装包含了node和npm。 -2、 安装cnpm(命令行): npm install -g cnpm --registry=https://registry.npm.taobao.org -3、 安装依赖的js库(public/react目录下<即项目package.json所在目录>,开启命令行): cnpm install -4、 如果你的ruby服务使用的是3000端口,则需要在package.json中修改"port"参数的值 -5、 启动服务(命令行-目录同3): npm start -6、 build初始化 npm run build +

1、 安装node v6.9.x;此安装包含了node和npm。

+

2、 安装cnpm(命令行): npm install -g cnpm --registry=https://registry.npm.taobao.org

+

3、 安装依赖的js库(public/react目录下<即项目package.json所在目录>,开启命令行): cnpm install

+

4、 如果你的ruby服务使用的是3000端口,则需要在package.json中修改"port"参数的值

+

5、 启动服务(命令行-目录同3): npm start

+

6、 build初始化 npm run build

分支信息:

-相关代码提交到对应分支,能上线的代码先提交到develop分支上测试版,测试通过后合并提交到master分支上线正式版 -master:开发环境(正式环境) -develop:测试环境 -dev_local:本地版本 -dev_chain:含有区块链相关内容的分支 -PS:新增加的需求功能先新建新分支开发,在测试版测试没问题后再分别合并到develop和master分支 \ No newline at end of file +

相关代码提交到对应分支,能上线的代码先提交到develop分支上测试版,测试通过后合并提交到master分支上线正式版

+

master:开发环境(正式环境)

+

develop:测试环境

+

dev_local:本地版本

+

dev_chain:含有区块链相关内容的分支

+

PS:新增加的需求功能先新建新分支开发,在测试版测试没问题后再分别合并到develop和master分支

\ No newline at end of file From 0a67b9606a9ca142c81397595d38d5aac15d71dd Mon Sep 17 00:00:00 2001 From: caishi <1149225589@qq.com> Date: Thu, 24 Dec 2020 14:41:17 +0800 Subject: [PATCH 8/9] update webpack --- config/webpack.config.prod.js | 9 --------- 1 file changed, 9 deletions(-) diff --git a/config/webpack.config.prod.js b/config/webpack.config.prod.js index 5d71d6002..a7b2c9f4e 100644 --- a/config/webpack.config.prod.js +++ b/config/webpack.config.prod.js @@ -17,16 +17,7 @@ const OptimizeCSSAssetsPlugin = require("optimize-css-assets-webpack-plugin"); const paths = require("./paths"); const getClientEnvironment = require("./env"); -// Some apps do not use client-side routing with pushState. -// For these, "homepage" can be set to "." to enable relative asset paths. let publicPath = "/react/build/"; -// let nodeEnv = process.env.NODE_ENV -// if (nodeEnv === 'testBuild') { -// publicPath = 'https://testforgeplus.trustie.net/react/build/'; -// } -// if (nodeEnv === 'production') { -// publicPath = 'https://forgeplus.trustie.net/react/build/'; -// } const publicUrl = publicPath.slice(0, -1); const shouldUseSourceMap = process.env.GENERATE_SOURCEMAP !== "false"; const env = getClientEnvironment(publicPath); From 246782f961290d4fd90a44945416696e02f23489 Mon Sep 17 00:00:00 2001 From: caishi <1149225589@qq.com> Date: Wed, 6 Jan 2021 16:23:59 +0800 Subject: [PATCH 9/9] link --- src/forge/DevOps/About.jsx | 4 ++-- src/forge/Main/Detail.js | 19 ++++--------------- 2 files changed, 6 insertions(+), 17 deletions(-) diff --git a/src/forge/DevOps/About.jsx b/src/forge/DevOps/About.jsx index ba4c7667a..82bee8e7b 100644 --- a/src/forge/DevOps/About.jsx +++ b/src/forge/DevOps/About.jsx @@ -173,8 +173,8 @@ function About(props, ref) {

定义DevOps工作流,帮助您检测bug、发布代码…

{ - CurrentLogin !== AuthorLogin && (step === undefined || (step && step < 1)) && -
DevOps开启功能暂未对项目创建者以外的角色开放,可以联系项目创建者进行开启,开启后便可查看构建信息。
+ CurrentLogin !== AuthorLogin ? +
DevOps开启功能暂未对项目创建者以外的角色开放,可以联系项目创建者进行开启,开启后便可查看构建信息。
:"" } 了解什么是DevOps? diff --git a/src/forge/Main/Detail.js b/src/forge/Main/Detail.js index baa6169dd..116ef2c35 100644 --- a/src/forge/Main/Detail.js +++ b/src/forge/Main/Detail.js @@ -10,17 +10,6 @@ import Loading from '../../Loading'; import axios from 'axios'; -import img_1 from '../Images/1.png'; -import img_2 from '../Images/2.png'; -import img_3 from '../Images/3.png'; -import img_6 from '../Images/6.png'; -import img_7 from '../Images/7.png'; -import img_parise from '../Images/parise.png'; -import img_focus from '../Images/focus.png'; -import img_parised from '../Images/parised.png'; -import img_focused from '../Images/focused.png'; -import img_fork from '../Images/fork.png'; -import img_milepost from '../Images/milepost.png'; const Setting = Loadable({ loader: () => import('../Settings/Index'), loading: Loading, @@ -125,9 +114,9 @@ const DevIndex = Loadable({ /** * permission:Manager:管理员,Reporter:报告人员(只有读取权限),Developer:开发人员(除不能设置仓库信息外) */ -function checkPathname(pathname){ +function checkPathname(projectsId,owner,pathname){ let name = ""; - if(pathname){ + if(pathname && pathname !== `/projects/${owner}/${projectsId}`){ if(pathname.indexOf("/about")>-1){ name="about" }else if(pathname.indexOf("/issues")>-1 ||pathname.indexOf("Milepost") > 0){ @@ -140,7 +129,7 @@ function checkPathname(pathname){ name="activity" }else if(pathname.indexOf("/setting")>-1){ name="setting" - }else if(pathname.indexOf("/devops")>-1){ + }else if(pathname.indexOf(`/devops`)>-1){ name="devops" } } @@ -377,9 +366,9 @@ class Detail extends Component { const url = this.props.history.location.pathname; const urlArr = url.split("/"); const urlFlag = (urlArr.length === 3); - let pathname = checkPathname(url); const { projectsId , owner } = this.props.match.params; + let pathname = checkPathname(projectsId,owner,url); const { state } = this.props.history.location;