南鑫林 5 anni fa
parent
commit
5d329d667e

+ 23 - 23
RainbowPlanet/RainbowPlanet.xcodeproj/project.pbxproj

@@ -5104,8 +5104,8 @@
 		BD12B67122B4E96100AEB10B /* PublishModule */ = {
 			isa = PBXGroup;
 			children = (
-				A7FE09122367C892007A73EA /* PublishArticle */,
 				BD929CCD22B904A30098C139 /* PublishViewController.swift */,
+				A7FE09122367C892007A73EA /* PublishArticle */,
 				BDE376C922C1B5350055E2EA /* AliyunVideo */,
 				BD12B67222B4E99800AEB10B /* PublishMediaPicker */,
 				BD01B1F722BC673900CE9F36 /* PublishTakePhoto */,
@@ -5796,8 +5796,8 @@
 				A77F2C5A2231FB49001BD3F6 /* Frameworks */,
 				A77F2C5B2231FB49001BD3F6 /* Resources */,
 				A74D9D5F2327B54100F05C14 /* Embed App Extensions */,
-				573FE66D1FB80A802F1FBA8E /* [CP] Embed Pods Frameworks */,
-				20C1D9E7AE6AEAFEF66E553B /* [CP] Copy Pods Resources */,
+				FB0B3D456A50F201C57ABDBC /* [CP] Embed Pods Frameworks */,
+				F1BC6D623A3819C7C46836E3 /* [CP] Copy Pods Resources */,
 			);
 			buildRules = (
 			);
@@ -5980,60 +5980,60 @@
 /* End PBXResourcesBuildPhase section */
 
 /* Begin PBXShellScriptBuildPhase section */
-		20C1D9E7AE6AEAFEF66E553B /* [CP] Copy Pods Resources */ = {
+		D3A9893FB9EA18608E79E053 /* [CP] Check Pods Manifest.lock */ = {
 			isa = PBXShellScriptBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
 			);
 			inputFileListPaths = (
-				"${PODS_ROOT}/Target Support Files/Pods-RainbowPlanet/Pods-RainbowPlanet-resources-${CONFIGURATION}-input-files.xcfilelist",
 			);
-			name = "[CP] Copy Pods Resources";
+			inputPaths = (
+				"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+				"${PODS_ROOT}/Manifest.lock",
+			);
+			name = "[CP] Check Pods Manifest.lock";
 			outputFileListPaths = (
-				"${PODS_ROOT}/Target Support Files/Pods-RainbowPlanet/Pods-RainbowPlanet-resources-${CONFIGURATION}-output-files.xcfilelist",
+			);
+			outputPaths = (
+				"$(DERIVED_FILE_DIR)/Pods-RainbowPlanet-checkManifestLockResult.txt",
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 			shellPath = /bin/sh;
-			shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RainbowPlanet/Pods-RainbowPlanet-resources.sh\"\n";
+			shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n    # print error to STDERR\n    echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n    exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
 			showEnvVarsInLog = 0;
 		};
-		573FE66D1FB80A802F1FBA8E /* [CP] Embed Pods Frameworks */ = {
+		F1BC6D623A3819C7C46836E3 /* [CP] Copy Pods Resources */ = {
 			isa = PBXShellScriptBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
 			);
 			inputFileListPaths = (
-				"${PODS_ROOT}/Target Support Files/Pods-RainbowPlanet/Pods-RainbowPlanet-frameworks-${CONFIGURATION}-input-files.xcfilelist",
+				"${PODS_ROOT}/Target Support Files/Pods-RainbowPlanet/Pods-RainbowPlanet-resources-${CONFIGURATION}-input-files.xcfilelist",
 			);
-			name = "[CP] Embed Pods Frameworks";
+			name = "[CP] Copy Pods Resources";
 			outputFileListPaths = (
-				"${PODS_ROOT}/Target Support Files/Pods-RainbowPlanet/Pods-RainbowPlanet-frameworks-${CONFIGURATION}-output-files.xcfilelist",
+				"${PODS_ROOT}/Target Support Files/Pods-RainbowPlanet/Pods-RainbowPlanet-resources-${CONFIGURATION}-output-files.xcfilelist",
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 			shellPath = /bin/sh;
-			shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RainbowPlanet/Pods-RainbowPlanet-frameworks.sh\"\n";
+			shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RainbowPlanet/Pods-RainbowPlanet-resources.sh\"\n";
 			showEnvVarsInLog = 0;
 		};
-		D3A9893FB9EA18608E79E053 /* [CP] Check Pods Manifest.lock */ = {
+		FB0B3D456A50F201C57ABDBC /* [CP] Embed Pods Frameworks */ = {
 			isa = PBXShellScriptBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
 			);
 			inputFileListPaths = (
+				"${PODS_ROOT}/Target Support Files/Pods-RainbowPlanet/Pods-RainbowPlanet-frameworks-${CONFIGURATION}-input-files.xcfilelist",
 			);
-			inputPaths = (
-				"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
-				"${PODS_ROOT}/Manifest.lock",
-			);
-			name = "[CP] Check Pods Manifest.lock";
+			name = "[CP] Embed Pods Frameworks";
 			outputFileListPaths = (
-			);
-			outputPaths = (
-				"$(DERIVED_FILE_DIR)/Pods-RainbowPlanet-checkManifestLockResult.txt",
+				"${PODS_ROOT}/Target Support Files/Pods-RainbowPlanet/Pods-RainbowPlanet-frameworks-${CONFIGURATION}-output-files.xcfilelist",
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 			shellPath = /bin/sh;
-			shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n    # print error to STDERR\n    echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n    exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+			shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RainbowPlanet/Pods-RainbowPlanet-frameworks.sh\"\n";
 			showEnvVarsInLog = 0;
 		};
 /* End PBXShellScriptBuildPhase section */

+ 28 - 1
RainbowPlanet/RainbowPlanet/Manager/WebViewJavascriptBridgeManager/WebViewJavascriptBridgeManager.swift

@@ -55,6 +55,20 @@ class WebViewJavascriptBridgeManager: NSObject {
         bridge?.callHandler("h5", data: datepickerDic)
     }
     
+    /// 返回话题
+    ///
+    /// - Parameter bridge: 交互对象
+    func callHandlerTopic(bridge: WebViewJavascriptBridge?,topic:Array<CommunityTopicDataModel>) {
+        //获取当前时间
+        var dictionary = Dictionary<String,Any>()
+        dictionary.updateValue("selectTopic", forKey: "type")
+        var topicDictionary = Dictionary<String,Any>()
+        topicDictionary.updateValue(topic.toJSONString() as Any, forKey: "topic")
+        dictionary.updateValue(topicDictionary, forKey: "params")
+        NXLLog(JSON(dictionary))
+        bridge?.callHandler("h5", data: dictionary)
+    }
+    
     
     /// 注册回调
     ///
@@ -121,13 +135,26 @@ class WebViewJavascriptBridgeManager: NSObject {
             }
         }
         
-        // 日期
+        // 分享
         if wvjbModel?.modelType  == .shareLink {
             ShareH5LinkView.shareH5LinkView(h5Str:wvjbModel?.params?.link ?? "", thumbnailImg: UIImage.imageUrl(wvjbModel?.params?.imgUrl ?? ""), sharedTitle: wvjbModel?.params?.title ?? "", sharedDetailTitle: wvjbModel?.params?.desc ?? "") {
                 
             }
         }
         
+        // 话题
+        if wvjbModel?.modelType  == .selectTopic {
+            let vc = PublishAddTopicController()
+            NXLLog(wvjbModel?.params?.topic)
+            let topicMdlArr : Array<CommunityTopicDataModel> = Array<CommunityTopicDataModel>.init(JSONString: wvjbModel?.params?.topic ?? "[]") ?? []
+            vc.selTopicModelArr = topicMdlArr
+            vc.selTopicsClosure = {
+                [weak self] topicMdlArr in
+                self?.callHandlerTopic(bridge: bridge, topic: topicMdlArr)
+            }
+            UIViewController.topMost?.navigationController?.pushViewController(vc, animated: true)
+        }
+        
         // 跳转原生
         if wvjbModel?.modelType  == .view {
             // 发布

+ 9 - 0
RainbowPlanet/RainbowPlanet/Model/WVJBModel/WVJBModel.swift

@@ -17,6 +17,8 @@ import ObjectMapper
 /// - follow: 关注
 /// - datepicker: 时间picker
 /// - datepicker: 分享链接
+/// - selectTopic: 话题
+/// - publish: 点击发布
 enum WVJBModelType : String {
     case none = ""
     case share = "share"
@@ -29,6 +31,8 @@ enum WVJBModelType : String {
     case back = "back"
     case datepicker = "datepicker"
     case shareLink = "shareLink"
+    case selectTopic = "selectTopic"
+    case publish = "publish"
 }
 /// WebViewJavascriptBridgeModel 简写 WVJBModel
 class WVJBModel:NSObject,Mappable{
@@ -118,6 +122,10 @@ class WVJBParamsModel:NSObject,Mappable {
         }
     }
     
+    // selectTopic
+    /// 话题
+    var topic : String?
+    
     var key : String?
     
     /// 描述
@@ -168,6 +176,7 @@ class WVJBParamsModel:NSObject,Mappable {
         desc <- map["desc"]
         link <- map["link"]
         imgUrl <- map["imgUrl"]
+        topic <- map["topic"]
     }
 
 }

+ 5 - 0
RainbowPlanet/RainbowPlanet/Modules/H5Modules/H5Common/ViewController/H5CommonViewController.swift

@@ -31,9 +31,14 @@ class H5CommonViewController: BaseJSWebBaseViewController {
     override func viewDidLoad() {
         super.viewDidLoad()
         setupViews()
+        setupLayouts()
         setupData()
     }
     
+    override func setupLayouts() {
+        super.setupLayouts()
+    }
+    
     //MARK: - view
     override func setupViews() {
         super.setupViews()

+ 18 - 13
RainbowPlanet/RainbowPlanet/Modules/PublishModule/PublishAddTopic/Controller/PublishAddTopicController.swift

@@ -27,7 +27,7 @@ class PublishAddTopicController: BaseViewController {
     var topicListModels = Array<CommunityTopicDataModel>()
    
     // 选中的话题
-    var selTopicModelArr: Array<CommunityTopicDataModel>?
+    var selTopicModelArr = Array<CommunityTopicDataModel>()
     
     typealias SelTopicsClosure = (_ topicMdlArr: Array<CommunityTopicDataModel>) -> Void
     var selTopicsClosure : SelTopicsClosure?
@@ -56,7 +56,7 @@ class PublishAddTopicController: BaseViewController {
         navigationBar.onClickRightButton = {
             [weak self] in
             if let selTopicsClosure = self?.selTopicsClosure {
-                selTopicsClosure(self!.selTopicModelArr!)
+                selTopicsClosure((self?.selTopicModelArr)!)
             }
             self?.navigationController?.popViewController(animated: true)
         }
@@ -133,7 +133,7 @@ extension PublishAddTopicController : UITableViewDelegate, UITableViewDataSource
     func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
         let selTopicMdl: CommunityTopicDataModel = topicListModels[indexPath.row]
         
-        if selTopicModelArr!.count >= 2 && selTopicMdl.isSelected == false {
+        if selTopicModelArr.count >= 2 && selTopicMdl.isSelected == false {
             SwiftProgressHUD.shared().showText("最多只能选择2个话题")
             return
         }
@@ -141,16 +141,18 @@ extension PublishAddTopicController : UITableViewDelegate, UITableViewDataSource
         if selTopicMdl.isSelected {
             // 点击的已被选中,移除
             selTopicMdl.isSelected = false
-            for (index, topicMdl) in selTopicModelArr!.enumerated() {
-                if selTopicMdl.id == topicMdl.id {
-                    selTopicModelArr!.remove(at: index)
-                    break
+            if !(selTopicModelArr.isEmpty){
+                for (index, topicMdl) in selTopicModelArr.enumerated() {
+                    if selTopicMdl.id == topicMdl.id {
+                        selTopicModelArr.remove(at: index)
+                        break
+                    }
                 }
             }
         } else {
             // 未被选中过,添加选中
             selTopicMdl.isSelected = true
-            selTopicModelArr!.append(selTopicMdl)
+            selTopicModelArr.append(selTopicMdl)
         }
         tableView.reloadData()
         
@@ -170,7 +172,7 @@ extension PublishAddTopicController : UITableViewDelegate, UITableViewDataSource
     
     func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
         if section == 0 {
-            if selTopicModelArr?.count == 0 {
+            if selTopicModelArr.count == 0 {
                 return 10
             } else {
                 return 44
@@ -187,7 +189,7 @@ extension PublishAddTopicController : UITableViewDelegate, UITableViewDataSource
             headerView.deleteTransClosure = {
                 [weak self] (index) in
                 // 移除选中 -> 校正列表选中状态 -> 刷新table -> 刷新完成btn
-                self?.selTopicModelArr!.remove(at: index)
+                self?.selTopicModelArr.remove(at: index)
                 self?.fixTopicSelectedStatus()
                 self?.tableView.reloadData()
                 self?.updateFinishButtonStatus()
@@ -261,17 +263,20 @@ extension PublishAddTopicController {
     func fixTopicSelectedStatus() {
         for topicMdl in topicListModels {
             topicMdl.isSelected = false
-            for selTopicMdl in selTopicModelArr! {
-                if topicMdl.id == selTopicMdl.id {
+            let selCount = selTopicModelArr.count
+            if selCount != 0 {
+                for selTopicMdl in selTopicModelArr {
+                    if topicMdl.id == selTopicMdl.id {
                     topicMdl.isSelected = true
                     break
+                    }
                 }
             }
         }
     }
     
     func updateFinishButtonStatus() {
-        let selCount = selTopicModelArr!.count
+        let selCount = selTopicModelArr.count
         if selCount == 0 {
             navigationBar.wr_setRightButton(title: "完成(\(selCount)/2)", titleColor: k999999Color)
             navigationBar.rightButton.isUserInteractionEnabled = false

+ 33 - 2
RainbowPlanet/RainbowPlanet/Modules/PublishModule/PublishArticle/ViewController/PublishArticleViewController.swift

@@ -10,14 +10,37 @@ import UIKit
 
 class PublishArticleViewController: H5CommonViewController {
     
+    override func viewDidAppear(_ animated: Bool) {
+        super.viewDidAppear(animated)
+        navigationController?.interactivePopGestureRecognizer?.isEnabled = false
+
+    }
+    
     override func viewDidLoad() {
         super.viewDidLoad()
+    }
+    
+    override func setupViews() {
+        super.setupViews()
         navigationBar.addSubview(publishButton)
+        
+    }
+    
+    override func setupLayouts() {
+        super.setupLayouts()
         publishButton.snp.makeConstraints { (make) in
-            make.centerX.equalTo(navigationBar.leftButton)
+            make.centerY.equalTo(navigationBar.leftButton)
             make.right.equalTo(-14)
+            make.width.equalTo(64)
+            make.height.equalTo(26)
         }
-        
+    }
+    
+    override func setupData() {
+        super.setupData()
+        publishButton.rx.tap.subscribe(onNext: { (_) in
+            
+        }).disposed(by: disposeBag)
     }
     
     lazy var publishButton: UIButton = {
@@ -27,6 +50,14 @@ class PublishArticleViewController: H5CommonViewController {
         publishButton.setTitle("发布", for: UIControl.State.normal)
         publishButton.setTitleColor(kffffffColor, for: UIControl.State.normal)
         publishButton.titleLabel?.font = kMediumFont13
+        publishButton.cornerRadius = 13
+        publishButton.masksToBounds = true
         return publishButton
     }()
+    
+    override func didMove(toParent parent: UIViewController?) {
+        if !(parent != nil) {
+            navigationController?.interactivePopGestureRecognizer?.isEnabled = true
+        }
+    }
 }

+ 1 - 1
RainbowPlanet/RainbowPlanet/Router/H5RouterModuleType.swift

@@ -106,7 +106,7 @@ extension H5RouterModuleType: MediatorSourceType {
             vc.URLString = kH5OfflineDetailIdUrl + id
             return vc
         case .pushPostArticle: //发布文章
-            let vc = H5CommonViewController()
+            let vc = PublishArticleViewController()
             vc.URLString = kH5PostArticleUrl
             return vc
         }

+ 2 - 2
RainbowPlanet/RainbowPlanet/Service/SwiftMoyaService/SwiftMoyaServiceManger/SwiftMoyaNetWorkManager/ApiMacro.swift

@@ -15,8 +15,8 @@ let kBetaSever = false
 let kProductSever = false
 
 /// H5Service
-let kH5PersonalService = false
-let kH5DevelopSever = true
+let kH5PersonalService = true
+let kH5DevelopSever = false
 let kH5BetaSever = false
 let kH5ProductSever = false