//
|
// PBCommentsController.m
|
// IphoneBIMe
|
//
|
// Created by zjf on 2018/8/23.
|
// Copyright © 2018年 ProBIM. All rights reserved.
|
//
|
|
#import "PBCommentsController.h"
|
#import "PBProjectModel.h"
|
#import "PBIssueDetailModel.h"
|
#import "PBDocModel.h"
|
#import "PBCommentsModel.h"
|
#import "PBPreviewDocViewController.h"
|
#import "PBAddCommentsController.h"
|
#import "PBNetworkModel.h"
|
#import "PBPromptView.h"
|
#import "PBPublishCommentCell.h"
|
#import "PBIssueListModel.h"
|
#import "PBCommentsCell.h"
|
#import "PBImageCommentsCell.h"
|
static NSString *const CommentsCellID = @"CommentsCellID";
|
static NSString *const ImageCommentsCellID = @"ImageCommentsCellID";
|
@interface PBCommentsController ()<UIGestureRecognizerDelegate>
|
@property (nonatomic, strong) PBPromptView *promptView;
|
@property (nonatomic, strong) NSMutableArray *commentM;
|
@end
|
|
@implementation PBCommentsController
|
|
- (void)viewDidLoad {
|
[super viewDidLoad];
|
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.f) {
|
self.edgesForExtendedLayout = UIRectEdgeNone;
|
self.navigationController.interactivePopGestureRecognizer.enabled = YES;
|
self.navigationController.interactivePopGestureRecognizer.delegate = self;
|
}
|
[self setupNav];
|
[self setTableView];
|
}
|
|
- (void)setupNav {
|
if (self.commentM.count == 0) {
|
self.title = @"评论";
|
}else {
|
self.title = [NSString stringWithFormat:@"评论(%zd)",self.commentM.count];
|
}
|
PBBackNavItem *backNav = [PBBackNavItem backNacItem];
|
backNav.title = @" ";
|
[backNav addTarget:self action:@selector(backItemAction) forControlEvents:UIControlEventTouchUpInside];
|
UIBarButtonItem *backNavItem = [[UIBarButtonItem alloc] initWithCustomView:backNav];
|
self.navigationItem.leftBarButtonItem = backNavItem;
|
UIBarButtonItem *addCommentsItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"Issue_list_add"] style:UIBarButtonItemStylePlain target:self action:@selector(commentsAction)];
|
self.navigationItem.rightBarButtonItem = addCommentsItem;
|
|
}
|
- (void)backItemAction {
|
self.issueDetailModel.comments = self.commentM.copy;
|
if (self.CommentsCountBlock) {
|
self.CommentsCountBlock(self.issueDetailModel.comments.count);
|
}
|
[self.navigationController popViewControllerAnimated:YES];
|
}
|
- (void)commentsAction {
|
PBAddCommentsController *addCommentsVC = [[PBAddCommentsController alloc] init];
|
addCommentsVC.projectModel = self.projectModel;
|
addCommentsVC.issueListModel = self.issueListModel;
|
addCommentsVC.issueDetailModel = self.issueDetailModel;
|
addCommentsVC.SaveCommentsBlock = ^(NSDictionary *commentsDic) {
|
[self.commentM insertObject:commentsDic atIndex:0];
|
self.title = [NSString stringWithFormat:@"评论(%zd)",self.commentM.count];
|
self.promptView.hidden = YES;
|
[self.tableView reloadData];
|
};
|
[self.navigationController pushViewController:addCommentsVC animated:YES];
|
}
|
- (void)loadCommentsList {
|
// [YJProgressHUD showProgress:@"" inView:self.view];
|
// [[PBNetworkTools sharedTools] RequestGetIssueCommentsByIdWithIssueId:self.issueListModel.IssueId andCallBack:^(NSURLSessionDataTask *task, id response, NSError *error) {
|
// if (error) {
|
// NSLog(@"%@",error);
|
// [YJProgressHUD showMessage:@"加载评论失败" inView:self.view];
|
// return;
|
// }
|
// NSString *str = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding];
|
// PBNetworkModel *networkModel = [PBNetworkModel yy_modelWithJSON:str];
|
// if (networkModel.Ret == 1) {
|
// NSArray *comments = networkModel.Data;
|
// self.issueDetailModel.comments = comments;
|
// self.title = [NSString stringWithFormat:@"评论(%zd)",self.issueDetailModel.comments.count];
|
// if (comments.count == 0) {
|
// [YJProgressHUD hide];
|
// self.promptView.hidden = NO;
|
// return;
|
// }else {
|
// self.promptView.hidden = YES;
|
// }
|
// NSMutableArray *commentsM = [[NSMutableArray alloc] init];
|
// for (NSDictionary *obj in comments) {
|
// PBCommentsModel *commentsModel = [PBCommentsModel yy_modelWithDictionary:obj];
|
// [commentsM addObject:commentsModel];
|
// }
|
// self.commentM = commentsM;
|
// [YJProgressHUD hide];
|
// [self.tableView reloadData];
|
// }else {
|
// [YJProgressHUD showMessage:@"加载评论失败" inView:self.view];
|
// }
|
// }];
|
}
|
|
- (void)setTableView {
|
[self.tableView registerClass:[PBCommentsCell class] forCellReuseIdentifier:CommentsCellID];
|
[self.tableView registerClass:[PBImageCommentsCell class] forCellReuseIdentifier:ImageCommentsCellID];
|
self.tableView.estimatedRowHeight = 80.f;
|
self.tableView.rowHeight = UITableViewAutomaticDimension;
|
self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
|
[self.tableView addSubview:self.promptView];
|
if (self.commentM.count == 0) {
|
self.promptView.hidden = NO;
|
}else {
|
self.promptView.hidden = YES;
|
}
|
}
|
|
#pragma mark - Table view data source
|
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
|
return self.commentM.count;
|
}
|
|
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
|
PBCommentsModel *commentsModel = [PBCommentsModel yy_modelWithDictionary:self.commentM[indexPath.row]];
|
if ([commentsModel.contenttype isEqualToString:@"text"]) {
|
PBCommentsCell *cell = [tableView dequeueReusableCellWithIdentifier:CommentsCellID forIndexPath:indexPath];
|
cell.commentsModel = commentsModel;
|
cell.deleteCommentsBlock = ^{
|
[self creatAlertControllerWithDeleteAndData:commentsModel andIndex:indexPath];
|
};
|
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
|
return cell;
|
}else {
|
PBImageCommentsCell *cell = [tableView dequeueReusableCellWithIdentifier:ImageCommentsCellID forIndexPath:indexPath];
|
cell.projectModel = self.projectModel;
|
cell.commentsModel = commentsModel;
|
cell.deleteCommentsBlock = ^{
|
[self creatAlertControllerWithDeleteAndData:commentsModel andIndex:indexPath];
|
};
|
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
|
return cell;
|
}
|
}
|
|
- (void)creatAlertControllerWithDeleteAndData:(PBCommentsModel *)commentsModel andIndex:(NSIndexPath *)indexPath {
|
NSLog(@"fenzu:%zd-row:%zd",indexPath.section, indexPath.row);
|
UIAlertController *alertVC = [UIAlertController alertControllerWithTitle:@"提示" message:@"您确定要删除这条评论吗?" preferredStyle:UIAlertControllerStyleAlert];
|
UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil];
|
UIAlertAction *determineAction = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDestructive handler:^(UIAlertAction * _Nonnull action) {
|
[self deleteCommentsWith:commentsModel andIndexPath:indexPath];
|
}];
|
[alertVC addAction:cancelAction];
|
[alertVC addAction:determineAction];
|
[self presentViewController:alertVC animated:YES completion:nil];
|
}
|
|
- (void)deleteCommentsWith:(PBCommentsModel *)commentsModel andIndexPath:(NSIndexPath *)indexPath {
|
[YJProgressHUD showProgress:@"" inView:self.view];
|
[[PBNetworkTools sharedTools] RequestDeleteMessageWithMessageID:commentsModel.issue_talkid andIssueID:commentsModel.issueid andCallBack:^(NSURLSessionDataTask *task, id response, NSError *error) {
|
if (error) {
|
[YJProgressHUD showMessage:@"删除评论失败" inView:self.view];
|
return;
|
}
|
NSString *str = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding];
|
PBNetworkModel *networkModel = [PBNetworkModel yy_modelWithJSON:str];
|
if (networkModel.Ret == 1) {
|
[YJProgressHUD hide];
|
[self.commentM removeObjectAtIndex:indexPath.row];
|
// [self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
|
[self.tableView reloadData];
|
if (self.commentM.count == 0) {
|
self.title = @"评论";
|
self.promptView.hidden = NO;
|
}else {
|
self.title = [NSString stringWithFormat:@"评论(%zd)",self.commentM.count];
|
self.promptView.hidden = YES;
|
}
|
}else {
|
[YJProgressHUD showMessage:networkModel.Msg inView:self.view];
|
}
|
}];
|
}
|
|
|
#pragma mark - Set方法
|
- (void)setProjectModel:(PBProjectModel *)projectModel {
|
_projectModel = projectModel;
|
}
|
- (void)setIssueDetailModel:(PBIssueDetailModel *)issueDetailModel {
|
_issueDetailModel = issueDetailModel;
|
self.commentM = issueDetailModel.comments.mutableCopy;
|
}
|
|
#pragma mark - 懒加载
|
- (PBPromptView *)promptView {
|
if (_promptView == nil) {
|
_promptView = [[PBPromptView alloc] initWithFrame:self.tableView.bounds];
|
_promptView.imageV.image = [UIImage imageNamed:@"Issue_list_empty"];
|
_promptView.textL.text = @"暂无评论点击右上角加号新增评论";
|
// NSMutableAttributedString *noteStr = [[NSMutableAttributedString alloc] initWithString:_promptView.textL.text];
|
// NSRange redRange = NSMakeRange([[noteStr string] rangeOfString:@"加号"].location, [[noteStr string] rangeOfString:@"加号"].length);
|
// //需要设置的位置
|
// [noteStr addAttribute:NSForegroundColorAttributeName value:IndicatedColor range:redRange];
|
// //设置颜色
|
// [_promptView.textL setAttributedText:noteStr];
|
}
|
return _promptView;
|
}
|
|
/*
|
// Override to support conditional editing of the table view.
|
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
|
// Return NO if you do not want the specified item to be editable.
|
return YES;
|
}
|
*/
|
|
/*
|
// Override to support editing the table view.
|
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
|
if (editingStyle == UITableViewCellEditingStyleDelete) {
|
// Delete the row from the data source
|
[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
|
} else if (editingStyle == UITableViewCellEditingStyleInsert) {
|
// Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
|
}
|
}
|
*/
|
|
/*
|
// Override to support rearranging the table view.
|
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath {
|
}
|
*/
|
|
/*
|
// Override to support conditional rearranging of the table view.
|
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath {
|
// Return NO if you do not want the item to be re-orderable.
|
return YES;
|
}
|
*/
|
|
/*
|
#pragma mark - Navigation
|
|
// In a storyboard-based application, you will often want to do a little preparation before navigation
|
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
|
// Get the new view controller using [segue destinationViewController].
|
// Pass the selected object to the new view controller.
|
}
|
*/
|
|
@end
|