Commit 350b3069 by Takumi Imai

コメント & 英語化

parent 5168bcdd
...@@ -226,7 +226,7 @@ COMMON.checkAuth = function (async = true) { ...@@ -226,7 +226,7 @@ COMMON.checkAuth = function (async = true) {
}; };
var ClientData = { var ClientData = {
// Local :ユーザ情報(userInfo)_アカウントパス:String // Local :userInfo_account path:String
userInfo_accountPath: function (data) { userInfo_accountPath: function (data) {
if (arguments.length > 0) { if (arguments.length > 0) {
COMMON.userSetting().set(CONSTANT.KEYS.userInfo_accountPath, data); COMMON.userSetting().set(CONSTANT.KEYS.userInfo_accountPath, data);
...@@ -235,7 +235,7 @@ var ClientData = { ...@@ -235,7 +235,7 @@ var ClientData = {
} }
}, },
// Local :ユーザ情報(userInfo)_ログインID:String // Local :userInfo_loginID:String
userInfo_loginId: function (data) { userInfo_loginId: function (data) {
if (arguments.length > 0) { if (arguments.length > 0) {
COMMON.userSetting().set(CONSTANT.KEYS.userInfo_loginId, data); COMMON.userSetting().set(CONSTANT.KEYS.userInfo_loginId, data);
...@@ -244,7 +244,7 @@ var ClientData = { ...@@ -244,7 +244,7 @@ var ClientData = {
} }
}, },
// Local :ユーザ情報(userInfo)_アカウント情報記憶フラグ:Char(Y:可能, N:不可) // Local :userInfo_Account Information Storage Flag:Char(Y:Available, N:Not Available)
userInfo_rememberLogin: function (data) { userInfo_rememberLogin: function (data) {
if (arguments.length > 0) { if (arguments.length > 0) {
COMMON.userSetting().set(CONSTANT.KEYS.userInfo_rememberLogin, data); COMMON.userSetting().set(CONSTANT.KEYS.userInfo_rememberLogin, data);
...@@ -253,7 +253,7 @@ var ClientData = { ...@@ -253,7 +253,7 @@ var ClientData = {
} }
}, },
// Session :ユーザ情報(userInfo)_ログインID:String // Session :userInfo_loginID:String
userInfo_loginId_session: function (data) { userInfo_loginId_session: function (data) {
if (arguments.length > 0) { if (arguments.length > 0) {
SessionStorageUtils.set(CONSTANT.KEYS.userInfo_loginId, data); SessionStorageUtils.set(CONSTANT.KEYS.userInfo_loginId, data);
...@@ -262,7 +262,7 @@ var ClientData = { ...@@ -262,7 +262,7 @@ var ClientData = {
} }
}, },
// Session :ユーザ情報(userInfo)_アカウントパス:String // Session :userInfo_account path:String
userInfo_accountPath_session: function (data) { userInfo_accountPath_session: function (data) {
if (arguments.length > 0) { if (arguments.length > 0) {
SessionStorageUtils.set(CONSTANT.KEYS.userInfo_accountPath, data); SessionStorageUtils.set(CONSTANT.KEYS.userInfo_accountPath, data);
...@@ -280,7 +280,7 @@ var ClientData = { ...@@ -280,7 +280,7 @@ var ClientData = {
} }
}, },
// Local :ユーザ情報(userInfo)_最終ログイン日時:Datetime // Local :userInfo_Last login date and time:Datetime
userInfo_lastLoginTime: function (data) { userInfo_lastLoginTime: function (data) {
if (arguments.length > 0) { if (arguments.length > 0) {
COMMON.operateData(arguments, CONSTANT.KEYS.userInfo_lastLoginTime, undefined); COMMON.operateData(arguments, CONSTANT.KEYS.userInfo_lastLoginTime, undefined);
...@@ -289,7 +289,7 @@ var ClientData = { ...@@ -289,7 +289,7 @@ var ClientData = {
} }
}, },
// Session:ユーザ情報(userInfo)_セッションID:String // Session:userInfo_SessionID:String
userInfo_sid: function (data) { userInfo_sid: function (data) {
if (arguments.length > 0) { if (arguments.length > 0) {
SessionStorageUtils.set(CONSTANT.KEYS.userInfo_sid, data); SessionStorageUtils.set(CONSTANT.KEYS.userInfo_sid, data);
...@@ -303,7 +303,7 @@ var ClientData = { ...@@ -303,7 +303,7 @@ var ClientData = {
} }
}, },
// Local: ユーザ情報(userInfo)_セッションID:String // Local: userInfo_SessionID:String
userInfo_sid_local: function (data) { userInfo_sid_local: function (data) {
if (arguments.length > 0) { if (arguments.length > 0) {
COMMON.userSetting().set(CONSTANT.KEYS.userInfo_sid_local, data); COMMON.userSetting().set(CONSTANT.KEYS.userInfo_sid_local, data);
...@@ -312,7 +312,7 @@ var ClientData = { ...@@ -312,7 +312,7 @@ var ClientData = {
} }
}, },
// Local: セッションIDのバックアップ // Local: Session ID backup
userInfo_sid_local_bak: function (data) { userInfo_sid_local_bak: function (data) {
if (arguments.length > 0) { if (arguments.length > 0) {
COMMON.userSetting().set(CONSTANT.KEYS.userInfo_sid_bak, data); COMMON.userSetting().set(CONSTANT.KEYS.userInfo_sid_bak, data);
...@@ -321,7 +321,7 @@ var ClientData = { ...@@ -321,7 +321,7 @@ var ClientData = {
} }
}, },
// Session :通知情報(pushInfo)_新着件数:Interger // Session :Notification information (pushInfo)_Number of new arrivals:Interger
pushInfo_newMsgNumber: function (data) { pushInfo_newMsgNumber: function (data) {
if (arguments.length > 0) { if (arguments.length > 0) {
SessionStorageUtils.set(CONSTANT.KEYS.pushInfo_newMsgNumber, data); SessionStorageUtils.set(CONSTANT.KEYS.pushInfo_newMsgNumber, data);
...@@ -330,6 +330,7 @@ var ClientData = { ...@@ -330,6 +330,7 @@ var ClientData = {
} }
}, },
// apiUrl
conf_apiUrl: function (data) { conf_apiUrl: function (data) {
if (arguments.length > 0) { if (arguments.length > 0) {
SessionStorageUtils.set(CONSTANT.KEYS.conf_apiUrl, data); SessionStorageUtils.set(CONSTANT.KEYS.conf_apiUrl, data);
...@@ -337,6 +338,8 @@ var ClientData = { ...@@ -337,6 +338,8 @@ var ClientData = {
return SessionStorageUtils.get(CONSTANT.KEYS.conf_apiUrl); return SessionStorageUtils.get(CONSTANT.KEYS.conf_apiUrl);
} }
}, },
// api login url
conf_apiLoginUrl: function (data) { conf_apiLoginUrl: function (data) {
if (arguments.length > 0) { if (arguments.length > 0) {
SessionStorageUtils.set(CONSTANT.KEYS.conf_apiLoginUrl, data); SessionStorageUtils.set(CONSTANT.KEYS.conf_apiLoginUrl, data);
...@@ -344,6 +347,8 @@ var ClientData = { ...@@ -344,6 +347,8 @@ var ClientData = {
return SessionStorageUtils.get(CONSTANT.KEYS.conf_apiLoginUrl); return SessionStorageUtils.get(CONSTANT.KEYS.conf_apiLoginUrl);
} }
}, },
//check api url
conf_checkApiUrl: function (data) { conf_checkApiUrl: function (data) {
if (arguments.length > 0) { if (arguments.length > 0) {
SessionStorageUtils.set(CONSTANT.KEYS.conf_checkApiUrl, data); SessionStorageUtils.set(CONSTANT.KEYS.conf_checkApiUrl, data);
...@@ -351,6 +356,8 @@ var ClientData = { ...@@ -351,6 +356,8 @@ var ClientData = {
return SessionStorageUtils.get(CONSTANT.KEYS.conf_checkApiUrl); return SessionStorageUtils.get(CONSTANT.KEYS.conf_checkApiUrl);
} }
}, },
// api resorce dl url
conf_apiResourceDlUrl: function (data) { conf_apiResourceDlUrl: function (data) {
if (arguments.length > 0) { if (arguments.length > 0) {
SessionStorageUtils.set(CONSTANT.KEYS.conf_apiResourceDlUrl, data); SessionStorageUtils.set(CONSTANT.KEYS.conf_apiResourceDlUrl, data);
...@@ -359,7 +366,7 @@ var ClientData = { ...@@ -359,7 +366,7 @@ var ClientData = {
} }
}, },
// Local :ユーザ情報(userInfo)_パスワードスキップ日時:Datetime // Local :userInfo_password_skip_datetime:Datetime
userInfo_pwdSkipDt: function (data) { userInfo_pwdSkipDt: function (data) {
if (arguments.length > 0) { if (arguments.length > 0) {
COMMON.operateData(arguments, CONSTANT.KEYS.userInfo_pwdSkipDt, undefined); COMMON.operateData(arguments, CONSTANT.KEYS.userInfo_pwdSkipDt, undefined);
...@@ -368,7 +375,7 @@ var ClientData = { ...@@ -368,7 +375,7 @@ var ClientData = {
} }
}, },
// Session :事業者オプション(serviceOpt)_ABookCheck:Char(Y:有効, N:無効) // Session :Business Option (serviceOpt)_ABookCheck:Char(Y:Enable, N:Disable)
serviceOpt_abook_check: function (data) { serviceOpt_abook_check: function (data) {
if (arguments.length > 0) { if (arguments.length > 0) {
SessionStorageUtils.set(CONSTANT.KEYS.serviceOpt_abook_check, data); SessionStorageUtils.set(CONSTANT.KEYS.serviceOpt_abook_check, data);
...@@ -386,7 +393,7 @@ var ClientData = { ...@@ -386,7 +393,7 @@ var ClientData = {
} }
}, },
// Session :事業者オプション(serviceOpt)_初回ログイン時パスワード強制変更:Integer(0:なし, 1:催促, 2:強制) // Session :Business Option(serviceOpt)_Forced password change at first login:Integer(0:None, 1:Prompt, 2:Forced)
serviceOpt_force_pw_change_on_login: function (data) { serviceOpt_force_pw_change_on_login: function (data) {
if (arguments.length > 0) { if (arguments.length > 0) {
SessionStorageUtils.set(CONSTANT.KEYS.serviceOpt_force_pw_change_on_login, data); SessionStorageUtils.set(CONSTANT.KEYS.serviceOpt_force_pw_change_on_login, data);
...@@ -395,7 +402,7 @@ var ClientData = { ...@@ -395,7 +402,7 @@ var ClientData = {
} }
}, },
// Session :事業者オプション(serviceOpt)_定期ログイン時パスワード強制変更:Integer(0:なし, 1:催促, 2:強制) // Session :Business Option(serviceOpt)_Forced password change at regular login:Integer(0:None, 1:Prompt, 2:Forced)
serviceOpt_force_pw_change_periodically: function (data) { serviceOpt_force_pw_change_periodically: function (data) {
if (arguments.length > 0) { if (arguments.length > 0) {
SessionStorageUtils.set(CONSTANT.KEYS.serviceOpt_force_pw_change_periodically, data); SessionStorageUtils.set(CONSTANT.KEYS.serviceOpt_force_pw_change_periodically, data);
...@@ -404,7 +411,7 @@ var ClientData = { ...@@ -404,7 +411,7 @@ var ClientData = {
} }
}, },
// Session :事業者オプション(serviceOpt)_任意のプッシュメッセージ:Char(Y:可能, N:不可) // Session :Business option (serviceOpt)_arbitrary push message:Char(Y:possible, N:not possible)
serviceOpt_usable_push_message: function (data) { serviceOpt_usable_push_message: function (data) {
if (arguments.length > 0) { if (arguments.length > 0) {
SessionStorageUtils.set(CONSTANT.KEYS.serviceOpt_usable_push_message, data); SessionStorageUtils.set(CONSTANT.KEYS.serviceOpt_usable_push_message, data);
...@@ -454,7 +461,7 @@ UserSetting.prototype.load = function () { ...@@ -454,7 +461,7 @@ UserSetting.prototype.load = function () {
if (storage) { if (storage) {
var value = storage.getItem(this.US_KEY); var value = storage.getItem(this.US_KEY);
if (!value) { if (!value) {
value = '{}'; // 空JSON文字列 value = '{}'; // empty JSON string
} }
js = JSON.parse(value); js = JSON.parse(value);
} }
...@@ -462,9 +469,7 @@ UserSetting.prototype.load = function () { ...@@ -462,9 +469,7 @@ UserSetting.prototype.load = function () {
}; };
/* store user setting */ /* store user setting */
UserSetting.prototype.set = function (key, value) { UserSetting.prototype.set = function (key, value) {
//if(!this.userSetting) {
this.userSetting = this.load(); this.userSetting = this.load();
//}
var values = this.userSetting; var values = this.userSetting;
if (!values) { if (!values) {
values = { key: value }; values = { key: value };
...@@ -480,9 +485,7 @@ UserSetting.prototype.set = function (key, value) { ...@@ -480,9 +485,7 @@ UserSetting.prototype.set = function (key, value) {
}; };
/* grab user setting */ /* grab user setting */
UserSetting.prototype.get = function (key) { UserSetting.prototype.get = function (key) {
//if(!this.userSetting) {
this.userSetting = this.load(); this.userSetting = this.load();
//}
var values = this.userSetting; var values = this.userSetting;
if (values) { if (values) {
return values[key]; return values[key];
...@@ -505,7 +508,7 @@ UserSetting.prototype.show = function (elmid) { ...@@ -505,7 +508,7 @@ UserSetting.prototype.show = function (elmid) {
$(elmid).html(tags); $(elmid).html(tags);
} }
}; };
/* ユーザ設定のキーリストを取得 */ /* Retrieve a list of user-set keys */
UserSetting.prototype.keys = function () { UserSetting.prototype.keys = function () {
var storage = window.localStorage; var storage = window.localStorage;
var keyList = []; var keyList = [];
...@@ -522,7 +525,7 @@ UserSetting.prototype.keys = function () { ...@@ -522,7 +525,7 @@ UserSetting.prototype.keys = function () {
} }
return null; return null;
}; };
/* ユーザ設定を削除 */ /* Delete user settings */
UserSetting.prototype.remove = function (key) { UserSetting.prototype.remove = function (key) {
var storage = window.localStorage; var storage = window.localStorage;
if (storage) { if (storage) {
...@@ -536,7 +539,7 @@ UserSetting.prototype.remove = function (key) { ...@@ -536,7 +539,7 @@ UserSetting.prototype.remove = function (key) {
} }
} }
}; };
/* ユーザ設定をすべて削除 */ /* Delete all user settings */
UserSetting.prototype.removeAll = function () { UserSetting.prototype.removeAll = function () {
var storage = window.localStorage; var storage = window.localStorage;
if (storage) { if (storage) {
...@@ -628,7 +631,7 @@ UserSession.prototype.show = function (elmid) { ...@@ -628,7 +631,7 @@ UserSession.prototype.show = function (elmid) {
/* Initialize system */ /* Initialize system */
$(function () { $(function () {
// システム設定ファイルの配置先パスの決定 // Determine the path where the system configuration files are located
var location = window.location.toString().toLowerCase(); var location = window.location.toString().toLowerCase();
...@@ -639,7 +642,7 @@ $(function () { ...@@ -639,7 +642,7 @@ $(function () {
sysFile = '../common/json/sys/conf.json'; sysFile = '../common/json/sys/conf.json';
} }
// システム設定ファイルを読み込む // Read the system configuration file
$.ajax({ $.ajax({
url: sysFile, url: sysFile,
async: false, async: false,
...@@ -655,10 +658,10 @@ $(function () { ...@@ -655,10 +658,10 @@ $(function () {
}, },
}); });
// ロード時に一旦エラー状態をクリアしておく // Clear error conditions once at load time.
COMMON.clearError(); COMMON.clearError();
//#31919 【調査】商談支援システム GoogleChromeでビッチイン・アウトが効かない //#31919 [Investigation] Business meeting support system GoogleChrome does not work with Bitch in/out.
navigator.pointerEnabled = navigator.maxTouchPoints > 0; // Edge 17 touch support workaround navigator.pointerEnabled = navigator.maxTouchPoints > 0; // Edge 17 touch support workaround
document.documentElement.ontouchstart = navigator.maxTouchPoints > 0 ? function () {} : undefined; // Chrome 70 touch support workaround document.documentElement.ontouchstart = navigator.maxTouchPoints > 0 ? function () {} : undefined; // Chrome 70 touch support workaround
}); });
...@@ -695,14 +698,14 @@ COMMON.lockLayout = function () { ...@@ -695,14 +698,14 @@ COMMON.lockLayout = function () {
} }
}; };
/* エラー状態をクリア */ /* Clear error condition */
COMMON.clearError = function () { COMMON.clearError = function () {
var session = window.sessionStorage; var session = window.sessionStorage;
if (session) { if (session) {
session.setItem(COMMON.hasErrorKey, false); session.setItem(COMMON.hasErrorKey, false);
} }
}; };
/* エラー状態を取得 */ /* Get error status */
COMMON.hasError = function () { COMMON.hasError = function () {
var session = window.sessionStorage; var session = window.sessionStorage;
var isError = false; var isError = false;
...@@ -711,20 +714,14 @@ COMMON.hasError = function () { ...@@ -711,20 +714,14 @@ COMMON.hasError = function () {
} }
return isError == 'true'; return isError == 'true';
}; };
/* エラー状態にセット */ /* Set to error condition */
COMMON.setErrorState = function () { COMMON.setErrorState = function () {
var session = window.sessionStorage; var session = window.sessionStorage;
if (session) { if (session) {
session.setItem(COMMON.hasErrorKey, true); session.setItem(COMMON.hasErrorKey, true);
} }
}; };
///* get user environment object */
//function avwUserEnv() {
// if(COMMON.avwUserEnvObj == null) {
// COMMON.avwUserEnvObj = new UserEnvironment();
// }
// return COMMON.avwUserEnvObj;
//};
/* get user session object */ /* get user session object */
COMMON.userSession = function () { COMMON.userSession = function () {
if (!COMMON.userSessionObj) { if (!COMMON.userSessionObj) {
...@@ -872,12 +869,11 @@ COMMON.getUrlParam = function (name, url) { ...@@ -872,12 +869,11 @@ COMMON.getUrlParam = function (name, url) {
if (results == null) { if (results == null) {
return ''; return '';
} else { } else {
// alert("results[0]:" + results[0]);
// alert("results[1]:" + results[1]);
return results[1]; return results[1];
} }
}; };
// Toogle Logout Nortice
COMMON.ToogleLogoutNortice = function () { COMMON.ToogleLogoutNortice = function () {
window.onbeforeunload = function (event) { window.onbeforeunload = function (event) {
var message = I18N.i18nText('sysInfoWithoutLogout'); var message = I18N.i18nText('sysInfoWithoutLogout');
......
...@@ -66,7 +66,6 @@ CONSTANT.URL = { ...@@ -66,7 +66,6 @@ CONSTANT.URL = {
PUSH_MESSAGE_LIST: 'pushMessageList/', PUSH_MESSAGE_LIST: 'pushMessageList/',
SEND_PUSH_MESSAGE: 'sendPushMessage/', SEND_PUSH_MESSAGE: 'sendPushMessage/',
IS_QUICK_REPORT: 'getOperationData/isQuickReport', IS_QUICK_REPORT: 'getOperationData/isQuickReport',
}, },
HTML: { HTML: {
BASE: 'html/', BASE: 'html/',
...@@ -136,35 +135,3 @@ CONSTANT.KEYS = { ...@@ -136,35 +135,3 @@ CONSTANT.KEYS = {
// Local: // Local:
JumpQueue: 'JumpQueue', JumpQueue: 'JumpQueue',
}; };
CONSTANT.MSG_MAP = {
all: { ja: '全て', ko: '전체', en: 'All' },
dateError: { ja: '開始日は終了日の前に設定してください。', ko: '잘못된 검색일입니다.', en: 'Please enter correct search date.' },
operationListTitle: { ja: 'トップページ|A Book Check', ko: '톱 페이지|A Book Check', en: 'Top Page|A Book Check' },
buttonCategory: { ja: 'カテゴリー', ko: '카테고리', en: 'Category' },
buttonRefresh: { ja: '更新', ko: '갱신', en: 'Refresh' },
buttonBack: { ja: '戻る', ko: 'Back', en: 'Back' },
placeholderOperationName: { ja: '作業名', ko: '작업명', en: 'Working Name' },
labelPeriod: { ja: '期間', ko: '기간', en: 'Period' },
labelStartDate: { ja: '開始日', ko: '시작일', en: 'Start date' },
labelEndDate: { ja: '終了日', ko: '종료일', en: 'End date' },
placeholderSelect: { ja: '選択', ko: '선택', en: 'Choice' },
labelSort: { ja: '並び替え', ko: '정렬', en: 'Sort' },
labelSortName: { ja: '作業名順', ko: '작업명순', en: 'By working name' },
labelSortNew: { ja: '作業期間が新しい順', ko: '작업기간이 최신순', en: 'By newest period' },
labelSortOld: { ja: '作業期間が古い順', ko: '작업기간이 오래된순', en: 'By oldest period' },
labelSortOpen: { ja: '閲覧日が新しい順', ko: '열람순', en: 'By newest viewing date' },
labelReset: { ja: 'クリア', ko: '클리어', en: 'Clear' },
headerItemName: { ja: '作業名', ko: '작업명', en: 'Working Name' },
headerStartDate: { ja: '開始日', ko: '시작일', en: 'Start date' },
headerEndDate: { ja: '終了日', ko: '종료일', en: 'End date' },
buttonHome: { ja: 'ホーム', ko: '홈', en: 'Home' },
buttonSetting: { ja: '設定', ko: '설정', en: 'Setting' },
buttonOperationList: { ja: '作業一覧', ko: '작업일람', en: 'Operations List' },
operationListHeaderTitle: { ja: '作業一覧', ko: '작업일람', en: 'Operations List' },
buttonDashboard: { ja: 'ダッシュボード', ko: '대시보드', en: 'Dashboard' },
buttonDashboardSetting: { ja: '設定', ko: '설정', en: 'Setting' },
Processing_w_dot: { ja: '処理中...', ko: '처리중', en: 'Processing...' },
errorCommunicationFailed: { ja: '通信エラーが発生しました', ko: '통신 오류가 발생했습니다', en: 'A communication error has occurred' },
errorOccurred: { ja: 'エラーが発生しました', ko: '오류가 발생했습니다', en: 'Error Occurred' },
};
/**
* js for event behavior
*
* @since cms:1.4.3.2&1.4.3.3 web:1.0
*/
$(function () { $(function () {
hide_del_btn(); hide_del_btn();
}); });
......
/** /**
* ABook Viewer for WEB * ABook Viewer for WEB
* 国際化(言語切替)対応共通処理 * Common processing for internationalization (language switching)
* *
* 言語リソースファイルは、指定する言語に合わせて以下のファイルを修正する * For language resource files, modify the following files according to the language you specify
* - 日本語: lang-ja.json * - 日本語: lang-ja.json
* - 韓国語: lang-ko.json * - 韓国語: lang-ko.json
* - 英語 : lang-en.json * - 英語 : lang-en.json
...@@ -10,36 +10,36 @@ ...@@ -10,36 +10,36 @@
* Copyright (C) Agentec Co, Ltd. All rights reserved. * Copyright (C) Agentec Co, Ltd. All rights reserved.
*/ */
//グローバルの名前空間用のオブジェクトを用意する //Prepare objects for the global namespace
var I18N = {}; var I18N = {};
/** /**
* 定数:言語ファイル配置場所 * Constant: Language file location
*/ */
I18N.avwsys_location = ''; I18N.avwsys_location = '';
I18N.avwsys_dir = ''; I18N.avwsys_dir = '';
I18N.avwsys_storagekey = ''; I18N.avwsys_storagekey = '';
I18N.avwsys_currLang = ''; I18N.avwsys_currLang = '';
/* 言語の初期化 */ /* Language initialization */
$(function () { $(function () {
I18N.initi18n(); I18N.initi18n();
}); });
/** 言語リソース設定初期化 */ /** Initialization of language resource settings */
I18N.initi18n = function () { I18N.initi18n = function () {
I18N.avwsys_location = '/common/json/lang'; I18N.avwsys_location = '/common/json/lang';
I18N.avwsys_dir = '/abweb'; I18N.avwsys_dir = '/abweb';
I18N.avwsys_storagekey = 'AVWUS_Lang'; I18N.avwsys_storagekey = 'AVWUS_Lang';
I18N.avwsys_currLang = 'AVW_CurrLang'; I18N.avwsys_currLang = 'AVW_CurrLang';
// ログイン画面/直接アクセス対策 // Login screen/direct access measures
var location = window.location.toString().toLowerCase(); var location = window.location.toString().toLowerCase();
if (location.indexOf(I18N.avwsys_dir) < 0) { if (location.indexOf(I18N.avwsys_dir) < 0) {
// I18N.avwsys_dirディレクトリ配下ではない場合は、I18N.avwsys_dirディレクトリをつける // If not under I18N.avwsys_dir directory, add I18N.avwsys_dir directory
I18N.avwsys_location = '..' + I18N.avwsys_dir + I18N.avwsys_location; I18N.avwsys_location = '..' + I18N.avwsys_dir + I18N.avwsys_location;
} else { } else {
// I18N.avwsys_dirディレクトリ配下の場合は、相対パスに変換 // If under I18N.avwsys_dir directory, convert to relative path
I18N.avwsys_location = '..' + I18N.avwsys_location; I18N.avwsys_location = '..' + I18N.avwsys_location;
} }
...@@ -51,15 +51,15 @@ I18N.initi18n = function () { ...@@ -51,15 +51,15 @@ I18N.initi18n = function () {
lang = I18N.getNavigatorLanguage(); lang = I18N.getNavigatorLanguage();
} }
} }
// 言語ファイルを初期化する // Initialize language files
I18N.loadLanguage(lang); I18N.loadLanguage(lang);
}; };
/* ブラウザの言語設定を取得する */ /* Retrieve browser language settings */
I18N.getNavigatorLanguage = function () { I18N.getNavigatorLanguage = function () {
var lang = navigator.browserLanguage || navigator.language || navigator.userLanguage; var lang = navigator.browserLanguage || navigator.language || navigator.userLanguage;
/* 対応言語 */ /* Languages Supported */
var languages = ['ja', 'ko', 'en']; // 対応言語を増やす場合はここを変更する var languages = ['ja', 'ko', 'en']; // Change here if you want to add more supported languages
if (lang.match(/ja|ko|en/g)) { if (lang.match(/ja|ko|en/g)) {
for (var i = 0; i < languages.length; i++) { for (var i = 0; i < languages.length; i++) {
var index = lang.indexOf(languages[i]); var index = lang.indexOf(languages[i]);
...@@ -69,31 +69,31 @@ I18N.getNavigatorLanguage = function () { ...@@ -69,31 +69,31 @@ I18N.getNavigatorLanguage = function () {
} }
} }
} else { } else {
lang = 'en'; // 対応言語が無ければ英語をデフォルトとする lang = 'en'; // If there is no supported language, English is the default.
} }
return lang; return lang;
}; };
/* 言語リソースファイル読み込み */ /* Language resource file loading */
I18N.loadLanguage = function (lang) { I18N.loadLanguage = function (lang) {
// 引数から言語ファイルを選択 // Select language file from arguments
var langfile = 'lang-' + lang + '.json'; var langfile = 'lang-' + lang + '.json';
// 言語ファイルを読み込む // Read the language file
$.ajax({ $.ajax({
url: I18N.avwsys_location + '/' + langfile, url: I18N.avwsys_location + '/' + langfile,
async: false, async: false,
dataType: 'json', dataType: 'json',
cache: false, cache: false,
success: function (data) { success: function (data) {
// lang属性の書換え // Rewriting the lang attribute
document.documentElement.lang = lang; document.documentElement.lang = lang;
// html の言語データを書換える // Rewrite html language data
var jsonLangData = data; var jsonLangData = data;
I18N.replaceText(jsonLangData); I18N.replaceText(jsonLangData);
// 言語設定、言語データをストレージにキャッシュしておく // Cache language settings and language data in storage
I18N.storeCurrentLanguage(lang, jsonLangData); I18N.storeCurrentLanguage(lang, jsonLangData);
}, },
error: function (xhr, txtStatus, errorThrown) { error: function (xhr, txtStatus, errorThrown) {
...@@ -104,7 +104,7 @@ I18N.loadLanguage = function (lang) { ...@@ -104,7 +104,7 @@ I18N.loadLanguage = function (lang) {
}); });
}; };
/* ページ内のテキストをすべて言語に合わせて置換する */ /* Replace all text on the page with the language */
I18N.replaceText = function (jsonLangData) { I18N.replaceText = function (jsonLangData) {
var itemCount = $('.lang').length; var itemCount = $('.lang').length;
if (itemCount > 0) { if (itemCount > 0) {
...@@ -137,7 +137,7 @@ I18N.replaceText = function (jsonLangData) { ...@@ -137,7 +137,7 @@ I18N.replaceText = function (jsonLangData) {
} }
}; };
/* 現在設定されている言語でHTMLテキストを置き換える */ /* Replace HTML text with the currently set language */
I18N.i18nReplaceText = function () { I18N.i18nReplaceText = function () {
var storage = window.sessionStorage; var storage = window.sessionStorage;
if (storage) { if (storage) {
...@@ -149,7 +149,7 @@ I18N.i18nReplaceText = function () { ...@@ -149,7 +149,7 @@ I18N.i18nReplaceText = function () {
} }
}; };
/* キーから文字列を取得 */ /* Get string from key */
I18N.i18nText = function (key) { I18N.i18nText = function (key) {
var storage = window.sessionStorage; var storage = window.sessionStorage;
if (storage) { if (storage) {
...@@ -162,7 +162,7 @@ I18N.i18nText = function (key) { ...@@ -162,7 +162,7 @@ I18N.i18nText = function (key) {
return 'undefined'; return 'undefined';
}; };
/* 言語データのキー値から文字列を取得 */ /* Obtain strings from key values of language data */
I18N.getLangText = function (jsonLangData, key) { I18N.getLangText = function (jsonLangData, key) {
if (jsonLangData) { if (jsonLangData) {
var text = jsonLangData[key]; var text = jsonLangData[key];
...@@ -171,19 +171,19 @@ I18N.getLangText = function (jsonLangData, key) { ...@@ -171,19 +171,19 @@ I18N.getLangText = function (jsonLangData, key) {
return 'undefined.'; return 'undefined.';
}; };
/* 言語データの切り替え */ /* Switching Language Data */
I18N.changeLanguage = function (lang) { I18N.changeLanguage = function (lang) {
// 言語の切替を行った場合のみ選択言語をストアする // Store the selected language only when switching languages
var storage = window.localStorage; var storage = window.localStorage;
if (storage) { if (storage) {
storage.setItem(I18N.avwsys_storagekey, lang); storage.setItem(I18N.avwsys_storagekey, lang);
} }
// 言語ファイルを読み込み、テキスト文字列を変換する // Reads language files and converts text strings
I18N.loadLanguage(lang); I18N.loadLanguage(lang);
}; };
/* 設定言語の保存 */ /* Save language settings */
I18N.storeCurrentLanguage = function (lang, langData) { I18N.storeCurrentLanguage = function (lang, langData) {
var ss = window.sessionStorage; var ss = window.sessionStorage;
if (ss) { if (ss) {
...@@ -193,7 +193,7 @@ I18N.storeCurrentLanguage = function (lang, langData) { ...@@ -193,7 +193,7 @@ I18N.storeCurrentLanguage = function (lang, langData) {
ss.setItem(I18N.avwsys_currLang, lang); ss.setItem(I18N.avwsys_currLang, lang);
} }
}; };
/* 設定言語の取得 */ /* Retrieving the setting language */
I18N.getCurrentLanguage = function () { I18N.getCurrentLanguage = function () {
var lang; var lang;
var storage = window.sessionStorage; var storage = window.sessionStorage;
......
/* /**
* String utilities [ end ] * String utilities [ end ]
*
* @since cms:1.4.3.2&1.4.3.3 web:1.0
*/ */
// ============================================================================================= // =============================================================================================
// Utils for string, date, number [ end ] // Utils for string, date, number [ end ]
// ============================================================================================= // =============================================================================================
var ValidationUtil = { var ValidationUtil = {
// Required Text // Required Text
CheckRequiredForText : function(value) { CheckRequiredForText: function (value) {
if (value == null || value == '') { if (value == null || value == '') {
return false; return false;
} }
...@@ -17,13 +17,12 @@ var ValidationUtil = { ...@@ -17,13 +17,12 @@ var ValidationUtil = {
}, },
// get byte count // get byte count
GetByteCount : function(value) { GetByteCount: function (value) {
var escapedStr = encodeURI(value); var escapedStr = encodeURI(value);
if (escapedStr.indexOf("%") != -1) { if (escapedStr.indexOf('%') != -1) {
var count = escapedStr.split("%").length - 1; var count = escapedStr.split('%').length - 1;
if (count == 0) if (count == 0) count++; // perverse case; can't happen with real UTF-8
count++; // perverse case; can't happen with real UTF-8 var tmp = escapedStr.length - count * 3;
var tmp = escapedStr.length - (count * 3);
count = count + tmp; count = count + tmp;
} else { } else {
count = escapedStr.length; count = escapedStr.length;
...@@ -32,65 +31,64 @@ var ValidationUtil = { ...@@ -32,65 +31,64 @@ var ValidationUtil = {
}, },
// check text min length // check text min length
CheckMinLengthForByte : function(value, len) { CheckMinLengthForByte: function (value, len) {
if (this.GetByteCount(value) < len) if (this.GetByteCount(value) < len) return false;
return false;
return true; return true;
}, },
// check text max length // check text max length
CheckMaxLengthForByte : function(value, len) { CheckMaxLengthForByte: function (value, len) {
if (this.GetByteCount(value) > len) return false;
if (this.GetByteCount(value) > len)
return false;
return true; return true;
}, },
// check if the text is a number // check if the text is a number
IsNumber : function(value) { IsNumber: function (value) {
var reg = new RegExp("^[0-9]+$"); var reg = new RegExp('^[0-9]+$');
return reg.test(value); return reg.test(value);
}, },
// check if the text is a alphabet // check if the text is a alphabet
IsAlphabet : function(value) { IsAlphabet: function (value) {
var reg = new RegExp("^[a-zA-Z]+$"); var reg = new RegExp('^[a-zA-Z]+$');
return reg.test(value); return reg.test(value);
}, },
// check if the text is a symbol // check if the text is a symbol
IsSymbol : function(value) { IsSymbol: function (value) {
var reg = new RegExp( var reg = new RegExp(
"\u005b\u005e\u0027\u0060\u0027\u007e\u0027\u0021\u0027\u0040\u0027\u0023\u0027\u0024\u0027\u0025\u0027\u005e\u0027\u0026\u0027\u002a\u0027\u0028\u0027\u0029\u0027\u005f\u0027\u002b\u0027\u003d\u0027\u007b\u0027\u007d\u0027\u007c\u0027\u003a\u0027\u0022\u0027\u003b\u0027\u0027\u0027\u003c\u0027\u003e\u0027\u003f\u0027\u002f\u0027\u002e\u0027\u002c\u005c\u002d\u005b\u005c\u005d\u005c\u005c\u005d"); '\u005b\u005e\u0027\u0060\u0027\u007e\u0027\u0021\u0027\u0040\u0027\u0023\u0027\u0024\u0027\u0025\u0027\u005e\u0027\u0026\u0027\u002a\u0027\u0028\u0027\u0029\u0027\u005f\u0027\u002b\u0027\u003d\u0027\u007b\u0027\u007d\u0027\u007c\u0027\u003a\u0027\u0022\u0027\u003b\u0027\u0027\u0027\u003c\u0027\u003e\u0027\u003f\u0027\u002f\u0027\u002e\u0027\u002c\u005c\u002d\u005b\u005c\u005d\u005c\u005c\u005d',
);
return !reg.test(value); return !reg.test(value);
}, },
// check if the text is a emailAddress // check if the text is a emailAddress
CheckEmailValid : function(value) { CheckEmailValid: function (value) {
// Check if string is a valid email address // Check if string is a valid email address
var reg = new RegExp("^[0-9a-zA-Z]+@[0-9a-zA-Z]+[\\.]{1}[0-9a-zA-Z]+[\\.]?[0-9a-zA-Z]+$"); var reg = new RegExp('^[0-9a-zA-Z]+@[0-9a-zA-Z]+[\\.]{1}[0-9a-zA-Z]+[\\.]?[0-9a-zA-Z]+$');
return reg.test(value); return reg.test(value);
}, },
// Password // Password
CheckPasswordValid : function(value) { CheckPasswordValid: function (value) {
// Check if string is a valid email address // Check if string is a valid email address
var reg = new RegExp("^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[#+-\\./:_]).{1,47}$"); var reg = new RegExp('^(?=.*d)(?=.*[a-z])(?=.*[A-Z])(?=.*[#+-\\./:_]).{1,47}$');
return reg.test(value); return reg.test(value);
}, },
// Alphabet + Nunber + Symbol // Alphabet + Nunber + Symbol
IsAlphabetOrNumberOrSymbol : function(value) { IsAlphabetOrNumberOrSymbol: function (value) {
// Check if string is alphabet or number or symbol // Check if string is alphabet or number or symbol
var reg = new RegExp( var reg = new RegExp(
"\u005b\u005e\u0061\u002d\u007a\u0041\u002d\u005a\u0030\u002d\u0039\u0027\u0060\u0027\u007e\u0027\u0021\u0027\u0040\u0027\u0023\u0027\u0024\u0027\u0025\u0027\u005e\u0027\u0026\u0027\u002a\u0027\u0028\u0027\u0029\u0027\u005f\u0027\u002b\u0027\u003d\u0027\u007b\u0027\u007d\u0027\u007c\u0027\u003a\u0027\u0022\u0027\u003b\u0027\u0027\u0027\u003c\u0027\u003e\u0027\u003f\u0027\u002f\u0027\u002e\u0027\u002c\u005c\u002d\u005b\u005c\u005d\u005c\u005c\u005d"); '\u005b\u005e\u0061\u002d\u007a\u0041\u002d\u005a\u0030\u002d\u0039\u0027\u0060\u0027\u007e\u0027\u0021\u0027\u0040\u0027\u0023\u0027\u0024\u0027\u0025\u0027\u005e\u0027\u0026\u0027\u002a\u0027\u0028\u0027\u0029\u0027\u005f\u0027\u002b\u0027\u003d\u0027\u007b\u0027\u007d\u0027\u007c\u0027\u003a\u0027\u0022\u0027\u003b\u0027\u0027\u0027\u003c\u0027\u003e\u0027\u003f\u0027\u002f\u0027\u002e\u0027\u002c\u005c\u002d\u005b\u005c\u005d\u005c\u005c\u005d',
);
return !reg.test(value); return !reg.test(value);
}, },
// Get the total of types in array // Get the total of types in array
CheckNumberOfTypeInString : function(value) { CheckNumberOfTypeInString: function (value) {
var list = new Array(); var list = new Array();
var c; var c;
for ( var i = 0; i < value.length; i++) { for (var i = 0; i < value.length; i++) {
c = value[i]; c = value[i];
for ( var j = i + 1; j < value.length; j++) { for (var j = i + 1; j < value.length; j++) {
if (value[j] == c) { if (value[j] == c) {
value = value.slice(0, j) + value.slice(j + 1, value.len); value = value.slice(0, j) + value.slice(j + 1, value.len);
j = j - 1; j = j - 1;
...@@ -99,63 +97,61 @@ var ValidationUtil = { ...@@ -99,63 +97,61 @@ var ValidationUtil = {
list[i] = c; list[i] = c;
} }
var count = list.length; var count = list.length;
return count return count;
}, },
// Special character: * // Special character: *
IsCharacterSpecial : function(value) { IsCharacterSpecial: function (value) {
for ( var i = 0; i < value.length; i++) { for (var i = 0; i < value.length; i++) {
if (value[i] == '*') if (value[i] == '*') return true;
return true;
} }
return false; return false;
}, },
// Symbol check for password // Symbol check for password
IsPasswordSymbol : function(value) { IsPasswordSymbol: function (value) {
var reg = new RegExp("\u005b\u005e\u0027\u0023\u0027\u002b\u005c\u002d\u0027\u002e\u0027\u002f\u0027\u003a\u0027\u005f\u005d"); var reg = new RegExp('\u005b\u005e\u0027\u0023\u0027\u002b\u005c\u002d\u0027\u002e\u0027\u002f\u0027\u003a\u0027\u005f\u005d');
return !reg.test(value); return !reg.test(value);
}, },
// text check for password(Alphabet Or Number Or Symbol) // text check for password(Alphabet Or Number Or Symbol)
IsPasswordAlphabetOrNumberOrSymbol : function(value) { IsPasswordAlphabetOrNumberOrSymbol: function (value) {
var reg = new RegExp("\u005b\u005e\u0061\u002d\u007a\u0041\u002d\u005a\u0030\u002d\u0039\u0027\u0023\u0027\u002b\u005c\u002d\u0027\u002e\u0027\u002f\u0027\u003a\u0027\u005f\u005d"); var reg = new RegExp('\u005b\u005e\u0061\u002d\u007a\u0041\u002d\u005a\u0030\u002d\u0039\u0027\u0023\u0027\u002b\u005c\u002d\u0027\u002e\u0027\u002f\u0027\u003a\u0027\u005f\u005d');
return !reg.test(value); return !reg.test(value);
}, },
// Check at consecutive characters // Check at consecutive characters
HasSeqChar : function(str, num) { HasSeqChar: function (str, num) {
var count = 0; var count = 0;
var prev = 0; var prev = 0;
for (var i = 0; i < str.length; i++) { for (var i = 0; i < str.length; i++) {
var c = str.charAt(i); var c = str.charAt(i);
if (i > 0 && prev == c) { if (i > 0 && prev == c) {
count++; count++;
if (count == num - 1) { if (count == num - 1) {
return true; return true;
} }
} } else {
else { count = 0;
count = 0; }
} prev = c;
prev = c; }
}
return false; return false;
}, },
// Check same characters in text // Check same characters in text
ContainSameSeqChar : function(str1, str2, num) { ContainSameSeqChar: function (str1, str2, num) {
if (str2.length < num || str1.length < num) { if (str2.length < num || str1.length < num) {
return false; return false;
} }
for (var i = 0; i <= str2.length - num; i++) { for (var i = 0; i <= str2.length - num; i++) {
var target = str2.substring(i, i + num); var target = str2.substring(i, i + num);
if (str1.contains(target)) { if (str1.contains(target)) {
return true; return true;
} }
} }
return false; return false;
} },
}; };
\ No newline at end of file
...@@ -14,13 +14,6 @@ OL.isOperationGroupMaster = 0; //0: category(operationGroupMaster) not exist 1: ...@@ -14,13 +14,6 @@ OL.isOperationGroupMaster = 0; //0: category(operationGroupMaster) not exist 1:
OL.sortIndex; OL.sortIndex;
OL.operationGroupMasterId; OL.operationGroupMasterId;
OL.REPORT_TYPE = {
REPORTONLY: 0, //report only
INSPECT: 1, //rountine
WITHREPLY: 2, // report answer
WORKFLOW: 3, // continuous
};
/** /**
* process on page load. * process on page load.
* 1.get all data. * 1.get all data.
......
...@@ -18,6 +18,9 @@ PP.init = function () { ...@@ -18,6 +18,9 @@ PP.init = function () {
COMMON.closeLoading(); COMMON.closeLoading();
}; };
/**
* load common
*/
PP.loadCommon = function () { PP.loadCommon = function () {
$('#includedHeader').load('../common/html/header.html', function () { $('#includedHeader').load('../common/html/header.html', function () {
I18N.initi18n(); I18N.initi18n();
...@@ -28,6 +31,9 @@ PP.loadCommon = function () { ...@@ -28,6 +31,9 @@ PP.loadCommon = function () {
}); });
}; };
/**
* init pdf list
*/
PP.initPdfList = function () { PP.initPdfList = function () {
if (sessionStorage.OL_operationId) { if (sessionStorage.OL_operationId) {
let params = {}; let params = {};
......
...@@ -15,6 +15,9 @@ RF.init = function () { ...@@ -15,6 +15,9 @@ RF.init = function () {
COMMON.closeLoading(); COMMON.closeLoading();
}; };
/**
* load common
*/
RF.loadCommon = function () { RF.loadCommon = function () {
$('#includedHeader').load('../common/html/header.html', function () { $('#includedHeader').load('../common/html/header.html', function () {
I18N.initi18n(); I18N.initi18n();
...@@ -25,6 +28,9 @@ RF.loadCommon = function () { ...@@ -25,6 +28,9 @@ RF.loadCommon = function () {
}); });
}; };
/**
* iinit form view
*/
RF.initFormView = function () { RF.initFormView = function () {
const urlParameterList = COMMON.getUrlParameter(); const urlParameterList = COMMON.getUrlParameter();
const operationId = urlParameterList['operationId']; const operationId = urlParameterList['operationId'];
......
...@@ -16,6 +16,9 @@ RL.init = function () { ...@@ -16,6 +16,9 @@ RL.init = function () {
COMMON.closeLoading(); COMMON.closeLoading();
}; };
/**
* load common
*/
RL.loadCommon = function () { RL.loadCommon = function () {
TEMPLATE.loadHearder('#includedHeader'); TEMPLATE.loadHearder('#includedHeader');
TEMPLATE.loadConfirmModal('#includedConfirmModal'); TEMPLATE.loadConfirmModal('#includedConfirmModal');
...@@ -33,6 +36,9 @@ RL.loadCommon = function () { ...@@ -33,6 +36,9 @@ RL.loadCommon = function () {
RL.isQuickReport; RL.isQuickReport;
/**
* check quick report
*/
RL.checkQuickReport = function () { RL.checkQuickReport = function () {
if (sessionStorage.OL_operationId) { if (sessionStorage.OL_operationId) {
let params = {}; let params = {};
...@@ -58,6 +64,9 @@ RL.checkQuickReport = function () { ...@@ -58,6 +64,9 @@ RL.checkQuickReport = function () {
} }
}; };
/**
* init task report list
*/
RL.initTaskReportList = function () { RL.initTaskReportList = function () {
if (sessionStorage.OL_operationId) { if (sessionStorage.OL_operationId) {
let params = {}; let params = {};
...@@ -72,6 +81,9 @@ RL.initTaskReportList = function () { ...@@ -72,6 +81,9 @@ RL.initTaskReportList = function () {
} }
}; };
/**
* load main title callcack
*/
RL.loadMainTitleCallback = function () { RL.loadMainTitleCallback = function () {
//add dashboard setting item //add dashboard setting item
if (RL.isQuickReport) { if (RL.isQuickReport) {
...@@ -83,6 +95,9 @@ RL.loadMainTitleCallback = function () { ...@@ -83,6 +95,9 @@ RL.loadMainTitleCallback = function () {
} }
}; };
/**
* go pdf print
*/
RL.goPdfPrint = function () { RL.goPdfPrint = function () {
COMMON.avwScreenMove('pdfPrint.html'); COMMON.avwScreenMove('pdfPrint.html');
}; };
...@@ -96,11 +96,20 @@ SendMessage.postMessage = function (message, operationId, sendType) { ...@@ -96,11 +96,20 @@ SendMessage.postMessage = function (message, operationId, sendType) {
); );
}; };
/**
* operation selected callback
* @param {Number} operationId
* @param {*} operationName
*/
SendMessage.operationSelectedCallback = function (operationId, operationName) { SendMessage.operationSelectedCallback = function (operationId, operationName) {
$('#operationSelected').attr('data-operation-id', operationId); $('#operationSelected').attr('data-operation-id', operationId);
$('#operationSelected').text(operationName); $('#operationSelected').text(operationName);
}; };
/**
* template selected callback
* @param {*} template
*/
SendMessage.templateSelectedCallback = function (template) { SendMessage.templateSelectedCallback = function (template) {
$('#messageContent').val(template); $('#messageContent').val(template);
}; };
......
...@@ -86,6 +86,10 @@ SETTINGS.dspPwdUpd1_Click = function (e) { ...@@ -86,6 +86,10 @@ SETTINGS.dspPwdUpd1_Click = function (e) {
} }
}; };
/**
* password change success
* @param {*} data
*/
SETTINGS.avwCmsApi_passwordChange_success = function (data) { SETTINGS.avwCmsApi_passwordChange_success = function (data) {
// OK // OK
var msgError = $('#main-error-message'); var msgError = $('#main-error-message');
...@@ -102,6 +106,13 @@ SETTINGS.avwCmsApi_passwordChange_success = function (data) { ...@@ -102,6 +106,13 @@ SETTINGS.avwCmsApi_passwordChange_success = function (data) {
COMMON.displayAlert('msgPwdChangeOK'); COMMON.displayAlert('msgPwdChangeOK');
} }
}; };
/**
* password change fail
* @param {*} xhr
* @param {*} b
* @param {*} c
*/
SETTINGS.avwCmsApi_passwordChange_fail = function (xhr, b, c) { SETTINGS.avwCmsApi_passwordChange_fail = function (xhr, b, c) {
/* show error messages */ /* show error messages */
var msgError = $('#main-error-message'); var msgError = $('#main-error-message');
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment