@@ -234,6 +234,15 @@ class ActionPage : AppCompatActivity() {
234234 }
235235
236236 private fun onMenuItemClick (menuOption : PageMenuOption ) {
237+ // Nếu menu item được khai báo link/activity/html/config/config-sh -> mở giống 1 page/dòng
238+ // bình thường trong danh sách, bỏ qua hoàn toàn việc chạy pageHandlerSh của menu.
239+ if (menuOption.link.isNotEmpty() || menuOption.activity.isNotEmpty() ||
240+ menuOption.onlineHtmlPage.isNotEmpty() || menuOption.pageConfigSh.isNotEmpty() ||
241+ menuOption.pageConfigPath.isNotEmpty()) {
242+ openMenuOptionAsPage(menuOption)
243+ return
244+ }
245+
237246 when (menuOption.type) {
238247 " refresh" , " reload" -> recreate()
239248 " restart" -> restartApp()
@@ -250,6 +259,38 @@ class ActionPage : AppCompatActivity() {
250259 }
251260 }
252261
262+ // Mở menu item giống hệt cách 1 dòng PageNode bình thường được mở (xem onPageClick trong
263+ // ActionListFragment): link -> mở trình duyệt/app ngoài; activity -> mở activity chỉ định;
264+ // còn lại (html/config-sh/config) -> chuyển thành PageNode rồi dùng lại OpenPageHelper.
265+ private fun openMenuOptionAsPage (menuOption : PageMenuOption ) {
266+ if (menuOption.link.isNotEmpty()) {
267+ try {
268+ val intent = Intent (Intent .ACTION_VIEW , Uri .parse(menuOption.link))
269+ intent.addFlags(Intent .FLAG_ACTIVITY_NEW_TASK )
270+ startActivity(intent)
271+ } catch (ex: Exception ) {
272+ Toast .makeText(this , getString(R .string.kr_slice_activity_fail), Toast .LENGTH_SHORT ).show()
273+ }
274+ return
275+ }
276+
277+ if (menuOption.activity.isNotEmpty()) {
278+ TryOpenActivity (this , menuOption.activity).tryOpen()
279+ return
280+ }
281+
282+ if (menuOption.onlineHtmlPage.isNotEmpty() || menuOption.pageConfigSh.isNotEmpty() || menuOption.pageConfigPath.isNotEmpty()) {
283+ val parentConfigPath = currentPageConfig?.currentPageConfigPath ? : " "
284+ val page = PageNode (parentConfigPath).apply {
285+ title = menuOption.title
286+ onlineHtmlPage = menuOption.onlineHtmlPage
287+ pageConfigSh = menuOption.pageConfigSh
288+ pageConfigPath = menuOption.pageConfigPath
289+ }
290+ OpenPageHelper (this ).openPage(page)
291+ }
292+ }
293+
253294 // Chạy script của menu item ở NỀN (IO thread), không hiện DialogLogFragment/không có output hiển thị.
254295 // Vẫn tôn trọng các cờ auto-finish/reload-page/auto-kill/auto-restart sau khi script chạy xong.
255296 private fun menuItemExecuteSilent (menuOption : PageMenuOption ) {
0 commit comments