Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions Controller/TaskContentEditController.php
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,8 @@ public function edit() {
$key = $this->params['key'];
$taskContent = $this->TaskContent->getTask($key);

$calendarKey = $taskContent['TaskContent']['calendar_key']; //ADD カレンダ連携キーの取り出し
$taskContent['TaskContent']['use_calendar'] = ($calendarKey == "") ? 0 : 1;
if (! $this->request->data) {
$this->request->data = $taskContent;
}
Expand All @@ -172,6 +174,8 @@ public function edit() {
$this->_taskSetting['TaskSetting']['task_key'];
$this->request->data['TaskContent']['key'] = $key;

$this->request->data['TaskContent']['calendar_key'] = $calendarKey; //ADD カレンダー連携キー転写

// set status
$status = $this->Workflow->parseStatus();
$this->request->data['TaskContent']['status'] = $status;
Expand Down
8 changes: 8 additions & 0 deletions Locale/eng/LC_MESSAGES/tasks.po
Original file line number Diff line number Diff line change
Expand Up @@ -242,6 +242,14 @@ msgstr "Progress rate: "
msgid "Person in charge"
msgstr "Person in charge: "

#: Tasks/View/TaskContents/view.ctp:50
msgid "Calendar registered"
msgstr "Calendar registered"

#: Tasks/View/TaskContents/view.ctp:54
msgid "Calendar not registered"
msgstr "Calendar not registered"

#: Tasks/View/TaskMailSettings/edit.ctp:22
msgid "MailSetting.mail_fixed_phrase_body.popover"
msgstr ""
Expand Down
10 changes: 10 additions & 0 deletions Locale/jpn/LC_MESSAGES/tasks.po
Original file line number Diff line number Diff line change
Expand Up @@ -294,6 +294,16 @@ msgstr "進捗率:"
msgid "Person in charge"
msgstr "担当者:"

# 詳細画面で使用
#: Tasks/View/TaskContents/view.ctp:50
msgid "Calendar registered"
msgstr "カレンダー登録済み"

# 詳細画面で使用
#: Tasks/View/TaskContents/view.ctp:54
msgid "Calendar not registered"
msgstr "カレンダー未登録"

# 投稿メール基本文で使用
#: Tasks/View/TaskMailSettings/edit.ctp:22
msgid "MailSetting.mail_fixed_phrase_body.popover"
Expand Down
8 changes: 8 additions & 0 deletions Locale/tasks.pot
Original file line number Diff line number Diff line change
Expand Up @@ -242,6 +242,14 @@ msgstr ""
msgid "Person in charge"
msgstr ""

#: Tasks/View/TaskContents/view.ctp:50
msgid "Calendar registered"
msgstr ""

#: Tasks/View/TaskContents/view.ctp:54
msgid "Calendar not registered"
msgstr ""

#: Tasks/View/TaskMailSettings/edit.ctp:22
msgid "MailSetting.mail_fixed_phrase_body.popover"
msgstr ""
Expand Down
116 changes: 116 additions & 0 deletions Model/TaskContent.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@

App::uses('TasksAppModel', 'Tasks.Model');
App::uses('MailQueueBehavior', 'Mails.Model/Behavior');
App::uses('CalendarActionPlan', 'Calendars.Model'); //ADD
App::uses('CalendarDeleteActionPlan', 'Calendars.Model'); //ADD

/**
* Summary for TaskContent Model
Expand Down Expand Up @@ -647,6 +649,93 @@ public function saveContent($data) {
throw new InternalErrorException(__d('net_commons', 'Internal Server Error'));
}

//カレンダー連携ここから ADD
$cmd = 'del';
if ($data['TaskContent']['is_date_set']) {
$cmd =($data['TaskContent']['use_calendar']) ? 'save' : 'del';
}
if ($cmd==='save') {
//実施期間設定あり&&カレンダー登録する
$this->loadModels([
'CalendarActionPlan' => 'Calendars.CalendarActionPlan',
]);

//登録・変更用settings指定付きでbehaviorロード
$this->CalendarActionPlan->Behaviors->load('Calendars.CalendarLink', array(
'linkPlugin' => Current::read('Plugin.key'),
'table' => $this->alias, //fieldsの対象テーブル
'inputFields' => array(
'title' => 'title',
'description' => 'content',
),
'sysFields' => array(
'key' => 'key', //tasksの場合、task_contentsテーブルのkey
'calendar_key' => 'calendar_key', //tasksの場合、task_contentsテーブルのcalendar_key
),
'startendFields' => array(
'start_datetime' => 'task_start_date',
'end_datetime' => 'task_end_date',
),
'isServerTime' => true,
'useStartendComplete' => true,
'isLessthanOfEnd' => false,
'isRepeat' => false,
'isPlanRoomId' => false,
));

$calendarKey = $this->CalendarActionPlan->savePlanForLink($data);
if (is_string($calendarKey) && ! empty($calendarKey)) {
//カレンダ登録成功
//calenar_keyを TaskContentにsave(update)しておく。
$data['TaskContent']['calendar_key'] = $calendarKey;
$savedData = $this->save($data, false);
if ($savedData === false) {
throw new InternalErrorException(__d('net_commons', 'Internal Server Error'));
}
$data['TaskContent'] = $savedData['TaskContent'];
} elseif ($calendarKey === '') {
//未承認や一時保存はカレンダー登録条件を満たさないのでスルー(通常)
} else { //false
//カレンダー登録時にエラー発生(エラー)
//例外なげる
throw new InternalErrorException(__d('net_commons', 'Internal Server Error'));
}
$this->CalendarActionPlan->Behaviors->unload('Calendars.CalendarLink');
} else { //cmd===del
if (! empty($data['TaskContent']['calendar_key'])) {
//calendar_keyが記録されているので、消しにいく。
$this->loadModels([
'CalendarDeleteActionPlan' => 'Calendars.CalendarDeleteActionPlan',
]);
//削除用settings指定
$this->CalendarDeleteActionPlan->Behaviors->load('Calendars.CalendarLink', array(
'linkPlugin' => Current::read('Plugin.key'),
'table' => $this->alias, //fieldsの対象テーブル
'sysFields' => array(
'key' => 'key', //tasksの場合、task_contentsテーブルのkey
'calendar_key' => 'calendar_key', //tasksの場合、task_contentsテーブルのcalendar_key
),
'isDelRepeat' => false, //tasksはfalse固定
));
$delCalendarKey = $this->CalendarDeleteActionPlan->deletePlanForLink($data);
// if ($data['TaskContent']['calendar_key'] == $delCalendarKey) {
//削除が成功したので、calenar_keyをクリアし、use_calendarをOFFにして、
//TaskContentにsave(update)しておく。
$data['TaskContent']['calendar_key'] = '';
$data['TaskContent']['use_calendar'] = 0;
$savedData = $this->save($data, false);
if ($savedData === false) {
throw new InternalErrorException(__d('net_commons', 'Internal Server Error'));
}
$data['TaskContent'] = $savedData['TaskContent'];
// }
$this->CalendarDeleteActionPlan->Behaviors->unload('Calendars.CalendarLink');
} else {
//calendar_keyが記録されていないので、なにもしない
}
}
//カレンダー連携ここまで ADD

//多言語化の処理
$this->set($savedData);
$this->saveM17nData();
Expand Down Expand Up @@ -770,6 +859,33 @@ public function deleteContentByKey($key) {
) {
throw new InternalErrorException(__d('net_commons', 'Internal Server Error'));
}

//カレンダー連携ここから ADD
$this->loadModels([
'CalendarDeleteActionPlan' => 'Calendars.CalendarDeleteActionPlan',
]);
//削除用settings指定
$this->CalendarDeleteActionPlan->Behaviors->load('Calendars.CalendarLink', array(
'linkPlugin' => Current::read('Plugin.key'),
'table' => $this->alias, //fieldsの対象テーブル
'sysFields' => array(
'key' => 'key', //tasksの場合、task_contentsテーブルのkey
'calendar_key' => 'calendar_key', //tasksの場合、task_contentsテーブルのcalendar_key
),
'isDelRepeat' => false, //tasksはfalse固定
));
$datas = $this->find('all', array(
'recursive' => -1,
'conditions' => array(
'TaskContent.key' => $key,
)
));
foreach ($datas as $data) {
$this->CalendarDeleteActionPlan->deletePlanForLink($data);
}
$this->CalendarDeleteActionPlan->Behaviors->unload('Calendars.CalendarLink');
//カレンダー連携ここまで ADD

if (! $this->deleteAll(array($this->alias . '.key' => $key), false, true)) {
throw new InternalErrorException(__d('net_commons', 'Internal Server Error'));
}
Expand Down
20 changes: 20 additions & 0 deletions View/Elements/TaskContentEdit/task_period_edit_form.ctp
Original file line number Diff line number Diff line change
Expand Up @@ -83,5 +83,25 @@
}
?>
</div>

<?php
//ADD
//カレンダー連携登録チェックボックス
echo $this->NetCommonsForm->checkbox('TaskContent.use_calendar', array(
'class' => 'text-left pull-left',
));
?>
<?php
//カレンダー連携登録チェックボックス
echo $this->NetCommonsForm->label(
'TaskContent.use_calendar',
__d('tasks', 'Use calendar')
);
?>
<?php
//カレンダー連携登録チェックボックス
echo $this->NetCommonsForm->error('TaskContent.use_calendar');
//ADD
?>
</div>
</div>
10 changes: 10 additions & 0 deletions View/TaskContents/view.ctp
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,16 @@ echo $this->NetCommonsHtml->css('/tasks/css/tasks.css');
); ?>
</div>

<?php if ($taskContent['TaskContent']['calendar_key']) : ?>
<div class="clearfix text-danger">
<?php echo h(__d('tasks', 'Calendar registered')); ?>
</div>
<?php else : ?>
<div class="clearfix">
<?php echo h(__d('tasks', 'Calendar not registered')); ?>
</div>
<?php endif; ?>

<div class="clearfix task-content-margin-2">
<div class="pull-left task-content-margin-3">
<div class="task-view-table-cell-3">
Expand Down