Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
浙江兰德纵横网络技术股份有限公司
o2oa-android
提交
8e5c3047
o2oa-android
项目概览
浙江兰德纵横网络技术股份有限公司
/
o2oa-android
通知
5
Star
6
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
o2oa-android
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
8e5c3047
编写于
2月 14, 2023
作者:
F
fancy
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
扫描内部页面,支持内部打开,比如工作页面和内容管理页面
上级
0be3b54a
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
133 addition
and
61 deletion
+133
-61
app/src/main/java/net/zoneland/x/bpm/mobile/v1/zoneXBPM/app/cms/view/CMSWebViewActivity.kt
...bpm/mobile/v1/zoneXBPM/app/cms/view/CMSWebViewActivity.kt
+36
-48
app/src/main/java/net/zoneland/x/bpm/mobile/v1/zoneXBPM/app/o2/scanlogin/ScanLoginActivity.kt
.../mobile/v1/zoneXBPM/app/o2/scanlogin/ScanLoginActivity.kt
+86
-9
app/src/main/java/net/zoneland/x/bpm/mobile/v1/zoneXBPM/app/o2/webview/O2WebViewActivity.kt
...pm/mobile/v1/zoneXBPM/app/o2/webview/O2WebViewActivity.kt
+9
-3
app/src/main/java/net/zoneland/x/bpm/mobile/v1/zoneXBPM/utils/StringUtil.java
...t/zoneland/x/bpm/mobile/v1/zoneXBPM/utils/StringUtil.java
+2
-1
未找到文件。
app/src/main/java/net/zoneland/x/bpm/mobile/v1/zoneXBPM/app/cms/view/CMSWebViewActivity.kt
浏览文件 @
8e5c3047
...
...
@@ -535,57 +535,45 @@ class CMSWebViewActivity : BaseMVPActivity<CMSWebViewContract.View, CMSWebViewCo
/**
* 表单加载完成后回调
*/
@Deprecated
(
"已经弃用"
)
@JavascriptInterface
fun
cmsFormLoaded
(
control
:
String
)
{
//{
// "allowRead": true,
// "allowPublishDocument": isControl && this.document.docStatus === "draft",
// "allowSave": isControl && this.document.docStatus === "published",
// "allowPopularDocument": false,
// "allowEditDocument": isControl && !this.document.wf_workId,
// "allowDeleteDocument": isControl && !this.document.wf_workId,
// "allowArchiveDocument" : false,
// "allowRedraftDocument" : false,
// "currentMode": "read" //edit 编辑表单还是阅读表单
// };
XLog
.
debug
(
"表单加载完成回调:$control"
)
if
(!
TextUtils
.
isEmpty
(
control
))
{
try
{
val
cmsWorkControl
=
O2SDKManager
.
instance
().
gson
.
fromJson
(
control
,
CMSWorkControl
::
class
.
java
)
runOnUiThread
{
var
i
=
0
if
(
cmsWorkControl
.
allowDeleteDocument
)
{
tv_cms_form_delete_btn
.
visible
()
i
++
}
if
(
cmsWorkControl
.
allowPublishDocument
)
{
tv_cms_form_publish_btn
.
visible
()
i
++
}
else
{
if
(
cmsWorkControl
.
allowEditDocument
&&
cmsWorkControl
.
allowSave
)
{
if
(
cmsWorkControl
.
currentMode
==
"read"
)
{
tv_cms_form_edit_btn
.
visible
()
tv_cms_form_save_btn
.
gone
()
}
else
if
(
cmsWorkControl
.
currentMode
==
"edit"
)
{
tv_cms_form_edit_btn
.
gone
()
tv_cms_form_save_btn
.
visible
()
}
i
++
}
else
{
tv_cms_form_edit_btn
.
gone
()
tv_cms_form_save_btn
.
gone
()
}
}
if
(
i
>
0
)
{
fl_bottom_operation_bar
.
visible
()
bottom_operate_button_layout
.
visible
()
}
}
}
catch
(
e
:
Exception
)
{
XLog
.
error
(
"json parse error"
,
e
)
}
}
//
if (!TextUtils.isEmpty(control)) {
//
try {
//
val cmsWorkControl = O2SDKManager.instance().gson.fromJson(control, CMSWorkControl::class.java)
//
runOnUiThread {
//
var i = 0
//
if (cmsWorkControl.allowDeleteDocument) {
//
tv_cms_form_delete_btn.visible()
//
i++
//
}
//
if (cmsWorkControl.allowPublishDocument) {
//
tv_cms_form_publish_btn.visible()
//
i++
//
}else {
//
if (cmsWorkControl.allowEditDocument && cmsWorkControl.allowSave) {
//
if (cmsWorkControl.currentMode == "read") {
//
tv_cms_form_edit_btn.visible()
//
tv_cms_form_save_btn.gone()
//
}else if (cmsWorkControl.currentMode == "edit") {
//
tv_cms_form_edit_btn.gone()
//
tv_cms_form_save_btn.visible()
//
}
//
i++
//
}else {
//
tv_cms_form_edit_btn.gone()
//
tv_cms_form_save_btn.gone()
//
}
//
}
//
if (i>0) {
//
fl_bottom_operation_bar.visible()
//
bottom_operate_button_layout.visible()
//
}
//
}
//
} catch (e: Exception) {
//
XLog.error("json parse error", e)
//
}
//
}
}
...
...
app/src/main/java/net/zoneland/x/bpm/mobile/v1/zoneXBPM/app/o2/scanlogin/ScanLoginActivity.kt
浏览文件 @
8e5c3047
package
net.zoneland.x.bpm.mobile.v1.zoneXBPM.app.o2.scanlogin
import
android.net.Uri
import
android.os.Bundle
import
android.text.TextUtils
import
com.google.gson.reflect.TypeToken
import
kotlinx.android.synthetic.main.activity_scan_login.*
import
net.zoneland.x.bpm.mobile.v1.zoneXBPM.O2SDKManager
import
net.zoneland.x.bpm.mobile.v1.zoneXBPM.R
import
net.zoneland.x.bpm.mobile.v1.zoneXBPM.app.base.BaseMVPActivity
import
net.zoneland.x.bpm.mobile.v1.zoneXBPM.core.component.api.RetrofitClient
import
net.zoneland.x.bpm.mobile.v1.zoneXBPM.app.cms.view.CMSWebViewActivity
import
net.zoneland.x.bpm.mobile.v1.zoneXBPM.app.o2.webview.O2WebViewActivity
import
net.zoneland.x.bpm.mobile.v1.zoneXBPM.app.o2.webview.TaskWebViewActivity
import
net.zoneland.x.bpm.mobile.v1.zoneXBPM.core.component.api.APIAddressHelper
import
net.zoneland.x.bpm.mobile.v1.zoneXBPM.utils.AndroidUtils
import
net.zoneland.x.bpm.mobile.v1.zoneXBPM.utils.StringUtil
import
net.zoneland.x.bpm.mobile.v1.zoneXBPM.utils.XLog
import
net.zoneland.x.bpm.mobile.v1.zoneXBPM.utils.XToast
import
net.zoneland.x.bpm.mobile.v1.zoneXBPM.utils.extension.goThenKill
import
net.zoneland.x.bpm.mobile.v1.zoneXBPM.utils.extension.gone
import
net.zoneland.x.bpm.mobile.v1.zoneXBPM.utils.extension.visible
import
okhttp3.Call
import
okhttp3.Callback
import
okhttp3.Request
import
okhttp3.Response
import
java.io.IOException
import
java.util.regex.Matcher
import
java.util.regex.Pattern
...
...
@@ -45,7 +47,7 @@ class ScanLoginActivity : BaseMVPActivity<ScanLoginContract.View, ScanLoginContr
XLog
.
debug
(
"scan result: $result"
)
parseResult
()
setupToolBar
(
title
)
setupToolBar
(
title
,
true
)
button_scan_login_confirm
.
setOnClickListener
{
mPresenter
.
confirmWebLogin
(
meta
)
}
tv_scan_login_cancel
.
setOnClickListener
{
finish
()
}
}
...
...
@@ -143,8 +145,83 @@ class ScanLoginActivity : BaseMVPActivity<ScanLoginContract.View, ScanLoginContr
}
private
fun
gotoDefaultBrowser
()
{
AndroidUtils
.
runDefaultBrowser
(
this
,
result
)
finish
()
val
host
=
APIAddressHelper
.
instance
().
webServerData
?.
host
?:
""
if
(!
TextUtils
.
isEmpty
(
host
)
&&
result
.
contains
(
host
))
{
// 内部页面
XLog
.
info
(
"内部页面:$result"
)
// cms页面
if
(
result
.
contains
(
"x_desktop/cmspreview.html"
)
||
result
.
contains
(
"x_desktop/cmsdoc.html"
)
||
result
.
contains
(
"x_desktop/cmsdocMobile.html"
)
||
result
.
contains
(
"x_desktop/cmsdocmobilewithaction.html"
))
{
val
uri
:
Uri
=
Uri
.
parse
(
result
)
var
documentId
=
uri
.
getQueryParameter
(
"documentId"
)
val
readonly
=
uri
.
getQueryParameter
(
"readonly"
)
?:
false
if
(
TextUtils
.
isEmpty
(
documentId
))
{
documentId
=
uri
.
getQueryParameter
(
"id"
)
}
if
(!
TextUtils
.
isEmpty
(
documentId
))
{
goThenKill
<
CMSWebViewActivity
>(
CMSWebViewActivity
.
startBundleDataWithOptions
(
documentId
!!
,
""
,
"{ \"readonly\": $readonly }"
))
return
}
}
else
if
(
result
.
contains
(
"x_desktop/work.html"
)
||
result
.
contains
(
"x_desktop/workmobile.html"
)
||
result
.
contains
(
"x_desktop/workmobilewithaction.html"
))
{
val
uri
:
Uri
=
Uri
.
parse
(
result
)
var
workId
=
uri
.
getQueryParameter
(
"workId"
)
if
(
TextUtils
.
isEmpty
(
workId
))
{
workId
=
uri
.
getQueryParameter
(
"workid"
)
}
if
(
TextUtils
.
isEmpty
(
workId
))
{
workId
=
uri
.
getQueryParameter
(
"work"
)
}
if
(
TextUtils
.
isEmpty
(
workId
))
{
workId
=
uri
.
getQueryParameter
(
"workcompletedid"
)
}
if
(
TextUtils
.
isEmpty
(
workId
))
{
workId
=
uri
.
getQueryParameter
(
"workcompletedId"
)
}
if
(
TextUtils
.
isEmpty
(
workId
))
{
workId
=
uri
.
getQueryParameter
(
"id"
)
}
if
(!
TextUtils
.
isEmpty
(
workId
))
{
goThenKill
<
TaskWebViewActivity
>(
TaskWebViewActivity
.
start
(
workId
,
""
,
""
))
return
}
}
else
if
(
result
.
contains
(
"x_desktop/app.html"
)
||
result
.
contains
(
"x_desktop/appMobile.html"
))
{
val
uri
:
Uri
=
Uri
.
parse
(
result
)
val
app
=
uri
.
getQueryParameter
(
"app"
)
val
status
=
uri
.
getQueryParameter
(
"status"
)
if
(!
TextUtils
.
isEmpty
(
app
)
&&
!
TextUtils
.
isEmpty
(
status
))
{
XLog
.
info
(
"app: $app status: $status"
)
val
type
=
object
:
TypeToken
<
HashMap
<
String
,
String
>>()
{}.
type
val
statusMap
:
HashMap
<
String
,
String
>
=
O2SDKManager
.
instance
().
gson
.
fromJson
(
status
,
type
)
if
(
app
==
"process.Work"
)
{
var
work
=
statusMap
[
"workId"
]
if
(
TextUtils
.
isEmpty
(
work
))
{
work
=
statusMap
[
"workCompletedId"
]
}
if
(!
TextUtils
.
isEmpty
(
work
))
{
goThenKill
<
TaskWebViewActivity
>(
TaskWebViewActivity
.
start
(
work
,
""
,
""
))
return
}
}
else
if
(
app
==
"cms.Document"
)
{
val
documentId
=
statusMap
[
"documentId"
]
val
readonly
=
statusMap
[
"readonly"
]
?:
false
if
(!
TextUtils
.
isEmpty
(
documentId
))
{
goThenKill
<
CMSWebViewActivity
>(
CMSWebViewActivity
.
startBundleDataWithOptions
(
documentId
!!
,
""
,
"{ \"readonly\": $readonly }"
))
return
}
}
}
}
XLog
.
info
(
"没有处理完成,默认webview中打开"
)
O2WebViewActivity
.
openWebView
(
this
,
""
,
result
)
}
else
{
XLog
.
info
(
"外部页面:$result"
)
AndroidUtils
.
runDefaultBrowser
(
this
,
result
)
finish
()
}
}
private
fun
parseMeta
()
{
...
...
app/src/main/java/net/zoneland/x/bpm/mobile/v1/zoneXBPM/app/o2/webview/O2WebViewActivity.kt
浏览文件 @
8e5c3047
...
...
@@ -35,18 +35,19 @@ class O2WebViewActivity : AppCompatActivity() {
setContentView
(
R
.
layout
.
activity_o2_web_view
)
val
title
=
intent
?.
extras
?.
getString
(
TitleKey
)
?:
"网页"
val
url
=
intent
?.
extras
?.
getString
(
UrlKey
)
?:
"https://www.o2oa.net"
// actionbar
val
toolbar
:
Toolbar
?
=
findViewById
(
R
.
id
.
toolbar_snippet_top_bar
)
toolbar
?.
title
=
""
setSupportActionBar
(
toolbar
)
val
toolbarTitle
:
TextView
?
=
findViewById
(
R
.
id
.
tv_snippet_top_title
)
toolbarTitle
?.
text
=
title
updateToolbarTitle
(
title
)
toolbar
?.
setNavigationIcon
(
R
.
mipmap
.
ic_back_mtrl_white_alpha
)
toolbar
?.
setNavigationOnClickListener
{
finish
()
}
//webivew
web_view
.
webChromeClient
=
webChromeClient
webChromeClient
.
onO2ReceivedTitle
=
{
t
->
updateToolbarTitle
(
t
)
}
web_view
.
webViewClient
=
object
:
WebViewClient
()
{
override
fun
onReceivedSslError
(
view
:
WebView
?,
handler
:
SslErrorHandler
?,
error
:
SslError
?)
{
XLog
.
error
(
"ssl error, $error"
)
...
...
@@ -62,4 +63,9 @@ class O2WebViewActivity : AppCompatActivity() {
web_view
.
loadUrl
(
url
)
}
fun
updateToolbarTitle
(
title
:
String
)
{
val
toolbarTitle
:
TextView
?
=
findViewById
(
R
.
id
.
tv_snippet_top_title
)
toolbarTitle
?.
text
=
title
}
}
\ No newline at end of file
app/src/main/java/net/zoneland/x/bpm/mobile/v1/zoneXBPM/utils/StringUtil.java
浏览文件 @
8e5c3047
...
...
@@ -49,7 +49,8 @@ public class StringUtil {
*/
public
static
boolean
isUrl
(
String
str
)
{
// String regex = "http(s)?://([\\w-]+\\.)+[\\w-]+(/[\\w- ./?%&=]*)?";
String
regex
=
"((http|ftp|https)://)(([a-zA-Z0-9\\._-]+\\.[a-zA-Z]{2,6})|([0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}))(:[0-9]{1,5})*(/[a-zA-Z0-9\\&%_\\./-~-]*)?"
;
// String regex = "((http|ftp|https)://)(([a-zA-Z0-9\\._-]+\\.[a-zA-Z]{2,6})|([0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}))(:[0-9]{1,5})*(/[a-zA-Z0-9\\&%_\\./-~-]*)?";
String
regex
=
"^(http(s)?:\\/\\/)\\w+[^\\s]+(\\.[^\\s]+){1,}$"
;
return
match
(
regex
,
str
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录