Commit e5faafe3 by onuma

Merge branch 'develop'

# Conflicts:
#	gradle.properties
parents b24499e2 9ce58792
...@@ -9,6 +9,7 @@ import java.util.ArrayList; ...@@ -9,6 +9,7 @@ import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Locale;
import java.util.Observer; import java.util.Observer;
import jp.agentec.abook.abv.bl.acms.client.json.AcmsBooleanResultJSON; import jp.agentec.abook.abv.bl.acms.client.json.AcmsBooleanResultJSON;
...@@ -45,6 +46,7 @@ import jp.agentec.abook.abv.bl.acms.client.json.RoomListJSON; ...@@ -45,6 +46,7 @@ import jp.agentec.abook.abv.bl.acms.client.json.RoomListJSON;
import jp.agentec.abook.abv.bl.acms.client.json.SceneEntryJSON; import jp.agentec.abook.abv.bl.acms.client.json.SceneEntryJSON;
import jp.agentec.abook.abv.bl.acms.client.json.ServerTimeZoneJSON; import jp.agentec.abook.abv.bl.acms.client.json.ServerTimeZoneJSON;
import jp.agentec.abook.abv.bl.acms.client.json.ServiceOptionsJSON; import jp.agentec.abook.abv.bl.acms.client.json.ServiceOptionsJSON;
import jp.agentec.abook.abv.bl.acms.client.json.TermsOfUseJson;
import jp.agentec.abook.abv.bl.acms.client.json.UnreadCountJSON; import jp.agentec.abook.abv.bl.acms.client.json.UnreadCountJSON;
import jp.agentec.abook.abv.bl.acms.client.json.UserInviteResultJSON; import jp.agentec.abook.abv.bl.acms.client.json.UserInviteResultJSON;
import jp.agentec.abook.abv.bl.acms.client.json.WorkerGroupJSON; import jp.agentec.abook.abv.bl.acms.client.json.WorkerGroupJSON;
...@@ -1097,6 +1099,19 @@ public class AcmsClient implements AcmsClientResponseListener { ...@@ -1097,6 +1099,19 @@ public class AcmsClient implements AcmsClientResponseListener {
HttpResponse response = send(AcmsApis.ApiDeleteProcess, params); HttpResponse response = send(AcmsApis.ApiDeleteProcess, params);
validateHttpResponse(response, AcmsApis.ApiGetPushMessages); validateHttpResponse(response, AcmsApis.ApiGetPushMessages);
} }
/**
* 利用規約に同意するかの文言を取得します
* @param url 取得するためのURL
* @return 文言を格納したJSON
*/
public TermsOfUseJson getTermsOfServiceText(String url) throws NetworkDisconnectedException, AcmsException {
String requestUrl = url + "?language=" + Locale.getDefault().getLanguage();
HttpResponse response = AcmsClient.getInstance(ABVEnvironment.getInstance().networkAdapter).send(requestUrl, "", null);
return new TermsOfUseJson(response.httpResponseBody);
}
/**********************************************************************************************/ /**********************************************************************************************/
/** 以下、共用メソッド---------------------------------------------------------------------- **/ /** 以下、共用メソッド---------------------------------------------------------------------- **/
/**********************************************************************************************/ /**********************************************************************************************/
......
package jp.agentec.abook.abv.bl.acms.client.json;
import org.json.adf.JSONException;
import org.json.adf.JSONObject;
import jp.agentec.abook.abv.bl.common.exception.AcmsException;
import jp.agentec.abook.abv.bl.common.exception.JSONValidationException;
/**
* 利用規約に同意するで取得するテキストを格納するJSON
*/
public class TermsOfUseJson extends AcmsCommonJSON {
public String message;
public TermsOfUseJson(String jsonString) throws AcmsException {
super(jsonString);
}
@Override
protected void parse(JSONObject json) throws JSONValidationException, JSONException {
super.parse(json);
message = getString(json, "message", null);
}
}
...@@ -63,6 +63,11 @@ public class ABVEnvironment { ...@@ -63,6 +63,11 @@ public class ABVEnvironment {
public int resourcePatternType; public int resourcePatternType;
public boolean operationGroupMasterClearFlg; public boolean operationGroupMasterClearFlg;
// 利用規約に同意するのテキストがあるURL
public String agreeToTermsOfUseUrl = "";
// プライバシーポリシーURL
public String privacyPolicyUrl;
////////////////////////////// 定数 ////////////////////////////////// ////////////////////////////// 定数 //////////////////////////////////
......
...@@ -3,6 +3,7 @@ package jp.agentec.abook.abv.bl.logic; ...@@ -3,6 +3,7 @@ package jp.agentec.abook.abv.bl.logic;
import java.util.List; import java.util.List;
import jp.agentec.abook.abv.bl.acms.client.AcmsClient; import jp.agentec.abook.abv.bl.acms.client.AcmsClient;
import jp.agentec.abook.abv.bl.acms.client.json.TermsOfUseJson;
import jp.agentec.abook.abv.bl.acms.client.parameters.AcmsParameters; import jp.agentec.abook.abv.bl.acms.client.parameters.AcmsParameters;
import jp.agentec.abook.abv.bl.acms.type.SecurityPolicyType; import jp.agentec.abook.abv.bl.acms.type.SecurityPolicyType;
import jp.agentec.abook.abv.bl.acms.type.ServiceOption.ServiceOptionId; import jp.agentec.abook.abv.bl.acms.type.ServiceOption.ServiceOptionId;
...@@ -354,4 +355,19 @@ public class ContractLogic extends AbstractLogic { ...@@ -354,4 +355,19 @@ public class ContractLogic extends AbstractLogic {
public static boolean getBooleanValue(String value) { public static boolean getBooleanValue(String value) {
return True.equals(value); return True.equals(value);
} }
/**
* 利用規約の詳細文を取得する
* @param url 取得しに行くURL
* @return 取得した文字列(失敗したらnullが返る)
*/
public String getTermsOfServiceText(String url) {
try {
TermsOfUseJson response = AcmsClient.getInstance(ABVEnvironment.getInstance().networkAdapter).getTermsOfServiceText(url);
return response.message;
} catch (Exception e) {
Logger.e(TAG,"" + e);
}
return null;
}
} }
...@@ -56,6 +56,11 @@ android { ...@@ -56,6 +56,11 @@ android {
resValue("integer", "push_message", "${push_message}") resValue("integer", "push_message", "${push_message}")
resValue("integer", "check_app_update", "${check_app_update}") resValue("integer", "check_app_update", "${check_app_update}")
resValue("integer", "not_delete_all_contents", "${not_delete_all_contents}") resValue("integer", "not_delete_all_contents", "${not_delete_all_contents}")
// privacy policy
resValue("string", "privacy_policy_url", "${privacy_policy_url}")
// 利用規約
resValue("string", "agree_to_terms_of_use_url", "${agree_to_terms_of_use_url}")
} }
sourceSets { sourceSets {
main { main {
......
...@@ -208,6 +208,7 @@ ...@@ -208,6 +208,7 @@
<string name="E128">ライセンス情報の取得に失敗しました。</string> <string name="E128">ライセンス情報の取得に失敗しました。</string>
<string name="E129">パスワード に誤りがあります。</string> <string name="E129">パスワード に誤りがあります。</string>
<string name="E130">リンクは無効です。</string> <string name="E130">リンクは無効です。</string>
<string name="E132">利用規約に同意してください。</string>
<string name="L001">入力された情報に誤りがあります。\nユーザアカウントをご確認の上、再度ログインしてください。(L001)</string> <string name="L001">入力された情報に誤りがあります。\nユーザアカウントをご確認の上、再度ログインしてください。(L001)</string>
<string name="L002">この端末のIDは既に他のユーザアカウントに利用されています。\n管理者へお問い合わせください。(L002)</string> <string name="L002">この端末のIDは既に他のユーザアカウントに利用されています。\n管理者へお問い合わせください。(L002)</string>
...@@ -1508,4 +1509,9 @@ ...@@ -1508,4 +1509,9 @@
<string name="btn_communication">コミュニケーション</string> <string name="btn_communication">コミュニケーション</string>
<string name="btn_setting">設定</string> <string name="btn_setting">設定</string>
<string name="btn_print">PDF</string> <string name="btn_print">PDF</string>
<string name="msg_oz_report_cancel">キャンセルした場合入力内容は破棄されます。よろしいですか?</string>
<string name="privacy_policy">プライバシーポリシー</string>
<string name="msg_agree_to_terms_of_use">利用規約に同意する</string>
<string name="clickable_detail_button">(詳細)</string>
<string name="err_gert_term_of_use_text">利用規約の取得に失敗しました。ネットワークの接続状態を確認してください。</string>
</resources> </resources>
...@@ -209,6 +209,7 @@ ...@@ -209,6 +209,7 @@
<string name="E128">라이선스 정보를 표시할 수 없습니다.</string> <string name="E128">라이선스 정보를 표시할 수 없습니다.</string>
<string name="E129">패스워드를 잘못 입력하셨습니다.</string> <string name="E129">패스워드를 잘못 입력하셨습니다.</string>
<string name="E130">링크가 잘못되었습니다.</string> <string name="E130">링크가 잘못되었습니다.</string>
<string name="E132">이용약관에 동의하십시오.</string>
<string name="L001">입력된 정보에 오류가 있습니다.\n로그인 정보를 다시 확인하신 후 로그인해 주십시오.(L001)</string> <string name="L001">입력된 정보에 오류가 있습니다.\n로그인 정보를 다시 확인하신 후 로그인해 주십시오.(L001)</string>
<string name="L002">이 단말기의 ID는 기존의 다른 사용자 계정에 사용되었습니다.\n관리자에게 문의해 주십시오.(L002)</string> <string name="L002">이 단말기의 ID는 기존의 다른 사용자 계정에 사용되었습니다.\n관리자에게 문의해 주십시오.(L002)</string>
...@@ -1513,4 +1514,9 @@ ...@@ -1513,4 +1514,9 @@
<string name="btn_communication">커뮤니케이션</string> <string name="btn_communication">커뮤니케이션</string>
<string name="btn_setting">설정</string> <string name="btn_setting">설정</string>
<string name="btn_print">PDF</string> <string name="btn_print">PDF</string>
<string name="msg_oz_report_cancel">취소할 경우 입력내용은 파기됩니다. 괜찮으시겠습니까?</string>
<string name="privacy_policy">개인정보취급방침</string>
<string name="msg_agree_to_terms_of_use">이용약관에 동의함</string>
<string name="clickable_detail_button">(상세)</string>
<string name="err_gert_term_of_use_text">이용약관을 얻지 못했습니다. 네트워크 연결 상태를 확인해주세요.</string>
</resources> </resources>
\ No newline at end of file
...@@ -208,6 +208,7 @@ ...@@ -208,6 +208,7 @@
<string name="E128">Failed to get license info.</string> <string name="E128">Failed to get license info.</string>
<string name="E129">Password is not correct.</string> <string name="E129">Password is not correct.</string>
<string name="E130">Link is invalid.</string> <string name="E130">Link is invalid.</string>
<string name="E132">Please agree to the terms of use.</string>
<string name="L001">Incorrect information entered. \n Please check the user account, please login again.(L001)</string> <string name="L001">Incorrect information entered. \n Please check the user account, please login again.(L001)</string>
<string name="L002">This device ID is already used in other user accounts. \n Please contact the administrator.(L002)</string> <string name="L002">This device ID is already used in other user accounts. \n Please contact the administrator.(L002)</string>
...@@ -1509,4 +1510,9 @@ ...@@ -1509,4 +1510,9 @@
<string name="btn_communication">Communication</string> <string name="btn_communication">Communication</string>
<string name="btn_setting">Setting</string> <string name="btn_setting">Setting</string>
<string name="btn_print">PDF</string> <string name="btn_print">PDF</string>
<string name="msg_oz_report_cancel">If you cancel, your input will be discarded. Is it OK?</string>
<string name="privacy_policy">Privacy Policy</string>
<string name="msg_agree_to_terms_of_use">I agree to the terms of use</string>
<string name="clickable_detail_button">(detail)</string>
<string name="err_gert_term_of_use_text">Failed to get the terms of use. Check the network connection status.</string>
</resources> </resources>
...@@ -14,7 +14,7 @@ dependencies { ...@@ -14,7 +14,7 @@ dependencies {
implementation files('libs/ozrv_android.jar') implementation files('libs/ozrv_android.jar')
api 'com.google.firebase:firebase-core:11.4.0' api 'com.google.firebase:firebase-core:11.4.0'
api 'com.google.firebase:firebase-messaging:11.4.0' api 'com.google.firebase:firebase-messaging:11.4.0'
api 'com.android.support:appcompat-v7:21.0.+' api 'com.android.support:appcompat-v7:25.0.0'
implementation 'commons-codec:commons-codec:1.10' implementation 'commons-codec:commons-codec:1.10'
implementation 'net.lingala.zip4j:zip4j:1.3.2' implementation 'net.lingala.zip4j:zip4j:1.3.2'
......
...@@ -58,6 +58,11 @@ ...@@ -58,6 +58,11 @@
android:layout="@layout/custom_preference_screen"> android:layout="@layout/custom_preference_screen">
</PreferenceScreen> </PreferenceScreen>
<PreferenceScreen <PreferenceScreen
android:key="privacyPolicy"
android:title="@string/privacy_policy"
android:layout="@layout/custom_preference_screen">
</PreferenceScreen>
<PreferenceScreen
android:key="checkAppUpdate" android:key="checkAppUpdate"
android:title="@string/check_app_update" android:title="@string/check_app_update"
android:layout="@layout/custom_preference_screen"> android:layout="@layout/custom_preference_screen">
......
...@@ -1416,13 +1416,11 @@ public abstract class ABVAuthenticatedActivity extends ABVActivity implements Co ...@@ -1416,13 +1416,11 @@ public abstract class ABVAuthenticatedActivity extends ABVActivity implements Co
} }
return errorMsg.length() > 0 ? errorMsg.toString() : null; return errorMsg.length() > 0 ? errorMsg.toString() : null;
} }
/** /**
* 作業データ受信 * 作業データ受信
* @param operationId * @param operationId 作業ID
* @param progressCallback * @param progressCallback プログレスバー表示用コールバック
* @return * @return 作業更新日
* @throws NetworkDisconnectedException * @throws NetworkDisconnectedException
* @throws ABVException * @throws ABVException
* @throws IOException * @throws IOException
...@@ -1431,6 +1429,22 @@ public abstract class ABVAuthenticatedActivity extends ABVActivity implements Co ...@@ -1431,6 +1429,22 @@ public abstract class ABVAuthenticatedActivity extends ABVActivity implements Co
* @throws ZipException * @throws ZipException
*/ */
public Date receptionTaskData(long operationId, Callback progressCallback, StringBuilder errorMsg) throws NetworkDisconnectedException, ABVException, IOException, InterruptedException, NoSuchAlgorithmException, ZipException { public Date receptionTaskData(long operationId, Callback progressCallback, StringBuilder errorMsg) throws NetworkDisconnectedException, ABVException, IOException, InterruptedException, NoSuchAlgorithmException, ZipException {
return receptionTaskData(operationId, progressCallback, errorMsg, null);
}
/**
* 作業データ受信
* @param operationId 作業ID
* @param progressCallback プログレスバー表示用コールバック
* @param taskKey タスクキー
* @return 作業更新日
* @throws NetworkDisconnectedException
* @throws ABVException
* @throws IOException
* @throws InterruptedException
* @throws NoSuchAlgorithmException
* @throws ZipException
*/
public Date receptionTaskData(long operationId, Callback progressCallback, StringBuilder errorMsg, String taskKey) throws NetworkDisconnectedException, ABVException, IOException, InterruptedException, NoSuchAlgorithmException, ZipException {
GetOperationDataParameters param = new GetOperationDataParameters(ABVDataCache.getInstance().getMemberInfo().sid, operationId); GetOperationDataParameters param = new GetOperationDataParameters(ABVDataCache.getInstance().getMemberInfo().sid, operationId);
OperationDto operationDto = mOperationLogic.getOperation(operationId); OperationDto operationDto = mOperationLogic.getOperation(operationId);
OperationContentDto operationContentDto = mOperationContentDao.getOperationMainContent(operationId); OperationContentDto operationContentDto = mOperationContentDao.getOperationMainContent(operationId);
...@@ -1441,17 +1455,24 @@ public abstract class ABVAuthenticatedActivity extends ABVActivity implements Co ...@@ -1441,17 +1455,24 @@ public abstract class ABVAuthenticatedActivity extends ABVActivity implements Co
OperationDataJSON json = AcmsClient.getInstance(ABVDataCache.getInstance().getUrlPath(), ABVEnvironment.getInstance().networkAdapter).getOpereationData(param); OperationDataJSON json = AcmsClient.getInstance(ABVDataCache.getInstance().getUrlPath(), ABVEnvironment.getInstance().networkAdapter).getOpereationData(param);
//プログレスを40%進行させるための計算 //プログレスを40%進行させるための計算
int progress = 0; float progress = 0;
if (json.taskDtoList.size() != 0) { if (json.taskDtoList.size() != 0) {
progress = 40 / json.taskDtoList.size(); progress = 40f / json.taskDtoList.size();
} }
boolean isRoutineTask = operationDto.reportType == Constant.ReportType.RoutineTask; boolean isRoutineTask = operationDto.reportType == Constant.ReportType.RoutineTask;
List<TaskReportDto> localTaskReportDtoList = null;
if (isRoutineTask) {
localTaskReportDtoList = mTaskReportDao.getTaskReportByOperationId(operationId);
}
float saveProgress = 0;
for (TaskDto serverTaskDto : json.taskDtoList) { for (TaskDto serverTaskDto : json.taskDtoList) {
//報告送信後、そのタスクのみ同期する
if (taskKey != null && !serverTaskDto.taskKey.equals(taskKey)) {
continue;
}
List<TaskReportDto> localTaskReportList = mTaskReportDao.getTaskReportListByTaskKey(serverTaskDto.taskKey); List<TaskReportDto> localTaskReportList = mTaskReportDao.getTaskReportListByTaskKey(serverTaskDto.taskKey);
//報告削除
for (TaskReportDto localTaskReportDto : localTaskReportList) { for (TaskReportDto localTaskReportDto : localTaskReportList) {
if (!isExistsTaskReportInList(serverTaskDto.taskReportDtoList, localTaskReportDto, isRoutineTask)) { if (!isExistsTaskReportInList(serverTaskDto.taskReportDtoList, localTaskReportDto, isRoutineTask)) {
if (isRoutineTask) { if (isRoutineTask) {
...@@ -1467,21 +1488,34 @@ public abstract class ABVAuthenticatedActivity extends ABVActivity implements Co ...@@ -1467,21 +1488,34 @@ public abstract class ABVAuthenticatedActivity extends ABVActivity implements Co
} }
} }
if (isExistsTaskInList(localTaskList, serverTaskDto)) { //タスク更新・追加
// 作業の報告更新 TaskDto localTaskDto = mOperationLogic.getLocalTaskInList(localTaskList, serverTaskDto.taskKey);
mTaskDao.update(serverTaskDto); if (localTaskDto == null) {
localTaskList.remove(serverTaskDto);
} else {
// 作業の報告登録 // 作業の報告登録
mTaskDao.insert(serverTaskDto); mTaskDao.insert(serverTaskDto);
} else {
// 作業の報告更新
if (!mOperationLogic.taskDataSameCheck(localTaskDto, serverTaskDto)) {
mTaskDao.update(serverTaskDto);
}
localTaskList.remove(localTaskDto);
} }
// サーバーからの情報で更新 // サーバーからの情報で更新
//報告更新・追加
for (TaskReportDto serverTaskReportDto : serverTaskDto.taskReportDtoList) { for (TaskReportDto serverTaskReportDto : serverTaskDto.taskReportDtoList) {
String attachedFileName = serverTaskReportDto.attachedFileName; String attachedFileName = serverTaskReportDto.attachedFileName;
TaskReportDto localTaskReportDto; TaskReportDto localTaskReportDto = null;
if (operationDto.reportType == Constant.ReportType.RoutineTask) { if (operationDto.reportType == Constant.ReportType.RoutineTask) {
localTaskReportDto = mTaskReportDao.getRoutineTaskReportUtc(serverTaskReportDto.taskKey, serverTaskReportDto.taskReportId, DateTimeUtil.toString(serverTaskReportDto.reportStartDate, DateTimeFormat.yyyyMMddHHmmss_hyphen)); if (localTaskReportDtoList != null) {
localTaskReportDto = mOperationLogic.getLocalRoutineTaskReportDtoInList(localTaskReportDtoList, serverTaskReportDto.taskKey, serverTaskReportDto.taskReportId, serverTaskReportDto.reportStartDate);
if (localTaskReportDto != null) {
//サーバ側からのデータが変更されているか確認
if (mOperationLogic.taskReportDataSameCheck(localTaskReportDto, serverTaskReportDto)) {
continue;
}
}
}
} else { } else {
localTaskReportDto = mTaskReportDao.selectByTaskKey(serverTaskReportDto.taskKey, serverTaskReportDto.taskReportLevel); localTaskReportDto = mTaskReportDao.selectByTaskKey(serverTaskReportDto.taskKey, serverTaskReportDto.taskReportLevel);
} }
...@@ -1513,6 +1547,9 @@ public abstract class ABVAuthenticatedActivity extends ABVActivity implements Co ...@@ -1513,6 +1547,9 @@ public abstract class ABVAuthenticatedActivity extends ABVActivity implements Co
if (localTaskReportDto != null) { if (localTaskReportDto != null) {
// 報告データが存在すると作業報告を更新する // 報告データが存在すると作業報告を更新する
mOperationLogic.updateRoutineTaskReport(serverTaskDto.operationId, operationContentDto.contentId, serverTaskReportDto, false, false, localTaskReportDto.localSavedFlg); mOperationLogic.updateRoutineTaskReport(serverTaskDto.operationId, operationContentDto.contentId, serverTaskReportDto, false, false, localTaskReportDto.localSavedFlg);
if (localTaskReportDtoList != null) {
localTaskReportDtoList.remove(localTaskReportDto);
}
} else { } else {
mOperationLogic.insertRoutineTaskReport(serverTaskDto.operationId, operationContentDto.contentId, serverTaskReportDto, false, false); mOperationLogic.insertRoutineTaskReport(serverTaskDto.operationId, operationContentDto.contentId, serverTaskReportDto, false, false);
} }
...@@ -1548,19 +1585,28 @@ public abstract class ABVAuthenticatedActivity extends ABVActivity implements Co ...@@ -1548,19 +1585,28 @@ public abstract class ABVAuthenticatedActivity extends ABVActivity implements Co
} }
} }
if (progressCallback != null) { if (progressCallback != null) {
progressCallback.callback(new Integer(progress)); if (progress >= 1) {
progressCallback.callback(new Integer((int)progress));
} else {
saveProgress += progress;
if (saveProgress > 1) {
progressCallback.callback(new Integer((int)saveProgress));
saveProgress = 0f;
}
}
} }
} }
// サーバーから取得した作業情報がローカルに存在しないので削除する // サーバーから取得した作業情報がローカルに存在しないので削除する
if (taskKey == null) {
for (TaskDto taskDto : localTaskList) { for (TaskDto taskDto : localTaskList) {
mOperationLogic.deleteTaskFileData(operationId, operationContentDto.contentId, taskDto.taskKey, Constant.TaskReportLevel.ReportType); mOperationLogic.deleteTaskFileData(operationId, operationContentDto.contentId, taskDto.taskKey, Constant.TaskReportLevel.ReportType);
mTaskDao.delete(taskDto); mTaskDao.delete(taskDto);
} }
}
lastEditDate = json.lastEditDate; lastEditDate = json.lastEditDate;
if (progressCallback != null) { if (progressCallback != null) {
progressCallback.callback(new Integer(40)); progressCallback.callback(new Integer(40));
} }
return lastEditDate; return lastEditDate;
} }
......
...@@ -85,6 +85,8 @@ import jp.agentec.adf.util.DateTimeUtil; ...@@ -85,6 +85,8 @@ import jp.agentec.adf.util.DateTimeUtil;
import jp.agentec.adf.util.FileUtil; import jp.agentec.adf.util.FileUtil;
import jp.agentec.adf.util.StringUtil; import jp.agentec.adf.util.StringUtil;
import static jp.agentec.abook.abv.bl.common.Constant.ReportType.RoutineTask;
public abstract class ABVContentViewActivity extends ABVAuthenticatedActivity { public abstract class ABVContentViewActivity extends ABVAuthenticatedActivity {
protected static GroupLogic groupLogic = AbstractLogic.getLogic(GroupLogic.class); protected static GroupLogic groupLogic = AbstractLogic.getLogic(GroupLogic.class);
...@@ -941,7 +943,7 @@ public abstract class ABVContentViewActivity extends ABVAuthenticatedActivity { ...@@ -941,7 +943,7 @@ public abstract class ABVContentViewActivity extends ABVAuthenticatedActivity {
int taskReportId = 0; int taskReportId = 0;
String reportStartDate = ""; String reportStartDate = "";
if (operationDto.reportType == Constant.ReportType.RoutineTask && abookCheckParam.get(ABookKeys.TASK_REPORT_ID) != null && abookCheckParam.get(ABookKeys.REPORT_START_DATE) != null) { if (operationDto.reportType == RoutineTask && abookCheckParam.get(ABookKeys.TASK_REPORT_ID) != null && abookCheckParam.get(ABookKeys.REPORT_START_DATE) != null) {
taskReportId = Integer.parseInt(abookCheckParam.get(ABookKeys.TASK_REPORT_ID)); taskReportId = Integer.parseInt(abookCheckParam.get(ABookKeys.TASK_REPORT_ID));
reportStartDate = abookCheckParam.get(ABookKeys.REPORT_START_DATE); reportStartDate = abookCheckParam.get(ABookKeys.REPORT_START_DATE);
} }
...@@ -963,10 +965,15 @@ public abstract class ABVContentViewActivity extends ABVAuthenticatedActivity { ...@@ -963,10 +965,15 @@ public abstract class ABVContentViewActivity extends ABVAuthenticatedActivity {
try { try {
if (StringUtil.equalsAny(mCmd, ABookKeys.CMD_INSERT_TASK_REPORT, ABookKeys.CMD_UPDATE_TASK_REPORT)) { if (StringUtil.equalsAny(mCmd, ABookKeys.CMD_INSERT_TASK_REPORT, ABookKeys.CMD_UPDATE_TASK_REPORT)) {
// リソースパターンの適用 // リソースパターンの適用
runOnUiThread(new Runnable() {
@Override
public void run() {
showProgressPopup(PatternStringUtil.patternToString(getApplicationContext(), showProgressPopup(PatternStringUtil.patternToString(getApplicationContext(),
R.string.file_initialization, R.string.file_initialization,
getUserPref(AppDefType.UserPrefKey.RESOURCE_PATTERN_TYPE, 0))); getUserPref(AppDefType.UserPrefKey.RESOURCE_PATTERN_TYPE, 0)));
} }
});
}
//連続作業の全削除ボタンタップ時のインジケーター表示 //連続作業の全削除ボタンタップ時のインジケーター表示
if (StringUtil.equalsAny(mCmd, ABookKeys.CMD_DELETE_PROCESS)) { if (StringUtil.equalsAny(mCmd, ABookKeys.CMD_DELETE_PROCESS)) {
showProgressPopup(PatternStringUtil.patternToString(getApplicationContext(), showProgressPopup(PatternStringUtil.patternToString(getApplicationContext(),
...@@ -1013,12 +1020,20 @@ public abstract class ABVContentViewActivity extends ABVAuthenticatedActivity { ...@@ -1013,12 +1020,20 @@ public abstract class ABVContentViewActivity extends ABVAuthenticatedActivity {
public Object callback(Object ret) { public Object callback(Object ret) {
final boolean isError = (boolean)ret; final boolean isError = (boolean)ret;
closeProgressPopup(); closeProgressPopup();
syncOperation(mOperationId, mReportType, false); //キー項目あり設定時、送信後、同期処理
if (mOperationType == OperationType.LIST) { //リスト作業のみ実行
if (mReportType != RoutineTask) { //定期点検以外
if (mCmd.equals(ABookKeys.CMD_INSERT_TASK_REPORT) || mCmd.equals(ABookKeys.CMD_UPDATE_TASK_REPORT)) {
try { try {
receptionTaskData(mOperationId, null, null, mTaskKey);
mOperationLogic.createJsonForOperationContent(mOperationId, mContentPath, false); mOperationLogic.createJsonForOperationContent(mOperationId, mContentPath, false);
} catch (IOException e) { } catch (Exception e) {
Logger.e(TAG, "createJsonForOperationContent error. " + e);
}
} }
}
}
// 報告・報告(回答)の切り替えボタンタップ、連続作業の全削除ボタンタップ // 報告・報告(回答)の切り替えボタンタップ、連続作業の全削除ボタンタップ
if (mCmd.equals(ABookKeys.CMD_CHANGE_TASK_REPORT) || mCmd.equals(ABookKeys.CMD_DELETE_PROCESS)) { if (mCmd.equals(ABookKeys.CMD_CHANGE_TASK_REPORT) || mCmd.equals(ABookKeys.CMD_DELETE_PROCESS)) {
afterABookCheckApi(mCmd, mTaskKey, 0, "", null, isOperationPdf()); afterABookCheckApi(mCmd, mTaskKey, 0, "", null, isOperationPdf());
......
...@@ -5,6 +5,7 @@ public interface AppDefType { ...@@ -5,6 +5,7 @@ public interface AppDefType {
interface PrefName { interface PrefName {
String USER_PREFERENCE = "user_info"; String USER_PREFERENCE = "user_info";
String AGREE_STATUS = "agree_status";
} }
interface ViewMode{ interface ViewMode{
......
...@@ -26,7 +26,7 @@ public enum ErrorCode { ...@@ -26,7 +26,7 @@ public enum ErrorCode {
E111(R.string.E111), E111(R.string.E111),
E112(R.string.E112), E112(R.string.E112),
E129(R.string.E129), E129(R.string.E129),
E132(R.string.E132),
L001(R.string.L001), L001(R.string.L001),
L002(R.string.L002), L002(R.string.L002),
L003(R.string.L003), L003(R.string.L003),
......
...@@ -139,7 +139,12 @@ public class Initializer { ...@@ -139,7 +139,12 @@ public class Initializer {
} }
env.aspectType = getAspectType(); env.aspectType = getAspectType();
// privacy policy url
env.privacyPolicyUrl = s(R.string.privacy_policy_url);
env.setInitialized(true); env.setInitialized(true);
// 利用規約に同意するの詳細があるURL
env.agreeToTermsOfUseUrl = s(R.string.agree_to_terms_of_use_url);
// Helperクラス初期化 // Helperクラス初期化
ActivityHandlingHelper.getInstance().init(context); ActivityHandlingHelper.getInstance().init(context);
......
...@@ -85,6 +85,7 @@ public class ABookSettingFragment extends PreferenceFragment { ...@@ -85,6 +85,7 @@ public class ABookSettingFragment extends PreferenceFragment {
private static final String CHECK_APP_UPDATE = "checkAppUpdate"; private static final String CHECK_APP_UPDATE = "checkAppUpdate";
private static final String ABOUT_A_BOOK = "aboutABook"; private static final String ABOUT_A_BOOK = "aboutABook";
private static final String ABOOK_CHECK_MANUAL = "abookCheckManual"; private static final String ABOOK_CHECK_MANUAL = "abookCheckManual";
private static final String PRIVACY_POLICY = "privacyPolicy";
protected Handler handler = new Handler(); protected Handler handler = new Handler();
protected AlertDialog alertDialog = null; protected AlertDialog alertDialog = null;
...@@ -250,6 +251,17 @@ public class ABookSettingFragment extends PreferenceFragment { ...@@ -250,6 +251,17 @@ public class ABookSettingFragment extends PreferenceFragment {
} }
}); });
// プライバシーポリシー
Preference privacyPolicy = findPreference(PRIVACY_POLICY);
privacyPolicy.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(ABVEnvironment.getInstance().privacyPolicyUrl));
startActivity(browserIntent);
return true;
}
});
// アップデート確認 // アップデート確認
Preference checkAppUpdate = findPreference(CHECK_APP_UPDATE); Preference checkAppUpdate = findPreference(CHECK_APP_UPDATE);
if (getResources().getInteger(R.integer.check_app_update) == 1) { if (getResources().getInteger(R.integer.check_app_update) == 1) {
......
...@@ -14,6 +14,8 @@ import android.view.animation.Animation; ...@@ -14,6 +14,8 @@ import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener; import android.view.animation.Animation.AnimationListener;
import android.view.animation.TranslateAnimation; import android.view.animation.TranslateAnimation;
import android.view.inputmethod.InputMethodManager; import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText; import android.widget.EditText;
import android.widget.ImageButton; import android.widget.ImageButton;
import android.widget.TextView; import android.widget.TextView;
...@@ -53,6 +55,7 @@ import jp.agentec.abook.abv.cl.environment.DeviceInfo; ...@@ -53,6 +55,7 @@ import jp.agentec.abook.abv.cl.environment.DeviceInfo;
import jp.agentec.abook.abv.cl.util.PreferenceUtil; import jp.agentec.abook.abv.cl.util.PreferenceUtil;
import jp.agentec.abook.abv.launcher.android.R; import jp.agentec.abook.abv.launcher.android.R;
import jp.agentec.abook.abv.ui.common.activity.ABVLoginActivity; import jp.agentec.abook.abv.ui.common.activity.ABVLoginActivity;
import jp.agentec.abook.abv.ui.common.appinfo.AppDefType;
import jp.agentec.abook.abv.ui.common.appinfo.AppDefType.UserPrefKey; import jp.agentec.abook.abv.ui.common.appinfo.AppDefType.UserPrefKey;
import jp.agentec.abook.abv.ui.common.constant.ErrorCode; import jp.agentec.abook.abv.ui.common.constant.ErrorCode;
import jp.agentec.abook.abv.ui.common.constant.ErrorMessage; import jp.agentec.abook.abv.ui.common.constant.ErrorMessage;
...@@ -94,6 +97,9 @@ public class LoginActivity extends ABVLoginActivity { ...@@ -94,6 +97,9 @@ public class LoginActivity extends ABVLoginActivity {
private InputMethodManager imm; private InputMethodManager imm;
// private CheckBox chexBoxAgree;
// private static String termsOfUseUrl = ABVEnvironment.getInstance().agreeToTermsOfUseUrl;
@Override @Override
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
Logger.i(TAG, "onCreate"); Logger.i(TAG, "onCreate");
...@@ -148,13 +154,36 @@ public class LoginActivity extends ABVLoginActivity { ...@@ -148,13 +154,36 @@ public class LoginActivity extends ABVLoginActivity {
} }
}); });
findViewById(R.id.btn_login).setOnClickListener(new View.OnClickListener() {
// ログインボタン
final Button btnLogin = findViewById(R.id.btn_login);
btnLogin.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
tryLogin(); tryLogin();
} }
}); });
// // チェックボックス
// chexBoxAgree = findViewById(R.id.check_box_agree);
// // 初期化(状態は保存しておく。ログアウトした後に使う)
// boolean agree = PreferenceUtil.get(LoginActivity.this, AppDefType.PrefName.AGREE_STATUS, false);
// chexBoxAgree.setChecked(agree);
//
// chexBoxAgree.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View view) {
// PreferenceUtil.put(LoginActivity.this, AppDefType.PrefName.AGREE_STATUS, chexBoxAgree.isChecked());
// }
// });
//
// // agreementUrl が 空の場合は、チェックボックスなどを消す
// if (StringUtil.isNullOrEmpty(termsOfUseUrl)) {
// chexBoxAgree.setVisibility(View.GONE);
// findViewById(R.id.terms_of_use_text).setVisibility(View.GONE);
// findViewById(R.id.detail).setVisibility(View.GONE);
// }
//androidバジョン6以上からMAC idではなくandroid固有numberを取得ため、ダイアログで表示 //androidバジョン6以上からMAC idではなくandroid固有numberを取得ため、ダイアログで表示
if (android.os.Build.VERSION.SDK_INT >= 23) { if (android.os.Build.VERSION.SDK_INT >= 23) {
mBtnDeviceInfo.setVisibility(View.VISIBLE); mBtnDeviceInfo.setVisibility(View.VISIBLE);
...@@ -193,6 +222,51 @@ public class LoginActivity extends ABVLoginActivity { ...@@ -193,6 +222,51 @@ public class LoginActivity extends ABVLoginActivity {
ErrorMessage.showErrorMessageDialog(this, R.string.app_name, ErrorCode.L110); ErrorMessage.showErrorMessageDialog(this, R.string.app_name, ErrorCode.L110);
} }
} }
// // 詳細ボタン
// final Button btnDetail = findViewById(R.id.detail);
// btnDetail.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View view) {
// btnDetail.setEnabled(false); // 非活性化(連打防止)
// // ネットワーク接続チェック
// if (!ABVEnvironment.getInstance().networkAdapter.isNetworkConnected()) {
// AlertDialogUtil.showAlertDialog(LoginActivity.this, getString(R.string.error), getString(R.string.msg_network_offline), true, new DialogInterface.OnClickListener() {
// @Override
// public void onClick(DialogInterface dialog, int which) {
// dialog.dismiss();
// btnDetail.setEnabled(true); // 活性化
// }
// });
// return;
// }
// CommonExecutor.execute(new Runnable() {
// @Override
// public void run() {
// // CMSより文言を取得し、ダイアログで表示する。
// final String termsOfUseText = contractLogic.getTermsOfServiceText(termsOfUseUrl);
// runOnUiThread(new Runnable() {
// @Override
// public void run() {
// String title = getString(R.string.error);
// String messageText = getString(R.string.err_gert_term_of_use_text);
// if (termsOfUseText != null) {
// title = getString(R.string.app_name);
// messageText = termsOfUseText;
// }
// AlertDialogUtil.showAlertDialog(LoginActivity.this, title, messageText, true, new DialogInterface.OnClickListener() {
// @Override
// public void onClick(DialogInterface dialog, int which) {
// dialog.dismiss();
// btnDetail.setEnabled(true); // 活性化
// }
// });
// }
// });
// }
// });
// }
// });
} }
@Override @Override
...@@ -362,6 +436,24 @@ public class LoginActivity extends ABVLoginActivity { ...@@ -362,6 +436,24 @@ public class LoginActivity extends ABVLoginActivity {
return false; return false;
} }
} }
// if (StringUtil.isNullOrWhiteSpace(mLoginId)) {
// handleErrorMessageToast(ErrorCode.E001);
// mEdtLoginId.requestFocus();
// return false;
// }
//
// if (StringUtil.isNullOrWhiteSpace(mPassword)) {
// handleErrorMessageToast(ErrorCode.E002);
// mEdtPassword.requestFocus();
// return false;
// }
//
// if (!StringUtil.isNullOrEmpty(termsOfUseUrl)) {
// if (!chexBoxAgree.isChecked()) {
// handleErrorMessageToast(ErrorCode.E132);
// return false;
// }
// }
return true; return true;
} }
...@@ -666,6 +758,10 @@ public class LoginActivity extends ABVLoginActivity { ...@@ -666,6 +758,10 @@ public class LoginActivity extends ABVLoginActivity {
PreferenceUtil.clearUserPref(this); PreferenceUtil.clearUserPref(this);
memberInfoDao.deleteMemberInfo(); memberInfoDao.deleteMemberInfo();
// // ユーザ変更でプリファレンスは初期化するが、
// // 一度ログインで利用規約には同意しているので、以下の値はtrueに設定しなおす
// PreferenceUtil.put(LoginActivity.this, AppDefType.PrefName.AGREE_STATUS, true);
//
contentLogic.deleteContentMarkingData(); contentLogic.deleteContentMarkingData();
boolean isAllDelete =true; boolean isAllDelete =true;
if (getRInteger(R.integer.not_delete_all_contents) == 1) { if (getRInteger(R.integer.not_delete_all_contents) == 1) {
......
...@@ -80,7 +80,7 @@ public class ABookCheckWebViewHelper extends ABookHelper { ...@@ -80,7 +80,7 @@ public class ABookCheckWebViewHelper extends ABookHelper {
* @param finishCallback * @param finishCallback
* @param taskReportLevel * @param taskReportLevel
*/ */
public void doABookCheckParam(ABVContentViewActivity context, String cmd, String taskKey, int enableReportHistory, Map<String, String> param, long operationId, String contentPath, long contentId, int reportType, Callback finishCallback, int taskReportLevel) throws IOException { public void doABookCheckParam(ABVContentViewActivity context, final String cmd, final String taskKey, final int enableReportHistory, final Map<String, String> param, final long operationId, final String contentPath, final long contentId, final int reportType, Callback finishCallback,final int taskReportLevel) throws IOException {
int taskReportSendId = 0; int taskReportSendId = 0;
mFinishCallback = finishCallback; mFinishCallback = finishCallback;
...@@ -106,17 +106,25 @@ public class ABookCheckWebViewHelper extends ABookHelper { ...@@ -106,17 +106,25 @@ public class ABookCheckWebViewHelper extends ABookHelper {
// その時に呼び出し元で表示したダイアログが閉じずに、操作不能となったので、 // その時に呼び出し元で表示したダイアログが閉じずに、操作不能となったので、
// mFinishCallBackに、エラーを通知しダイアログを閉じる処理を追加した。 // mFinishCallBackに、エラーを通知しダイアログを閉じる処理を追加した。
// TODO: 失敗するのであれば、データが壊れているわけなので、壊れたデータを削除する必要があるのでは? // TODO: 失敗するのであれば、データが壊れているわけなので、壊れたデータを削除する必要があるのでは?
final ABVContentViewActivity final_context = context;
final String final_processKey = processKey;
final Integer final_phaseNo = phaseNo;
CommonExecutor.execute(new Runnable() {
@Override
public void run() {
try { try {
insertOrUpdateTaskReport(taskKey, enableReportHistory, operationId, contentId, param, contentPath, reportType, taskReportLevel, false); insertOrUpdateTaskReport(taskKey, enableReportHistory, operationId, contentId, param, contentPath, reportType, taskReportLevel, false);
copyTaskAttachedMovie(operationId, contentId, taskKey, taskReportLevel, final_processKey, final_phaseNo);
sendTaskData(final_context, operationId, taskKey, taskReportLevel, reportType, contentPath);
} catch (Exception e) { } catch (Exception e) {
context.showSimpleAlertDialog(R.string.error, R.string.ERROR); final_context.showSimpleAlertDialog(R.string.error, R.string.ERROR);
Logger.e(TAG,e); Logger.e(TAG, e);
mFinishCallback.callback(true); mFinishCallback.callback(true);
context.closeProgressPopup(); final_context.closeProgressPopup();
throw e; Logger.e(TAG, "doABookCheckParam error", e);
} }
copyTaskAttachedMovie(operationId, contentId, taskKey, taskReportLevel, processKey, phaseNo); }
sendTaskData(context, operationId, taskKey, taskReportLevel, reportType, contentPath); });
break; break;
case ABookKeys.CMD_LOCAL_SAVE_TASK_REPORT: // 一時保存 case ABookKeys.CMD_LOCAL_SAVE_TASK_REPORT: // 一時保存
insertOrUpdateTaskReport(taskKey, enableReportHistory, operationId, contentId, param, contentPath, reportType, taskReportLevel, true); insertOrUpdateTaskReport(taskKey, enableReportHistory, operationId, contentId, param, contentPath, reportType, taskReportLevel, true);
...@@ -236,9 +244,14 @@ public class ABookCheckWebViewHelper extends ABookHelper { ...@@ -236,9 +244,14 @@ public class ABookCheckWebViewHelper extends ABookHelper {
}; };
// リソースパターンの適用 // リソースパターンの適用
context.runOnUiThread(new Runnable() {
@Override
public void run() {
context.showProgressView(PatternStringUtil.patternToString(context, context.showProgressView(PatternStringUtil.patternToString(context,
R.string.synchronizing, R.string.synchronizing,
getUserPref(context, AppDefType.UserPrefKey.RESOURCE_PATTERN_TYPE, 0))); getUserPref(context, AppDefType.UserPrefKey.RESOURCE_PATTERN_TYPE, 0)));
}
});
CommonExecutor.execute(new Runnable() { CommonExecutor.execute(new Runnable() {
@Override @Override
public void run() { public void run() {
......
...@@ -162,8 +162,6 @@ public class OzdFileHelper { ...@@ -162,8 +162,6 @@ public class OzdFileHelper {
public static final boolean moveTempOzdFileToOzdFile(long contentId, String taskKey, String tempOzFileName, String ozFileName) { public static final boolean moveTempOzdFileToOzdFile(long contentId, String taskKey, String tempOzFileName, String ozFileName) {
String tempOzdFilePath = ABVEnvironment.getInstance().getTempFilePath(contentId, taskKey, tempOzFileName); String tempOzdFilePath = ABVEnvironment.getInstance().getTempFilePath(contentId, taskKey, tempOzFileName);
String ozdFilePath = ABVEnvironment.getInstance().getTempFilePath(contentId, taskKey, ozFileName); String ozdFilePath = ABVEnvironment.getInstance().getTempFilePath(contentId, taskKey, ozFileName);
Logger.i("******** tempOzdFilePath = " + tempOzdFilePath);
Logger.i("******** ozdFilePath = " + ozdFilePath);
if (FileUtil.exists(ozdFilePath)) { if (FileUtil.exists(ozdFilePath)) {
FileUtil.delete(ozdFilePath); FileUtil.delete(ozdFilePath);
} }
......
package jp.agentec.abook.abv.ui.viewer.activity; package jp.agentec.abook.abv.ui.viewer.activity;
import android.app.AlertDialog;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
...@@ -179,13 +180,7 @@ public class CheckOZDViewActivity extends ABVContentViewActivity { ...@@ -179,13 +180,7 @@ public class CheckOZDViewActivity extends ABVContentViewActivity {
closeButton.setOnClickListener(new OnClickListener() { closeButton.setOnClickListener(new OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
mButtonStatus = R.id.btn_close; // HTML側の分岐処理を行うため変数に値を渡す showCancelConfirmAlert();
//#41596 OZの報告入力フォームで☓をタップした際の動作がおかしい
finishActivity();
doProcess(); // HTML側に閉じる処理を行う
// if (mProcessKey != null && mPhaseNo != 0) { //連続作業用のOZView画面非表示
// finishActivity();
// }
} }
}); });
...@@ -650,6 +645,20 @@ public class CheckOZDViewActivity extends ABVContentViewActivity { ...@@ -650,6 +645,20 @@ public class CheckOZDViewActivity extends ABVContentViewActivity {
return true; return true;
} }
/**
* 左上の×ボタンを押したときの処理(ダイアログを表示する)
*/
private void showCancelConfirmAlert() {
AlertDialogUtil.showAlertDialog(this, getString(R.string.confirm), getString(R.string.msg_oz_report_cancel), false, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
mButtonStatus = R.id.btn_close;
finishActivity();
doProcess(); // HTML側に閉じる処理を行う
}
});
}
// アラート表示処理 // アラート表示処理
private void showSaveConfirmAlert(final int dialogTitle, int dialogMessage) { private void showSaveConfirmAlert(final int dialogTitle, int dialogMessage) {
ABookAlertDialog logoutAkert = AlertDialogUtil.createAlertDialog(this, dialogTitle); ABookAlertDialog logoutAkert = AlertDialogUtil.createAlertDialog(this, dialogTitle);
......
...@@ -38,8 +38,8 @@ app_versioncode=1 ...@@ -38,8 +38,8 @@ app_versioncode=1
# abvEnvironments.xml # abvEnvironments.xml
#cms server #cms server
acms_address=https://check130.agentec.jp/acms acms_address=https://chatdev2.agentec.jp/acms
download_server_address=https://check130.agentec.jp/acms download_server_address=https://chatdev2.agentec.jp/acms
#syncview server #syncview server
websocket_server_http_url=https://check130.agentec.jp/v1 websocket_server_http_url=https://check130.agentec.jp/v1
...@@ -86,8 +86,8 @@ is_check_invalid_passward_limit=true ...@@ -86,8 +86,8 @@ is_check_invalid_passward_limit=true
repeat_default=true repeat_default=true
#Setting Info(設定画面のABookについての設定情報) #Setting Info(設定画面のABookについての設定情報)
version_name=1.4.202 version_name=1.4.210
release_date=2021/11/24 release_date=2022/06/14
copy_right=2016 AGENTEC Co.,Ltd. All rights reserved. copy_right=2016 AGENTEC Co.,Ltd. All rights reserved.
hope_page=http://www.agentec.jp hope_page=http://www.agentec.jp
contact_email=abook-appsupport@agentec.jp contact_email=abook-appsupport@agentec.jp
...@@ -133,3 +133,9 @@ isStoreProduct=false ...@@ -133,3 +133,9 @@ isStoreProduct=false
#CHECK = 5 #CHECK = 5
#EXFRAME = 6 #EXFRAME = 6
edition_type=5 edition_type=5
#プライバシーポリシーURL
privacy_policy_url=https://www.agentec.jp/privacy/
#利用規約に同意するのテキストがあるURL
agree_to_terms_of_use_url=https://chatdev2.agentec.jp/acms/common/getAgreement/
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