diff --git a/apps/api/i18n/messages.ja.xml b/apps/api/i18n/messages.ja.xml index 07974ca0a..ca968de41 100644 --- a/apps/api/i18n/messages.ja.xml +++ b/apps/api/i18n/messages.ja.xml @@ -230,6 +230,10 @@ Self Introduction 自己紹介 + + Can not post same message + 既に送信済みです。 + diff --git a/apps/api/modules/activity/actions/actions.class.php b/apps/api/modules/activity/actions/actions.class.php index 9cf307f07..450947db2 100644 --- a/apps/api/modules/activity/actions/actions.class.php +++ b/apps/api/modules/activity/actions/actions.class.php @@ -154,6 +154,14 @@ public function executePost(sfWebRequest $request) $this->forward400If('' === $body, 'body parameter not specified.'); $memberId = $this->getUser()->getMemberId(); + + $lastactivity = Doctrine::getTable('ActivityData')->getActivityList($memberId, null, 1); + if ($request['body'] == $lastactivity[0]['body']) + { + sfContext::getInstance()->getConfiguration()->loadHelpers('I18N'); + return $this->renderJSON(array('status' => 'error', 'message' => __('Can not post same message'))); + } + $options = array(); if (isset($request['public_flag'])) diff --git a/apps/mobile_frontend/i18n/messages.ja.xml b/apps/mobile_frontend/i18n/messages.ja.xml index 23df85c7a..06983ea6c 100644 --- a/apps/mobile_frontend/i18n/messages.ja.xml +++ b/apps/mobile_frontend/i18n/messages.ja.xml @@ -1199,6 +1199,10 @@ SNS Member's %activity% SNSメンバーの%activity% + + Can not post same message + 既に送信済みです。 + Link outside URL 外部URLへのリンク diff --git a/apps/mobile_frontend/modules/member/templates/showActivitySuccess.php b/apps/mobile_frontend/modules/member/templates/showActivitySuccess.php index 8de486b4e..e7bcd26c8 100644 --- a/apps/mobile_frontend/modules/member/templates/showActivitySuccess.php +++ b/apps/mobile_frontend/modules/member/templates/showActivitySuccess.php @@ -10,7 +10,9 @@ '', - 'activities' => $pager->getResults()) + 'activities' => $pager->getResults(), + 'activityMessage' => $activityMessage, + ) ) ?> diff --git a/apps/pc_frontend/i18n/messages.ja.xml b/apps/pc_frontend/i18n/messages.ja.xml index 7cfc62254..30e1d8244 100644 --- a/apps/pc_frontend/i18n/messages.ja.xml +++ b/apps/pc_frontend/i18n/messages.ja.xml @@ -1307,6 +1307,10 @@ SNS Member's %activity% SNSメンバーの%activity% + + Can not post same message + 既に送信済みです。 + Remember me 次回から自動的にログイン diff --git a/apps/pc_frontend/modules/default/templates/_activityBox.php b/apps/pc_frontend/modules/default/templates/_activityBox.php index a3153e5af..d1fc44adf 100644 --- a/apps/pc_frontend/modules/default/templates/_activityBox.php +++ b/apps/pc_frontend/modules/default/templates/_activityBox.php @@ -1,5 +1,6 @@ getId() : '' ?> + @@ -15,6 +16,7 @@
render(array('id' => $id.'_activity_data_body')) ?> +
diff --git a/apps/pc_frontend/modules/friend/templates/_activityBox.php b/apps/pc_frontend/modules/friend/templates/_activityBox.php index a466e5b10..2e8fee4f5 100644 --- a/apps/pc_frontend/modules/friend/templates/_activityBox.php +++ b/apps/pc_frontend/modules/friend/templates/_activityBox.php @@ -2,6 +2,7 @@ $activities, 'gadget' => $gadget, + 'activityMessage' => $activityMessage, ) ?> diff --git a/apps/pc_frontend/modules/friend/templates/showActivitySuccess.php b/apps/pc_frontend/modules/friend/templates/showActivitySuccess.php index bdc1b4ea7..59b10af81 100644 --- a/apps/pc_frontend/modules/friend/templates/showActivitySuccess.php +++ b/apps/pc_frontend/modules/friend/templates/showActivitySuccess.php @@ -12,6 +12,7 @@ $title, 'activities' => $pager->getResults(), + 'activityMessage' => $activityMessage, ) ?> diff --git a/apps/pc_frontend/modules/member/templates/_activityBox.php b/apps/pc_frontend/modules/member/templates/_activityBox.php index 469380b4b..4718f6285 100644 --- a/apps/pc_frontend/modules/member/templates/_activityBox.php +++ b/apps/pc_frontend/modules/member/templates/_activityBox.php @@ -9,6 +9,7 @@ '%activity%' => $op_term['activity']->titleize()->pluralize() )), 'moreUrl' => 'member/showActivity?id='.$member->getId(), + 'activityMessage' => $activityMessage, ) ?> diff --git a/apps/pc_frontend/modules/member/templates/_allMemberActivityBox.php b/apps/pc_frontend/modules/member/templates/_allMemberActivityBox.php index a9e322ea1..03db798f3 100644 --- a/apps/pc_frontend/modules/member/templates/_allMemberActivityBox.php +++ b/apps/pc_frontend/modules/member/templates/_allMemberActivityBox.php @@ -5,7 +5,8 @@ 'title' => __("SNS Member's %activity%", array( '%activity%' => $op_term['activity']->titleize()->pluralize() )), - 'moreUrl' => 'member/showAllMemberActivity' + 'moreUrl' => 'member/showAllMemberActivity', + 'activityMessage' => isset($activityMessage) ? $activityMessage : '', ) ?> diff --git a/apps/pc_frontend/modules/member/templates/showActivitySuccess.php b/apps/pc_frontend/modules/member/templates/showActivitySuccess.php index 8ecafddfb..6500fe730 100644 --- a/apps/pc_frontend/modules/member/templates/showActivitySuccess.php +++ b/apps/pc_frontend/modules/member/templates/showActivitySuccess.php @@ -11,7 +11,9 @@ $title, - 'activities' => $pager->getResults()) + 'activities' => $pager->getResults(), + 'activityMessage' => $activityMessage, + ) ) ?> diff --git a/apps/pc_frontend/modules/member/templates/showAllMemberActivitySuccess.php b/apps/pc_frontend/modules/member/templates/showAllMemberActivitySuccess.php index 2fd0c03d9..0e0f2570b 100644 --- a/apps/pc_frontend/modules/member/templates/showAllMemberActivitySuccess.php +++ b/apps/pc_frontend/modules/member/templates/showAllMemberActivitySuccess.php @@ -9,7 +9,8 @@ 'title' => __("SNS Member's %activity%", array( '%activity%' => $op_term['activity']->titleize()->pluralize() )), - 'activities' => $pager->getResults() + 'activities' => $pager->getResults(), + 'activityMessage' => $activityMessage, ) ?> diff --git a/lib/action/opMemberAction.class.php b/lib/action/opMemberAction.class.php index 6226a9495..70652c8b6 100644 --- a/lib/action/opMemberAction.class.php +++ b/lib/action/opMemberAction.class.php @@ -530,6 +530,18 @@ public function executeUpdateActivity($request) $this->form->bind($params); if ($this->form->isValid()) { + $lastactivity = Doctrine::getTable('ActivityData')->getActivityList($this->getUser()->getMemberId(), null, 1); + if ($params['body'] == $lastactivity[0]['body']) + { + if ($request->isMobile()) + { + $this->getUser()->setFlash('error', 'Can not post same message'); + $this->redirect($params['next_uri']); + } + sfContext::getInstance()->getConfiguration()->loadHelpers('I18N'); + return $this->renderText('same-message|'.__('Can not post same message')); + } + $this->form->save(); if ($request->isXmlHttpRequest()) { diff --git a/web/js/op_activity.js b/web/js/op_activity.js index 675302889..f01208635 100644 --- a/web/js/op_activity.js +++ b/web/js/op_activity.js @@ -1,8 +1 @@ - -var opActivity=function(id,posturl){var t=this;var addEventListener=function(obj,type,listener,useCapture){if(obj.addEventListener){obj.addEventListener(type,listener,useCapture);}else if(obj.attachEvent){type='on'+type;obj.attachEvent(type,listener);}};var getHttpRequest=function(){var req=null;if(window.XMLHttpRequest){req=new XMLHttpRequest();}else if(window.ActiveXObject){try{req=new ActiveXObject("Msxml2.XMLHTTP");}catch(e){req=new ActiveXObject("Microsoft.XMLHTTP");}} -return req;};this.post=function(){var req=getHttpRequest();req.open("POST",posturl,true);req.setRequestHeader("X-Requested-With","XMLHttpRequest");req.setRequestHeader("Content-Type","application/x-www-form-urlencoded");var data="";for(var i=0;i1?data.substring(1):"";req.onreadystatechange=function(e){if(req.readyState==4&&req.status==200){t.timeline.innerHTML=req.responseText+t.timeline.innerHTML;}} -req.send(data);} -var loadfunc=function(event){t.form=document.getElementById(id+"_form");t.body=document.getElementById(id+"_activity_data_body");t.timeline=document.getElementById(id+"_timeline");t.body.onkeyup=function(){var count=this.value.length;document.getElementById(id+"_count").innerHTML=140-count;};t.body.onkeyup();addEventListener(t.form,"submit",function(event){if(t.body.value&&t.body.value.length>0&&t.body.value.length<=140){t.post();t.body.value="";t.body.onkeyup();} -if(event.preventDefault){event.preventDefault();}else{return false;}},false);} -addEventListener(window,"load",loadfunc,false);} \ No newline at end of file +var opActivity=function(f,b){var c=this;var e=function(j,h,i,g){if(j.addEventListener){j.addEventListener(h,i,g)}else{if(j.attachEvent){h="on"+h;j.attachEvent(h,i)}}};var d=function(){var g=null;if(window.XMLHttpRequest){g=new XMLHttpRequest()}else{if(window.ActiveXObject){try{g=new ActiveXObject("Msxml2.XMLHTTP")}catch(h){g=new ActiveXObject("Microsoft.XMLHTTP")}}}return g};this.post=function(){var h=d();h.open("POST",b,true);h.setRequestHeader("X-Requested-With","XMLHttpRequest");h.setRequestHeader("Content-Type","application/x-www-form-urlencoded");var j="";for(var g=0;g1?j.substring(1):"";h.onreadystatechange=function(k){if(h.readyState==4&&h.status==200){if(0==h.responseText.indexOf("same-message")){var i=h.responseText.split("|")[1];alert(i)}else{c.timeline.innerHTML=h.responseText+c.timeline.innerHTML}}};h.send(j)};var a=function(g){c.form=document.getElementById(f+"_form");c.body=document.getElementById(f+"_activity_data_body");c.timeline=document.getElementById(f+"_timeline");c.body.onkeyup=function(){var h=this.value.length;document.getElementById(f+"_count").innerHTML=140-h};c.body.onkeyup();e(c.form,"submit",function(h){if(c.body.value&&c.body.value.length>0&&c.body.value.length<=140){c.post();c.body.value="";c.body.onkeyup()}if(h.preventDefault){h.preventDefault()}else{return false}},false)};e(window,"load",a,false)}; \ No newline at end of file diff --git a/web/js/op_activity.js.src b/web/js/op_activity.js.src index 219c48fc9..085bca9a0 100644 --- a/web/js/op_activity.js.src +++ b/web/js/op_activity.js.src @@ -50,7 +50,15 @@ var opActivity = function(id, posturl){ data = data.length > 1 ? data.substring(1) : ""; req.onreadystatechange = function (e) { if (req.readyState == 4 && req.status == 200) { - t.timeline.innerHTML = req.responseText + t.timeline.innerHTML; + if (0 == req.responseText.indexOf('same-message')) + { + var message = req.responseText.split('|')[1]; + alert(message); + } + else + { + t.timeline.innerHTML = req.responseText + t.timeline.innerHTML; + } } }