Эх сурвалжийг харах

161230

Move date picker   main.storyboard --> commoneditor.storyboard
Add encrypt function for php backend.
Add image & label control for pdf edit.
Ray Zhang 9 жил өмнө
parent
commit
56ef2a458a

BIN
RedAnt ERP Mobile/RedAnt ERP Mobile.xcworkspace/xcuserdata/Ray.xcuserdatad/UserInterfaceState.xcuserstate


+ 4 - 1
RedAnt ERP Mobile/common/AES/AESCrypt.h

@@ -31,9 +31,12 @@
 
 
 @interface AESCrypt : NSObject
-
++(NSString *)AES128Encrypt:(NSString *)plainText key:(NSString*) gkey;
++(NSString *)AES128Decrypt:(NSString *)encryptText key:(NSString*) gkey;
 + (NSString *)encrypt:(NSString *)message password:(NSString *)password;
 + (NSString *)decrypt:(NSString *)base64EncodedString password:(NSString *)password;
 + (NSString *)fastdecrypt:(NSString *)base64EncodedString ;
 + (NSString *)fastencrypt:(NSString *)message;
+//+ (NSString *)simple_encrypt:(NSString *)message password:(NSString *)password;
+//+ (NSString *)simple_decrypt:(NSString *)base64EncodedString password:(NSString *)password;
 @end

+ 232 - 0
RedAnt ERP Mobile/common/AES/AESCrypt.m

@@ -36,6 +36,207 @@
 
 @implementation AESCrypt
 
+
+#pragma simple aes
+
++(NSString *)AES128Encrypt:(NSString *)plainText key:(NSString*) gkey
+{
+    NSString* gIv = nil;
+    char keyPtr[kCCKeySizeAES128+1];
+    memset(keyPtr, 0, sizeof(keyPtr));
+    [gkey getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];
+    
+    char ivPtr[kCCBlockSizeAES128+1];
+    memset(ivPtr, 0, sizeof(ivPtr));
+    [gIv getCString:ivPtr maxLength:sizeof(ivPtr) encoding:NSUTF8StringEncoding];
+    
+    NSData* data = [plainText dataUsingEncoding:NSUTF8StringEncoding];
+    NSUInteger dataLength = [data length];
+    
+    int diff = kCCKeySizeAES128 - (dataLength % kCCKeySizeAES128);
+    int newSize = 0;
+    
+    if(diff > 0)
+    {
+        newSize = dataLength + diff;
+    }
+    
+    //    char dataPtr[newSize];
+    //    memcpy(dataPtr, [data bytes], [data length]);
+    //    for(int i = 0; i < diff; i++)
+    //    {
+    //        dataPtr[i + dataLength] = 0x00;
+    //    }
+    
+    size_t bufferSize = newSize + kCCBlockSizeAES128;
+    void *buffer = malloc(bufferSize);
+    memset(buffer, 0, bufferSize);
+    
+    size_t numBytesCrypted = 0;
+    
+    CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt,
+                                          kCCAlgorithmAES128,
+                                          0x0000|kCCOptionECBMode|kCCOptionPKCS7Padding,               //No padding
+                                          keyPtr,
+                                          kCCKeySizeAES128,
+                                          ivPtr,
+                                          [data bytes],
+                                          [data length],
+                                          buffer,
+                                          bufferSize,
+                                          &numBytesCrypted);
+    
+    if (cryptStatus == kCCSuccess) {
+        NSData *resultData = [NSData dataWithBytesNoCopy:buffer length:numBytesCrypted];
+        //        return [GTMBase64 stringByEncodingData:resultData];
+        
+        
+        NSString *base64EncodedString = [resultData base64EncodedStringWithOptions:0];//[NSString base64StringFromData:resultData length:[resultData length]];
+        return base64EncodedString;
+    }
+    free(buffer);
+    return nil;
+}
++(NSString *)AES128Decrypt:(NSString *)encryptText key:(NSString*) gkey
+{
+    
+    NSString* gIv = nil;
+    char keyPtr[kCCKeySizeAES128 + 1];
+    memset(keyPtr, 0, sizeof(keyPtr));
+    [gkey getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];
+    
+    char ivPtr[kCCBlockSizeAES128 + 1];
+    memset(ivPtr, 0, sizeof(ivPtr));
+    [gIv getCString:ivPtr maxLength:sizeof(ivPtr) encoding:NSUTF8StringEncoding];
+    
+    // NSData* d1 = [encryptText dataUsingEncoding:NSUTF8StringEncoding];
+    NSData *encryptedData =[[NSData alloc] initWithBase64EncodedString:encryptText options:NSDataBase64DecodingIgnoreUnknownCharacters];
+    
+    //[[NSData alloc] initWithBase64EncodedString:stringBase64 options:NSDataBase64DecodingIgnoreUnknownCharacters];//[NSData base64DataFromString:encryptText];
+    NSData *data = encryptedData;//[GTMBase64 decodeData:];
+    NSUInteger dataLength = [data length];
+    size_t bufferSize = dataLength + kCCBlockSizeAES128;
+    void *buffer = malloc(bufferSize);
+    
+    size_t numBytesCrypted = 0;
+    CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt,
+                                          kCCAlgorithmAES128,
+                                          0x0000|kCCOptionECBMode|kCCOptionPKCS7Padding,
+                                          keyPtr,
+                                          kCCBlockSizeAES128,
+                                          ivPtr,
+                                          [data bytes],
+                                          dataLength,
+                                          buffer,
+                                          bufferSize,
+                                          &numBytesCrypted);
+    if (cryptStatus == kCCSuccess) {
+        NSData *resultData = [NSData dataWithBytesNoCopy:buffer length:numBytesCrypted];
+        return [[NSString alloc] initWithData:resultData encoding:NSUTF8StringEncoding] ;
+    }
+    free(buffer);
+    return nil;
+}
+//+(NSString *)AES128Encrypt:(NSString *)plainText key:(NSString*) gkey
+//{
+//    NSString* gIv = nil;
+//    char keyPtr[kCCKeySizeAES128+1];
+//    memset(keyPtr, 0, sizeof(keyPtr));
+//    [gkey getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];
+//    
+//    char ivPtr[kCCBlockSizeAES128+1];
+//    memset(ivPtr, 0, sizeof(ivPtr));
+//    [gIv getCString:ivPtr maxLength:sizeof(ivPtr) encoding:NSUTF8StringEncoding];
+//    
+//    NSData* data = [plainText dataUsingEncoding:NSUTF8StringEncoding];
+//    NSUInteger dataLength = [data length];
+//    
+//    int diff = kCCKeySizeAES128 - (dataLength % kCCKeySizeAES128);
+//    int newSize = 0;
+//    
+//    if(diff > 0)
+//    {
+//        newSize = dataLength + diff;
+//    }
+//    
+//    char dataPtr[newSize];
+//    memcpy(dataPtr, [data bytes], [data length]);
+//    for(int i = 0; i < diff; i++)
+//    {
+//        dataPtr[i + dataLength] = 0x00;
+//    }
+//    
+//    size_t bufferSize = newSize + kCCBlockSizeAES128;
+//    void *buffer = malloc(bufferSize);
+//    memset(buffer, 0, bufferSize);
+//    
+//    size_t numBytesCrypted = 0;
+//    
+//    CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt,
+//                                          kCCAlgorithmAES128,
+//                                          0x0000|kCCOptionECBMode|kCCOptionPKCS7Padding,               //No padding
+//                                          keyPtr,
+//                                          kCCKeySizeAES128,
+//                                          ivPtr,
+//                                          dataPtr,
+//                                          sizeof(dataPtr),
+//                                          buffer,
+//                                          bufferSize,
+//                                          &numBytesCrypted);
+//    
+//    if (cryptStatus == kCCSuccess) {
+//        NSData *resultData = [NSData dataWithBytesNoCopy:buffer length:numBytesCrypted];
+////        return [GTMBase64 stringByEncodingData:resultData];
+//        
+//        
+//        NSString *base64EncodedString = [NSString base64StringFromData:resultData length:[resultData length]];
+//        return base64EncodedString;
+//    }
+//    free(buffer);
+//    return nil;
+//}
+//
+//+(NSString *)AES128Decrypt:(NSString *)encryptText key:(NSString*) gkey
+//{
+//    
+//    NSString* gIv = nil;
+//    char keyPtr[kCCKeySizeAES128 + 1];
+//    memset(keyPtr, 0, sizeof(keyPtr));
+//    [gkey getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];
+//    
+//    char ivPtr[kCCBlockSizeAES128 + 1];
+//    memset(ivPtr, 0, sizeof(ivPtr));
+//    [gIv getCString:ivPtr maxLength:sizeof(ivPtr) encoding:NSUTF8StringEncoding];
+//    
+//    
+//    NSData *encryptedData = [NSData base64DataFromString:encryptText];
+//    NSData *data = encryptedData;//[GTMBase64 decodeData:[encryptText dataUsingEncoding:NSUTF8StringEncoding]];
+//    NSUInteger dataLength = [data length];
+//    size_t bufferSize = dataLength + kCCBlockSizeAES128;
+//    void *buffer = malloc(bufferSize);
+//    
+//    size_t numBytesCrypted = 0;
+//    CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt,
+//                                          kCCAlgorithmAES128,
+//                                          0x0000|kCCOptionECBMode|kCCOptionPKCS7Padding,
+//                                          keyPtr,
+//                                          kCCBlockSizeAES128,
+//                                          ivPtr,
+//                                          [data bytes],
+//                                          dataLength,
+//                                          buffer,
+//                                          bufferSize,
+//                                          &numBytesCrypted);
+//    if (cryptStatus == kCCSuccess) {
+//        NSData *resultData = [NSData dataWithBytesNoCopy:buffer length:numBytesCrypted];
+//        return [[NSString alloc] initWithData:resultData encoding:NSUTF8StringEncoding] ;
+//    }
+//    free(buffer);
+//    return nil;
+//}
+
+
+
 + (NSString *)encrypt:(NSString *)message password:(NSString *)password {
     
 #ifdef ENCRYPT_OFF
@@ -53,6 +254,23 @@
   return base64EncodedString;
 }
 
+
+//+ (NSString *)simple_encrypt:(NSString *)message password:(NSString *)password {
+//    
+//
+//    
+//    //    message=@"NEW PACIFIC DIRECT";
+//    //    NSData* msgdata=[message dataUsingEncoding:NSUTF8StringEncoding];
+//    //    NSData* passdata=[password dataUsingEncoding:NSUTF8StringEncoding];
+//    //    NSData* SHA256Hash = [passdata SHA256Hash];
+//    //    NSString *SHA256Hashresult = [[NSString alloc] initWithData:SHA256Hash  encoding:NSUTF8StringEncoding];
+//    //  message=@"NEW PACIFIC DIRECT";
+//  //  NSString* aaa=[[password dataUsingEncoding:NSUTF8StringEncoding] SHA256Hash];;
+//    NSData *encryptedData = [[message dataUsingEncoding:NSUTF8StringEncoding] AES256EncryptedDataUsingKey:password  error:nil];
+//    NSString *base64EncodedString = [NSString base64StringFromData:encryptedData length:[encryptedData length]];
+//    return base64EncodedString;
+//}
+
 + (NSString *)decrypt:(NSString *)base64EncodedString password:(NSString *)password {
 #ifdef ENCRYPT_OFF
     return base64EncodedString;
@@ -67,6 +285,20 @@
   return [[NSString alloc] initWithData:decryptedData encoding:NSUTF8StringEncoding];
 }
 
+
+//+ (NSString *)simple_decrypt:(NSString *)base64EncodedString password:(NSString *)password
+//{
+//
+//    
+//    if(base64EncodedString==nil)
+//        return nil;
+//    if(base64EncodedString.length==0)
+//        return @"";
+//    NSData *encryptedData = [NSData base64DataFromString:base64EncodedString];
+//    NSData *decryptedData = [encryptedData decryptedAES256DataUsingKey:password error:nil];
+//    return [[NSString alloc] initWithData:decryptedData encoding:NSUTF8StringEncoding];
+//}
+
 + (NSString *)fastdecrypt:(NSString *)base64EncodedString
 {
     NSString* ret=[self decrypt:base64EncodedString password:@"usai"];

+ 63 - 0
RedAnt ERP Mobile/common/CommonEditor/CommonEditor.storyboard

@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="11762" systemVersion="15G1212" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
+    <device id="ipad9_7" orientation="portrait">
+        <adaptation id="fullscreen"/>
+    </device>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="11757"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <scenes>
+        <!--DatePickerViewController-->
+        <scene sceneID="E5d-Rh-3tk">
+            <objects>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="hWE-Yy-gz7" userLabel="First Responder" sceneMemberID="firstResponder"/>
+                <viewController storyboardIdentifier="DatePickerViewController" useStoryboardIdentifierAsRestorationIdentifier="YES" id="hDO-yf-YYU" userLabel="DatePickerViewController" customClass="DatePickerViewController" sceneMemberID="viewController">
+                    <layoutGuides>
+                        <viewControllerLayoutGuide type="top" id="oEN-IW-3xG"/>
+                        <viewControllerLayoutGuide type="bottom" id="RpF-H7-VSr"/>
+                    </layoutGuides>
+                    <view key="view" contentMode="scaleToFill" id="SzR-aC-W21">
+                        <rect key="frame" x="0.0" y="0.0" width="768" height="1024"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                        <subviews>
+                            <datePicker contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" datePickerMode="dateAndTime" minuteInterval="1" translatesAutoresizingMaskIntoConstraints="NO" id="92Z-Po-m6V">
+                                <rect key="frame" x="0.0" y="73" width="768" height="292"/>
+                                <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
+                                <date key="date" timeIntervalSinceReferenceDate="427788188.02369201">
+                                    <!--2014-07-23 06:03:08 +0000-->
+                                </date>
+                                <connections>
+                                    <action selector="ValueChanged:" destination="hDO-yf-YYU" eventType="valueChanged" id="zq5-tB-PNW"/>
+                                </connections>
+                            </datePicker>
+                            <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Label" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="cRS-hn-ulf">
+                                <rect key="frame" x="0.0" y="44" width="768" height="21"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="pXA-kN-pBh">
+                                <rect key="frame" x="344" y="484" width="80" height="30"/>
+                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                <state key="normal" title="Set"/>
+                                <connections>
+                                    <action selector="onSetDateClick:" destination="hDO-yf-YYU" eventType="touchUpInside" id="dZO-IY-AGs"/>
+                                </connections>
+                            </button>
+                        </subviews>
+                        <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                    </view>
+                    <navigationItem key="navigationItem" title="Title" id="mup-at-2Ts"/>
+                    <connections>
+                        <outlet property="datePicker" destination="92Z-Po-m6V" id="9x9-Dk-N3z"/>
+                        <outlet property="labelTime" destination="cRS-hn-ulf" id="ePv-wb-YPs"/>
+                    </connections>
+                </viewController>
+            </objects>
+            <point key="canvasLocation" x="3604" y="-171"/>
+        </scene>
+    </scenes>
+</document>

+ 1 - 1
RedAnt ERP Mobile/common/CommonEditor/CommonEditorViewController.m

@@ -4760,7 +4760,7 @@
         
         
         
-        DatePickerViewController* dpvc =[ self.storyboard instantiateViewControllerWithIdentifier:@"DatePickerViewController"];
+        DatePickerViewController* dpvc =[ [UIStoryboard storyboardWithName:@"CommonEditor" bundle:nil] instantiateViewControllerWithIdentifier:@"DatePickerViewController"];
         if([[type lowercaseString] isEqualToString:@"date"])
         {
             dpvc.pickerMode = UIDatePickerModeDate;

+ 2 - 0
RedAnt ERP Mobile/common/CommonEditor/DatePickerViewController.h

@@ -14,4 +14,6 @@
 @property (strong, nonatomic) IBOutlet UILabel *labelTime;
 @property UIDatePickerMode pickerMode;
 @property (strong,nonatomic)NSDateFormatter* formatter;
+
+@property (nonatomic , copy) void (^blk_Set)(NSString* date);
 @end

+ 7 - 0
RedAnt ERP Mobile/common/CommonEditor/DatePickerViewController.m

@@ -27,6 +27,13 @@
     
     
 }
+- (IBAction)onSetDateClick:(id)sender {
+    
+    
+    if(self.blk_Set)
+        self.blk_Set(self.labelTime.text);
+    [self.navigationController popViewControllerAnimated:false];
+}
 
 - (void)viewDidLoad
 {

+ 1 - 1
RedAnt ERP Mobile/common/Functions/signature/signature.storyboard

@@ -58,7 +58,7 @@
                                         <rect key="frame" x="0.0" y="28" width="376" height="128"/>
                                         <autoresizingMask key="autoresizingMask" widthSizable="YES"/>
                                         <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="pJ2-Li-nq4" id="hwz-Mn-MnM">
-                                            <rect key="frame" x="0.0" y="0.0" width="376" height="128"/>
+                                            <rect key="frame" x="0.0" y="0.0" width="376" height="127.5"/>
                                             <autoresizingMask key="autoresizingMask"/>
                                             <subviews>
                                                 <imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="5Hk-1I-EQp">

+ 2 - 1
RedAnt ERP Mobile/common/NetworkUtils.h

@@ -9,9 +9,10 @@
 #import <Foundation/Foundation.h>
 #import "const.h"
 typedef NSMutableDictionary*(^resultBlock)(NSMutableDictionary* result);
+typedef NSMutableDictionary*(^decryptBlock)(NSMutableDictionary* result);
 
 @interface NetworkUtils : NSObject
 +(bool) IsNetworkAvailable;
-+(NSData*)get_json : (NSString*) url parameters:(NSMutableDictionary *) params err_recorder:(NSString* )recorder_url result_handler:(resultBlock)resultBlock;
++(NSData*)get_json : (NSString*) url parameters:(NSMutableDictionary *) params err_recorder:(NSString* )recorder_url result_handler:(resultBlock)resultBlock decrypt_handler:(decryptBlock)decryptBlock;
 +(NSDictionary*)err_log:(NSString*) up_params result:(NSString*)result module:(NSString*) module code:(int) code;
 @end

+ 5 - 1
RedAnt ERP Mobile/common/NetworkUtils.m

@@ -34,7 +34,7 @@
     return true;
 }
 
-+(NSData*)get_json : (NSString*) url parameters:(NSMutableDictionary *) params err_recorder:(NSString* )recorder_url result_handler:(resultBlock)resultBlock
++(NSData*)get_json : (NSString*) url parameters:(NSMutableDictionary *) params err_recorder:(NSString* )recorder_url result_handler:(resultBlock)resultBlock decrypt_handler:(decryptBlock)decryptBlock
 {
     int retry = 0;
     
@@ -214,6 +214,10 @@ repeat:
                 [jsobj setValue:@"1" forKey:@"result"];
                 
             }
+            if([jsobj[@"encrypt"] boolValue]==true)
+            {
+                jsobj = decryptBlock(jsobj);
+            }
             jsobj = resultBlock(jsobj);
                     int result=[[jsobj valueForKey:@"result"] intValue];
             if(![url isEqualToString:recorder_url]&&/*![url isEqualToString:URL_DOWNLOAD_OFFLINE]&&*/result!=2&&result!=99)

+ 1 - 1
RedAnt ERP Mobile/common/PDFUtils.m

@@ -223,7 +223,7 @@
         [pdfPage DirectDraw:pdfContext page:page];
         
         
-        for(int j=0;j<0*[page_control[@"count"] intValue];j++)
+        for(int j=0;j<[page_control[@"count"] intValue];j++)
         {
             NSMutableDictionary* control=page_control[[NSString stringWithFormat:@"control_%d",j]];
             

+ 4 - 0
RedAnt ERP Mobile/iSales-NPD.xcodeproj/project.pbxproj

@@ -36,6 +36,7 @@
 		71073AE61DD41DD8001BC653 /* so_thumb.json in Resources */ = {isa = PBXBuildFile; fileRef = 71073AE51DD41DD8001BC653 /* so_thumb.json */; };
 		7111E5721C76C557004763B3 /* customer_info_template_edit.json in Resources */ = {isa = PBXBuildFile; fileRef = 7111E5711C76C557004763B3 /* customer_info_template_edit.json */; };
 		71131F921CA1372300DBF6E2 /* SimplifiedBuyingProgramViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 71131F911CA1372300DBF6E2 /* SimplifiedBuyingProgramViewController.m */; };
+		7115D45D1E16317600EF4E4C /* CommonEditor.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 7115D45C1E16317600EF4E4C /* CommonEditor.storyboard */; };
 		712AFED71DBA050200254965 /* BasicDrawable.m in Sources */ = {isa = PBXBuildFile; fileRef = 712AFEC61DBA050200254965 /* BasicDrawable.m */; };
 		712AFED81DBA050200254965 /* GridDrawable.m in Sources */ = {isa = PBXBuildFile; fileRef = 712AFEC81DBA050200254965 /* GridDrawable.m */; };
 		712AFED91DBA050200254965 /* GroupDrawable.m in Sources */ = {isa = PBXBuildFile; fileRef = 712AFECA1DBA050200254965 /* GroupDrawable.m */; };
@@ -292,6 +293,7 @@
 		7111E5711C76C557004763B3 /* customer_info_template_edit.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = customer_info_template_edit.json; path = common/Functions/contact/customer_info_template_edit.json; sourceTree = SOURCE_ROOT; };
 		71131F901CA1372300DBF6E2 /* SimplifiedBuyingProgramViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SimplifiedBuyingProgramViewController.h; path = common/Functions/sidemenu/SimplifiedBuyingProgramViewController.h; sourceTree = SOURCE_ROOT; };
 		71131F911CA1372300DBF6E2 /* SimplifiedBuyingProgramViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SimplifiedBuyingProgramViewController.m; path = common/Functions/sidemenu/SimplifiedBuyingProgramViewController.m; sourceTree = SOURCE_ROOT; };
+		7115D45C1E16317600EF4E4C /* CommonEditor.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = CommonEditor.storyboard; path = common/CommonEditor/CommonEditor.storyboard; sourceTree = SOURCE_ROOT; };
 		712AFEC51DBA050200254965 /* BasicDrawable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BasicDrawable.h; path = common/pdfCreator/BasicDrawable.h; sourceTree = SOURCE_ROOT; };
 		712AFEC61DBA050200254965 /* BasicDrawable.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = BasicDrawable.m; path = common/pdfCreator/BasicDrawable.m; sourceTree = SOURCE_ROOT; };
 		712AFEC71DBA050200254965 /* GridDrawable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GridDrawable.h; path = common/pdfCreator/GridDrawable.h; sourceTree = SOURCE_ROOT; };
@@ -1455,6 +1457,7 @@
 				71DF74581C575E7900F2789C /* MonthPickerViewController.m */,
 				71DF74591C575E7900F2789C /* SRMonthPicker.h */,
 				71DF745A1C575E7900F2789C /* SRMonthPicker.m */,
+				7115D45C1E16317600EF4E4C /* CommonEditor.storyboard */,
 			);
 			name = CommonEditor;
 			sourceTree = "<group>";
@@ -1544,6 +1547,7 @@
 			files = (
 				7142E87E1DC300690077EFA2 /* DejaVuSans-Bold.ttf in Resources */,
 				7142E87F1DC300690077EFA2 /* DejaVuSans.ttf in Resources */,
+				7115D45D1E16317600EF4E4C /* CommonEditor.storyboard in Resources */,
 				7142E87A1DBF577A0077EFA2 /* KALINGA.TTF in Resources */,
 				7142E87B1DBF577A0077EFA2 /* KALINGAB.TTF in Resources */,
 				713F76C21929F4A7006A7305 /* Images.xcassets in Resources */,

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 135 - 132
RedAnt ERP Mobile/iSales-NPD/Base.lproj/Main.storyboard


Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно