チェンジセット 1088

差分発生行の前後
無視リスト:
コミット日時:
2008/08/27 18:15:48 (5 年前)
コミッタ:
tasuku
ログメッセージ:

r39@poppop (orig r38): tasuku | 2008-03-21 04:46:27 +0900
post redirect

ファイル:

凡例:

変更無し
追加
削除
更新
コピー
移動
  • as3/gunyarapaint/trunk/gunyarapaint/src/gunyarapaint.as

    r1086 r1088  
    2020private var comm:Com; 
    2121private var oekakiId:uint; 
     22private var redirectUrl:String; 
    2223 
    2324private const ALERT_TITLE:String = 'ピコカキコ'; 
     
    8485  // 通信系 
    8586  comm = new Com(); 
     87  comm.addEventListener('completeGetData', commCompleteHandler); 
    8688  if (parameters['postUrl'] && parameters['cookie'] && parameters['magic']) { 
    8789    comm.setPostEnv(parameters['postUrl'], parameters['cookie'], parameters['magic']); 
     
    9193    oekakiId = uint(parameters['oekakiId']); 
    9294  } 
    93      
     95  if (parameters['redirectUrl']) { 
     96    redirectUrl = parameters['redirectUrl']; 
     97  } 
     98   
    9499  appWidth = this.width; 
    95100  appHeight = this.height; 
     
    191196  } 
    192197  */ 
     198  this.enabled = false; 
    193199  comm.postOekaki(fromTextInput.text, 
    194200                  messageTextArea.text, 
     
    198204} 
    199205 
     206private function commCompleteHandler(evt:Event):void { 
     207  if (comm.getHttpStatus() == 400 || comm.getError()) { 
     208    // error 
     209    Alert.show(comm.getData(), ALERT_TITLE); 
     210    this.enabled = true; 
     211  } else { 
     212    // redirect 
     213    Com.redirect(redirectUrl); 
     214  } 
     215} 
     216 
    200217private var orecan:gunyarapaint.Canvas; 
    201218private function playLogButtonHandler(evt:Event):void { 
  • as3/gunyarapaint/trunk/nicopedia/gunyarapaint/Com.as

    r1087 r1088  
    2424   
    2525    private var loader:URLLoader; 
    26     private var httpStatus:int;     
     26    private var httpStatus:int; 
     27     
     28    private var error:Boolean; 
    2729 
    2830    public function Com() 
     
    5052       
    5153      post(r); 
     54    } 
     55     
     56    public static function redirect(url:String):void { 
     57      var r:URLRequest = new URLRequest(); 
     58      r.url = url; 
     59      r.method = URLRequestMethod.GET; 
     60      navigateToURL(r, '_top'); 
    5261    } 
    5362     
     
    103112     
    104113    private function post(request:URLRequest):void { 
     114      error = false; 
     115       
    105116      loader = new URLLoader(); 
    106117      loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, postSecurityErrorHandler); 
     
    114125     
    115126    private function postSecurityErrorHandler(evt:SecurityErrorEvent):void { 
     127      error = true; 
    116128      Alert.show(evt.text, 'セキュリティエラーが発生しました。'); 
     129      dispatchEvent(new Event('completeGetData')); 
    117130    } 
    118131    private function postIOErrorHandler(evt:IOErrorEvent):void { 
    119132      // TODO: not event based, see URLLoader help 
     133      error = true; 
    120134      Alert.show(evt.text, 'ネットワークエラーが発生しました。'); 
     135      dispatchEvent(new Event('completeGetData')); 
    121136    } 
    122137    private function postOpenHandler(evt:Event):void { 
    123138    } 
    124139    private function postHttpStatusHandler(evt:HTTPStatusEvent):void { 
     140      dispatchEvent(new Event('httpStatus')); 
    125141      httpStatus = evt.status; 
    126142    } 
     
    130146    private function postCompleteHandler(evt:Event):void { 
    131147      dispatchEvent(new Event('completeGetData')); 
    132       PopUpManager.removePopUp(this); 
    133148    } 
    134149    public function getData():* { 
    135150      return loader.data; 
    136151    } 
     152    public function getHttpStatus():int { 
     153      return httpStatus; 
     154    } 
     155    public function getError():Boolean { 
     156      return error; 
     157    } 
    137158  } 
    138159} 
  • as3/gunyarapaint/trunk/picokakiko/src/picokakiko.as

    r1086 r1088  
    55import mx.controls.Alert; 
    66import mx.events.FlexEvent; 
    7 import mx.managers.PopUpManager; 
    87 
    98private var comm:Com; 
     
    1110private var played:Boolean = false; 
    1211private var poster:Boolean = false; 
     12private var redirectUrl:String; 
    1313private const ALERT_TITLE:String = 'ピコカキコ'; 
     14 
     15private var onPost:Boolean = false; 
    1416 
    1517public function init():void { 
    1618  comm = new Com; 
     19  comm.addEventListener('completeGetData', commCompleteHandler); 
    1720  if (parameters['mmlUrl']) { 
    1821    var url:String = parameters['mmlUrl']; 
    1922    comm.sendGetUrlRequest(url); 
    20     comm.addEventListener('completeGetData', getMMLHandler); 
    2123    mml.enabled = false; 
    2224  } 
     
    2426    comm.setPostEnv(parameters['postUrl'], parameters['cookie'], parameters['magic']); 
    2527    postPicoButton.enabled = true; 
     28  } 
     29  if (parameters['redirectUrl']) { 
     30    redirectUrl = parameters['redirectUrl']; 
    2631  } 
    2732  if (parameters['mmlId']) { 
     
    4146} 
    4247 
    43 private function getMMLHandler(evt:Event):void { 
    44   mml.text = comm.getData(); 
    45   mml.enabled = true; 
    46   playButton.enabled = true; 
     48private function commCompleteHandler(evt:Event):void { 
     49  if (onPost) { 
     50    onPost = false; 
     51    if (comm.getHttpStatus() == 400 || comm.getError()) { 
     52      // error 
     53      Alert.show(comm.getData(), ALERT_TITLE); 
     54      postPicoButton.enabled = true;     
     55    } else { 
     56      // redirect 
     57      Com.redirect(redirectUrl); 
     58    } 
     59  } else { 
     60    mml.text = comm.getData(); 
     61    mml.enabled = true; 
     62    playButton.enabled = true; 
     63  } 
    4764} 
    4865 
     
    6481  } 
    6582  if (mml.text == '') { 
    66     Alert.show('ピコマンドが空です。ピコピコしてください。', ALERT_TITLE); 
     83    Alert.show('ピコ文字が空です。ピコピコしてください。', ALERT_TITLE); 
    6784    return; 
    6885  } 
     
    7289  } 
    7390  if (mml_player.getWarnings() != '') { 
    74     Alert.show('投稿するためには、警告を全て取り除くことが必要です。', ALERT_TITLE); 
     91    Alert.show('投稿するためには、ピコ警告を全て取り除くことが必要です。', ALERT_TITLE); 
    7592    return; 
    7693  } 
     94  postPicoButton.enabled = false; 
     95  onPost = true; 
    7796  comm.postPico(fromTextInput.text, messageTextArea.text, mml.text, mmlId); 
    7897} 
  • as3/gunyarapaint/trunk/picokakiko/src/picokakiko.mxml

    r1086 r1088  
    1111  </mx:Script> 
    1212  <mx:Label x="28" y="7" text="名前"/> 
    13   <mx:TextInput id="fromTextInput" x="55" y="3" maxChars="32" fontSize="14"/> 
     13  <mx:TextInput id="fromTextInput" x="61" y="3" maxChars="32" fontSize="14" width="154"/> 
    1414  <mx:Label x="10" y="51" text="書き込み"/> 
    15   <mx:TextArea id="messageTextArea" x="55" y="33" width="563" height="62" fontSize="14"> 
     15  <mx:TextArea id="messageTextArea" x="61" y="30" width="557" height="62" fontSize="14"> 
    1616    <mx:text></mx:text> 
    1717  </mx:TextArea> 
    1818  <mx:VDividedBox x="10" y="100" width="610" height="250"> 
    19     <mx:TextArea id="mml" width="610" height="170" fontSize="14"> 
    20     </mx:TextArea> 
    21     <mx:TextArea id="mml_warnings" width="610" height="57" editable="false"> 
    22     </mx:TextArea> 
     19    <mx:HBox> 
     20      <mx:VBox> 
     21        <mx:Label text="ピコ文字"/> 
     22        <mx:Label text="(MML)"/> 
     23      </mx:VBox> 
     24      <mx:TextArea id="mml" width="557" height="170" fontSize="14"/> 
     25    </mx:HBox> 
     26    <mx:HBox> 
     27      <mx:Label text="ピコ警告"/> 
     28      <mx:TextArea id="mml_warnings" width="557" height="57" editable="false"/> 
     29    </mx:HBox> 
    2330  </mx:VDividedBox> 
    2431  <mx:Button id="playButton" label="ピコ再生" x="10" y="356"/>