From 735c757ed6da38e0fce802e3e06f91c35a32a1dc Mon Sep 17 00:00:00 2001 From: Hawk Wang Date: Tue, 2 Dec 2014 23:10:19 +0800 Subject: [PATCH] update --- language/lang-dump-02-12-14-2.zip | Bin 180830 -> 180891 bytes zhaole365/ow_pluginfiles/base/lang_2.php | 3 + .../newsfeed/bol/action_feed_dao.php | 22 ++ .../ow_plugins/newsfeed/bol/activity.php | 7 +- .../ow_plugins/newsfeed/bol/activity_dao.php | 2 +- zhaole365/ow_plugins/newsfeed/bol/service.php | 29 ++- .../ow_plugins/newsfeed/classes/action.php | 11 + .../newsfeed/classes/content_provider.php | 215 ++++++++++++++++++ .../ow_plugins/newsfeed/classes/driver.php | 29 ++- .../newsfeed/classes/event_handler.php | 29 ++- .../newsfeed/components/feed_item.php | 165 ++++++++------ .../newsfeed/components/update_status.php | 16 +- .../ow_plugins/newsfeed/controllers/ajax.php | 20 +- zhaole365/ow_plugins/newsfeed/langs.zip | Bin 1734 -> 3677 bytes .../newsfeed/mobile/components/feed_item.php | 6 +- .../mobile/components/update_status.php | 9 +- .../newsfeed/mobile/controllers/feed.php | 16 +- zhaole365/ow_plugins/newsfeed/plugin.xml | 2 +- .../ow_plugins/newsfeed/update/8520/langs.zip | Bin 0 -> 1760 bytes .../newsfeed/update/8520/update.php | 4 + .../newsfeed/views/components/feed.html | 6 +- 21 files changed, 493 insertions(+), 98 deletions(-) create mode 100644 zhaole365/ow_plugins/newsfeed/classes/content_provider.php create mode 100644 zhaole365/ow_plugins/newsfeed/update/8520/langs.zip create mode 100644 zhaole365/ow_plugins/newsfeed/update/8520/update.php diff --git a/language/lang-dump-02-12-14-2.zip b/language/lang-dump-02-12-14-2.zip index c33a8d5ec1d8bbdde7b05ddd03e716cd4131b621..a50270685925b16a57c62b02f741a681bed4b192 100644 GIT binary patch delta 5689 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 Kzf!a;g#Q6{W@+XC delta 5593 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 '允许状态更新', 'newsfeed+auth_group_label' => '最新动态', 'newsfeed+comment_btn_label' => '评论', + 'newsfeed+content_group_label' => '信息流', + 'newsfeed+content_status_label' => '状态更新', 'newsfeed+customization_changed' => '设置已保存', 'newsfeed+customization_not_changed' => '配置没有更新', 'newsfeed+delete_feed_item_label' => '删除该发布信息', @@ -2463,6 +2465,7 @@ 'newsfeed+privacy_action_view_my_feed' => '查看我发布的信息', 'newsfeed+save_customization_btn_label' => '保存', 'newsfeed+settings_updated' => '更新设置', + 'newsfeed+status_add_string' => '更新了他们的状态', 'newsfeed+status_btn_label' => '发布', 'newsfeed+status_field_invintation' => '聊一聊…', 'newsfeed+string_users_and_delim' => '和', diff --git a/zhaole365/ow_plugins/newsfeed/bol/action_feed_dao.php b/zhaole365/ow_plugins/newsfeed/bol/action_feed_dao.php index c330e5b..b7b5d8e 100644 --- a/zhaole365/ow_plugins/newsfeed/bol/action_feed_dao.php +++ b/zhaole365/ow_plugins/newsfeed/bol/action_feed_dao.php @@ -119,4 +119,26 @@ public function deleteByActivityIds( $activityIds ) $this->deleteByExample($example); } + + public function findByActivityIds( $activityIds ) + { + if ( empty($activityIds) ) + { + return array(); + } + + $example = new OW_Example(); + $example->andFieldInArray('activityId', $activityIds); + + return $this->findListByExample($example); + } + + public function findByFeed( $feedType, $feedId ) + { + $example = new OW_Example(); + $example->andFieldEqual('feedType', $feedType); + $example->andFieldEqual('feedId', $feedId); + + return $this->findListByExample($example); + } } \ No newline at end of file diff --git a/zhaole365/ow_plugins/newsfeed/bol/activity.php b/zhaole365/ow_plugins/newsfeed/bol/activity.php index 85b7496..d2979c2 100644 --- a/zhaole365/ow_plugins/newsfeed/bol/activity.php +++ b/zhaole365/ow_plugins/newsfeed/bol/activity.php @@ -90,10 +90,5 @@ class NEWSFEED_BOL_Activity extends OW_Entity * * @var string */ - public $status; - - public function __construct() - { - $this->status = NEWSFEED_BOL_Service::ACTION_STATUS_ACTIVE; - } + public $status = NEWSFEED_BOL_Service::ACTION_STATUS_ACTIVE; } \ No newline at end of file diff --git a/zhaole365/ow_plugins/newsfeed/bol/activity_dao.php b/zhaole365/ow_plugins/newsfeed/bol/activity_dao.php index 871183e..f2a73ad 100644 --- a/zhaole365/ow_plugins/newsfeed/bol/activity_dao.php +++ b/zhaole365/ow_plugins/newsfeed/bol/activity_dao.php @@ -346,7 +346,7 @@ public function saveOrUpdate( NEWSFEED_BOL_Activity $activity ) { $activity->id = $dto->id; } - + $this->save($activity); } diff --git a/zhaole365/ow_plugins/newsfeed/bol/service.php b/zhaole365/ow_plugins/newsfeed/bol/service.php index 29df6a6..a03ad21 100644 --- a/zhaole365/ow_plugins/newsfeed/bol/service.php +++ b/zhaole365/ow_plugins/newsfeed/bol/service.php @@ -57,6 +57,9 @@ class NEWSFEED_BOL_Service self::SYSTEM_ACTIVITY_CREATE, self::SYSTEM_ACTIVITY_SUBSCRIBE ); + + const EVENT_BEFORE_ACTION_DELETE = "feed.before_action_delete"; + const EVENT_AFTER_ACTION_ADD = "feed.after_action_add"; private static $classInstance; @@ -175,6 +178,13 @@ public function removeAction( $entityType, $entityId ) { return; } + + $event = new OW_Event(self::EVENT_BEFORE_ACTION_DELETE, array( + "actionId" => $dto->id, + "entityType" => $dto->entityType, + "entityId" => $dto->entityId + )); + OW::getEventManager()->trigger($event); $this->likeDao->deleteByEntity($dto->entityType, $dto->entityId); $this->actionDao->delete($dto); @@ -260,7 +270,22 @@ public function deleteActivityFromFeed( $activityId, $feedType, $feedId ) { $this->actionFeedDao->deleteByFeedAndActivityId($feedType, $feedId, $activityId); } - + + public function findFeedListByActivityids( $activityIds ) + { + $list = $this->actionFeedDao->findByActivityIds($activityIds); + $out = array(); + foreach ( $list as $af ) + { + $out[$af->activityId] = isset($out[$af->activityId]) + ? $out[$af->activityId] : array(); + + $out[$af->activityId][] = $af; + } + + return $out; + } + /** * * @param string $activityType @@ -379,6 +404,8 @@ public function testActivityKey( $key, $testKey, $all = false ) /** * Find activity by special key * + * [activityType].[activityId]:[entityType].[entityId]:[userId] + * * @param $activityKey * @return array */ diff --git a/zhaole365/ow_plugins/newsfeed/classes/action.php b/zhaole365/ow_plugins/newsfeed/classes/action.php index bfbe542..c76a9a9 100644 --- a/zhaole365/ow_plugins/newsfeed/classes/action.php +++ b/zhaole365/ow_plugins/newsfeed/classes/action.php @@ -41,6 +41,7 @@ class NEWSFEED_CLASS_Action private $properties = array(); private $createActivity, $lastActivity; private $creatorIdList = array(); + private $feeds = array(); public function setDataValue( $name, $value ) { @@ -111,6 +112,16 @@ public function getCreatorIdList() { return $this->creatorIdList; } + + public function setFeedList( $feedList ) + { + $this->feeds = $feedList; + } + + public function getFeedList() + { + return $this->feeds; + } public function getUpdateTime() { diff --git a/zhaole365/ow_plugins/newsfeed/classes/content_provider.php b/zhaole365/ow_plugins/newsfeed/classes/content_provider.php new file mode 100644 index 0000000..91e6af8 --- /dev/null +++ b/zhaole365/ow_plugins/newsfeed/classes/content_provider.php @@ -0,0 +1,215 @@ +service = NEWSFEED_BOL_Service::getInstance(); + } + + public function onCollectTypes( BASE_CLASS_EventCollector $event ) + { + $event->add(array( + "pluginKey" => "newsfeed", + "group" => "newsfeed", + "groupLabel" => OW::getLanguage()->text("newsfeed", "content_group_label"), + "entityType" => self::ENTITY_TYPE_USER_STATUS, + "entityLabel" => OW::getLanguage()->text("newsfeed", "content_status_label"), + "moderation" => array(BOL_ContentService::MODERATION_TOOL_FLAG) + )); + } + + public function onGetInfo( OW_Event $event ) + { + $params = $event->getParams(); + + if ( $params["entityType"] != self::ENTITY_TYPE_USER_STATUS ) + { + return; + } + + $out = array(); + foreach ( $params["entityIds"] as $entityId ) + { + $entity = $this->service->findAction($params["entityType"], $entityId); + $data = json_decode($entity->data, true); + + $cActivities = $this->service->findActivity( NEWSFEED_BOL_Service::SYSTEM_ACTIVITY_CREATE . ':' . $entity->id); + $cActivity = reset($cActivities); + + $userId = null; + $timeStamp = null; + + /* @var $cActivity NEWSFEED_BOL_Activity */ + if ( !empty($cActivity) ) + { + $userId = $cActivity->userId; + $timeStamp = $cActivity->timeStamp; + } + + $info = array(); + + $info["id"] = $entityId; + $info["userId"] = $userId; + $info["timeStamp"] = $timeStamp; + + $content = empty($data["content"]) ? null : $data["content"]; + + if ( $content === null ) + { + $info["text"] = $data["data"]["status"]; + } + else if ($content["format"] == "text") + { + $info["text"] = $content["vars"]["status"]; + } + else + { + $info["title"] = $content["vars"]["title"]; + $info["description"] = $content["vars"]["description"]; + $info["url"] = $content["vars"]["url"]; + + if ( !empty($content["vars"]["status"]) ) + { + $info["text"] = $content["vars"]["status"]; + } + + if ( !empty($content["vars"]["embed"]) ) + { + $info["html"] = $content["vars"]["embed"]; + } + + $info["image"] = array(); + + if ( !empty($content["vars"]["thumbnail"]) ) + { + $info["image"]["thumbnail"] = $content["vars"]["thumbnail"]; + } + + if ( !empty($content["vars"]["image"]) ) + { + $info["image"]["view"] = $content["vars"]["image"]; + } + } + + $out[$entityId] = $info; + } + + $event->setData($out); + + return $out; + } + + public function onUpdateInfo( OW_Event $event ) + { + $params = $event->getParams(); + $data = $event->getData(); + + $entityType = $params["entityType"]; + + foreach ( $data as $entityId => $info ) + { + $status = $info["status"] == BOL_ContentService::STATUS_ACTIVE + ? NEWSFEED_BOL_Service::ACTION_STATUS_ACTIVE + : NEWSFEED_BOL_Service::ACTION_STATUS_INACTIVE; + + $cActivities = $this->service->findActivity(NEWSFEED_BOL_Service::SYSTEM_ACTIVITY_CREATE . ':' . $entityType . '.' . $entityId); + + foreach ( $cActivities as $activity ) + { + $activity->status = $status; + $this->service->saveActivity($activity); + } + } + } + + public function onDelete( OW_Event $event ) + { + $params = $event->getParams(); + + if ( $params["entityType"] != self::ENTITY_TYPE_USER_STATUS ) + { + return; + } + + foreach ( $params["entityIds"] as $entityId ) + { + $this->service->removeAction($params["entityType"], $entityId); + } + } + + // Video events + + public function onBeforeActionDelete( OW_Event $event ) + { + $params = $event->getParams(); + + if ( $params["entityType"] != self::ENTITY_TYPE_USER_STATUS ) + { + return; + } + + OW::getEventManager()->trigger(new OW_Event(BOL_ContentService::EVENT_BEFORE_DELETE, array( + "entityType" => $params["entityType"], + "entityId" => $params["entityType"] + ))); + } + + public function onAfterActionAdd( OW_Event $event ) + { + $params = $event->getParams(); + + if ( $params["entityType"] != self::ENTITY_TYPE_USER_STATUS ) + { + return; + } + + OW::getEventManager()->trigger(new OW_Event(BOL_ContentService::EVENT_AFTER_ADD, array( + "entityType" => $params["entityType"], + "entityId" => $params["entityId"] + ), array( + "string" => array("key" => "newsfeed+status_add_string") + ))); + } + + public function init() + { + OW::getEventManager()->bind(NEWSFEED_BOL_Service::EVENT_BEFORE_ACTION_DELETE, array($this, "onBeforeActionDelete")); + OW::getEventManager()->bind(NEWSFEED_BOL_Service::EVENT_AFTER_ACTION_ADD, array($this, "onAfterActionAdd")); + + OW::getEventManager()->bind(BOL_ContentService::EVENT_COLLECT_TYPES, array($this, "onCollectTypes")); + OW::getEventManager()->bind(BOL_ContentService::EVENT_GET_INFO, array($this, "onGetInfo")); + OW::getEventManager()->bind(BOL_ContentService::EVENT_UPDATE_INFO, array($this, "onUpdateInfo")); + OW::getEventManager()->bind(BOL_ContentService::EVENT_DELETE, array($this, "onDelete")); + } +} \ No newline at end of file diff --git a/zhaole365/ow_plugins/newsfeed/classes/driver.php b/zhaole365/ow_plugins/newsfeed/classes/driver.php index a4441a7..b79b0fa 100644 --- a/zhaole365/ow_plugins/newsfeed/classes/driver.php +++ b/zhaole365/ow_plugins/newsfeed/classes/driver.php @@ -77,22 +77,49 @@ public function getActionList() $activityList = $this->findActivityList($this->params, array_values($this->actionIdList)); + $actionActivityList = array(); foreach ( $activityList as $activity ) { $actionActivityList[$activity->actionId][$activity->id] = $activity; } + $createActivityIdList = array(); + foreach ( $actionList as $actionDto ) { + $aList = empty($actionActivityList[$actionDto->id]) + ? array() + : $actionActivityList[$actionDto->id]; + /* @var $actionDto NEWSFEED_BOL_Action */ - $action = $this->makeAction($actionDto, empty($actionActivityList[$actionDto->id]) ? array() : $actionActivityList[$actionDto->id] ); + $action = $this->makeAction($actionDto, $aList); if ( $action !== null ) { $this->actionList[$actionDto->id] = $action; + + $createActivity = $action->getCreateActivity(); + + if ( !empty($createActivity) ) + { + $createActivityIdList[] = $createActivity->id; + } } } + $feedList = $this->service->findFeedListByActivityids($createActivityIdList); + + foreach ( $this->actionList as $action ) + { + /* @var $actionDto NEWSFEED_BOL_Action */ + $createActivity = $action->getCreateActivity(); + + if ( !empty($createActivity) && isset($feedList[$createActivity->id]) ) + { + $action->setFeedList($feedList[$createActivity->id]); + } + } + return $this->actionList; } diff --git a/zhaole365/ow_plugins/newsfeed/classes/event_handler.php b/zhaole365/ow_plugins/newsfeed/classes/event_handler.php index fad8bb2..c872dbb 100644 --- a/zhaole365/ow_plugins/newsfeed/classes/event_handler.php +++ b/zhaole365/ow_plugins/newsfeed/classes/event_handler.php @@ -306,6 +306,12 @@ public function action( OW_Event $originalEvent ) $this->service->saveAction($action); + OW::getEventManager()->trigger(new OW_Event(NEWSFEED_BOL_Service::EVENT_AFTER_ACTION_ADD, array( + "actionId" => $action->id, + "entityType" => $action->entityType, + "entityId" => $action->entityId + ))); + $activityParams = array( 'pluginKey' => $params['pluginKey'], 'entityType' => $params['entityType'], @@ -1138,9 +1144,9 @@ public function genericItemRender( OW_Event $e ) && ( $params['action']['userId'] == OW::getUser()->getId() || OW::getUser()->isAuthorized('newsfeed') - || ( $isFeedOwner && $isStatus ) + || ( $isFeedOwner && $isStatus && $params['action']['onOriginalFeed'] ) ); - + if ( $canRemove && in_array($params['feedType'], array('site', 'my', 'user')) ) { array_unshift($data['contextMenu'], array( @@ -1152,6 +1158,23 @@ public function genericItemRender( OW_Event $e ) )); } + // Flags + + $contentType = BOL_ContentService::getInstance()->getContentTypeByEntityType($params['action']['entityType']); + $flagsAllowed = !empty($contentType) && in_array(BOL_ContentService::MODERATION_TOOL_FLAG, $contentType["moderation"]); + + if ( $params['action']['userId'] != OW::getUser()->getId() && $flagsAllowed ) + { + array_unshift($data['contextMenu'], array( + 'label' => OW::getLanguage()->text('base', 'flag'), + 'attributes' => array( + 'onclick' => 'OW.flagContent($(this).data().etype, $(this).data().eid)', + "data-etype" => $params['action']['entityType'], + "data-eid" => $params['action']['entityId'] + ) + )); + } + $e->setData($data); } @@ -1719,5 +1742,7 @@ public function genericInit() $event = new OW_Event('feed.after_first_init', array('pluginKey' => 'newsfeed')); OW::getEventManager()->trigger($event); } + + NEWSFEED_CLASS_ContentProvider::getInstance()->init(); } } \ No newline at end of file diff --git a/zhaole365/ow_plugins/newsfeed/components/feed_item.php b/zhaole365/ow_plugins/newsfeed/components/feed_item.php index 3bd7d4c..1a0d3cf 100644 --- a/zhaole365/ow_plugins/newsfeed/components/feed_item.php +++ b/zhaole365/ow_plugins/newsfeed/components/feed_item.php @@ -123,7 +123,6 @@ protected function getActionData( NEWSFEED_CLASS_Action $action ) foreach ( $action->getActivityList() as $a ) { /* @var $a NEWSFEED_BOL_Activity */ - $activity[$a->id] = array( 'activityType' => $a->activityType, 'activityId' => $a->activityId, @@ -143,6 +142,22 @@ protected function getActionData( NEWSFEED_CLASS_Action $action ) $creatorIdList = $action->getCreatorIdList(); $data = $this->mergeData($action->getData(), $action); + + $sameFeed = false; + $feedList = array(); + foreach ( $action->getFeedList() as $feed ) + { + if ( !$sameFeed ) + { + $sameFeed = $this->sharedData['feedType'] == $feed->feedType + && $this->sharedData['feedId'] == $feed->feedId; + } + + $feedList[] = array( + "feedType" => $feed->feedType, + "feedId" => $feed->id + ); + } $eventParams = array( 'action' => array( @@ -154,7 +169,9 @@ protected function getActionData( NEWSFEED_CLASS_Action $action ) 'userId' => $action->getUserId(), // backward compatibility with desktop version "userIds" => $creatorIdList, 'format' => $action->getFormat(), - 'data' => $data + 'data' => $data, + "feeds" => $feedList, + "onOriginalFeed" => $sameFeed ), 'activity' => $activity, @@ -171,15 +188,9 @@ protected function getActionData( NEWSFEED_CLASS_Action $action ) "userIds" => $creatorIdList, 'createTime' => $action->getCreateTime() ); - - if ( $lastActivity !== null ) - { - $data = $this->extendAction($data, $lastActivity); - $data = $this->extendActionData($data, $lastActivity); - } - + $shouldExtend = $this->displayType == NEWSFEED_CMP_Feed::DISPLAY_TYPE_ACTIVITY && $lastActivity !== null; - + if ( $shouldExtend ) { if ( !empty($lastActivity['data']['string']) || !empty($lastActivity['data']['line']) ) @@ -187,10 +198,16 @@ protected function getActionData( NEWSFEED_CLASS_Action $action ) $data = $this->applyRespond($data, $lastActivity); } } - + + if ( $lastActivity !== null ) + { + $data = $this->extendAction($data, $lastActivity); + $data = $this->extendActionData($data, $lastActivity); + } + $event = new OW_Event('feed.on_item_render', $eventParams, $data); OW::getEventManager()->trigger($event); - + return $this->mergeData( $event->getData(), $action ); } @@ -220,12 +237,20 @@ protected function applyRespond( $data, $respondActivity ) protected function extendAction( $data, $activity ) { $actionOverride = $activity['data']; + $action = empty($actionOverride['action']) ? array() : $actionOverride['action']; if ( !empty($actionOverride['params']) ) { - $actionOverride['action'] = $actionOverride['params']; + $action = $actionOverride['params']; + } + + if ( !empty($action["userId"]) && empty($action["userIds"]) ) + { + $action["userIds"] = array($action["userId"]); // backward compatibility with desktop version } + $data["action"] = array_merge($data["action"], $action); + return $data; } @@ -251,7 +276,7 @@ protected function extendActionData( $data, $activity ) $newContent["vars"] = array_merge($data[$key]["vars"], $value["vars"]); } } - else if ( !in_array($key, array("string", "line")) ) + else if ( !in_array($key, array("action", "string", "line")) ) { $data[$key] = $value; } @@ -259,7 +284,7 @@ protected function extendActionData( $data, $activity ) return $data; } - + public function generateJs( $data ) { $js = UTIL_JsGenerator::composeJsString(' @@ -281,37 +306,37 @@ public function generateJs( $data ) 'displayType' => $this->displayType ) )); - + OW::getDocument()->addOnloadScript($js, 50); } - + protected function processAssigns( $content, $assigns ) { $search = array(); $values = array(); - + foreach ( $assigns as $key => $item ) { $search[] = '[ph:' . $key . ']'; $values[] = $item; } - + $result = str_replace($search, $values, $content); $result = preg_replace('/\[ph\:\w+\]/', '', $result); - + return $result; } - + protected function renderTemplate( $tplFile, $vars ) { $template = new NEWSFEED_CMP_Template(); $template->setTemplate($tplFile); - + foreach ( $vars as $k => $v ) { $template->assign($k, $v); } - + return $template->render(); } @@ -326,7 +351,7 @@ protected function renderContent( $content ) { return $content; } - + $vars = empty($content['vars']) || !is_array($content['vars']) ? array() : $content['vars']; $template = null; @@ -344,7 +369,7 @@ protected function renderContent( $content ) { return $this->renderTemplate($template, $vars); } - + if ( empty($content["format"]) ) { return ""; @@ -352,15 +377,15 @@ protected function renderContent( $content ) return $this->renderFormat($content["format"], $vars); } - + protected function getUserInfo( $userId ) { $usersInfo = $this->sharedData['usersInfo']; - + if ( !in_array($userId, $this->sharedData['usersIdList']) ) { $userInfo = BOL_AvatarService::getInstance()->getDataForUserAvatars(array($userId)); - + $usersInfo['avatars'][$userId] = $userInfo[$userId]['src']; $usersInfo['urls'][$userId] = $userInfo[$userId]['url']; $usersInfo['names'][$userId] = $userInfo[$userId]['title']; @@ -369,7 +394,7 @@ protected function getUserInfo( $userId ) 'labelColor' => $userInfo[$userId]['labelColor'] ); } - + $user = array( 'id' => $userId, 'avatarUrl' => $usersInfo['avatars'][$userId], @@ -379,7 +404,7 @@ protected function getUserInfo( $userId ) ? array('label' => '', 'labelColor' => '') : $usersInfo['roleLabels'][$userId] ); - + return $user; } @@ -398,7 +423,7 @@ protected function getActionUsersInfo( $data ) } $out = array(); - + foreach ( $userIds as $userId ) { $out[$userId] = $this->getUserInfo($userId); @@ -406,16 +431,16 @@ protected function getActionUsersInfo( $data ) return $out; } - + protected function getContextMenu( $data ) { $contextActionMenu = new BASE_CMP_ContextAction(); - + $contextParentAction = new BASE_ContextAction(); $contextParentAction->setKey('newsfeed_context_menu_' . $this->autoId); $contextParentAction->setClass('ow_newsfeed_context'); $contextActionMenu->addAction($contextParentAction); - + $order = 1; foreach( $data['contextMenu'] as $action ) { @@ -428,33 +453,33 @@ protected function getContextMenu( $data ) 'key' => uniqid($this->autoId . '_'), 'attributes' => array() ), $action); - + $contextAction = new BASE_ContextAction(); $contextAction->setParentKey($contextParentAction->getKey()); - + $contextAction->setLabel($action['label']); $contextAction->setClass($action['class']); $contextAction->setUrl($action['url']); $contextAction->setId($action['id']); $contextAction->setKey($action['key']); $contextAction->setOrder($action['order']); - + foreach ( $action['attributes'] as $key => $value ) { $contextAction->addAttribute($key, $value); } - + $contextActionMenu->addAction($contextAction); $order++; } - + return $contextActionMenu->render(); } - + protected function getFeaturesData( $data ) { $configs = $this->sharedData['configs']; - + $customFeatures = array(); $systemFeatures = array(); foreach ( $data['features'] as $key => $feature ) @@ -480,18 +505,18 @@ protected function getFeaturesData( $data ) $commentsFeature = array(); $featureData = $systemFeatures['comments']; - + $commentsFeature["authGroup"] = empty($featureData['pluginKey']) ? $data['action']['pluginKey'] : $featureData['pluginKey']; $commentsFeature["entityType"] = empty($featureData['entityType']) ? $data['action']['entityType'] : $featureData['entityType']; $commentsFeature["entityId"] = empty($featureData['entityId']) ? $data['action']['entityId'] : $featureData['entityId']; - + $authActionDto = BOL_AuthorizationService::getInstance()->findAction($commentsFeature["authGroup"], 'add_comment', true); - + if ( $authActionDto === null ) { $commentsFeature["authGroup"] = 'newsfeed'; } - + $commentsFeature['count'] = $this->sharedData['commentsData'][$commentsFeature["entityType"]][$commentsFeature["entityId"]]['commentsCount']; $commentsFeature['allow'] = OW::getUser()->isAuthorized($commentsFeature["authGroup"], 'add_comment'); $commentsFeature['expanded'] = $configs['features_expanded'] && $commentsFeature['count'] > 0; @@ -505,14 +530,14 @@ protected function getFeaturesData( $data ) $likesFeature = array(); $featureData = $systemFeatures['likes']; - + $likesFeature["entityType"] = empty($featureData['entityType']) ? $data['action']['entityType'] : $featureData['entityType']; $likesFeature["entityId"] = empty($featureData['entityId']) ? $data['action']['entityId'] : $featureData['entityId']; - + $likesData = $this->sharedData['likesData']; $likes = empty($likesData[$likesFeature["entityType"]][$likesFeature["entityId"]]) ? array() : $likesData[$likesFeature["entityType"]][$likesFeature["entityId"]]; - + $userLiked = false; foreach ( $likes as $like ) { @@ -521,12 +546,12 @@ protected function getFeaturesData( $data ) $userLiked = true; } } - + $likesFeature['count'] = count($likes); $likesFeature['liked'] = $userLiked; $likesFeature["likes"] = $likes; $likesFeature['allow'] = true; - + if ( empty($featureData['error']) ) { $likesFeature['error'] = OW::getUser()->isAuthenticated() @@ -560,7 +585,7 @@ protected function getFeatures( $data ) ), 'custom' => array() ); - + $out['custom'] = $featuresData["custom"]; $systemFeatures = $featuresData["system"]; @@ -578,20 +603,20 @@ protected function getFeatures( $data ) $commentsParams->setDisplayType(BASE_CommentsParams::DISPLAY_TYPE_WITH_LOAD_LIST_MINI); $commentsParams->setWrapInBox(false); $commentsParams->setShowEmptyList(false); - + if ( !empty($feature['error']) ) { $commentsParams->setErrorMessage($feature['error']); } - + if ( isset($feature['allow']) ) { $commentsParams->setAddComment($feature['allow']); } - + $commentCmp = new BASE_CMP_Comments($commentsParams); $out['system']['comments']['cmp'] = $commentCmp->render(); - + $out['system']['comments']['count'] = $feature["count"]; $out['system']['comments']['allow'] = $feature["allow"]; $out['system']['comments']['expanded'] = $feature["expanded"]; @@ -600,7 +625,7 @@ protected function getFeatures( $data ) if ( !empty($systemFeatures["likes"]) ) { $feature = $systemFeatures['likes']; - + $out['system']['likes']['count'] = $feature["count"]; $out['system']['likes']['liked'] = $feature["liked"]; $out['system']['likes']['allow'] = $feature["allow"]; @@ -609,7 +634,7 @@ protected function getFeatures( $data ) $likeCmp = new NEWSFEED_CMP_Likes($feature["entityType"], $feature["entityId"], $feature["likes"]); $out['system']['likes']['cmp'] = $likeCmp->render(); } - + return $out; } @@ -619,39 +644,39 @@ protected function getLocalizedText( $textData ) { return $textData; } - + $keyData = explode("+", $textData["key"]); $vars = empty($textData["vars"]) ? array() : $textData["vars"]; return OW::getLanguage()->text($keyData[0], $keyData[1], $vars); } - + public function getTplData( $cycle = null ) { $action = $this->action; $data = $this->getActionData($action); $usersInfo = $this->sharedData['usersInfo']; - + $configs = $this->sharedData['configs']; - + $userNameEmbed = '' . $usersInfo['names'][$action->getUserId()] . ''; $assigns = empty($data['assign']) ? array() : $data['assign']; $replaces = array_merge(array( 'user' => $userNameEmbed ), $assigns); - + $data['content'] = $this->renderContent($data['content']); - + foreach ( $assigns as & $item ) { $item = $this->renderContent($item); } - + $permalink = empty($data['permalink']) ? NEWSFEED_BOL_Service::getInstance()->getActionPermalink($action->getId(), $this->sharedData['feedType'], $this->sharedData['feedId']) : null; - + $string = $this->getLocalizedText($data['string']); $line = $this->getLocalizedText($data['line']); @@ -674,15 +699,15 @@ public function getTplData( $cycle = null ) 'permalink' => $permalink, 'cycle' => $cycle ); - + $item['autoId'] = $this->autoId; - + $item['features'] = $this->getFeatures($data); $item['contextActionMenu'] = $this->getContextMenu($data); return $item; } - + public function renderMarkup( $cycle = null ) { $item = $this->getTplData($cycle); @@ -690,7 +715,7 @@ public function renderMarkup( $cycle = null ) $this->assign('item', $item); $this->assign("displayType", $this->displayType); - + // Only for the item view page if ( $this->displayType == NEWSFEED_CMP_Feed::DISPLAY_TYPE_PAGE ) { @@ -717,4 +742,4 @@ public function renderMarkup( $cycle = null ) return $this->render(); } -} +} \ No newline at end of file diff --git a/zhaole365/ow_plugins/newsfeed/components/update_status.php b/zhaole365/ow_plugins/newsfeed/components/update_status.php index 4f36369..d919b2f 100644 --- a/zhaole365/ow_plugins/newsfeed/components/update_status.php +++ b/zhaole365/ow_plugins/newsfeed/components/update_status.php @@ -234,15 +234,19 @@ public function __construct( $feedAutoId, $feedType, $feedId, $actionVisibility $(this.status).val(""); $(".newsfeed-status-preloader", "#" + {$autoId}).hide(); - if ( r ) - { - window.ow_newsfeed_feed_list[{$autoId}].loadNewItem(r, false); + if ( r.error ) { + OW.error(r.error); return; + } + + if ( r.message ) { + OW.info(r.message); } - else + + if ( r.item ) { - OW.error({$errorMessage}); + window.ow_newsfeed_feed_list[{$autoId}].loadNewItem(r.item, false); } - });', array('autoId' => $feedAutoId, 'errorMessage' => OW::getLanguage()->text('base', 'form_validate_common_error_message') )); + });', array('autoId' => $feedAutoId )); OW::getDocument()->addOnloadScript( $js ); } diff --git a/zhaole365/ow_plugins/newsfeed/controllers/ajax.php b/zhaole365/ow_plugins/newsfeed/controllers/ajax.php index 42fec0b..bb6d6fc 100644 --- a/zhaole365/ow_plugins/newsfeed/controllers/ajax.php +++ b/zhaole365/ow_plugins/newsfeed/controllers/ajax.php @@ -125,7 +125,9 @@ public function statusUpdate() { if ( empty($_POST['status']) && empty($_POST['attachment']) ) { - echo json_encode(false); + echo json_encode(array( + "error" => OW::getLanguage()->text('base', 'form_validate_common_error_message') + )); exit; } @@ -187,9 +189,17 @@ public function statusUpdate() BOL_AttachmentService::getInstance()->deleteAttachmentByBundle("newsfeed", $attachId); } + $item = empty($data["entityType"]) || empty($data["entityId"]) + ? null + : array( + "entityType" => $data["entityType"], + "entityId" => $data["entityId"] + ); + echo json_encode(array( - "entityType" => $data["entityType"], - "entityId" => $data["entityId"] + "item" => $item, + "message" => empty($data["message"]) ? null : $data["message"], + "error" => empty($data["error"]) ? null : $data["error"] )); exit; } @@ -201,7 +211,9 @@ public function statusUpdate() "attachmentId" => $attachId )); - echo json_encode($out); + echo json_encode(array( + "item" => $out + )); exit; } diff --git a/zhaole365/ow_plugins/newsfeed/langs.zip b/zhaole365/ow_plugins/newsfeed/langs.zip index bce11e1b1415f6049ba54939b5b1d75d127a43aa..7437332c78549f05eec626f66bdc75316617b8de 100644 GIT binary patch literal 3677 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 delta 1445 zcmV;W1zP&u9L5a}P)h>@6aWAK007o?dqb1F1||g7b$dgT<_3cj*L8bC_5I|d0|fv8 z(iH#z7yy$k4jO;8Sj}$ZHW0q=Qw)S+duW?=+R)}c?f-O-jqPx8Xxh{X%8e_{y9_8LjefEP~3vROL z`sxX*8jvNHZ@8^uV>Ky`4T=^0X0|l3;7>@0H%ydx?LJbl8FCF_|LQXATwM~}Nz4G3 zs60n$Tg3XCP?dzgJ}V9C-RI_o;74rzSV$j=lSa>rMw)XOGa=NrK{Me-TF?)YEd@fe zI}6JBID&uUweWJ7Ur(Zm#9IlfLqL4v%q9(D`8ndiYrzM3tR#|7fhxU zj$Ea9ah}qF@eR_OW1?5NSP%y%Ef_XpdjLy04H0@*riDS zE?Nz@AsVw$3|dR?&$Iyd^}+;#Gd0eTIp*w=xW39cvX)zc=Smv3!FXvqckgLoN~U&b zpmBfN&(dbGqbZl^?iOQ~rU%^gog;?fg-*YwLu^klbC0Ww=qA1k3;#S84LBj%2CO#4{!m@tEv8ChN52l z8Z99#ABXRgFvuU^Z#AzA3hCGqr<|wZf6hjT22dSLIIss2UA)BfPn@)$%wYGfJdJZJo*X`Wz(&s^0COn6kZ^5}_s11TdFk==G zl_mRZV}Eilc;?pilOX`^xZ63cyr$C^lCg&f4fvaZcrfVAuD(E%t5Rk z$aptixfY3Sh$#KQ;R=EWfC}veJm?DgsYA2qlT}4ako9--S4o#Z|Rx206NtgVT(r;%EZ~Nrr(#|ZQ z+dt9**Bj#qp&%a7OC$S~)QW$jpq5u|xU~K8@^>1`|NZ+P0~yWXD9MzY6JWaOS4>Q_ z=UxrZTPSwIj#3^clE->|T5txLfKW6+=rbv$lq1jg(Qk~)5ptq2<<>OWc5I%kN3Hf> zkx{&kp^yEs^F>zzPSN$2r)#vKH92!2uSMHT_3C;&Xgs-QCvIzq(fS=UczcH~T!w#W zuV4KKP)h*<000yK00000)^&SBlaUP?liUmqlei5J1lDzXLzBx58UiW+ljjX4AlG$! zL-qaSqXPv10MZoz02lxO0000000000000270Fx~aA`Sxp0|3SV008O*00000BMPZ7 diff --git a/zhaole365/ow_plugins/newsfeed/mobile/components/feed_item.php b/zhaole365/ow_plugins/newsfeed/mobile/components/feed_item.php index f784d6a..c3dc959 100644 --- a/zhaole365/ow_plugins/newsfeed/mobile/components/feed_item.php +++ b/zhaole365/ow_plugins/newsfeed/mobile/components/feed_item.php @@ -202,8 +202,12 @@ protected function applyRespond( $data, $activity ) return $data; } + $userId = empty($activity["data"]["action"]["userId"]) + ? $activity["userId"] + : $activity["data"]["action"]["userId"]; + $data["respond"] = array( - "user" => $this->getUserInfo($activity["userId"]), + "user" => $this->getUserInfo($userId), "text" => $this->getLocalizedText($activity["data"]["string"]) ); diff --git a/zhaole365/ow_plugins/newsfeed/mobile/components/update_status.php b/zhaole365/ow_plugins/newsfeed/mobile/components/update_status.php index f4917df..ff11a7e 100644 --- a/zhaole365/ow_plugins/newsfeed/mobile/components/update_status.php +++ b/zhaole365/ow_plugins/newsfeed/mobile/components/update_status.php @@ -61,7 +61,14 @@ public function initAttachments($feedAutoId, Form $form) OWM.error(r.error); return; } - window.ow_newsfeed_feed_list[{$autoId}].loadNewItem(r, false); + if ( r.item ) { + window.ow_newsfeed_feed_list[{$autoId}].loadNewItem(r.item, false); + } + + if ( r.message ) { + OWM.info(r.message); + } + OWM.getActiveFloatBox().close(); }', array( diff --git a/zhaole365/ow_plugins/newsfeed/mobile/controllers/feed.php b/zhaole365/ow_plugins/newsfeed/mobile/controllers/feed.php index f6e39ac..28dd90e 100644 --- a/zhaole365/ow_plugins/newsfeed/mobile/controllers/feed.php +++ b/zhaole365/ow_plugins/newsfeed/mobile/controllers/feed.php @@ -151,9 +151,17 @@ public function statusUpdate() if ( !empty($data) ) { + $item = empty($data["entityType"]) || empty($data["entityId"]) + ? null + : array( + "entityType" => $data["entityType"], + "entityId" => $data["entityId"] + ); + $this->echoOut($_POST['feedAutoId'], array( - "entityType" => $data["entityType"], - "entityId" => $data["entityId"] + "item" => $item, + "message" => empty($data["message"]) ? null : $data["message"], + "error" => empty($data["error"]) ? null : $data["error"] )); } @@ -164,6 +172,8 @@ public function statusUpdate() "attachmentId" => $attachment["uid"] )); - $this->echoOut($_POST['feedAutoId'], $out); + $this->echoOut($_POST['feedAutoId'], array( + "item" => $out + )); } } \ No newline at end of file diff --git a/zhaole365/ow_plugins/newsfeed/plugin.xml b/zhaole365/ow_plugins/newsfeed/plugin.xml index bfa109b..5014a50 100644 --- a/zhaole365/ow_plugins/newsfeed/plugin.xml +++ b/zhaole365/ow_plugins/newsfeed/plugin.xml @@ -8,7 +8,7 @@ plugins@oxwall.org http://www.oxwall.org/foundation e547ebcf734341ec11911209d93a1054 - 8150 + 8520 (C) 2009 Oxwall Foundation. All rights reserved. The BSD License http://www.opensource.org/licenses/bsd-license.php diff --git a/zhaole365/ow_plugins/newsfeed/update/8520/langs.zip b/zhaole365/ow_plugins/newsfeed/update/8520/langs.zip new file mode 100644 index 0000000000000000000000000000000000000000..9e720fb678316574d67cb208210708d60f471f1e GIT binary patch literal 1760 zcmWIWW@Zs#0D)gMS*~CPl;8oW4Go7@e(BlE*Yj%BNor*3D%#~()f(*Kkj@A)!i%F#zQSuB%m zizi16@FA_bZ+}uCCkddFjEZE z8F{JY#c8RjDIjNTjkuln*i4}I{(6O$q~8~=WtPQvt(&{RV|zxUnZ|@AuJc)W9`2`zV3ibMh2TM4mdztetXy zpLq1S5}`Xf^A~C`W~SWeo2higZQ-K;=KBwfO?UEHR`sjK(cy-7j3;u||rk zwDF$Zspun6adJh6q0Gvj#KL)(`aX(YI%D9n)66KfKDhb2`jZW;g4Yx5o0)=6%vrL< z!69+Vla%=zG!&PeIPfbiJdihWYVr%;(!F9&%K1W=1urqk8Jo6nv3PxOYgDT~W*N!6 zF!I>Uy`qy^G^DQ02>OtuB_VxaOJGG?C`bFFhke3d%_mw~HFK)+2*$m#zBFB@uK!7- z5AUjpW_%jXMk;-r1zS}4bGx>jUv#bD`C>z9*Ji_t|0TR10`zp5-f}^zT$B%Jt2aYs&J=T)e2OuAqokT-3Q36D54JM+TQyZ5(jOSa#YJIOQmne&ZXxB8RI*$New_C)vJ zXmdSht8&1k_~`cS-W6xhT6+oQG=(*;f8pOH-*i3t^SS-^l;0h!D|LOVlo^_#!x-8a z7n2vfdZ)#0h4c5tqZd7Vk$2AjX`RM&6X%6>6Er<8eo-`Q$TYlq|4hJ@uK1-#+n-+k z5Gz#mQ~1x`q*O;|+3F`-KAZeGf77E07!Qx_EtojPrqB2{bMm*%k~#0EE}kf|<=Cs+ zOSY8!eO91mv2s&TrJWV)&!c5)o<1{~@cP%<-@d=*H$x} zUQ}tg@b@Q;ieKlxZMI|hR=nGI-JT_vxli73{K5EOm-0K_U3OF0GlZ5sKd?u#X=Cp4 z`pUCXFP8~*G%n0?^>JkGx2oboyeAAj>484s?qRTt;V%wJe|e8X1%rCH_G^$)au z@`ks!E`7cD+D=1v-;e%zrCuDF%EgkG&c5GYux#NeKDFvc`(5R9nll9Xnor!8$vJc3 zxxkc3t5`J;^c&8~y{pjDUs}?pzuEi#E45n@Ycs#p+zT!FHm9s||D#U}e6+6jI7=Ak zs?X>W`r^4p?qY@Yy_;g4?&A#xmrnOn;GbGQ5+`hPCg~YYxwHM0{rrKV+>~pf0_u&%n zJg=&zFp2s5U&p*importPrefixFromZip($updateDir . 'langs.zip', 'newsfeed'); \ No newline at end of file diff --git a/zhaole365/ow_plugins/newsfeed/views/components/feed.html b/zhaole365/ow_plugins/newsfeed/views/components/feed.html index 10e09d6..0f30612 100644 --- a/zhaole365/ow_plugins/newsfeed/views/components/feed.html +++ b/zhaole365/ow_plugins/newsfeed/views/components/feed.html @@ -103,7 +103,11 @@ { margin-bottom: 0px; } - + .ow_video_playing iframe, + .ow_video_playing object, + .ow_video_playing embed { + width:100%; + } {/literal}{/style}
{if !empty($statusMessage)}