![]() |
Мобильная Торговля
|
Версия
|
stmobile://action/uri/preopen Событие перед открытием любого URI
Новая точка расширения вызывается по дефолту при открытии любого расширения. Она необходима, чтобы реализовать переопределение действий (фактически редирект на другой uri), например, при открытии операций в ТТ. На входе в точку расширения передается параметр uri (api.context.uri), например "stmobile://document/merchandise/create?outletId=0". На выходе точка расширения через api.result отдает новое URI, где могут быть заменены как Тип документа, так и значение какого-либо из переданных параметров.
В файле manifest в раздел launch добавлен параметр uriMask, который регулирует, какие расширения могут модифицироваться через stmobile://action/uri/preopen. Маска задается в стандартном виде для путей точек расширений: stmobile://*/*/* - где * это любой раздел. Пример: stmobile://document/*/* или stmobile://document/order/*
uri | {String} - путь uri, доступный для редактирования. |
{ "uri": "stmobile://action/uri/preopen", "type": "action", "datascript": { "script_file": "test.js" }, "launch": { "uriMask": "stmobile://document/*/*" } }
function doAction () { var uriToChange = api.context.uri; // входная строка var matchUriPart = "stmobile://document/order"; // что заменяем var newUriPart = "stmobile://document/merchandise"; // чем заменяем var newUri = changeUriString(uriToChange, matchUriPart, newUriPart); // итоговая строка if (newUri) { api.result.setData("resultUri", newUri); } }; function changeUriString (sourceString, matchString, newString) { var match = sourceString.match(matchString); if (!match) { return sourceString; } var matchLen = match[0].length; if (matchLen) { var tempString = sourceString.slice(matchLen); return newString + tempString; } return sourceString; }